Files
deepagents----/tests/test_phase1_setup.py
2025-11-02 18:06:38 +08:00

238 lines
6.5 KiB
Python
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

"""
Phase 1 基础设施测试
测试项:
1. 依赖包导入
2. API密钥配置
3. LLM连接
4. 批量搜索工具
"""
import sys
import os
# 添加src目录到Python路径
sys.path.insert(0, os.path.join(os.path.dirname(__file__), '..'))
def test_imports():
"""测试所有必要的包是否能正确导入"""
print("=" * 60)
print("测试 1: 检查依赖包导入")
print("=" * 60)
try:
import deepagents
print("✓ deepagents 导入成功")
except ImportError as e:
print(f"✗ deepagents 导入失败: {e}")
return False
try:
import langchain
print("✓ langchain 导入成功")
except ImportError as e:
print(f"✗ langchain 导入失败: {e}")
return False
try:
import tavily
print("✓ tavily 导入成功")
except ImportError as e:
print(f"✗ tavily 导入失败: {e}")
return False
try:
from dotenv import load_dotenv
print("✓ python-dotenv 导入成功")
except ImportError as e:
print(f"✗ python-dotenv 导入失败: {e}")
return False
try:
import click
print("✓ click 导入成功")
except ImportError as e:
print(f"✗ click 导入失败: {e}")
return False
try:
from rich import print as rprint
print("✓ rich 导入成功")
except ImportError as e:
print(f"✗ rich 导入失败: {e}")
return False
print("\n所有依赖包导入成功!\n")
return True
def test_config():
"""测试配置是否正确"""
print("=" * 60)
print("测试 2: 检查配置")
print("=" * 60)
try:
from src.config import Config
print(f"LLM模型: {Config.LLM_MODEL}")
print(f"LLM温度: {Config.LLM_TEMPERATURE}")
print(f"最大Tokens: {Config.LLM_MAX_TOKENS}")
print(f"默认深度模式: {Config.DEFAULT_DEPTH}")
print(f"最大并行搜索数: {Config.MAX_PARALLEL_SEARCHES}")
print(f"搜索超时: {Config.SEARCH_TIMEOUT}")
# 检查API密钥
if Config.DASHSCOPE_API_KEY and Config.DASHSCOPE_API_KEY != "your_dashscope_api_key_here":
print("✓ DASHSCOPE_API_KEY 已配置")
else:
print("✗ DASHSCOPE_API_KEY 未配置或使用默认值")
print(" 请在.env文件中设置真实的API密钥")
return False
if Config.TAVILY_API_KEY and Config.TAVILY_API_KEY != "your_tavily_api_key_here":
print("✓ TAVILY_API_KEY 已配置")
else:
print("✗ TAVILY_API_KEY 未配置或使用默认值")
print(" 请在.env文件中设置真实的API密钥")
return False
print("\n配置检查通过!\n")
return True
except Exception as e:
print(f"✗ 配置检查失败: {e}\n")
return False
def test_llm_connection():
"""测试LLM连接"""
print("=" * 60)
print("测试 3: 检查LLM连接")
print("=" * 60)
try:
from src.config import Config
llm = Config.get_llm()
print(f"LLM实例创建成功: {llm.model_name}")
# 发送一个简单的测试消息
print("发送测试消息...")
response = llm.invoke("你好,请用一句话介绍你自己。")
print(f"LLM响应: {response.content[:100]}...")
print("\n✓ LLM连接测试成功\n")
return True
except Exception as e:
print(f"✗ LLM连接测试失败: {e}\n")
return False
def test_search_tools():
"""测试批量搜索工具"""
print("=" * 60)
print("测试 4: 检查批量搜索工具")
print("=" * 60)
try:
from src.tools.search_tools import batch_internet_search
# 测试并行搜索
test_queries = [
"Python programming",
"Machine learning basics",
"Web development tutorial"
]
print(f"执行 {len(test_queries)} 个并行搜索...")
print(f"查询: {test_queries}")
result = batch_internet_search.invoke({
"queries": test_queries,
"max_results_per_query": 3
})
print(f"\n搜索结果统计:")
print(f" 总查询数: {result['total_queries']}")
print(f" 成功查询: {result['successful_queries']}")
print(f" 失败查询: {result['failed_queries']}")
print(f" 总结果数: {result['total_results']}")
print(f" 去重后结果数: {result['unique_results']}")
if result['errors']:
print(f"\n错误信息:")
for error in result['errors']:
print(f" - {error}")
if result['success'] and result['unique_results'] > 0:
print(f"\n前3个搜索结果:")
for i, res in enumerate(result['results'][:3], 1):
print(f" {i}. {res.get('title', 'N/A')}")
print(f" URL: {res.get('url', 'N/A')}")
print(f" 得分: {res.get('score', 'N/A')}")
print("\n✓ 批量搜索工具测试成功!\n")
return True
else:
print("\n✗ 批量搜索工具测试失败:未返回有效结果\n")
return False
except Exception as e:
print(f"✗ 批量搜索工具测试失败: {e}\n")
import traceback
traceback.print_exc()
return False
def main():
"""运行所有测试"""
print("\n")
print("=" * 60)
print("Phase 1 基础设施测试")
print("=" * 60)
print("\n")
results = []
# 测试1: 导入检查
results.append(("依赖包导入", test_imports()))
# 测试2: 配置检查
results.append(("配置检查", test_config()))
# 测试3: LLM连接如果配置通过
if results[-1][1]:
results.append(("LLM连接", test_llm_connection()))
# 测试4: 搜索工具(如果配置通过)
if results[1][1]:
results.append(("批量搜索工具", test_search_tools()))
# 总结
print("=" * 60)
print("测试总结")
print("=" * 60)
for test_name, passed in results:
status = "✓ 通过" if passed else "✗ 失败"
print(f"{test_name}: {status}")
all_passed = all(result[1] for result in results)
print("\n" + "=" * 60)
if all_passed:
print("✓ 所有测试通过Phase 1 基础设施搭建完成。")
else:
print("✗ 部分测试失败,请检查配置和依赖。")
print("=" * 60 + "\n")
return all_passed
if __name__ == "__main__":
success = main()
sys.exit(0 if success else 1)