Saltar al contenido principal
INTEGRACIÓN DEL SDK DE AGENTES OPENAI

Integración del SDK de OpenAI Agents.

No hay paquete SDK de Agentes, y no necesitas uno. Decora una función con @function_tool, llama al cliente real de blockchain0x, y tu agente puede mover USDC en Base.

RESPUESTA CORTA

No existe un paquete de OpenAI Agents SDK, y no lo necesitas. El SDK convierte una función decorada en una herramienta con , así que envuelves el cliente Python real de en una función y lo agregas a tu . El agente puede enviar USDC, liquidar facturas y leer wallets - en agentes individuales, handoffs y la Responses API subyacente. Los pagos se liquidan en Base.

POR QUÉ OPENAI AGENTS SDK

La superficie de llamada a herramientas más limpia que OpenAI envía.

El SDK de Agentes de OpenAI (lanzado en 2025) es la forma recomendada por OpenAI para construir agentes sobre la API de Respuestas. Abstrae el código base alrededor del registro de herramientas, bucles de mensajes y transferencias entre agentes, y produce código Python limpio y tipado. Si estás comenzando un proyecto de agente centrado en OpenAI hoy y no tienes preferencias de framework, este es el SDK que recomendamos.

La receta es intencionalmente delgada. send_usdc es una función simple decorada con @function_tool; la agregas a la lista de herramientas de un Agente y el Runner la recoge. No hay configuración especial, ningún envoltorio extra, ninguna bifurcación del SDK. Cuando el SDK de Agentes envía una nueva función (entradas multimodales, agentes de voz), tu función sigue funcionando porque se basa en la superficie estándar de llamadas a herramientas - nada específico de la versión vive en ella.

INSTALACIÓN

Instala el Agents SDK y el SDK principal. Dos claves.

No hay paquete de blockchain0x Agents SDK para agregar. Instalas el OpenAI Agents SDK (el paquete openai-agents, Python 3.10+) y el verdadero SDK principal de blockchain0x, luego escribes la función a continuación. Esa es toda la lista de dependencias.

INSTALAR
pip install openai-agents blockchain0x
VARIABLES DE ENTORNO
export OPENAI_API_KEY=sk-...
export BLOCKCHAIN0X_API_KEY=sk_test_...   # sk_test_ = Base Sepolia, sk_live_ = Base mainnet

OPENAI_API_KEY es tu clave existente de OpenAI (el Agents SDK la usa para la API de Respuestas subyacente). BLOCKCHAIN0X_API_KEY es una clave sk_test_ de testnet o sk_live_ de mainnet de tu panel; el cliente la lee del entorno. Si tu agente también recibe dinero, el manejador de webhook necesita adicionalmente BLOCKCHAIN0X_WEBHOOK_SECRET.

LA RECETA

Una @function_tool que paga, entregada a un Agente.

A continuación se presenta toda la integración. send_usdc llama al cliente real de blockchain0x; @function_tool lo convierte en una herramienta, y el Runner orquesta la llamada. El SDK lee las sugerencias de tipo y la docstring para construir el esquema, así que mantenlos honestos. Ejecútalo y el agente mueve USDC en 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.

MANEJO DE WEBHOOK

Confirme los pagos entrantes con un webhook firmado.

Si tu agente también recibe USDC, confírmalo con el webhook en lugar de sondear. El ayudante de verificación se envía en el SDK de Node; en un servicio de Python verificas manualmente contra el HMAC documentado, que es todo lo que hace el ayudante. Ejemplo de FastAPI a continuación; el mismo código funciona en cualquier marco de Python asíncrono.

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}

El algoritmo es HMAC-SHA256 sobre la cadena t.rawBody, una comparación en tiempo constante y una ventana de repetición de 300 segundos. Lee el cuerpo sin procesar a través de await request.body(), nunca request.json() re-serializado, porque eso cambia los bytes que cubre la firma. Los eventos enviados son payment.received, payment.sent, wallet.deployed y webhook.test. Para trabajos de seguimiento pesados, encola un trabajo (Celery, arq) y responde 200 inmediatamente en lugar de bloquear el controlador.

CÓDIGO Y DOCUMENTOS

El cliente que estás envolviendo es abierto. Léelo.

No hay un paquete de inicio del Agents SDK para clonar - la receta anterior es la integración. Los SDK de blockchain0x son de código abierto en GitHub; esta receta envuelve el SDK de Python (blockchain0x-python), con la superficie completa de métodos en la documentación. Léelo como referencia para los cuerpos de las funciones.

github.com/tosh-labs/blockchain0x-python

La superficie completa de métodos del SDK y los alcances están documentados en la documentación. Comienza con una clave sk_test_ contra Base Sepolia, luego cambia a sk_live_ cuando la función haga lo que esperas.

ERRORES COMUNES

Cinco cosas a tener en cuenta en la primera integración.

Estos provienen de nuestra bandeja de entrada de soporte. Conocerlos de antemano ahorra una hora cada uno.

PITFALL 1

No hay paquete SDK de Agentes - envuelves el SDK

Blockchain0x envía adaptadores para LangChain y CrewAI además del servidor MCP; no hay un paquete dedicado de OpenAI Agents SDK. La receta anterior es el camino: decore una función tipada simple con @function_tool, llame al cliente real de blockchain0x dentro, y agréguelo a Agent(tools=[...]). El SDK lee la firma y la docstring para construir el esquema de herramientas, así que mantenga la docstring precisa.

PITFALL 2

Agents SDK no es la API de Asistentes

El SDK de Agentes de OpenAI (el paquete openai-agents, importado como agents) es un producto diferente de la API de Asistentes anterior. La receta apunta al SDK de Agentes: Agente + Runner + @function_tool sobre la API de Respuestas. Si estás llamando a client.beta.assistants.create(...), estás en el modelo de hilos/ejecuciones más antiguo que OpenAI está descontinuando - muévete al SDK de Agentes y la función anterior se integra directamente.

PITFALL 3

Las cantidades son unidades base de USDC, como cadenas

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 puede responder 503 temprano

payments.create no reintenta por defecto y puede devolver 503 hasta que el adaptador de cadena esté conectado a su red. Capture el error dentro de su función y devuelva un mensaje claro que el modelo pueda utilizar, en lugar de dejar que el Runner se repita. La clave de idempotencia generada automáticamente significa que un reintento manual no pagará el doble.

PITFALL 5

Runtime solo asíncrono

El SDK de Agentes es primero asíncrono - await Runner.run(...). La llamada a blockchain0x dentro de tu herramienta es sincrónica, lo cual está bien para un solo pago rápido pero bloquea el bucle bajo carga. Si estás ejecutando muchos agentes concurrentes, envuelve la llamada SDK con asyncio.to_thread. Desde un punto de entrada sincrónico, asyncio.run() en el nivel superior.

PREGUNTAS FRECUENTES

Tres preguntas sobre OpenAI Agents SDK.

¿Hay un paquete OpenAI Agents SDK dedicado para instalar?

No. El Agents SDK ya convierte una función decorada en una herramienta con @function_tool, así que el camino honesto es envolver el cliente real de blockchain0x tú mismo, como se muestra arriba. Los únicos paquetes de framework enviados son blockchain0x-langchain y blockchain0x-crewai (ambos Python) más el servidor @blockchain0x/mcp. El Agents SDK, como los otros frameworks sin un adaptador dedicado, es esta receta de pocas líneas.

¿Puedo usar esto con la API de Respuestas de OpenAI directamente, sin el SDK de Agentes?

Sí. La API de Respuestas es la capa de llamada de herramientas sobre la que se basa el SDK de Agentes. Si llamas a client.responses.create() directamente, declara la misma función como una herramienta en la lista de herramientas de la solicitud y despacha la llamada tú mismo cuando el modelo lo pida - el cuerpo es solo la llamada blockchain0x.payments.create de la receta. El SDK de Agentes es el camino de menor resistencia porque @function_tool construye ese esquema de herramientas y despacho para ti.

¿Esto funciona con transferencias multi-agente?

Sí, y tú decides qué agente posee la billetera. El patrón limpio es dar la función de pago a un solo agente de cara al público y hacer que transfiera el trabajo real a agentes especializados que no llevan herramientas de billetera. La autoridad de gasto se mantiene en un solo lugar, por lo que no hay cargos de agentes incorrectos. Agrega funciones de lectura y liquidación de la misma manera - blockchain0x.transactions.get, blockchain0x.agents.get, blockchain0x.payment_requests.settle - cada una como su propio @function_tool.

Agrega pagos a tu construcción de Agents SDK.

Unas pocas líneas envolviendo el cliente real, sin paquete que instalar. Gratis para comenzar.