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

การรวม OpenAI Agents SDK

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

คำตอบสั้น

ไม่มีแพ็กเกจเฉพาะของ OpenAI Agents SDK และคุณก็ไม่จำเป็นต้องมี SDK แปลงฟังก์ชันที่มี decorator ให้เป็น tool ด้วย ดังนั้นคุณจึงห่อ Python client ของจริงไว้ในฟังก์ชัน แล้วเพิ่มเข้าไปใน ของคุณ agent สามารถส่ง USDC, ชำระใบแจ้งหนี้ และอ่าน wallets ได้ - ครอบคลุม single agents, handoffs และ Responses API เบื้องหลัง การชำระเงินจะ settle บน Base

ทำไม OPENAI AGENTS SDK

พื้นผิวการเรียกเครื่องมือที่สะอาดที่สุดที่ OpenAI ส่งออก.

OpenAI Agents SDK (เปิดตัวในปี 2025) เป็นวิธีที่ OpenAI แนะนำในการสร้างเอเจนต์บน Responses API มันทำให้โค้ดพื้นฐานรอบการลงทะเบียนเครื่องมือ, ลูปข้อความ, และการส่งต่อระหว่างเอเจนต์เป็นนามธรรม และผลิตโค้ด Python ที่สะอาดและมีประเภท หากคุณเริ่มโครงการเอเจนต์ที่มุ่งเน้น OpenAI วันนี้และไม่มีความชอบกรอบงาน นี่คือ SDK ที่เราขอแนะนำ.

สูตรนี้ตั้งใจให้บางเฉียบ send_usdc เป็นฟังก์ชันธรรมดาที่ตกแต่งด้วย @function_tool; คุณเพิ่มมันลงในรายการเครื่องมือของตัวแทนและ Runner จะเก็บมันไว้ ไม่มีการกำหนดค่าพิเศษ ไม่มีการห่อหุ้มเพิ่มเติม ไม่มีการแยก SDK เมื่อ Agents SDK ส่งฟีเจอร์ใหม่ (การป้อนข้อมูลหลายรูปแบบ ตัวแทนเสียง) ฟังก์ชันของคุณยังคงทำงานอยู่เพราะมันอยู่บนพื้นผิวการเรียกเครื่องมือมาตรฐาน - ไม่มีอะไรเฉพาะเวอร์ชันอยู่ในนั้น.

การติดตั้ง

ติดตั้ง Agents SDK และ SDK หลัก โดยมีคีย์สองตัว

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

ติดตั้ง
pip install openai-agents blockchain0x
ตัวแปรสภาพแวดล้อม
export OPENAI_API_KEY=sk-...
export BLOCKCHAIN0X_API_KEY=sk_test_...   # sk_test_ = Base Sepolia, sk_live_ = Base mainnet

OPENAI_API_KEY คือคีย์ OpenAI เดิมของคุณ (Agents SDK ใช้คีย์นี้สำหรับ Responses API เบื้องหลัง). BLOCKCHAIN0X_API_KEY คือคีย์ sk_test_ สำหรับ testnet หรือ sk_live_ สำหรับ mainnet จากแดชบอร์ดของคุณ; ฝั่ง client จะอ่านค่าจาก environment หากเอเจนต์ของคุณรับเงินด้วย handler ของ webhook จะต้องใช้ BLOCKCHAIN0X_WEBHOOK_SECRET เพิ่มเติมด้วย

สูตร

A @function_tool ที่จ่ายเงิน ส่งให้กับตัวแทน.

ด้านล่างคือการรวมทั้งหมด send_usdc เรียกไคลเอนต์ blockchain0x จริง; @function_tool เปลี่ยนมันให้เป็นเครื่องมือ และ Runner จะจัดการการเรียก SDK อ่านการชี้แนะประเภทและ docstring เพื่อสร้างสคีมา ดังนั้นให้รักษาความซื่อสัตย์ รันมันและเอเจนต์จะย้าย USDC บน Base

AGENT.PY
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.

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

ยืนยันการชำระเงินขาเข้าด้วย 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, arq) และตอบกลับ 200 ทันทีแทนที่จะบล็อกตัวจัดการ

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

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

ไม่มี starter package ของ Agents SDK ให้ 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_ เมื่อฟังก์ชันทำงานได้ตามที่คุณคาดไว้

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

ห้าสิ่งที่ควรระวังในการรวมระบบครั้งแรก

สิ่งเหล่านี้มาจากกล่องจดหมายสนับสนุนของเรา การทราบล่วงหน้าช่วยประหยัดเวลาได้หนึ่งชั่วโมงต่อรายการ

PITFALL 1

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

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

PITFALL 2

Agents SDK ไม่ใช่ Assistants API

OpenAI Agents SDK (แพ็คเกจ openai-agents ที่นำเข้าเป็น agents) เป็นผลิตภัณฑ์ที่แตกต่างจาก Assistants API รุ่นเก่า สูตรนี้มุ่งเป้าไปที่ Agents SDK: ตัวแทน + Runner + @function_tool ผ่าน Responses API หากคุณเรียก client.beta.assistants.create(...) คุณอยู่ในโมเดล threads/runs รุ่นเก่าที่ OpenAI กำลังเลิกใช้ - ย้ายไปที่ Agents SDK และฟังก์ชันด้านบนจะเข้ามาได้ทันที

PITFALL 3

จำนวนเงินเป็นหน่วยพื้นฐานของ 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.

PITFALL 4

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

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

PITFALL 5

การทำงานแบบอะซิงค์เท่านั้น

Agents SDK เป็นแบบ async-first - await Runner.run(...). การเรียก blockchain0x ภายในเครื่องมือของคุณเป็นแบบ synchronous ซึ่งใช้ได้สำหรับการชำระเงินที่รวดเร็วเพียงครั้งเดียว แต่จะบล็อกลูปภายใต้ภาระ หากคุณกำลังเรียกใช้ตัวแทนหลายตัวพร้อมกัน ให้ห่อหุ้มการเรียก SDK ด้วย asyncio.to_thread จากจุดเข้าซิงค์ asyncio.run() ที่ระดับสูงสุด

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

สามคำถามเกี่ยวกับ OpenAI Agents SDK.

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

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

ฉันสามารถใช้สิ่งนี้กับ OpenAI Responses API โดยตรงโดยไม่ต้องใช้ Agents SDK ได้หรือไม่?

ได้ Responses API คือชั้น tool-calling ที่ Agents SDK สร้างต่อยอดขึ้นมา หากคุณเรียก client.responses.create() โดยตรง ให้ประกาศฟังก์ชันเดียวกันเป็น tool ในรายการ tools ของคำขอ แล้ว dispatch การเรียกเองเมื่อโมเดลขอมา - เนื้อหาก็คือการเรียก blockchain0x.payments.create จากสูตรนั่นเอง Agents SDK เป็นทางที่ง่ายที่สุด เพราะ @function_tool จะสร้าง tool schema และ dispatch ให้คุณ

สิ่งนี้ทำงานกับการส่งต่อหลายตัวแทนหรือไม่?

ได้ และคุณเป็นคนกำหนดว่าเอเจนต์ตัวไหนเป็นเจ้าของ wallet รูปแบบที่เหมาะที่สุดคือให้ฟังก์ชันจ่ายเงินอยู่กับเอเจนต์ตัวหน้าที่รับคำสั่งจากผู้ใช้เพียงตัวเดียว แล้วให้มันส่งงานจริงต่อไปยังเอเจนต์ผู้เชี่ยวชาญที่ไม่มี wallet tools สิทธิ์ในการใช้จ่ายจะอยู่ที่จุดเดียว จึงไม่มีการตัดเงินผิดเอเจนต์ เพิ่มฟังก์ชันอ่านและชำระในแบบเดียวกัน - blockchain0x.transactions.get, blockchain0x.agents.get, blockchain0x.payment_requests.settle - โดยแต่ละตัวเป็น @function_tool ของตัวเอง

เพิ่มการชำระเงินให้กับการสร้าง Agents SDK ของคุณ

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