| 1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- """
- 10.3.3 使用 HelloAgents A2A 工具
- (3)创建Agent网络
- """
- from hello_agents.protocols import A2AServer, A2AClient
- import threading
- import time
- # 1. 创建多个Agent服务
- researcher = A2AServer(
- name="researcher",
- description="研究员"
- )
- @researcher.skill("research")
- def do_research(text: str) -> str:
- import re
- match = re.search(r'research\s+(.+)', text, re.IGNORECASE)
- topic = match.group(1).strip() if match else text
- return str({"topic": topic, "findings": f"{topic}的研究结果"})
- writer = A2AServer(
- name="writer",
- description="撰写员"
- )
- @writer.skill("write")
- def write_article(text: str) -> str:
- import re
- match = re.search(r'write\s+(.+)', text, re.IGNORECASE)
- content = match.group(1).strip() if match else text
-
- # 尝试解析研究数据
- try:
- data = eval(content)
- topic = data.get("topic", "未知主题")
- findings = data.get("findings", "无研究结果")
- except:
- topic = "未知主题"
- findings = content
-
- return f"# {topic}\n\n基于研究:{findings}\n\n文章内容..."
- editor = A2AServer(
- name="editor",
- description="编辑"
- )
- @editor.skill("edit")
- def edit_article(text: str) -> str:
- import re
- match = re.search(r'edit\s+(.+)', text, re.IGNORECASE)
- article = match.group(1).strip() if match else text
-
- result = {
- "article": article + "\n\n[已编辑优化]",
- "feedback": "文章质量良好",
- "approved": True
- }
- return str(result)
- # 2. 启动所有服务
- threading.Thread(target=lambda: researcher.run(port=5000), daemon=True).start()
- threading.Thread(target=lambda: writer.run(port=5001), daemon=True).start()
- threading.Thread(target=lambda: editor.run(port=5002), daemon=True).start()
- time.sleep(2) # 等待服务启动
- # 3. 创建客户端连接到各个Agent
- researcher_client = A2AClient("http://localhost:5000")
- writer_client = A2AClient("http://localhost:5001")
- editor_client = A2AClient("http://localhost:5002")
- # 4. 协作流程
- def create_content(topic):
- # 步骤1:研究
- research = researcher_client.execute_skill("research", f"research {topic}")
- research_data = research.get('result', '')
-
- # 步骤2:撰写
- article = writer_client.execute_skill("write", f"write {research_data}")
- article_content = article.get('result', '')
-
- # 步骤3:编辑
- final = editor_client.execute_skill("edit", f"edit {article_content}")
- return final.get('result', '')
- # 使用
- if __name__ == "__main__":
- result = create_content("AI在医疗领域的应用")
- print(f"\n最终结果:\n{result}")
|