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.

148 lines
4.3 KiB
Python

6 months ago
# test_react_agent.py
from dotenv import load_dotenv
from hello_agents import HelloAgentsLLM, ToolRegistry
from my_react_agent import MyReActAgent
# 加载环境变量
load_dotenv()
def test_react_agent():
"""测试MyReActAgent的功能"""
# 创建LLM实例
llm = HelloAgentsLLM()
# 创建工具注册表
tool_registry = ToolRegistry()
# 注册一些基础工具用于测试
print("🔧 注册测试工具...")
# 注册计算器工具
try:
from hello_agents import calculate
tool_registry.register_tool("calculate", calculate, "执行数学计算,支持基本的四则运算")
print("✅ 计算器工具注册成功")
except ImportError:
print("⚠️ 计算器工具未找到,跳过注册")
# 注册搜索工具(如果可用)
try:
from hello_agents import search
tool_registry.register_tool("search", search, "搜索互联网信息")
print("✅ 搜索工具注册成功")
except ImportError:
print("⚠️ 搜索工具未找到,跳过注册")
# 创建自定义ReActAgent
agent = MyReActAgent(
name="我的推理行动助手",
llm=llm,
tool_registry=tool_registry,
max_steps=5
)
print("\n" + "="*60)
print("开始测试 MyReActAgent")
print("="*60)
# 测试1数学计算问题
print("\n📊 测试1数学计算问题")
math_question = "请帮我计算:(25 + 15) × 3 - 8 的结果是多少?"
try:
result1 = agent.run(math_question)
print(f"\n🎯 测试1结果: {result1}")
except Exception as e:
print(f"❌ 测试1失败: {e}")
# 测试2需要搜索的问题
print("\n🔍 测试2信息搜索问题")
search_question = "Python编程语言是什么时候发布的请告诉我具体的年份。"
try:
result2 = agent.run(search_question)
print(f"\n🎯 测试2结果: {result2}")
except Exception as e:
print(f"❌ 测试2失败: {e}")
# 测试3复合问题需要多步推理
print("\n🧠 测试3复合推理问题")
complex_question = "如果一个班级有30个学生其中60%是女生,那么男生有多少人?请先计算女生人数,再计算男生人数。"
try:
result3 = agent.run(complex_question)
print(f"\n🎯 测试3结果: {result3}")
except Exception as e:
print(f"❌ 测试3失败: {e}")
# 查看对话历史
print(f"\n📝 对话历史记录: {len(agent.get_history())} 条消息")
# 显示工具使用统计
print(f"\n🛠️ 可用工具数量: {len(tool_registry.tools)}")
print("已注册的工具:")
for tool_name in tool_registry.tools.keys():
print(f" - {tool_name}")
print("\n🎉 测试完成!")
def test_custom_prompt():
"""测试自定义提示词的ReActAgent"""
print("\n" + "="*60)
print("测试自定义提示词的 MyReActAgent")
print("="*60)
# 创建LLM和工具注册表
llm = HelloAgentsLLM()
tool_registry = ToolRegistry()
# 注册计算器工具
try:
from hello_agents import calculate
tool_registry.register_tool("calculate", calculate, "数学计算工具")
except ImportError:
pass
# 自定义提示词(更简洁的版本)
custom_prompt = """你是一个数学专家AI助手。
可用工具{tools}
请按以下格式回应
Thought: [你的思考]
Action: [tool_name[input] Finish[答案]]
问题{question}
历史{history}
开始"""
# 创建使用自定义提示词的Agent
custom_agent = MyReActAgent(
name="数学专家助手",
llm=llm,
tool_registry=tool_registry,
max_steps=3,
custom_prompt=custom_prompt
)
# 测试数学问题
math_question = "计算 15 × 8 + 32 ÷ 4 的结果"
try:
result = custom_agent.run(math_question)
print(f"\n🎯 自定义提示词测试结果: {result}")
except Exception as e:
print(f"❌ 自定义提示词测试失败: {e}")
if __name__ == "__main__":
# 运行基础测试
test_react_agent()
# 运行自定义提示词测试
test_custom_prompt()
print("\n✨ 所有测试完成!")