주 콘텐츠로 건너뛰기
AGNO 통합

Agno 결제 통합.

Agno 패키지가 없으며, 필요하지도 않습니다. 실제 blockchain0x 클라이언트를 작은 Toolkit에 래핑하면 에이전트가 Base에서 USDC를 이동할 수 있습니다 - 최소한의 추상화, Agno 방식입니다.

짧은 답변

Agno 전용 패키지는 없으며, 필요하지도 않습니다. Agno는 메서드를 도구로 바꾸므로, 실제 Python 클라이언트를 작은 툴킷으로 감싸서 에 추가하면 됩니다. 에이전트는 USDC 전송, 인보이스 정산, 지갑 조회를 수행할 수 있으며, 모든 Agno 모델(OpenAI, Anthropic, DeepSeek, Llama, Mistral)에서 동작합니다. 결제는 Base에서 정산됩니다.

AGNO의 이유

경량 Python 프레임워크입니다. 추상화 세금 없음.

Agno(구 Phidata)는 최소한의 절차를 원할 때 사용하는 에이전트 프레임워크입니다. 그래프 빌더, 크루, 워크플로우가 없고 - 오직 에이전트, 도구 및 run() 메소드만 있습니다. 도구는 Python 호출 가능 객체입니다. 이 프레임워크는 도구 지원으로 LLM을 호출하고, 메모리를 관리하고, 스트리밍 출력을 생성할 수 있는 충분한 구조를 추가한 후, 당신의 길을 비켜줍니다.

레시피는 동일한 철학을 따릅니다. 실제 클라이언트를 호출하는 하나의 메서드를 등록하는 작은 Toolkit 하위 클래스를 작성합니다 - 이는 다른 모든 Agno 도구와 같아 보이고 행동합니다. 인스턴스화 이상의 특별한 설정이 필요 없으며, 연결할 그래프도 없고, 추적할 어댑터 버전도 없습니다. 단순함이 핵심입니다: 그래프가 필요하다면 LangGraph에 있을 것입니다.

설치

Agno 및 핵심 SDK를 설치하세요. 두 개의 키.

추가할 blockchain0x Agno 패키지가 없습니다. Agno(Python 3.10+, Phidata 이름 변경 후 1.0+ 라인)를 설치하고 실제 blockchain0x 코어 SDK를 설치한 후 아래의 툴킷을 작성합니다. 여전히 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-supported model에 해당하는 키). BLOCKCHAIN0X_API_KEY는 dashboard의 sk_test_ testnet 또는 sk_live_ mainnet 키이며, client는 이를 environment에서 읽습니다. agent가 돈도 받는 경우, webhook handler에는 추가로 BLOCKCHAIN0X_WEBHOOK_SECRET가 필요합니다.

레시피

지불을 하는 Toolkit, 에이전트에 전달됩니다.

아래는 전체 통합입니다. WalletTools는 send_usdc를 등록하는 Toolkit 하위 클래스이며, 이는 실제 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.

웹훅 처리

서명된 웹후크로 수신 결제를 확인하십시오.

내 에이전트가 USDC를 수신하는 경우, 폴링 대신 웹후크로 확인하세요. verify 헬퍼는 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}

알고리즘은 문자열 t.rawBody에 대한 HMAC-SHA256, 상수 시간 비교 및 300초 재생 창입니다. 원시 본문을 await request.body()를 통해 읽으십시오; request.json()을 다시 직렬화하지 마십시오, 그렇게 하면 서명이 포함하는 바이트가 변경됩니다. 전송된 이벤트는 payment.received, payment.sent, wallet.deployed 및 webhook.test입니다. 무거운 후속 작업의 경우, 작업을 큐에 추가하고(Celery, arq) 핸들러를 차단하기보다는 즉시 200으로 응답하십시오.

소스 및 문서

래핑하고 있는 클라이언트는 공개되어 있습니다. 읽어보십시오.

복제할 Agno starter package는 없습니다 - 위의 recipe가 바로 integration입니다. blockchain0x SDK는 GitHub에서 open source로 제공됩니다. 이 recipe는 Python SDK(blockchain0x-python)를 감싸며, 전체 method surface는 docs에 있습니다. toolkit method 참고용으로 읽으세요.

github.com/tosh-labs/blockchain0x-python

전체 SDK 메서드 표면과 scope는 the docs에 문서화되어 있습니다. Base Sepolia에서 sk_test_ 키로 시작한 다음, 툴킷이 기대한 대로 동작하면 sk_live_로 전환하세요.

일반적인 함정

Agno에 특화된 다섯 가지 주의할 사항.

Agno는 통합하기에 가장 깔끔한 에이전트 프레임워크 중 하나이지만, 자체적인 주의사항이 있습니다 - 특히 Phidata 이름 변경 및 마크다운 렌더링과 관련하여.

PITFALL 1

Agno 패키지가 없습니다 - SDK를 Toolkit에 래핑합니다.

Blockchain0x는 LangChain 및 CrewAI와 MCP 서버를 위한 어댑터를 제공합니다. 전용 Agno 패키지는 없습니다. 위의 레시피는 경로입니다: 실제 blockchain0x 클라이언트를 호출하는 메서드를 등록하는 Toolkit 서브클래스입니다. Agno는 메서드 시그니처와 docstring을 읽어 도구 스키마를 구축하므로 docstring을 정확하게 유지하십시오.

PITFALL 2

Phidata에서 Agno로의 마이그레이션 혼란

Agno는 2024년에 Phidata에서 이름이 변경되었습니다. 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()을 호출하고 결과를 기다리면 문자열이 예상되는 곳에서 코루틴을 받게 됩니다. Toolkit 내부의 blockchain0x 호출은 동기적입니다; 비동기 경로에 있고 실제 볼륨을 이동 중이라면 asyncio.to_thread로 래핑하여 이벤트 루프가 응답성을 유지하도록 하십시오.

PITFALL 5

원시 본문에 대해 웹훅을 검증하십시오.

내 에이전트가 USDC를 수신하는 경우, 폴링 대신 웹후크로 확인하세요. RAW 요청 바이트(대기 request.body())에 대한 서명을 검증하고, 요청을 json()으로 재직렬화하지 마세요, HMAC가 정확한 바이트를 포함하기 때문입니다. 이는 300초 재생 창을 가진 HMAC-SHA256입니다. 아래의 핸들러가 전체입니다.

자주 묻는 질문

세 가지 Agno 관련 질문.

설치할 전용 Agno 패키지가 있나요?

아니요. Agno는 이미 Toolkit 메서드를 도구로 변환하므로, 정직한 경로는 위에서 설명한 대로 실제 blockchain0x 클라이언트를 Toolkit 하위 클래스에 직접 감싸는 것입니다. 발송된 프레임워크 패키지는 blockchain0x-langchain과 blockchain0x-crewai (둘 다 Python) 및 @blockchain0x/mcp 서버뿐입니다. Agno는 전용 어댑터가 없는 다른 프레임워크와 마찬가지로 이 몇 줄의 레시피입니다.

이것이 Agno Teams(다중 에이전트 협업)와 함께 작동합니까?

네. Agno Teams는 여러 Agents를 하나의 coordinated unit으로 결합합니다. WalletTools toolkit은 이를 포함한 어떤 agent에서도 작동합니다. Teams에 가장 적합한 패턴은 wallet toolkit을 하나의 전담 treasurer agent에 부여하고 나머지 멤버들은 작업만 하게 하는 것입니다. 그러면 spending authority가 한곳에 유지되며 - CrewAI recipe와 같은 구조입니다. read와 settle method도 같은 방식으로 toolkit에 추가하세요 (blockchain0x.transactions.get, blockchain0x.agents.get, blockchain0x.payment_requests.settle).

추론 모델 및 AgentUI와 함께 작동합니까?

네. 추론 모델(o1, DeepSeek R1)은 도구를 동일한 방식으로 호출하지만, 턴당 느리므로 호출이 완료되기 전에 사용자가 진행 상황을 볼 수 있도록 부분 응답을 스트리밍하세요. AgentUI에서 Agno의 실행 검사기에서 send_usdc 호출은 다른 도구와 같이 도구 호출 패널에 표시되며, 개발 중 Base Sepolia에서 결제가 진행되는 것을 지켜보는 데 유용합니다.

Agno 에이전트의 작업에 대한 요금.

실제 클라이언트를 감싸는 작은 Toolkit, 설치할 패키지가 없습니다. 무료로 시작할 수 있습니다.