Ir para o conteúdo principal
INTEGRAÇÃO AUTOGEN

Integração de pagamento AutoGen.

Não há pacote AutoGen, e você não precisa de um. Envolva o cliente blockchain0x real em uma função, entregue-a ao seu agente, e ele pode mover USDC na Base.

RESPOSTA CURTA

Não existe um pacote específico para AutoGen, e você não precisa de um. O AutoGen já transforma uma função tipada simples em uma tool, então você encapsula o cliente Python real em uma função, a entrega a um via , e o agente pode enviar USDC, liquidar invoices e ler wallets na Base. Configure e siga em frente.

POR QUE NÃO HÁ PACOTE

AutoGen já transforma uma função em uma ferramenta. Use isso.

AutoGen constrói um esquema de ferramenta diretamente da assinatura e docstring de uma função Python. Um adaptador AutoGen dedicado apenas envolveria uma função que teríamos escrito de qualquer forma, e depois ficaria fora de sincronia com a API em rápida evolução do AutoGen. Portanto, não enviamos um. Você escreve algumas linhas que chamam o cliente real blockchain0x e mantém total controle sobre os argumentos, validação e tratamento de erros.

Este é o mesmo cliente que os adaptadores LangChain e CrewAI enviados envolvem por trás das cenas. Aqui você o envolve você mesmo, o que significa que não há versão de adaptador para rastrear e nada entre seu agente e a API, exceto sua própria função. Equipes de múltiplos agentes funcionam da mesma maneira: dê a função da carteira a um agente, deixe os outros sem ela e a autoridade de gasto permanece em um só lugar.

INSTALAÇÃO

Instale AutoGen e o SDK principal. Uma variável de ambiente.

Não há pacote dedicado AutoGen para adicionar. Você instala AutoGen (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 autogen-agentchat "autogen-ext[openai]" blockchain0x
VARIÁVEL DE AMBIENTE
export BLOCKCHAIN0X_API_KEY=sk_test_...   # sk_test_ = Base Sepolia, sk_live_ = Base mainnet

BLOCKCHAIN0X_API_KEY é uma chave sk_test_ de testnet ou sk_live_ de mainnet do seu painel; o cliente a lê do ambiente. Se o seu agente também recebe dinheiro, o handler de webhook também precisa de BLOCKCHAIN0X_WEBHOOK_SECRET, que o painel retorna uma única vez quando você cria ou rota um webhook.

A RECEITA

Uma função que paga, entregue a um AssistantAgent.

Abaixo está toda a integração. send_usdc chama o cliente real blockchain0x; AssistantAgent(tools=[send_usdc]) o transforma em uma ferramenta que o modelo pode chamar. AutoGen 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 autogen_agentchat.agents import AssistantAgent
from autogen_ext.models.openai import OpenAIChatCompletionClient
from blockchain0x import Client

blockchain0x = Client()  # reads BLOCKCHAIN0X_API_KEY from the environment

# AutoGen turns a plain typed function into a tool. No dedicated package needed.
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.
    """
    result = blockchain0x.payments.create(
        body={"agentId": agent_id, "to": to, "amountWei": amount_wei},
    )
    return str(result)

treasurer = AssistantAgent(
    name="treasurer",
    model_client=OpenAIChatCompletionClient(model="gpt-4o"),
    tools=[send_usdc],
    system_message="You pay vendor invoices in USDC within owner-set limits.",
)

result = await treasurer.run(
    task="Pay 0.01 USDC from agent agt_123 to 0xVendor for the dataset.",
)

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 becomes another entry in tools.

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, RQ, 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 AutoGen 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 armadilhas de chat em grupo e assíncronas a evitar.

O design multi-agente + assíncrono do AutoGen desbloqueia padrões poderosos, mas introduz suas próprias armadilhas. Estas vêm da nossa caixa de entrada de suporte.

PITFALL 1

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

Blockchain0x envia adaptadores para LangChain e CrewAI, além do servidor MCP; não há um pacote dedicado do AutoGen. A receita acima é o caminho suportado: uma função tipada simples que chama o cliente real do blockchain0x, entregue ao AssistantAgent(tools=[...]). O AutoGen lê a assinatura da função e a docstring para construir o esquema da ferramenta, então mantenha a docstring precisa.

PITFALL 2

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

payments.create takes amountWei: a string of USDC base units, not a float and not a dollar figure. USDC has 6 decimals, so 0.01 USDC is "10000" and 5 USDC is "5000000". Type the tool argument as str and validate it before the call - a float that sneaks through either errors at the backend or moves a millionth of what you meant.

PITFALL 3

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. Não deixe o chat em grupo entrar em loop em um pagamento falhado - capture o erro na sua função, retorne uma mensagem clara que o modelo possa agir e confie na chave de idempotência criada automaticamente para que uma nova tentativa manual não resulte em pagamento duplicado.

PITFALL 4

AutoGen 0.4+ é assíncrono; a chamada do SDK é síncrona

AutoGen 0.4 executa ferramentas em um loop assíncrono. A chamada do cliente blockchain0x é síncrona, o que é bom para uma solicitação rápida, mas uma chamada lenta bloqueia o loop. Se você estiver movimentando volume real, envolva a chamada do SDK com asyncio.to_thread para que o loop de eventos permaneça responsivo. Para um único pagamento por vez, chamá-la diretamente é aceitável.

PITFALL 5

Verifique webhooks de entrada contra o corpo bruto

Se seu agente também RECEBER dinheiro, confirme com o webhook, não por polling. Verifique a assinatura sobre os bytes RAW da requisição (await request.body()), nunca request.json() re-serializado, porque o HMAC cobre os bytes exatos. É HMAC-SHA256 com uma janela de repetição de 300 segundos. O manipulador abaixo é tudo isso.

PERGUNTAS FREQUENTES

Três perguntas específicas sobre AutoGen.

Há um pacote dedicado do AutoGen para instalar?

Não. Não há um adaptador AutoGen dedicado, e isso é deliberado - o AutoGen já transforma uma função tipada simples em uma ferramenta, então o caminho honesto é envolver o cliente blockchain0x real em uma função e entregá-lo ao seu agente, exatamente como mostrado acima. Os únicos pacotes de framework enviados são blockchain0x-langchain e blockchain0x-crewai (ambos Python) além do servidor @blockchain0x/mcp. Tudo o mais, incluindo o AutoGen, é esta receita de poucas linhas.

A receita funciona no AutoGen clássico (0.2.x) assim como no 0.4+?

Sim, porque a lógica de pagamento é apenas uma função Python - nada específico da versão AutoGen vive nela. Na versão 0.4+ você a passa via AssistantAgent(tools=[...]) como acima. Na linha 0.2.x ConversableAgent você registra a mesma função com register_function. Não há um submódulo .legacy para importar porque não há pacote; você possui a função.

Como meu agente recebe USDC ou liquida uma fatura, não apenas a envia?

Envolva mais do client da mesma forma. blockchain0x.transactions.get lê uma transação, blockchain0x.agents.get e blockchain0x.agents.list leem wallets, e blockchain0x.payment_requests.settle liquida uma fatura que você criou no dashboard com prova on-chain. Cada uma se torna outra função tipada na sua lista de tools. Pagamentos inbound são confirmados via o webhook payment.received (verifique-o com o handler abaixo); não existe uma ferramenta que gere uma nova fatura, já que payment requests são criadas no dashboard.

Dê ao seu agente AutoGen uma carteira.

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