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

This file contains ambiguous Unicode characters!

This file contains ambiguous Unicode characters that may be confused with others in your current locale. If your use case is intentional and legitimate, you can safely ignore this warning. Use the Escape button to highlight these characters.

# 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✨ 所有测试完成!")