""" 10.3.4 在智能体中使用A2A工具 (2)实战案例:智能客服系统 """ from hello_agents import SimpleAgent, HelloAgentsLLM from hello_agents.tools import A2ATool from hello_agents.protocols import A2AServer import threading import time from dotenv import load_dotenv load_dotenv() llm = HelloAgentsLLM() # 1. 创建技术专家Agent服务 tech_expert = A2AServer( name="tech_expert", description="技术专家,回答技术问题" ) @tech_expert.skill("answer") def answer_tech_question(text: str) -> str: import re match = re.search(r'answer\s+(.+)', text, re.IGNORECASE) question = match.group(1).strip() if match else text # 实际应用中,这里会调用LLM或知识库 return f"技术回答:关于'{question}',我建议您查看我们的技术文档..." # 2. 创建销售顾问Agent服务 sales_advisor = A2AServer( name="sales_advisor", description="销售顾问,回答销售问题" ) @sales_advisor.skill("answer") def answer_sales_question(text: str) -> str: import re match = re.search(r'answer\s+(.+)', text, re.IGNORECASE) question = match.group(1).strip() if match else text return f"销售回答:关于'{question}',我们有特别优惠..." # 3. 启动服务 threading.Thread(target=lambda: tech_expert.run(port=6000), daemon=True).start() threading.Thread(target=lambda: sales_advisor.run(port=6001), daemon=True).start() time.sleep(2) # 4. 创建接待员Agent(使用HelloAgents的SimpleAgent) receptionist = SimpleAgent( name="接待员", llm=llm, system_prompt="""你是客服接待员,负责: 1. 分析客户问题类型(技术问题 or 销售问题) 2. 将问题转发给相应的专家 3. 整理专家的回答并返回给客户 请保持礼貌和专业。""" ) # 添加技术专家工具 tech_tool = A2ATool( agent_url="http://localhost:6000", name="tech_expert", description="技术专家,回答技术相关问题" ) receptionist.add_tool(tech_tool) # 添加销售顾问工具 sales_tool = A2ATool( agent_url="http://localhost:6001", name="sales_advisor", description="销售顾问,回答价格、购买相关问题" ) receptionist.add_tool(sales_tool) # 5. 处理客户咨询 def handle_customer_query(query): print(f"\n客户咨询:{query}") print("=" * 50) response = receptionist.run(query) print(f"\n客服回复:{response}") print("=" * 50) # 测试不同类型的问题 if __name__ == "__main__": handle_customer_query("你们的API如何调用?") handle_customer_query("企业版的价格是多少?") handle_customer_query("如何集成到我的Python项目中?")