OpenAI Agents SDK 통합.
Agents SDK 패키지가 없으며, 필요하지도 않습니다. @function_tool로 함수를 장식하고 실제 blockchain0x 클라이언트를 호출하면 에이전트가 Base에서 USDC를 이동할 수 있습니다.
OpenAI Agents SDK 전용 패키지는 없으며, 필요하지도 않습니다. SDK는 데코레이터가 붙은 함수를 로 도구로 바꾸므로, 실제 Python 클라이언트를 함수로 감싸 에 추가하면 됩니다. 에이전트는 단일 에이전트, handoff, 그리고 기본 Responses API 전반에서 USDC 전송, 인보이스 정산, 지갑 조회를 수행할 수 있습니다. 결제는 Base에서 정산됩니다.
OpenAI가 제공하는 가장 깔끔한 도구 호출 표면.
OpenAI Agents SDK(2025년 출시)는 OpenAI가 Responses API 위에 에이전트를 구축하는 데 권장하는 방법입니다. 도구 등록, 메시지 루프 및 에이전트 간의 인수인계를 위한 보일러플레이트를 추상화하며, 깔끔하고 타입이 지정된 Python 코드를 생성합니다. 오늘 OpenAI 중심의 에이전트 프로젝트를 시작하고 프레임워크 선호도가 없다면, 이것이 우리가 추천하는 SDK입니다.
레시피는 의도적으로 얇습니다. send_usdc는 @function_tool로 장식된 일반 함수입니다; 이를 에이전트의 도구 목록에 추가하면 러너가 이를 가져옵니다. 특별한 구성, 추가 래퍼, SDK의 포크가 없습니다. Agents SDK가 새로운 기능(다중 모드 입력, 음성 에이전트)을 제공할 때, 귀하의 함수는 표준 도구 호출 표면에서 작동하기 때문에 계속 작동합니다 - 버전 특정한 것은 없습니다.
Agents SDK 및 핵심 SDK를 설치하세요. 두 개의 키.
추가할 blockchain0x Agents SDK 패키지가 없습니다. OpenAI Agents SDK(오픈AI 에이전트 패키지, Python 3.10+)와 실제 blockchain0x 코어 SDK를 설치한 후 아래의 함수를 작성합니다. 그것이 전체 의존성 목록입니다.
pip install openai-agents blockchain0xexport OPENAI_API_KEY=sk-... export BLOCKCHAIN0X_API_KEY=sk_test_... # sk_test_ = Base Sepolia, sk_live_ = Base mainnet
OPENAI_API_KEY는 기존 OpenAI 키입니다(Agents SDK가 underlying Responses API에 사용). BLOCKCHAIN0X_API_KEY는 dashboard의 sk_test_ testnet 또는 sk_live_ mainnet 키이며, client는 이를 environment에서 읽습니다. agent가 돈도 받는 경우, webhook handler에는 추가로 BLOCKCHAIN0X_WEBHOOK_SECRET가 필요합니다.
지불을 하는 @function_tool, 에이전트에 전달됩니다.
아래는 전체 통합입니다. send_usdc는 실제 blockchain0x 클라이언트를 호출합니다; @function_tool은 이를 도구로 변환하고, Runner가 호출을 조정합니다. SDK는 타입 힌트와 문서 문자열을 읽어 스키마를 구축하므로, 이를 정확하게 유지하십시오. 이를 실행하면 에이전트가 Base에서 USDC를 이동합니다.
from agents import Agent, Runner, function_tool from blockchain0x import Client blockchain0x = Client() # reads BLOCKCHAIN0X_API_KEY from the environment @function_tool 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. """ return str( blockchain0x.payments.create(body={"agentId": agent_id, "to": to, "amountWei": amount_wei}) ) agent = Agent( name="treasurer", instructions="You pay vendor invoices in USDC within owner-set limits.", tools=[send_usdc], model="gpt-4o", ) result = await Runner.run( agent, input="Pay 0.01 USDC from agent agt_123 to 0xVendor for the dataset.", ) print(result.final_output)
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 is another @function_tool in the list.
서명된 웹후크로 수신 결제를 확인하십시오.
내 에이전트가 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, arq) 핸들러를 차단하기보다는 즉시 200으로 응답하십시오.
래핑하고 있는 클라이언트는 공개되어 있습니다. 읽어보십시오.
복제할 Agents SDK 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_로 전환하세요.
첫 통합에서 주의할 다섯 가지 사항.
이것들은 우리의 지원 인박스에서 나옵니다. 미리 알면 각각 한 시간을 절약합니다.
Agents SDK 패키지가 없습니다 - SDK를 래핑합니다.
Blockchain0x는 LangChain 및 CrewAI와 MCP 서버를 위한 어댑터를 제공합니다. 전용 OpenAI Agents SDK 패키지는 없습니다. 위의 레시피는 경로입니다: 일반 타입 함수를 @function_tool로 장식하고, 내부에서 실제 blockchain0x 클라이언트를 호출한 후 Agent(tools=[...])에 추가합니다. SDK는 시그니처와 docstring을 읽어 도구 스키마를 구축하므로 docstring을 정확하게 유지하십시오.
Agents SDK는 Assistants API가 아닙니다.
OpenAI Agents SDK(openai-agents 패키지, agents로 가져옴)는 이전 Assistants API와 다른 제품입니다. 레시피는 Agents SDK를 목표로 합니다: 에이전트 + 러너 + @function_tool을 응답 API 위에 두었습니다. client.beta.assistants.create(...)를 호출하고 있다면, OpenAI가 종료하고 있는 이전 스레드/실행 모델에 있는 것입니다 - Agents SDK로 이동하면 위의 함수가 바로 작동합니다.
금액은 문자열로 된 USDC 기본 단위입니다.
payments.create takes amountWei: a string of USDC base units, not a float. USDC has 6 decimals, so 0.01 USDC is "10000" and 5 USDC is "5000000". Type the function argument as str; a float will lose precision before it reaches the API. Keep it a string end to end.
send_payment는 초기 단계에서 503을 반환할 수 있습니다.
payments.create는 기본적으로 재시도하지 않으며 체인 어댑터가 귀하의 네트워크에 연결될 때까지 503을 반환할 수 있습니다. 함수 내에서 오류를 포착하고 모델이 작동할 수 있는 명확한 메시지를 반환하세요. 자동 발행된 멱등성 키는 수동 재시도가 이중 결제를 발생시키지 않음을 의미합니다.
비동기 전용 런타임
Agents SDK는 비동기 우선입니다 - await Runner.run(...). 도구 내의 blockchain0x 호출은 동기식이며, 단일 빠른 결제에는 괜찮지만 부하가 걸리면 루프를 차단합니다. 여러 개의 동시 에이전트를 실행하는 경우, SDK 호출을 asyncio.to_thread로 래핑하십시오. 동기 진입점에서 asyncio.run()을 최상위에서 실행하십시오.