|
|
|
|
|
from hello_agents import SimpleAgent, HelloAgentsLLM
|
|
|
|
|
|
from hello_agents.tools import MCPTool
|
|
|
|
|
|
|
|
|
|
|
|
print("=" * 70)
|
|
|
|
|
|
print("方式1:使用内置演示服务器")
|
|
|
|
|
|
print("=" * 70)
|
|
|
|
|
|
|
|
|
|
|
|
agent = SimpleAgent(name="助手", llm=HelloAgentsLLM())
|
|
|
|
|
|
|
|
|
|
|
|
# 无需任何配置,自动使用内置演示服务器
|
|
|
|
|
|
# 内置服务器提供:add, subtract, multiply, divide, greet, get_system_info
|
|
|
|
|
|
mcp_tool = MCPTool() # 默认name="mcp"
|
|
|
|
|
|
agent.add_tool(mcp_tool)
|
|
|
|
|
|
|
|
|
|
|
|
# 智能体可以使用内置工具
|
|
|
|
|
|
response = agent.run("计算 123 + 456")
|
|
|
|
|
|
print(response) # 智能体会自动调用add工具
|
|
|
|
|
|
|
|
|
|
|
|
print("\n" + "=" * 70)
|
|
|
|
|
|
print("方式2:连接外部MCP服务器(使用多个服务器)")
|
|
|
|
|
|
print("=" * 70)
|
|
|
|
|
|
|
|
|
|
|
|
# 重要:为每个MCP服务器指定不同的name,避免工具名称冲突
|
|
|
|
|
|
|
|
|
|
|
|
# 示例1:连接到社区提供的文件系统服务器
|
|
|
|
|
|
fs_tool = MCPTool(
|
|
|
|
|
|
name="filesystem", # 指定唯一名称
|
|
|
|
|
|
description="访问本地文件系统",
|
|
|
|
|
|
server_command=["npx", "-y", "@modelcontextprotocol/server-filesystem", "."]
|
|
|
|
|
|
)
|
|
|
|
|
|
agent.add_tool(fs_tool)
|
|
|
|
|
|
|
|
|
|
|
|
# 示例2:连接到自定义的 Python MCP 服务器
|
|
|
|
|
|
# 关于如何编写自定义MCP服务器,请参考10.5章节
|
|
|
|
|
|
custom_tool = MCPTool(
|
|
|
|
|
|
name="custom_server", # 使用不同的名称
|
|
|
|
|
|
description="自定义业务逻辑服务器",
|
|
|
|
|
|
server_command=["python", "my_mcp_server.py"]
|
|
|
|
|
|
)
|
|
|
|
|
|
agent.add_tool(custom_tool)
|
|
|
|
|
|
|
|
|
|
|
|
print("\n当前Agent拥有的工具:")
|
|
|
|
|
|
print(f"- {mcp_tool.name}: {mcp_tool.description}")
|
|
|
|
|
|
print(f"- {fs_tool.name}: {fs_tool.description}")
|
|
|
|
|
|
print(f"- {custom_tool.name}: {custom_tool.description}")
|
|
|
|
|
|
|
|
|
|
|
|
# Agent现在可以自动使用这些工具!
|
|
|
|
|
|
response = agent.run("请读取my_README.md文件,并总结其中的主要内容")
|
|
|
|
|
|
print(response)
|