ข้ามไปยังเนื้อหาหลัก
การรวม AUTOGEN

การรวมการชำระเงิน AutoGen.

ไม่มีแพ็คเกจ AutoGen และคุณไม่ต้องการมัน ห่อหุ้มไคลเอนต์ blockchain0x จริงในฟังก์ชัน มอบให้กับตัวแทนของคุณ และมันสามารถย้าย USDC บน Base.

คำตอบสั้น

ไม่มีแพ็กเกจเฉพาะของ AutoGen และคุณก็ไม่จำเป็นต้องมี AutoGen แปลงฟังก์ชัน typed แบบธรรมดาให้เป็น tool อยู่แล้ว ดังนั้นคุณจึงห่อ Python client ของจริงไว้ในฟังก์ชัน ส่งให้ ผ่าน แล้ว agent จะสามารถส่ง USDC, ชำระใบแจ้งหนี้ และอ่าน wallets บน Base ได้ ตั้งค่า แล้วเริ่มได้เลย

ทำไมถึงไม่มีแพ็คเกจ

AutoGen ทำให้ฟังก์ชันเป็นเครื่องมืออยู่แล้ว ใช้สิ่งนั้น

AutoGen สร้างสคีมาของเครื่องมือโดยตรงจากลายเซ็นและ docstring ของฟังก์ชัน Python อะแดปเตอร์ AutoGen ที่เฉพาะเจาะจงจะห่อหุ้มฟังก์ชันที่เราจะเขียนอยู่แล้ว จากนั้นจึงหลุดออกจากการซิงค์กับ API ที่เคลื่อนไหวอย่างรวดเร็วของ AutoGen ดังนั้นเราจึงไม่ส่งมอบหนึ่ง คุณเขียนไม่กี่บรรทัดที่เรียกไคลเอนต์ blockchain0x จริง และคุณควบคุมอาร์กิวเมนต์ การตรวจสอบ และการจัดการข้อผิดพลาดได้อย่างเต็มที่

นี่คือไคลเอนต์เดียวกันที่ตัวปรับ LangChain และ CrewAI ที่จัดส่งห่อหุ้มอยู่ภายใต้ฝาก ที่นี่คุณห่อหุ้มมันด้วยตัวคุณเอง ซึ่งหมายความว่าไม่มีเวอร์ชันตัวปรับให้ติดตามและไม่มีอะไรระหว่างตัวแทนของคุณและ API นอกจากฟังก์ชันของคุณเอง ทีมหลายตัวแทนทำงานในลักษณะเดียวกัน: มอบฟังก์ชันกระเป๋าเงินให้กับตัวแทนหนึ่งตัว ปล่อยให้คนอื่นไม่มีมัน และอำนาจการใช้จ่ายจะอยู่ในที่เดียว.

การติดตั้ง

ติดตั้ง AutoGen และ SDK หลัก โดยมีตัวแปรสภาพแวดล้อมหนึ่งตัว

ไม่มีแพ็คเกจ AutoGen เฉพาะที่จะเพิ่ม คุณติดตั้ง AutoGen (Python 3.10+) และ SDK หลัก blockchain0x จริง จากนั้นเขียนฟังก์ชันด้านล่าง นั่นคือรายการการพึ่งพาทั้งหมด.

ติดตั้ง
pip install autogen-agentchat "autogen-ext[openai]" blockchain0x
ตัวแปรสภาพแวดล้อม
export BLOCKCHAIN0X_API_KEY=sk_test_...   # sk_test_ = Base Sepolia, sk_live_ = Base mainnet

BLOCKCHAIN0X_API_KEY คือคีย์ sk_test_ สำหรับ testnet หรือ sk_live_ สำหรับ mainnet จากแดชบอร์ดของคุณ โดย client จะอ่านค่าจาก environment หากเอเจนต์ของคุณรับเงินด้วย webhook handler ยังต้องใช้ BLOCKCHAIN0X_WEBHOOK_SECRET เพิ่มเติม ซึ่งแดชบอร์ดจะแสดงให้เห็นเพียงครั้งเดียวเมื่อคุณสร้างหรือหมุนเวียน webhook

สูตร

ฟังก์ชันที่จ่ายเงิน ส่งให้กับ AssistantAgent.

ด้านล่างคือการรวมทั้งหมด send_usdc เรียกไคลเอนต์ blockchain0x จริง; AssistantAgent(tools=[send_usdc]) เปลี่ยนมันให้เป็นเครื่องมือที่โมเดลสามารถเรียกได้ AutoGen อ่านการชี้แนะประเภทและ docstring เพื่อสร้างสคีมา ดังนั้นให้รักษาความซื่อสัตย์ รันมันและเอเจนต์จะย้าย USDC บน Base

AGENT.PY
from autogen_agentchat.agents import AssistantAgent
from autogen_ext.models.openai import OpenAIChatCompletionClient
from blockchain0x import Client

blockchain0x = Client()  # reads BLOCKCHAIN0X_API_KEY from the environment

# AutoGen turns a plain typed function into a tool. No dedicated package needed.
def send_usdc(agent_id: str, to: str, amount_wei: str) -> str:
    """Send a USDC payment from an agent wallet.

    amount_wei is USDC base units (6 decimals), so "10000" is 0.01 USDC.
    """
    result = blockchain0x.payments.create(
        body={"agentId": agent_id, "to": to, "amountWei": amount_wei},
    )
    return str(result)

treasurer = AssistantAgent(
    name="treasurer",
    model_client=OpenAIChatCompletionClient(model="gpt-4o"),
    tools=[send_usdc],
    system_message="You pay vendor invoices in USDC within owner-set limits.",
)

result = await treasurer.run(
    task="Pay 0.01 USDC from agent agt_123 to 0xVendor for the dataset.",
)

When the agent decides to pay, it calls send_usdc, the SDK submits the transfer, and you get a transaction hash back. amount_wei is base units, so 0.01 USDC is "10000". A sk_test_ key keeps it on Base Sepolia until you switch to sk_live_. Add more functions - read a wallet, settle an invoice - the same way; each becomes another entry in tools.

การจัดการเว็บฮุก

ยืนยันการชำระเงินขาเข้าด้วย webhook ที่ลงนาม.

หากเอเจนต์ของคุณยังได้รับ USDC, ยืนยันด้วย webhook แทนที่จะตรวจสอบ. ตัวช่วยยืนยันจะถูกส่งใน Node SDK; ในบริการ Python คุณจะตรวจสอบด้วยมือกับ HMAC ที่มีการบันทึก, ซึ่งเป็นสิ่งที่ตัวช่วยทำ. ตัวอย่าง FastAPI ด้านล่าง; โค้ดเดียวกันทำงานในกรอบ Python แบบ async ใด ๆ.

WEBHOOK.PY
import hmac, hashlib, os, time
from fastapi import FastAPI, Request, HTTPException

app = FastAPI()
SECRET = os.environ["BLOCKCHAIN0X_WEBHOOK_SECRET"].encode()

@app.post("/webhooks/payment")
async def receive(request: Request):
    raw = await request.body()  # RAW bytes - do not parse first
    sig = request.headers.get("X-Blockchain0x-Signature", "")
    ts = request.headers.get("X-Blockchain0x-Timestamp", "")
    parts = dict(p.split("=", 1) for p in sig.split(",") if "=" in p)
    t, v1 = parts.get("t", ts), parts.get("v1", sig)
    want = hmac.new(SECRET, t.encode() + b"." + raw, hashlib.sha256).hexdigest()
    if not hmac.compare_digest(want, v1) or abs(time.time() - int(t)) > 300:
        raise HTTPException(status_code=401)
    if request.headers.get("X-Blockchain0x-Event-Type") == "payment.received":
        await trigger_followup()  # USDC landed - run the next step
    return {"ok": True}

อัลกอริธึมคือ HMAC-SHA256 บนสตริง t.rawBody การเปรียบเทียบในเวลาคงที่ และหน้าต่างการเล่นซ้ำ 300 วินาที อ่านร่างดิบผ่าน await request.body() ไม่เคย request.json() ที่ถูกถอดรหัสใหม่ เพราะจะเปลี่ยนไบต์ที่ลายเซ็นครอบคลุม เหตุการณ์ที่ส่งคือ payment.received, payment.sent, wallet.deployed และ webhook.test สำหรับงานติดตามที่หนัก ให้เพิ่มงานในคิว (Celery, RQ, arq) และตอบกลับ 200 ทันทีแทนที่จะบล็อกตัวจัดการ

แหล่งที่มาและเอกสาร

ไคลเอนต์ที่คุณกำลังห่อหุ้มอยู่เปิดอยู่ อ่านมัน.

ไม่มี starter package ของ AutoGen ให้ clone - สูตรด้านบนคือการเชื่อมต่อจริง SDK ของ blockchain0x เป็น open source บน GitHub; สูตรนี้ห่อหุ้ม Python SDK (blockchain0x-python) โดยมี surface ของเมธอดทั้งหมดอยู่ใน docs อ่านไว้เป็นตัวอย่างอ้างอิงสำหรับ body ของฟังก์ชัน

github.com/tosh-labs/blockchain0x-python

surface ของเมธอดใน SDK และ scopes ทั้งหมดถูกอธิบายไว้ที่ the docs. เริ่มด้วยคีย์ sk_test_ บน Base Sepolia ก่อน แล้วค่อยสลับเป็น sk_live_ เมื่อฟังก์ชันทำงานได้ตามที่คุณคาดไว้

ข้อผิดพลาดทั่วไป

ห้าหมายที่เกี่ยวกับการสนทนากลุ่มและแบบอะซิงโครนัสที่ควรหลีกเลี่ยง

การออกแบบหลายตัวแทน + แบบอะซิงโครนัสของ AutoGen ปลดล็อกรูปแบบที่ทรงพลังแต่ก็มีข้อควรระวังของมันเอง. สิ่งเหล่านี้มาจากกล่องจดหมายสนับสนุนของเรา.

PITFALL 1

ไม่มีแพ็คเกจ AutoGen - คุณห่อหุ้ม SDK

Blockchain0x ส่งอะแดปเตอร์สำหรับ LangChain และ CrewAI พร้อมกับเซิร์ฟเวอร์ MCP; ไม่มีแพ็คเกจ AutoGen ที่เฉพาะเจาะจง สูตรข้างต้นคือเส้นทางที่สนับสนุน: ฟังก์ชันที่มีประเภทธรรมดาที่เรียกใช้ไคลเอนต์ blockchain0x ที่แท้จริง ส่งให้กับ AssistantAgent(tools=[...]) AutoGen อ่านลายเซ็นของฟังก์ชันและ docstring เพื่อสร้างสคีมาของเครื่องมือ ดังนั้นให้เก็บ docstring ให้ถูกต้อง.

PITFALL 2

จำนวนเงินเป็นหน่วยพื้นฐานของ USDC, ในรูปแบบสตริง

payments.create takes amountWei: a string of USDC base units, not a float and not a dollar figure. USDC has 6 decimals, so 0.01 USDC is "10000" and 5 USDC is "5000000". Type the tool argument as str and validate it before the call - a float that sneaks through either errors at the backend or moves a millionth of what you meant.

PITFALL 3

send_payment สามารถตอบ 503 ได้ในระยะเริ่มต้น

payments.create จะไม่ลองใหม่โดยค่าเริ่มต้นและสามารถส่งคืน 503 จนกว่าตัวแปลงเครือข่ายจะถูกเชื่อมต่อ อย่าปล่อยให้การสนทนากลุ่มวนซ้ำในกรณีที่การชำระเงินล้มเหลว - จับข้อผิดพลาดในฟังก์ชันของคุณ ส่งคืนข้อความที่ชัดเจนที่โมเดลสามารถดำเนินการได้ และพึ่งพาคีย์ idempotency ที่สร้างโดยอัตโนมัติเพื่อให้การลองใหม่ด้วยตนเองไม่จ่ายสองครั้ง

PITFALL 4

AutoGen 0.4+ เป็นแบบอะซิงค์; การเรียก SDK เป็นแบบซิงค์

AutoGen 0.4 รันเครื่องมือในลูปอะซิงค์ การเรียกไคลเอนต์ blockchain0x เป็นแบบซิงค์ ซึ่งใช้ได้สำหรับการร้องขออย่างรวดเร็ว แต่การเรียกที่ช้าจะบล็อกลูป หากคุณมีปริมาณจริง ให้ห่อหุ้มการเรียก SDK ด้วย asyncio.to_thread เพื่อให้ลูปเหตุการณ์ยังคงตอบสนอง สำหรับการชำระเงินเพียงครั้งเดียวต่อเทิร์น การเรียกโดยตรงก็ใช้ได้

PITFALL 5

ตรวจสอบ webhook ที่เข้ามากับเนื้อหาดิบ

หากเอเจนต์ของคุณยัง RECEIVES เงิน, ยืนยันด้วย webhook, ไม่ใช่โดยการตรวจสอบ. ตรวจสอบลายเซ็นเหนือไบต์คำขอ RAW (await request.body()), ไม่เคย request.json() ที่ถูกสร้างใหม่, เพราะ HMAC จะครอบคลุมไบต์ที่แน่นอน. มันคือ HMAC-SHA256 พร้อมหน้าต่างการเล่นซ้ำ 300 วินาที. ตัวจัดการด้านล่างคือทั้งหมด.

คำถามที่พบบ่อย

สามคำถามเฉพาะ AutoGen.

มีแพ็คเกจ AutoGen ที่ต้องติดตั้งโดยเฉพาะหรือไม่?

ไม่ ไม่มีตัวแปลง AutoGen เฉพาะ และนั่นเป็นเจตนา - AutoGen ได้เปลี่ยนฟังก์ชันที่มีประเภทธรรมดาให้เป็นเครื่องมือแล้ว ดังนั้นเส้นทางที่ตรงไปตรงมาคือการห่อหุ้มลูกค้า blockchain0x จริงในฟังก์ชันและส่งให้กับตัวแทนของคุณ ตามที่แสดงข้างต้น แพ็คเกจเฟรมเวิร์กที่จัดส่งเพียงแพ็คเกจเดียวคือ blockchain0x-langchain และ blockchain0x-crewai (ทั้งสองเป็น Python) บวกกับเซิร์ฟเวอร์ @blockchain0x/mcp ทุกอย่างอื่น ๆ รวมถึง AutoGen เป็นสูตรไม่กี่บรรทัดนี้

สูตรนี้ทำงานบน AutoGen คลาสสิก (0.2.x) รวมถึง 0.4+ หรือไม่?

ใช่ เพราะตรรกะการชำระเงินเป็นเพียงฟังก์ชัน Python - ไม่มีสิ่งใดที่เฉพาะเจาะจงกับเวอร์ชัน AutoGen อาศัยอยู่ในนั้น ใน 0.4+ คุณส่งผ่านมันไปยัง AssistantAgent(tools=[...]) ตามที่กล่าวไว้ข้างต้น ในบรรทัด ConversableAgent 0.2.x คุณลงทะเบียนฟังก์ชันเดียวกันด้วย register_function ไม่มีซับโมดูล .legacy ที่จะนำเข้าเพราะไม่มีแพ็คเกจ; คุณเป็นเจ้าของฟังก์ชัน

เอเจนต์ของฉันจะรับ USDC หรือชำระใบแจ้งหนี้ได้อย่างไร, ไม่ใช่แค่ส่ง?

ครอบคลุม client ส่วนอื่น ๆ ในแบบเดียวกันได้เลย blockchain0x.transactions.get ใช้อ่านธุรกรรม, blockchain0x.agents.get และ blockchain0x.agents.list ใช้อ่าน wallets, และ blockchain0x.payment_requests.settle ใช้ชำระ invoice ที่คุณสร้างไว้ในแดชบอร์ดพร้อมหลักฐาน on-chain แต่ละตัวจะกลายเป็นฟังก์ชันแบบมี type อีกหนึ่งรายการใน tools list ของคุณ การชำระเงินขาเข้าจะยืนยันผ่าน webhook payment.received (ตรวจสอบด้วย handler ด้านล่าง); ไม่มี tool สำหรับสร้าง invoice ใหม่ เพราะ payment requests จะถูกสร้างในแดชบอร์ด

ให้กระเป๋าเงินกับเอเจนต์ AutoGen ของคุณ.

มีเพียงไม่กี่บรรทัดที่ห่อ real client โดยไม่ต้องติดตั้งแพ็กเกจ เริ่มใช้งานได้ฟรี