main.py 2.3 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061
  1. import asyncio
  2. from python_a2a import AgentNetwork, AIAgentRouter, A2AClient, Task, Message, MessageRole, TextContent
  3. import json
  4. import uuid
  5. from time import sleep
  6. async def main():
  7. # 1. 创建 AgentNetwork
  8. network = AgentNetwork(name="TravelAgentNetwork")
  9. # 添加票务代理
  10. network.add("TicketAgent", "http://127.0.0.1:5009")
  11. # 添加天气代理
  12. network.add("WeatherAgent", "http://127.0.0.1:5008")
  13. print("[主控日志] AgentNetwork 初始化完成,已添加代理:")
  14. for agent_info in network.list_agents():
  15. print(json.dumps(agent_info, indent=4, ensure_ascii=False))
  16. print("-" * 50)
  17. # 2. 创建 AIAgentRouter
  18. router=AIAgentRouter(
  19. llm_client=A2AClient("http://localhost:5555"), # 假设使用router_A2Aagent_Server.py的LLM服务器
  20. agent_network=network)
  21. # 3. 测试查询
  22. queries = [
  23. "帮我查下北京的天气", # 应该路由到 WeatherAgent
  24. "预订一张从北京到上海的高铁票" # 应该路由到 TicketAgent
  25. ]
  26. for query in queries:
  27. print(f"[主控日志] 用户查询: '{query}'")
  28. # 使用路由器选择代理
  29. agent_name, confidence = router.route_query(query)
  30. print(f"[主控日志] 路由结果: {agent_name} (置信度: {confidence})")
  31. if agent_name:
  32. # 获取代理客户端
  33. agent_client = network.get_agent(agent_name)
  34. if agent_client:
  35. # 创建消息和任务
  36. message = Message(
  37. content=TextContent(text=query),
  38. role=MessageRole.USER
  39. )
  40. task = Task(
  41. id="task-" + str(uuid.uuid4()),
  42. message=message.to_dict())
  43. # 发送任务并获取响应
  44. try:
  45. result = await agent_client.send_task_async(task)
  46. sleep(5)
  47. print("[主控日志] 收到完整响应:")
  48. print(json.dumps(result.to_dict(), indent=4, ensure_ascii=False))
  49. except:
  50. print("[主控日志] 错误:无法连接到代理")
  51. if __name__ == "__main__":
  52. # 请确保 ticket_agent.py 和 weather_agent.py 正在运行...
  53. asyncio.run(main())