You cannot select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
|
|
|
|
"""
|
|
|
|
|
|
10.3.3 使用 HelloAgents A2A 工具
|
|
|
|
|
|
(1)创建A2A Agent服务端
|
|
|
|
|
|
"""
|
|
|
|
|
|
|
|
|
|
|
|
from hello_agents.protocols import A2AServer
|
|
|
|
|
|
import threading
|
|
|
|
|
|
import time
|
|
|
|
|
|
|
|
|
|
|
|
# 创建研究员Agent服务
|
|
|
|
|
|
researcher = A2AServer(
|
|
|
|
|
|
name="researcher",
|
|
|
|
|
|
description="负责搜索和分析资料的Agent",
|
|
|
|
|
|
version="1.0.0"
|
|
|
|
|
|
)
|
|
|
|
|
|
|
|
|
|
|
|
# 定义技能
|
|
|
|
|
|
@researcher.skill("research")
|
|
|
|
|
|
def handle_research(text: str) -> str:
|
|
|
|
|
|
"""处理研究请求"""
|
|
|
|
|
|
import re
|
|
|
|
|
|
match = re.search(r'research\s+(.+)', text, re.IGNORECASE)
|
|
|
|
|
|
topic = match.group(1).strip() if match else text
|
|
|
|
|
|
|
|
|
|
|
|
# 实际的研究逻辑(这里简化)
|
|
|
|
|
|
result = {
|
|
|
|
|
|
"topic": topic,
|
|
|
|
|
|
"findings": f"关于{topic}的研究结果...",
|
|
|
|
|
|
"sources": ["来源1", "来源2", "来源3"]
|
|
|
|
|
|
}
|
|
|
|
|
|
return str(result)
|
|
|
|
|
|
|
|
|
|
|
|
# 在后台启动服务
|
|
|
|
|
|
def start_server():
|
|
|
|
|
|
researcher.run(host="localhost", port=5000)
|
|
|
|
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
|
|
|
server_thread = threading.Thread(target=start_server, daemon=True)
|
|
|
|
|
|
server_thread.start()
|
|
|
|
|
|
|
|
|
|
|
|
print("✅ 研究员Agent服务已启动在 http://localhost:5000")
|
|
|
|
|
|
|
|
|
|
|
|
# 保持程序运行
|
|
|
|
|
|
try:
|
|
|
|
|
|
while True:
|
|
|
|
|
|
time.sleep(1)
|
|
|
|
|
|
except KeyboardInterrupt:
|
|
|
|
|
|
print("\n服务已停止")
|
|
|
|
|
|
|