14_weather_agent.py 1.7 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364
  1. """在 Agent 中使用天气 MCP 服务器"""
  2. import os
  3. from dotenv import load_dotenv
  4. from hello_agents import SimpleAgent, HelloAgentsLLM
  5. from hello_agents.tools import MCPTool
  6. load_dotenv()
  7. def create_weather_assistant():
  8. """创建天气助手"""
  9. llm = HelloAgentsLLM()
  10. assistant = SimpleAgent(
  11. name="天气助手",
  12. llm=llm,
  13. system_prompt="""你是天气助手,可以查询城市天气。
  14. 使用 mcp_get_weather 工具查询天气,支持中文城市名。
  15. """
  16. )
  17. # 添加天气 MCP 工具
  18. server_script = os.path.join(os.path.dirname(__file__), "14_weather_mcp_server.py")
  19. weather_tool = MCPTool(server_command=["python", server_script])
  20. # 显式展开并注册 MCP 子工具
  21. expanded_tools = weather_tool.get_expanded_tools()
  22. if not expanded_tools:
  23. raise RuntimeError("未发现天气 MCP 子工具,请检查服务脚本、依赖和启动日志。")
  24. for expanded_tool in expanded_tools:
  25. assistant.add_tool(expanded_tool)
  26. return assistant
  27. def demo():
  28. """演示"""
  29. assistant = create_weather_assistant()
  30. print("\n查询北京天气:")
  31. response = assistant.run("北京今天天气怎么样?")
  32. print(f"回答: {response}\n")
  33. def interactive():
  34. """交互模式"""
  35. assistant = create_weather_assistant()
  36. while True:
  37. user_input = input("\n你: ").strip()
  38. if user_input.lower() in ['quit', 'exit']:
  39. break
  40. response = assistant.run(user_input)
  41. print(f"助手: {response}")
  42. if __name__ == "__main__":
  43. import sys
  44. if len(sys.argv) > 1 and sys.argv[1] == "demo":
  45. demo()
  46. else:
  47. interactive()