|
|
from hello_agents.protocols.a2a.implementation import A2AServer, A2A_AVAILABLE
|
|
|
|
|
|
def create_calculator_agent():
|
|
|
"""创建一个计算器智能体"""
|
|
|
if not A2A_AVAILABLE:
|
|
|
print("❌ A2A SDK 未安装,请运行: pip install a2a-sdk")
|
|
|
return None
|
|
|
|
|
|
print("🧮 创建计算器智能体")
|
|
|
|
|
|
# 创建 A2A 服务器
|
|
|
calculator = A2AServer(
|
|
|
name="calculator-agent",
|
|
|
description="专业的数学计算智能体",
|
|
|
version="1.0.0",
|
|
|
capabilities={
|
|
|
"math": ["addition", "subtraction", "multiplication", "division"],
|
|
|
"advanced": ["power", "sqrt", "factorial"]
|
|
|
}
|
|
|
)
|
|
|
|
|
|
# 添加基础计算技能
|
|
|
@calculator.skill("add")
|
|
|
def add_numbers(query: str) -> str:
|
|
|
"""加法计算"""
|
|
|
try:
|
|
|
# 简单解析 "计算 5 + 3" 格式
|
|
|
parts = query.replace("计算", "").replace("加", "+").replace("加上", "+")
|
|
|
if "+" in parts:
|
|
|
numbers = [float(x.strip()) for x in parts.split("+")]
|
|
|
result = sum(numbers)
|
|
|
return f"计算结果: {' + '.join(map(str, numbers))} = {result}"
|
|
|
else:
|
|
|
return "请使用格式: 计算 5 + 3"
|
|
|
except Exception as e:
|
|
|
return f"计算错误: {e}"
|
|
|
|
|
|
@calculator.skill("multiply")
|
|
|
def multiply_numbers(query: str) -> str:
|
|
|
"""乘法计算"""
|
|
|
try:
|
|
|
parts = query.replace("计算", "").replace("乘以", "*").replace("×", "*")
|
|
|
if "*" in parts:
|
|
|
numbers = [float(x.strip()) for x in parts.split("*")]
|
|
|
result = 1
|
|
|
for num in numbers:
|
|
|
result *= num
|
|
|
return f"计算结果: {' × '.join(map(str, numbers))} = {result}"
|
|
|
else:
|
|
|
return "请使用格式: 计算 5 * 3"
|
|
|
except Exception as e:
|
|
|
return f"计算错误: {e}"
|
|
|
|
|
|
@calculator.skill("info")
|
|
|
def get_info(query: str) -> str:
|
|
|
"""获取智能体信息"""
|
|
|
return f"我是 {calculator.name},可以进行基础数学计算。支持的技能: {list(calculator.skills.keys())}"
|
|
|
|
|
|
print(f"✅ 计算器智能体创建成功,支持技能: {list(calculator.skills.keys())}")
|
|
|
return calculator
|
|
|
|
|
|
# 创建智能体
|
|
|
calc_agent = create_calculator_agent()
|
|
|
if calc_agent:
|
|
|
# 测试技能
|
|
|
print("\n🧪 测试智能体技能:")
|
|
|
test_queries = [
|
|
|
"获取信息",
|
|
|
"计算 10 + 5",
|
|
|
"计算 6 * 7"
|
|
|
]
|
|
|
|
|
|
for query in test_queries:
|
|
|
if "信息" in query:
|
|
|
result = calc_agent.skills["info"](query)
|
|
|
elif "+" in query:
|
|
|
result = calc_agent.skills["add"](query)
|
|
|
elif "*" in query or "×" in query:
|
|
|
result = calc_agent.skills["multiply"](query)
|
|
|
else:
|
|
|
result = "未知查询类型"
|
|
|
|
|
|
print(f" 📝 查询: {query}")
|
|
|
print(f" 🤖 回复: {result}")
|
|
|
print() |