Перейти к основному содержимому
ИНТЕГРАЦИЯ AGNO

Интеграция платежей Agno.

Нет пакета Agno, и он вам не нужен. Оберните реальный клиент blockchain0x в небольшой Toolkit, и ваш агент сможет перемещать USDC на Base - минимальная абстракция, по методу Agno.

КРАТКИЙ ОТВЕТ

Специального пакета для Agno нет, и он вам не нужен. Agno превращает метод в tool, поэтому вы оборачиваете реальный Python client в небольшой toolkit и добавляете его в свой . Агент может отправлять USDC, закрывать invoices и читать wallets во всех моделях Agno (OpenAI, Anthropic, DeepSeek, Llama, Mistral). Платежи завершаются в Base.

ПОЧЕМУ AGNO

Легковесный фреймворк Python. Никакого налога на абстракцию.

Agno (ранее Phidata) - это фреймворк для агентов, который вы выбираете, когда хотите минимального церемониала. Нет конструктора графов, нет Crew, нет Workflow - только Agent, Tools и метод run(). Инструменты - это вызываемые Python-объекты. Фреймворк добавляет достаточно каркаса, чтобы вызывать LLM с поддержкой инструментов, управлять памятью и производить потоковый вывод, а затем уходит с вашего пути.

Рецепт следует той же философии. Вы пишете небольшой подкласс Toolkit, который регистрирует один метод, вызывающий реальный клиент - он выглядит и ведет себя как любой другой инструмент Agno. Никакой специальной настройки, кроме инстанцирования, никакого графа для подключения, никакой версии адаптера для отслеживания. Простота - это суть: если бы вы хотели графы, вы бы использовали LangGraph.

УСТАНОВКА

Установите Agno и основной SDK. Два ключа.

Нет пакета blockchain0x Agno для добавления. Вы устанавливаете Agno (Python 3.10+, линия 1.0+ после переименования Phidata) и реальный основной SDK blockchain0x, затем пишете toolkit ниже. Если вы все еще используете импорты phi.*, сначала выполните pip install -U agno.

УСТАНОВИТЬ
pip install agno blockchain0x
ПЕРЕМЕННЫЕ СРЕДЫ
export OPENAI_API_KEY=sk-...
export BLOCKCHAIN0X_API_KEY=sk_test_...   # sk_test_ = Base Sepolia, sk_live_ = Base mainnet

OPENAI_API_KEY (или аналогичный ключ для любой поддерживаемой Agno модели). BLOCKCHAIN0X_API_KEY - это ключ sk_test_ для testnet или sk_live_ для mainnet из вашего dashboard; client читает его из environment. Если ваш agent также получает деньги, обработчику webhook дополнительно нужен BLOCKCHAIN0X_WEBHOOK_SECRET.

РЕЦЕПТ

Набор инструментов, который оплачивает, переданный Агенту.

Ниже приведена вся интеграция. WalletTools - это подкласс Toolkit, который регистрирует send_usdc, который вызывает реальный клиент blockchain0x. Добавьте его к Агенту, и вызов run() организует вызов инструмента. Agno считывает сигнатуру метода и документацию, чтобы построить схему.

AGENT.PY
from agno.agent import Agent
from agno.models.openai import OpenAIChat
from agno.tools import Toolkit
from blockchain0x import Client

blockchain0x = Client()  # reads BLOCKCHAIN0X_API_KEY from the environment

# Wrap the real client in an Agno Toolkit. No dedicated package needed.
class WalletTools(Toolkit):
    def __init__(self):
        super().__init__(name="wallet_tools")
        self.register(self.send_usdc)

    def send_usdc(self, 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(
    model=OpenAIChat(id="gpt-4o"),
    tools=[WalletTools()],
    instructions=["You pay vendor invoices in USDC within owner-set limits."],
)

result = agent.run("Pay 0.01 USDC from agent agt_123 to 0xVendor for the dataset.")
print(result.content)

When agent.run() executes, the model decides to pay, 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_. Register more methods on the toolkit - read a wallet, settle an invoice - the same way.

ОБРАБОТКА WEBHOOK

Подтвердите входящие платежи с помощью подписанного webhook.

Если ваш агент также получает USDC, подтвердите это с помощью вебхука, а не опросом. Помощник проверки поставляется в Node SDK; в Python-сервисе вы проверяете вручную по документированному HMAC, что и делает помощник. Пример FastAPI ниже; тот же код работает в любом асинхронном Python-фреймворке.

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 для Agno, который можно было бы клонировать - рецепт выше и есть интеграция. SDK Blockchain0x открыты в GitHub; этот рецепт оборачивает Python SDK (blockchain0x-python), а полный набор методов приведен в docs. Используйте его как reference для методов toolkit.

github.com/tosh-labs/blockchain0x-python

Полный набор методов SDK и scopes описаны в the docs. Начните с ключа sk_test_ в Base Sepolia, затем переключитесь на sk_live_, когда toolkit начнет работать так, как вы ожидаете.

ОБЩИЕ ОШИБКИ

Пять специфических для Agno вещей, на которые стоит обратить внимание.

Agno - один из более чистых фреймворков для агентов, с которыми можно интегрироваться, но у него есть свои подводные камни - особенно в отношении переименования Phidata и рендеринга markdown.

PITFALL 1

Нет пакета Agno - вы оборачиваете SDK в Toolkit.

Blockchain0x поставляет адаптеры для LangChain и CrewAI, а также сервер MCP; нет отдельного пакета Agno. Рецепт выше - это путь: подкласс Toolkit, который регистрирует метод, вызывающий реальный клиент blockchain0x. Agno читает сигнатуру метода и docstring, чтобы построить схему инструмента, поэтому держите docstring точным.

PITFALL 2

Путаница с миграцией Phidata на Agno

Agno был переименован из Phidata в 2024 году. Более старые кодовые базы, импортирующие из phi.agent или phi.tools, все еще работают через совместимый шим, но импорты agno.* являются актуальными. Рецепт использует agno.* на протяжении всего; если ваш код все еще использует импорты phi.*, выполните pip install -U agno и измените пути импорта перед добавлением Toolkit.

PITFALL 3

Суммы представлены в базовых единицах USDC, как строки

payments.create takes amountWei: a string of USDC base units (6 decimals), so 0.01 USDC is "10000" and 5 USDC is "5000000". Type the method argument as str. It also does not retry by default and can answer 503 until the chain adapter is wired for your network - return a clear message rather than letting the agent loop.

PITFALL 4

Синхронный vs асинхронный запуск

Agno поддерживает agent.run() (синхронный) и agent.arun() (асинхронный). Выберите один режим для каждого агента - вызовите agent.run() и попытайтесь дождаться результата, и вы получите корутину, где ожидали строку. Вызов blockchain0x внутри Toolkit является синхронным; если вы на асинхронном пути и обрабатываете реальный объем, оберните его с помощью asyncio.to_thread, чтобы цикл событий оставался отзывчивым.

PITFALL 5

Проверьте вебхуки по необработанному телу.

Если ваш агент также получает USDC, подтвердите это с помощью вебхука, а не опросом. Проверьте подпись по необработанным байтам запроса (await request.body()), никогда не request.json() повторно сериализованный, потому что HMAC охватывает точные байты. Это HMAC-SHA256 с окном повторного воспроизведения в 300 секунд. Обработчик ниже - это все.

ЧАСТО ЗАДАВАЕМЫЕ

Три вопроса, специфичных для Agno.

Существует ли специальный пакет Agno для установки?

Нет. Agno уже превращает метод Toolkit в инструмент, поэтому честный путь - обернуть реальный клиент blockchain0x в подкласс Toolkit самостоятельно, как показано выше. Единственные поставляемые пакеты фреймворка - это blockchain0x-langchain и blockchain0x-crewai (оба Python) плюс сервер @blockchain0x/mcp. Agno, как и другие фреймворки без специализированного адаптера, является этим кратким рецептом.

Работает ли это с Agno Teams (многоагентное сотрудничество)?

Да. Agno Teams объединяет несколько Agents в одну координированную единицу. Toolkit WalletTools работает в любом agent, который его подключает. Чистый pattern для Teams - дать wallet toolkit одному выделенному treasurer agent и позволить остальным участникам выполнять работу, чтобы полномочия на spending оставались в одном месте - тот же подход, что и в CrewAI recipe. Добавьте методы read и settle в toolkit тем же способом (blockchain0x.transactions.get, blockchain0x.agents.get, blockchain0x.payment_requests.settle).

Работает ли это с моделями рассуждений и AgentUI?

Да. Модели рассуждений (o1, DeepSeek R1) вызывают инструменты тем же образом, просто медленнее за ход, поэтому потоковая передача частичного ответа позволяет пользователю видеть прогресс до завершения вызова. В AgentUI, инспекторе запуска Agno, вызов send_usdc отображается в панели вызовов инструментов, как и любой другой инструмент, что удобно для наблюдения за тем, как платеж проходит через Base Sepolia во время разработки.

Взимайте плату за работу вашего агента Agno.

Небольшой набор инструментов, оборачивающий реальный клиент, без необходимости установки пакета. Бесплатно для начала.