ใช้ blockchain RPC ใน LangChain agent ด้วย BlockVectra
ให้ LangChain agent เข้าถึงข้อมูลบล็อกเชนแบบสดด้วยเครื่องมือเดียวผ่าน endpoint สาธารณะของ BlockVectra ที่ไม่ต้องใช้คีย์ จากนั้นเพิ่ม docs MCP server และ API key สำหรับเมธอดที่ต้องใช้คีย์
LangChain agent อ่านข้อมูลบล็อกเชนแบบสดผ่านเครื่องมือเดียวที่ POST JSON-RPC ไปยัง https://api.blockvectra.com/v1/eth_mainnet/public endpoint นั้นไม่ต้องใช้ API key หรือการลงทะเบียนสำหรับเมธอดใน public.methods ของแต่ละเชน คีย์ช่วยเพิ่มเมธอดที่เหลือ และแผนบริการฟรีให้ 30,000,000 CU ต่อช่วงเวลา 30 วัน ตรวจสอบเมื่อ
import httpx
from langchain.agents import create_agent
from langchain.tools import tool
RPC = "https://api.blockvectra.com/v1/eth_mainnet/public"
@tool
def eth_block_number() -> str:
"""Return the latest Ethereum mainnet block number as a hex string."""
body = {"jsonrpc": "2.0", "id": 1, "method": "eth_blockNumber", "params": []}
return httpx.post(RPC, json=body, timeout=10).json()["result"]
agent = create_agent("claude-sonnet-5", tools=[eth_block_number])
result = agent.invoke({"messages": [{"role": "user", "content": "What is the latest block?"}]})
print(result["messages"][-1].content)ติดตั้งด้วย pip install langchain httpx; สตริงโมเดลและคีย์ของผู้ให้บริการเป็นไปตามLangChain quickstart เครื่องมือนี้ใช้ @tool decorator และ create_agent ของ LangChain
เครื่องมือเดียวกันใน TypeScript
import * as z from "zod";
import { createAgent, tool } from "langchain";
const ethBlockNumber = tool(
async () => {
const res = await fetch("https://api.blockvectra.com/v1/eth_mainnet/public", {
method: "POST",
headers: { "content-type": "application/json" },
body: JSON.stringify({ jsonrpc: "2.0", id: 1, method: "eth_blockNumber", params: [] }),
});
return (await res.json()).result as string;
},
{ name: "eth_block_number", description: "Latest Ethereum mainnet block number (hex).", schema: z.object({}) },
);
const agent = createAgent({ model: "claude-sonnet-5", tools: [ethBlockNumber] });ดูคู่มือ toolsของ LangChain JS สำหรับซิกเนเจอร์ของ tool()
เรียกเมธอดใดก็ได้ด้วย API key
เมธอดนอก public.methods เช่น eth_getLogs ต้องใช้คีย์ อ่านคีย์จากสภาพแวดล้อมและส่งในส่วนหัว x-api-key; slug ของเชน (eth_mainnet, base_mainnet และอื่นๆ) ได้จาก GET /v1/chains:
import os
import httpx
from langchain.tools import tool
@tool
def rpc_call(chain: str, method: str, params: list) -> dict:
"""Call a JSON-RPC method on a BlockVectra chain slug such as base_mainnet."""
headers = {"x-api-key": os.environ["BLOCKVECTRA_API_KEY"]}
body = {"jsonrpc": "2.0", "id": 1, "method": method, "params": params}
return httpx.post(f"https://api.blockvectra.com/v1/{chain}", json=body, headers=headers, timeout=15).json()การส่งกลับการตอบกลับ JSON-RPC ทั้งหมดช่วยให้โมเดลอ่านออบเจกต์ error และปรับการเรียกครั้งถัดไปได้ หากต้องการสร้างคีย์โดยไม่ใช้เบราว์เซอร์ ให้ทำโฟลว์สี่ขั้นตอนในคู่มือการลงทะเบียนแบบเป็นโปรแกรม: challenge, ลายเซ็น, login แล้ว POST /keys นักพัฒนายังสร้างคีย์ในคอนโซลได้ด้วย
เพิ่ม docs MCP server
LangChain agent เชื่อมต่อกับ MCP server ผ่าน MCPAdapter ชี้ไปที่ https://docs.blockvectra.com/mcp เพื่อให้ agent มี list_chains, get_status, rpc_call, read_doc และเครื่องมืออื่นที่ระบุไว้ในหน้า MCP server การเชื่อมต่อไม่ต้องใช้คีย์
from langchain.agents import create_agent
from langchain.mcp import MCPAdapter
async def main():
async with MCPAdapter("https://docs.blockvectra.com/mcp") as adapter:
tools = await adapter.list_tools()
agent = create_agent("claude-sonnet-5", tools)
return await agent.ainvoke({"messages": [{"role": "user", "content": "List the supported chains."}]})ติดตั้งด้วย pip install "langchain[mcp]" (langchain>=1.4.0, อยู่ในช่วงเบต้า) หากต้องการใช้เครื่องมือที่ต้องใช้คีย์ ให้ส่งคีย์เป็น bearer token: MCPAdapter(Client(url, auth=os.environ["BLOCKVECTRA_API_KEY"])) พร้อม from fastmcp.client import Client ตามที่ระบุในคู่มือ MCP authentication ของ LangChain
ใน TypeScript ให้ติดตั้ง @langchain/mcp-adapters@^2.0.0 และส่งแมปส่วนหัว:
import { MCPAdapter } from "@langchain/mcp-adapters";
import { createAgent } from "langchain";
const adapter = new MCPAdapter({
servers: {
blockvectra: {
url: "https://docs.blockvectra.com/mcp",
headers: { "x-api-key": process.env.BLOCKVECTRA_API_KEY! },
},
},
});
try {
const agent = createAgent({ model: "claude-sonnet-5", tools: await adapter.listTools() });
// agent.invoke(...)
} finally {
await adapter.close();
}ลบบรรทัด headers ออกเพื่อเชื่อมต่อโดยไม่ใช้คีย์ เอกสารอ้างอิงทางการ: LangChain MCP (Python) และ LangChain MCP (JavaScript)
ข้อผิดพลาดที่เครื่องมือของคุณจะพบ
| การตอบกลับ | ความหมาย | สิ่งที่ agent ควรทำ |
|---|---|---|
HTTP 401, -32024, missing_api_key | เรียก URL ที่ต้องใช้คีย์โดยไม่มีคีย์ | ส่งคีย์ใน x-api-key หรือในพาธ |
HTTP 401, -32024, invalid_api_key | ไม่รู้จักคีย์ ถูกปิดใช้งาน หรือถูกเพิกถอน | ตรวจสอบคีย์ในคอนโซล; คีย์ใหม่ใช้เวลาไม่กี่วินาทีจึงจะเปิดใช้งาน |
-32601, method_not_public | เมธอดไม่อยู่ใน public.methods ของเชน | ใช้ URL ที่ต้องใช้คีย์แทน /public |
-32601, method not available | เมธอดไม่ได้เปิดใช้บนเชนนั้น | ตรวจสอบ methods.allow ใน GET /v1/chains |
ทุกข้อผิดพลาดมี data.reason และ docs_url; รายการทั้งหมดอยู่ในหน้าข้อผิดพลาด
คำถามที่พบบ่อย
endpoint สาธารณะใช้กับ eth_getLogs ได้หรือไม่ ไม่ได้ ให้บริการเฉพาะเมธอดใน public.methods ของเชน; eth_getLogs และ Data API ต้องใช้ API key
agent ส่ง API key เป็นอาร์กิวเมนต์ของเครื่องมือได้หรือไม่ ไม่ได้ เก็บไว้ในสภาพแวดล้อมหรือส่วนหัวของไคลเอนต์ MCP; MCP server ปฏิเสธคีย์ในอาร์กิวเมนต์ของเครื่องมือ
เครื่องมือชี้ไปยังเชนอื่นได้หรือไม่ ได้ แทน eth_mainnet ด้วย slug ของเชนใดก็ได้ที่มี public.url ใน GET /v1/chains
ขั้นตอนถัดไป
- ภาพรวมเฟรมเวิร์ก agent สำหรับ ElizaOS, viem, wagmi และ Coinbase AgentKit
- เชื่อมต่อ AI Agent เพื่อค้นหา endpoint ด้วย MCP, llms.txt และ OpenAPI
- กฎการเรียกเก็บเงิน สำหรับการวัด CU ขีดจำกัดอัตรา และข้อผิดพลาดที่ไม่คิดค่าบริการ
อัปเดตล่าสุด:
สูตรการตั้งค่าสำหรับ Agent Framework
กำหนดค่า Blockchain RPC สำหรับ ElizaOS, viem, wagmi และ Coinbase AgentKit ตลอดจนค้นหาความสามารถต่างๆ ผ่าน docs MCP
ElizaOS
ชี้ plugin-evm ของ ElizaOS ไปที่ BlockVectra ด้วยตัวแปรสภาพแวดล้อมสองตัว เริ่มต้นโดยไม่ใช้คีย์บน endpoint สาธารณะ แล้วเพิ่ม docs MCP server ผ่าน plugin-mcp