easya2a: 一键将 LangChain Agent 发布为 A2A 服务
随着 A2A (Agent-to-Agent) 协议的发布,相关的实践项目也逐渐涌现。对于许多希望体验 A2A 功能,但又担心学习成本和开发时间的开发者来说,推荐使用 easya2a
——一个可以快速、无缝地将现有 LangChain Agent 转换为在线 A2A URL 的 Python 包。
https://github.com/whillhill/easya2a
快速开始
第一步:安装 easya2a
首先,通过 pip 安装 easya2a
包。
pip install easya2a
第二步:代码实例
下面是一个完整且可直接运行的示例。我们会先创建一个常规的 LangChain Agent,然后展示如何用 easya2a
将其“打包”成一个 A2A 服务。
1. 创建一个常规的 LangChain Agent
这部分代码展示了如何创建一个集成了高德地图工具的 Agent,这在 easya2a
介入之前是标准的 LangChain Agent 创建流程。
from langchain.agents import create_tool_calling_agent, AgentExecutor
from langchain_core.prompts import ChatPromptTemplate
from langchain_openai import ChatOpenAI
from mcpstore import MCPStoredemo_mcp = {"mcpServers": {"amap-amap-sse": {"url": "[https://mcp.amap.com/sse?key=da2c9c39f9edad643b9c53f506fb381c](https://mcp.amap.com/sse?key=da2c9c39f9edad643b9c53f506fb381c)"}}
}
store = MCPStore.setup_store()
store.for_store().add_service(demo_mcp)
tools = store.for_store().for_langchain().list_tools()llm = ChatOpenAI(temperature=0,model="deepseek-chat",openai_api_key="sk-...", # 请替换为您的 DeepSeek API Keyopenai_api_base="[https://api.deepseek.com](https://api.deepseek.com)"
)# --- 创建提示模板 (Prompt) ---
prompt = ChatPromptTemplate.from_messages([("system", "你是一个乐于助人的助手,回答的时候请带上可爱的表情符号。"),("human", "{input}"),("placeholder", "{agent_scratchpad}"),
])# --- 创建并运行 Agent ---
agent = create_tool_calling_agent(llm, tools, prompt)
agent_executor = AgentExecutor(agent=agent, tools=tools, verbose=True)# 到此为止,我们拥有了一个标准的、可执行的 agent_executor
2. 使用 easya2a
进行封装和发布
接下来是见证奇迹的时刻!只需几行代码,我们就能将上面创建的 agent_executor
封装成一个功能强大的 A2A 服务。
# 导入 a2a 封装器
from easya2a import A2AAgentWrapper# --- 核心步骤:初始化并设置 Agent 信息 (必填) ---
easya2a_agent = A2AAgentWrapper.set_up(agent=agent_executor,name="高德地图路线查询Agent",description="这是一个拥有高德地图MCP功能的Agent,可以查询路线和地理位置的经纬度。"
)# --- 可选配置:为 Agent 添加具象化的技能 (可选) ---
# 这能让其他 Agent 更好地理解您的 Agent 能做什么
easya2a_agent.add_skill(skill_id="query_poi",name="城市景点查询",description="根据用户提供的城市名称,返回该城市的著名景点和对应的经纬度。",examples=["你好,山东有什么值得一去的景点吗?","我想知道北京有哪些好玩的景点?"],tags=["query", "conversation", "nlp", "location", "poi"]
)# --- 可选配置:设置元数据和能力开关 (可选) ---# 设置版本号
easya2a_agent.set_version("1.2.3")# 启用流式响应
easya2a_agent.enable_streaming()# 启用会话历史记录
easya2a_agent.enable_history()# 启用多模态能力
easya2a_agent.enable_multimodal()# 设置支持的输入/输出模式
easya2a_agent.set_input_modes(["text","text/plain","application/json","text/markdown"
])easya2a_agent.set_output_modes(["text","text/plain","application/json","text/markdown","text/html"
])# --- 最后一步:启动服务! ---
easya2a_agent.run_a2a(port=10012, host="0.0.0.0")# 启动后,您可以访问 [http://127.0.0.1:10012/](http://127.0.0.1:10012/) 来查看 A2A 服务的 OpenAPI 文档