AutoGen 결제 통합.
AutoGen 패키지가 없으며, 필요하지도 않습니다. 실제 blockchain0x 클라이언트를 함수에 래핑하고 에이전트에 전달하면 Base에서 USDC를 이동할 수 있습니다.
AutoGen 전용 패키지는 없으며, 필요하지도 않습니다. AutoGen은 이미 일반 타입 함수 하나를 도구로 바꾸므로, 실제 Python 클라이언트를 함수로 감싸 에 를 통해 전달하면, 에이전트가 Base에서 USDC 전송, 인보이스 정산, 지갑 조회를 할 수 있습니다. 를 설정하고 시작하세요.
AutoGen은 이미 함수를 도구로 만듭니다. 그것을 사용하십시오.
AutoGen은 Python 함수의 서명과 문서 문자열에서 직접 도구 스키마를 구축합니다. 전용 AutoGen 어댑터는 우리가 어차피 작성했을 함수를 래핑할 뿐이며, AutoGen의 빠르게 변화하는 API와 동기에서 벗어날 것입니다. 그래서 우리는 이를 제공하지 않습니다. 실제 blockchain0x 클라이언트를 호출하는 몇 줄을 작성하고, 인수, 유효성 검사 및 오류 처리에 대한 완전한 제어를 유지합니다.
이것은 배포된 LangChain 및 CrewAI 어댑터가 내부에서 래핑하는 동일한 클라이언트입니다. 여기서 스스로 래핑하므로 추적할 어댑터 버전이 없으며 에이전트와 API 사이에 자신의 함수 외에는 없습니다. 다중 에이전트 팀은 동일한 방식으로 작동합니다: 하나의 에이전트에게 지갑 기능을 제공하고, 나머지는 없이 두어 지출 권한이 한 곳에 유지됩니다.
AutoGen 및 핵심 SDK를 설치하세요. 하나의 환경 변수.
추가할 전용 AutoGen 패키지가 없습니다. AutoGen(Python 3.10+)와 실제 blockchain0x 코어 SDK를 설치한 후 아래의 함수를 작성합니다. 그것이 전체 의존성 목록입니다.
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는 dashboard의 sk_test_ testnet 또는 sk_live_ mainnet 키이며, client는 이를 environment에서 읽습니다. agent가 돈도 받는 경우, webhook handler에는 추가로 BLOCKCHAIN0X_WEBHOOK_SECRET가 필요하며, 이는 webhook을 생성하거나 회전할 때 dashboard가 한 번 반환합니다.
지불을 하는 함수, AssistantAgent에 전달됩니다.
아래는 전체 통합입니다. send_usdc는 실제 blockchain0x 클라이언트를 호출합니다; AssistantAgent(tools=[send_usdc])는 이를 모델이 호출할 수 있는 도구로 변환합니다. AutoGen은 타입 힌트와 문서 문자열을 읽어 스키마를 구축하므로, 이를 정확하게 유지하십시오. 이를 실행하면 에이전트가 Base에서 USDC를 이동합니다.
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.
서명된 웹후크로 수신 결제를 확인하십시오.
내 에이전트가 USDC를 수신하는 경우, 폴링 대신 웹후크로 확인하세요. verify 헬퍼는 Node SDK에 포함되어 있으며; Python 서비스에서는 문서화된 HMAC에 대해 수동으로 검증합니다. FastAPI 예제 아래; 동일한 코드는 모든 비동기 Python 프레임워크에서 작동합니다.
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}
알고리즘은 문자열 t.rawBody에 대한 HMAC-SHA256, 상수 시간 비교 및 300초 재생 창입니다. 원시 본문을 await request.body()를 통해 읽으십시오; request.json()을 다시 직렬화하지 마십시오, 그렇게 하면 서명이 포함하는 바이트가 변경됩니다. 전송된 이벤트는 payment.received, payment.sent, wallet.deployed 및 webhook.test입니다. 무거운 후속 작업의 경우, 작업을 큐에 추가하고(Celery, RQ, arq) 핸들러를 차단하기보다는 즉시 200으로 응답하십시오.
래핑하고 있는 클라이언트는 공개되어 있습니다. 읽어보십시오.
복제할 AutoGen starter package는 없습니다 - 위의 recipe가 바로 integration입니다. blockchain0x SDK는 GitHub에서 open source로 제공됩니다. 이 recipe는 Python SDK(blockchain0x-python)를 감싸며, 전체 method surface는 docs에 있습니다. function body 참고용으로 읽으세요.
github.com/tosh-labs/blockchain0x-python전체 SDK method surface와 scope는 the docs에 문서화되어 있습니다. Base Sepolia에서 sk_test_ 키로 시작한 다음, function이 예상대로 동작하면 sk_live_로 전환하세요.
피해야 할 다섯 가지 그룹 채팅 및 비동기 함정.
AutoGen의 다중 에이전트 + 비동기 디자인은 강력한 패턴을 열어주지만, 자체적인 문제를 도입합니다. 이러한 문제는 우리의 지원 인박스에서 발생합니다.
AutoGen 패키지가 없습니다 - SDK를 래핑합니다.
Blockchain0x는 LangChain 및 CrewAI와 MCP 서버를 위한 어댑터를 제공합니다. 전용 AutoGen 패키지는 없습니다. 위의 레시피는 지원되는 경로입니다: 실제 blockchain0x 클라이언트를 호출하는 일반 타입 함수로, AssistantAgent(tools=[...])에 전달됩니다. AutoGen은 함수 시그니처와 docstring을 읽어 도구 스키마를 구축하므로 docstring을 정확하게 유지하십시오.
금액은 문자열로 된 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.
send_payment는 초기 단계에서 503을 반환할 수 있습니다.
payments.create는 기본적으로 재시도하지 않으며 체인 어댑터가 귀하의 네트워크에 연결될 때까지 503을 반환할 수 있습니다. 실패한 결제에 대해 그룹 채팅이 루프되지 않도록 하세요 - 함수 내에서 오류를 포착하고 모델이 작동할 수 있는 명확한 메시지를 반환하며, 수동 재시도가 이중 결제를 발생시키지 않도록 자동 발행된 멱등성 키에 의존하세요.
AutoGen 0.4+는 비동기이며; SDK 호출은 동기입니다.
AutoGen 0.4는 도구를 비동기 루프에서 실행합니다. blockchain0x 클라이언트 호출은 동기적이며, 이는 빠른 요청에는 적합하지만 느린 호출은 루프를 차단합니다. 실제 볼륨을 이동 중이라면 SDK 호출을 asyncio.to_thread로 래핑하여 이벤트 루프가 응답성을 유지하도록 하십시오. 한 번의 턴당 단일 결제를 위해 직접 호출하는 것은 괜찮습니다.
원시 본문에 대해 수신 웹훅을 검증하십시오.
내 에이전트가 돈을 수신하는 경우, 웹후크로 확인하고 폴링하지 마세요. RAW 요청 바이트(대기 request.body())에 대한 서명을 검증하고, 요청을 json()으로 재직렬화하지 마세요, HMAC가 정확한 바이트를 포함하기 때문입니다. 이는 300초 재생 창을 가진 HMAC-SHA256입니다. 아래의 핸들러가 전체입니다.