Ir para o conteúdo principal
INTEGRAÇÃO DO SDK DOS AGENTES OPENAI

Integração do OpenAI Agents SDK.

Não há pacote Agents SDK, e você não precisa de um. Decore uma função com @function_tool, chame o cliente blockchain0x real, e seu agente pode mover USDC na Base.

RESPOSTA CURTA

Não existe um pacote específico para OpenAI Agents SDK, e você não precisa de um. O SDK transforma uma função decorada em uma tool com , então você encapsula o cliente Python real em uma função e o adiciona ao seu . O agente pode enviar USDC, liquidar invoices e ler wallets - em agentes únicos, handoffs e na Responses API subjacente. Os pagamentos são liquidados na Base.

POR QUE O OPENAI AGENTS SDK

A superfície de chamada de ferramenta mais limpa que a OpenAI envia.

O OpenAI Agents SDK (lançado em 2025) é a maneira recomendada pela OpenAI para construir agentes em cima da API de Respostas. Ele abstrai o boilerplate em torno do registro de ferramentas, loops de mensagens e transferências entre agentes, e produz código Python limpo e tipado. Se você está começando um projeto de agente centrado na OpenAI hoje e não tem preferências de framework, este é o SDK que recomendamos.

A receita é intencionalmente fina. send_usdc é uma função simples decorada com @function_tool; você a adiciona à lista de ferramentas de um Agente e o Runner a pega. Nenhuma configuração especial, nenhum wrapper extra, nenhum fork do SDK. Quando o SDK de Agentes envia um novo recurso (entradas multimodais, agentes de voz), sua função continua funcionando porque se baseia na superfície padrão de chamadas de ferramentas - nada específico de versão vive nela.

INSTALAÇÃO

Instale o Agents SDK e o SDK principal. Duas chaves.

Não há pacote blockchain0x Agents SDK para adicionar. Você instala o OpenAI Agents SDK (o pacote openai-agents, Python 3.10+) e o SDK principal blockchain0x real, e então escreve a função abaixo. Essa é toda a lista de dependências.

INSTALAR
pip install openai-agents blockchain0x
VARIÁVEIS DE AMBIENTE
export OPENAI_API_KEY=sk-...
export BLOCKCHAIN0X_API_KEY=sk_test_...   # sk_test_ = Base Sepolia, sk_live_ = Base mainnet

OPENAI_API_KEY é a sua chave OpenAI existente (o Agents SDK a usa para a Responses API subjacente). BLOCKCHAIN0X_API_KEY é uma chave sk_test_ de testnet ou sk_live_ de mainnet do seu dashboard; o cliente a lê do ambiente. Se o seu agente também receber dinheiro, o handler de webhook também precisa de BLOCKCHAIN0X_WEBHOOK_SECRET.

A RECEITA

Uma @function_tool que paga, entregue a um Agente.

Abaixo está toda a integração. send_usdc chama o cliente real blockchain0x; @function_tool o transforma em uma ferramenta, e o Runner orquestra a chamada. O SDK lê as dicas de tipo e a docstring para construir o esquema, então mantenha-os honestos. Execute-o e o agente move USDC no 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.

MANUSEIO DE WEBHOOK

Confirme pagamentos recebidos com um webhook assinado.

Se seu agente também recebe USDC, confirme com o webhook em vez de polling. O helper de verificação é enviado no SDK Node; em um serviço Python você verifica manualmente contra o HMAC documentado, que é tudo o que o helper faz. Exemplo FastAPI abaixo; o mesmo código funciona em qualquer framework Python assí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}

O algoritmo é HMAC-SHA256 sobre a string t.rawBody, uma comparação em tempo constante e uma janela de replay de 300 segundos. Leia o corpo bruto via await request.body(), nunca request.json() re-serialized, porque isso altera os bytes que a assinatura cobre. Os eventos enviados são payment.received, payment.sent, wallet.deployed e webhook.test. Para trabalhos de acompanhamento pesados, enfileire um trabalho (Celery, arq) e responda 200 imediatamente em vez de bloquear o manipulador.

FONTE E DOCUMENTOS

O cliente que você está envolvendo é aberto. Leia-o.

Não existe um starter package do Agents SDK para clonar - a receita acima é a integração. Os SDKs da blockchain0x são open source no GitHub; esta receita encapsula o Python SDK (blockchain0x-python), com a superfície completa de métodos na documentação. Leia como referência para os corpos das funções.

github.com/tosh-labs/blockchain0x-python

A superfície completa de métodos e os escopos do SDK estão documentados em the docs. Comece com uma chave sk_test_ na Base Sepolia e depois mude para sk_live_ quando a função fizer o que você espera.

ARMADILHAS COMUNS

Cinco coisas para observar na primeira integração.

Estes vêm da nossa caixa de entrada de suporte. Conhecê-los com antecedência economiza uma hora cada.

PITFALL 1

Não há pacote Agents SDK - você envolve o SDK

Blockchain0x envia adaptadores para LangChain e CrewAI, além do servidor MCP; não há um pacote dedicado do OpenAI Agents SDK. A receita acima é o caminho: decore uma função tipada simples com @function_tool, chame o cliente real do blockchain0x dentro e adicione-o ao Agent(tools=[...]). O SDK lê a assinatura e a docstring para construir o esquema da ferramenta, então mantenha a docstring precisa.

PITFALL 2

Agents SDK não é a Assistants API

O SDK de Agentes OpenAI (o pacote openai-agents, importado como agents) é um produto diferente da antiga API de Assistentes. A receita visa o SDK de Agentes: Agente + Runner + @function_tool sobre a API de Respostas. Se você estiver chamando client.beta.assistants.create(...), você está no modelo mais antigo de threads/runs que a OpenAI está descontinuando - mude para o SDK de Agentes e a função acima se encaixa diretamente.

PITFALL 3

Os valores são unidades base de USDC, como strings

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 pode responder 503 logo no início

payments.create não tenta novamente por padrão e pode retornar 503 até que o adaptador de cadeia esteja configurado para sua rede. Capture o erro dentro da sua função e retorne uma mensagem clara que o modelo possa agir, em vez de deixar o Runner em loop. A chave de idempotência criada automaticamente significa que uma nova tentativa manual não resultará em pagamento duplicado.

PITFALL 5

Runtime apenas assíncrono

O SDK de Agentes é assíncrono por padrão - aguarde Runner.run(...). A chamada blockchain0x dentro da sua ferramenta é síncrona, o que é bom para um único pagamento rápido, mas bloqueia o loop sob carga. Se você estiver executando muitos agentes concorrentes, envolva a chamada do SDK com asyncio.to_thread. A partir de um ponto de entrada síncrono, asyncio.run() no nível superior.

PERGUNTAS FREQUENTES

Três perguntas sobre OpenAI Agents SDK.

Há um pacote dedicado do OpenAI Agents SDK para instalar?

Não. O Agents SDK já transforma uma função decorada em uma ferramenta com @function_tool, então o caminho honesto é envolver o cliente blockchain0x real você mesmo, como mostrado acima. Os únicos pacotes de framework enviados são blockchain0x-langchain e blockchain0x-crewai (ambos Python) além do servidor @blockchain0x/mcp. O Agents SDK, como os outros frameworks sem um adaptador dedicado, é esta receita de poucas linhas.

Posso usar isso com a API de Respostas da OpenAI diretamente, sem o Agents SDK?

Sim. A Responses API é a camada de tool calling sobre a qual o Agents SDK é construído. Se você chamar client.responses.create() diretamente, declare a mesma função como uma tool na lista tools da requisição e faça o dispatch da chamada você mesmo quando o modelo solicitar - o corpo é apenas a chamada blockchain0x.payments.create da receita. O Agents SDK é o caminho de menor resistência porque @function_tool constrói esse schema de tool e o dispatch para você.

Isso funciona com transferências multi-agente?

Sim, e você decide qual agente é dono da wallet. O padrão mais limpo é dar a função de pagamento a um único agente de interface e fazer com que ele repasse o trabalho real para agentes especialistas que não carregam ferramentas de wallet. A autoridade de gasto fica em um só lugar, então não há cobrança pelo agente errado. Adicione as funções de leitura e liquidação da mesma forma - blockchain0x.transactions.get, blockchain0x.agents.get, blockchain0x.payment_requests.settle - cada uma como seu próprio @function_tool.

Adicione pagamentos à sua construção do Agents SDK.

Alguns trechos envolvendo o cliente real, sem pacote para instalar. Gratuito para começar.