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 MCPStore

demo_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 Key
    openai_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 文档
Logo

火山引擎开发者社区是火山引擎打造的AI技术生态平台,聚焦Agent与大模型开发,提供豆包系列模型(图像/视频/视觉)、智能分析与会话工具,并配套评测集、动手实验室及行业案例库。社区通过技术沙龙、挑战赛等活动促进开发者成长,新用户可领50万Tokens权益,助力构建智能应用。

更多推荐