Tích hợp OpenAI Agents SDK.
Không có gói Agents SDK, và bạn không cần một cái nào. Trang trí một hàm với @function_tool, gọi khách hàng blockchain0x thực tế, và tác nhân của bạn có thể chuyển USDC trên Base.
Không có package riêng cho OpenAI Agents SDK, và bạn cũng không cần một package như vậy. SDK biến một hàm được decorate thành một tool với , vì vậy bạn bọc Python client thực sự trong một hàm và thêm nó vào của bạn. Agent có thể gửi USDC, thanh toán hóa đơn và đọc ví - trên single agents, handoffs và Responses API nền tảng. Thanh toán được chốt trên Base.
Bề mặt gọi công cụ sạch nhất mà OpenAI phát hành.
SDK OpenAI Agents (phát hành 2025) là cách mà OpenAI khuyến nghị để xây dựng các tác nhân trên API Responses. Nó trừu tượng hóa các phần mã xung quanh việc đăng ký công cụ, vòng lặp tin nhắn, và chuyển giao giữa các tác nhân, và nó tạo ra mã Python sạch, có kiểu. Nếu bạn đang bắt đầu một dự án tác nhân tập trung vào OpenAI hôm nay và không có sở thích về khung, đây là SDK mà chúng tôi khuyến nghị.
Công thức được thiết kế mỏng. send_usdc là một hàm đơn giản được trang trí bằng @function_tool; bạn thêm nó vào danh sách công cụ của một tác nhân và Runner sẽ lấy nó. Không có cấu hình đặc biệt nào, không có bọc thêm, không có nhánh nào của SDK. Khi SDK của các tác nhân phát hành một tính năng mới (đầu vào đa phương thức, tác nhân giọng nói), hàm của bạn vẫn hoạt động vì nó dựa trên bề mặt gọi công cụ tiêu chuẩn - không có gì cụ thể cho phiên bản sống trong đó.
Cài đặt Agents SDK và SDK cốt lõi. Hai khóa.
Không có gói blockchain0x Agents SDK nào để thêm. Bạn cài đặt OpenAI Agents SDK (gói openai-agents, Python 3.10+) và SDK cốt lõi blockchain0x thực tế, sau đó viết hàm bên dưới. Đó là toàn bộ danh sách phụ thuộc.
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 là khóa OpenAI hiện có của bạn (Agents SDK sử dụng nó cho Responses API bên dưới). BLOCKCHAIN0X_API_KEY là khóa sk_test_ testnet hoặc sk_live_ mainnet từ dashboard của bạn; client sẽ đọc khóa này từ biến môi trường. Nếu agent của bạn cũng nhận tiền, webhook handler còn cần thêm BLOCKCHAIN0X_WEBHOOK_SECRET.
Một @function_tool trả tiền, được đưa cho một Đại lý.
Dưới đây là toàn bộ tích hợp. send_usdc gọi đến khách hàng blockchain0x thực; @function_tool biến nó thành một công cụ, và Runner điều phối cuộc gọi. SDK đọc các gợi ý kiểu và docstring để xây dựng sơ đồ, vì vậy hãy giữ chúng trung thực. Chạy nó và tác nhân chuyển USDC trên Base.
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.
Xác nhận các khoản thanh toán đến với một webhook đã ký.
Nếu tác nhân của bạn cũng nhận USDC, hãy xác nhận điều đó với webhook thay vì polling. Trợ giúp xác minh có trong Node SDK; trong một dịch vụ Python, bạn xác minh bằng tay theo HMAC đã được tài liệu hóa, đó là tất cả những gì trợ giúp làm. Ví dụ FastAPI bên dưới; cùng một mã hoạt động trong bất kỳ khung Python bất đồng bộ nào.
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}
Thuật toán là HMAC-SHA256 trên chuỗi t.rawBody, so sánh thời gian không đổi và cửa sổ phát lại 300 giây. Đọc nội dung thô qua await request.body(), không bao giờ request.json() được tái tuần tự hóa, vì điều đó thay đổi các byte mà chữ ký bao phủ. Các sự kiện đã được gửi là payment.received, payment.sent, wallet.deployed và webhook.test. Đối với công việc theo dõi nặng, hãy xếp hàng một công việc (Celery, arq) và phản hồi 200 ngay lập tức thay vì chặn trình xử lý.
Khách hàng mà bạn đang bọc là mở. Đọc nó.
Không có starter package của Agents SDK để clone - recipe ở trên chính là phần tích hợp. Các SDK của blockchain0x là mã nguồn mở trên GitHub; recipe này bọc Python SDK (blockchain0x-python), với toàn bộ bề mặt phương thức nằm trong docs. Hãy đọc để tham khảo phần thân hàm.
github.com/tosh-labs/blockchain0x-pythonToàn bộ bề mặt phương thức và các scope của SDK được tài liệu hóa tại the docs. Hãy bắt đầu với một key sk_test_ trên Base Sepolia, rồi chuyển sang sk_live_ khi hàm hoạt động đúng như bạn mong đợi.
Năm điều cần chú ý trong lần tích hợp đầu tiên.
Những điều này đến từ hộp thư hỗ trợ của chúng tôi. Biết chúng trước giúp tiết kiệm một giờ cho mỗi điều.
Không có gói Agents SDK - bạn bọc SDK
Blockchain0x cung cấp các bộ chuyển đổi cho LangChain và CrewAI cùng với máy chủ MCP; không có gói OpenAI Agents SDK chuyên dụng. Công thức ở trên là con đường: trang trí một hàm kiểu đơn giản với @function_tool, gọi đến khách hàng blockchain0x thực bên trong, và thêm nó vào Agent(tools=[...]). SDK đọc chữ ký và docstring để xây dựng sơ đồ công cụ, vì vậy hãy giữ docstring chính xác.
Agents SDK không phải là Assistants API
SDK của OpenAI Agents (gói openai-agents, được nhập khẩu dưới dạng agents) là một sản phẩm khác với API Assistants cũ hơn. Công thức nhắm đến SDK của Agents: Tác nhân + Runner + @function_tool qua API Responses. Nếu bạn đang gọi client.beta.assistants.create(...), bạn đang ở trên mô hình threads/runs cũ hơn mà OpenAI đang dần ngừng - hãy chuyển sang SDK của Agents và hàm ở trên sẽ được đưa vào ngay.
Các số lượng là đơn vị cơ sở USDC, dưới dạng chuỗi
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 có thể trả về 503 sớm
payments.create không tự động thử lại và có thể trả về 503 cho đến khi bộ chuyển đổi chuỗi được kết nối với mạng của bạn. Bắt lỗi bên trong hàm của bạn và trả về một thông điệp rõ ràng mà mô hình có thể hành động, thay vì để Runner lặp lại. Khóa idempotency tự động được cấp phát có nghĩa là một lần thử lại thủ công sẽ không thanh toán gấp đôi.
Môi trường thực thi chỉ không đồng bộ
SDK của Agents ưu tiên bất đồng bộ - await Runner.run(...). Cuộc gọi blockchain0x bên trong công cụ của bạn là đồng bộ, điều này là tốt cho một khoản thanh toán nhanh nhưng chặn vòng lặp dưới tải. Nếu bạn đang chạy nhiều tác nhân đồng thời, hãy bọc cuộc gọi SDK với asyncio.to_thread. Từ một điểm vào đồng bộ, asyncio.run() ở cấp độ cao nhất.