first commit
This commit is contained in:
199
tests/test_minimal_agent.py
Normal file
199
tests/test_minimal_agent.py
Normal file
@ -0,0 +1,199 @@
|
||||
"""
|
||||
最小化测试 - 理解DeepAgents的工作机制
|
||||
|
||||
使用方法:
|
||||
export PYTHONIOENCODING=utf-8 && python tests/test_minimal_agent.py
|
||||
"""
|
||||
|
||||
import sys
|
||||
import os
|
||||
|
||||
# 添加项目根目录到Python路径
|
||||
sys.path.insert(0, os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
|
||||
|
||||
from deepagents import create_deep_agent
|
||||
from src.config import Config
|
||||
|
||||
|
||||
def test_minimal_agent():
|
||||
"""测试最简单的Agent执行"""
|
||||
|
||||
print("\n" + "="*80)
|
||||
print("最小化测试 - 主Agent写文件")
|
||||
print("="*80)
|
||||
|
||||
# 创建一个最简单的主Agent
|
||||
main_system_prompt = """你是一个简单的测试Agent。
|
||||
|
||||
你的任务:
|
||||
1. 使用 write_file 工具写入一个文件到 `/test.txt`,内容为 "Hello World"
|
||||
2. 使用 read_file 工具读取 `/test.txt`
|
||||
3. 告诉用户文件内容
|
||||
|
||||
**重要**:完成后明确说"任务完成"。
|
||||
"""
|
||||
|
||||
agent = create_deep_agent(
|
||||
model=Config.get_llm(),
|
||||
subagents=[], # 不使用SubAgent
|
||||
system_prompt=main_system_prompt,
|
||||
)
|
||||
|
||||
print("✅ Agent创建成功")
|
||||
print("\n开始执行...")
|
||||
|
||||
try:
|
||||
result = agent.invoke({
|
||||
"messages": [
|
||||
{
|
||||
"role": "user",
|
||||
"content": "请开始执行任务"
|
||||
}
|
||||
]
|
||||
})
|
||||
|
||||
print("\n" + "="*80)
|
||||
print("执行结果")
|
||||
print("="*80)
|
||||
|
||||
# 检查消息
|
||||
if 'messages' in result:
|
||||
print(f"\n消息数量: {len(result['messages'])}")
|
||||
|
||||
# 显示最后一条消息
|
||||
last_msg = result['messages'][-1]
|
||||
print(f"\n最后一条消息:")
|
||||
if hasattr(last_msg, 'content'):
|
||||
print(last_msg.content)
|
||||
|
||||
# 检查文件系统
|
||||
if 'files' in result:
|
||||
print(f"\n文件数量: {len(result['files'])}")
|
||||
|
||||
for path, info in result['files'].items():
|
||||
print(f"\n文件: {path}")
|
||||
if isinstance(info, dict) and 'content' in info:
|
||||
print(f"内容: {info['content']}")
|
||||
else:
|
||||
print(f"内容: {info}")
|
||||
|
||||
print("\n✅ 测试完成")
|
||||
|
||||
except Exception as e:
|
||||
print(f"\n❌ 测试失败: {e}")
|
||||
import traceback
|
||||
traceback.print_exc()
|
||||
|
||||
|
||||
def test_agent_with_subagent():
|
||||
"""测试主Agent和SubAgent的文件共享"""
|
||||
|
||||
print("\n" + "="*80)
|
||||
print("测试主Agent和SubAgent的文件共享")
|
||||
print("="*80)
|
||||
|
||||
# 定义一个简单的SubAgent
|
||||
subagent_config = {
|
||||
"name": "file-reader",
|
||||
"description": "读取文件并返回内容",
|
||||
"system_prompt": """你是一个文件读取Agent。
|
||||
|
||||
你的任务:
|
||||
1. 使用 read_file 工具读取 `/test.txt` 文件
|
||||
2. 告诉用户文件内容
|
||||
|
||||
**重要**:
|
||||
- 如果文件不存在,明确说"文件不存在"
|
||||
- 如果文件存在,告诉用户文件内容
|
||||
- 完成后明确说"任务完成"
|
||||
""",
|
||||
"tools": [],
|
||||
}
|
||||
|
||||
# 主Agent
|
||||
main_system_prompt = """你是一个测试协调Agent。
|
||||
|
||||
你的任务:
|
||||
1. 使用 write_file 工具写入一个文件到 `/test.txt`,内容为 "Hello from Main Agent"
|
||||
2. 使用 task 工具调用 file-reader SubAgent:task(description="读取测试文件", subagent_type="file-reader")
|
||||
3. 等待SubAgent返回结果
|
||||
4. 告诉用户SubAgent读取的内容
|
||||
|
||||
**重要**:完成后明确说"所有任务完成"。
|
||||
"""
|
||||
|
||||
agent = create_deep_agent(
|
||||
model=Config.get_llm(),
|
||||
subagents=[subagent_config],
|
||||
system_prompt=main_system_prompt,
|
||||
)
|
||||
|
||||
print("✅ Agent创建成功(1主 + 1子)")
|
||||
print("\n开始执行...")
|
||||
|
||||
try:
|
||||
result = agent.invoke({
|
||||
"messages": [
|
||||
{
|
||||
"role": "user",
|
||||
"content": "请开始执行任务"
|
||||
}
|
||||
]
|
||||
})
|
||||
|
||||
print("\n" + "="*80)
|
||||
print("执行结果")
|
||||
print("="*80)
|
||||
|
||||
# 检查消息
|
||||
if 'messages' in result:
|
||||
print(f"\n消息数量: {len(result['messages'])}")
|
||||
|
||||
# 显示所有消息内容
|
||||
print("\n所有消息:")
|
||||
for i, msg in enumerate(result['messages'], 1):
|
||||
print(f"\n--- 消息 #{i} ---")
|
||||
msg_type = type(msg).__name__
|
||||
print(f"类型: {msg_type}")
|
||||
|
||||
if hasattr(msg, 'content'):
|
||||
content = msg.content
|
||||
if len(content) > 200:
|
||||
print(f"内容: {content[:200]}...")
|
||||
else:
|
||||
print(f"内容: {content}")
|
||||
|
||||
if hasattr(msg, 'tool_calls') and msg.tool_calls:
|
||||
print(f"工具调用: {msg.tool_calls}")
|
||||
|
||||
# 检查文件系统
|
||||
if 'files' in result:
|
||||
print(f"\n文件系统:")
|
||||
print(f"文件数量: {len(result['files'])}")
|
||||
|
||||
for path, info in result['files'].items():
|
||||
print(f"\n 文件: {path}")
|
||||
if isinstance(info, dict) and 'content' in info:
|
||||
print(f" 内容: {info['content']}")
|
||||
else:
|
||||
print(f" 内容: {info}")
|
||||
|
||||
print("\n✅ 测试完成")
|
||||
|
||||
except Exception as e:
|
||||
print(f"\n❌ 测试失败: {e}")
|
||||
import traceback
|
||||
traceback.print_exc()
|
||||
|
||||
|
||||
if __name__ == "__main__":
|
||||
print("\n🧪 DeepAgents最小化测试")
|
||||
print("="*80)
|
||||
|
||||
# 测试1:单个Agent的文件操作
|
||||
test_minimal_agent()
|
||||
|
||||
print("\n\n")
|
||||
|
||||
# 测试2:主Agent和SubAgent的文件共享
|
||||
test_agent_with_subagent()
|
||||
Reference in New Issue
Block a user