chore: 清理测试文件并更新 .gitignore 放行 models 目录
Some checks failed
构建并部署 AI Agent 服务 / deploy (push) Has been cancelled

This commit is contained in:
2026-05-04 02:03:02 +08:00
parent 60afa86ded
commit e7aa497730
3 changed files with 2 additions and 284 deletions

View File

@@ -1,171 +0,0 @@
#!/usr/bin/env python3
"""
完整的混合路由测试脚本
"""
import sys
from pathlib import Path
# 添加后端路径
sys.path.insert(0, str(Path(__file__).parent.parent / "backend"))
def test_imports():
"""测试所有导入是否正常"""
print("="*70)
print("🧪 步骤 1/5 - 测试导入")
print("="*70)
try:
from app.model_services.chat_services import get_chat_service, get_small_llm_service
print("✅ chat_services 导入成功")
from app.main_graph.nodes.hybrid_router import (
hybrid_router_node,
fast_chitchat_node,
route_from_hybrid_decision,
check_fast_path_success
)
print("✅ hybrid_router 导入成功")
from app.main_graph.utils.main_graph_builder import build_react_main_graph
print("✅ main_graph_builder 导入成功")
from app.core.intent import react_reason, react_reason_async
print("✅ intent 导入成功")
print("\n✅ 所有导入测试通过!")
return True
except Exception as e:
print(f"❌ 导入测试失败: {e}")
import traceback
traceback.print_exc()
return False
def test_small_llm():
"""测试小模型服务"""
print("\n" + "="*70)
print("🧪 步骤 2/5 - 测试小模型服务")
print("="*70)
try:
from app.model_services.chat_services import get_small_llm_service
llm = get_small_llm_service()
print(f"✅ 小模型服务获取成功: {type(llm)}")
return True
except Exception as e:
print(f"❌ 小模型服务测试失败: {e}")
print("💡 小模型服务不可用是正常的,会自动降级到大模型")
return True
def test_rules_based_redirect():
"""测试规则分流"""
print("\n" + "="*70)
print("🧪 步骤 3/5 - 测试规则分流")
print("="*70)
try:
from app.main_graph.nodes.hybrid_router import _rule_based_redirect
# 测试 1: 问候
result = _rule_based_redirect("你好")
if result and result.path == "fast_chitchat":
print(f"✅ 问候测试通过: path={result.path}")
else:
print(f"⚠️ 问候测试: result={result}")
# 测试 2: 感谢
result = _rule_based_redirect("谢谢")
if result and result.path == "fast_chitchat":
print(f"✅ 感谢测试通过: path={result.path}")
else:
print(f"⚠️ 感谢测试: result={result}")
# 测试 3: 子图关键词
result = _rule_based_redirect("查一下通讯录")
if result and result.path == "fast_tool":
print(f"✅ 通讯录关键词测试通过: path={result.path}")
else:
print(f"⚠️ 通讯录关键词测试: result={result}")
# 测试 4: 复杂问题(不触发规则)
result = _rule_based_redirect("什么是 LangGraph")
if result is None:
print(f"✅ 复杂问题测试通过: 规则不触发,走模型分类")
else:
print(f"⚠️ 复杂问题测试: result={result}")
print("\n✅ 规则分流测试完成!")
return True
except Exception as e:
print(f"❌ 规则分流测试失败: {e}")
import traceback
traceback.print_exc()
return False
def test_build_graph():
"""测试图构建"""
print("\n" + "="*70)
print("🧪 步骤 4/5 - 测试图构建(混合路由模式)")
print("="*70)
try:
from app.main_graph.utils.main_graph_builder import build_react_main_graph
# 构建启用混合路由的图
graph = build_react_main_graph(use_hybrid_router=True)
print(f"✅ 图构建成功(混合路由)")
# 编译图
compiled_graph = graph.compile()
print(f"✅ 图编译成功(混合路由)")
# 构建纯 React 的图(兼容模式)
graph_react = build_react_main_graph(use_hybrid_router=False)
compiled_graph_react = graph_react.compile()
print(f"✅ 图构建成功(纯 React")
print("\n✅ 图构建测试完成!")
return True
except Exception as e:
print(f"❌ 图构建测试失败: {e}")
import traceback
traceback.print_exc()
return False
def test_summary():
"""测试总结"""
print("\n" + "="*70)
print("🎉 完整的混合路由优化已实现!")
print("="*70)
print("\n✅ 已完成的优化:")
print(" 1. 双模型服务 (llm + smallLLM)")
print(" 2. 规则快速分流 (无 LLM, 超快速)")
print(" 3. 轻量级意图分类 (smallLLM)")
print(" 4. 快速路径 (fast_chitchat, fast_rag, fast_tool)")
print(" 5. 自动升级机制 (快速路径失败 -> React 循环)")
print(" 6. SSE 事件增强 (intent_classified, path_decision, fast_path_*)")
print(" 7. 向后兼容 (可切换 use_hybrid_router=True/False)")
if __name__ == "__main__":
print("\n" + "🚀"*10)
print("🚀 混合路由系统测试")
print("🚀"*10 + "\n")
results = []
results.append(test_imports())
results.append(test_small_llm())
results.append(test_rules_based_redirect())
results.append(test_build_graph())
test_summary()
if all(results):
print("\n✅ 所有测试通过!")
sys.exit(0)
else:
print("\n⚠️ 部分测试失败,请检查")
sys.exit(1)

View File

@@ -1,112 +0,0 @@
#!/usr/bin/env python3
"""
简化版MCP测试 - 直接测试mcp模块
"""
import asyncio
import sys
from pathlib import Path
# 直接添加mcp模块路径
sys.path.insert(0, str(Path(__file__).parent / "backend" / "app"))
async def test_mcp_direct():
"""直接测试MCP模块"""
print("=" * 70)
print("🧪 直接测试 MCP 模块")
print("=" * 70)
# 直接导入mcp子模块
print("\n[1/4] 导入MCP核心模块...")
try:
from mcp.mcp_manager import MCPManager, mcp_manager
from mcp.adapters.base_adapter import BaseAdapter, AdapterResult
print("✅ 核心模块导入成功")
except Exception as e:
print(f"❌ 核心模块导入失败: {e}")
import traceback
traceback.print_exc()
return False
# 导入适配器
print("\n[2/4] 导入适配器...")
try:
from mcp.adapters.contact_adapter import ContactAdapter
from mcp.adapters.dictionary_adapter import DictionaryAdapter
from mcp.adapters.news_adapter import NewsAdapter
print("✅ 适配器导入成功")
except Exception as e:
print(f"❌ 适配器导入失败: {e}")
import traceback
traceback.print_exc()
return False
# 测试适配器
print("\n[3/4] 测试各个适配器...")
print("\n📖 测试 DictionaryAdapter...")
dict_adapter = DictionaryAdapter()
result = dict_adapter._fallback("query_word", word="ephemeral")
print(f" 来源: {result.source}")
print(f" 成功: {result.success}")
print(f" 单词: {result.data.get('word', '')}")
print(f" 释义: {result.data.get('definitions', [])}")
print("\n📰 测试 NewsAdapter...")
news_adapter = NewsAdapter()
result = news_adapter._fallback("query_news", query="AI")
print(f" 来源: {result.source}")
print(f" 成功: {result.success}")
print(f" 数量: {len(result.data) if result.data else 0}")
print("\n👥 测试 ContactAdapter...")
contact_adapter = ContactAdapter()
result = contact_adapter._fallback("list_contacts", user_id="test")
print(f" 来源: {result.source}")
print(f" 成功: {result.success}")
print(f" 数量: {len(result.data) if result.data else 0}")
# 测试MCP管理器
print("\n[4/4] 测试 MCP Manager...")
try:
mcp_manager.register_adapter(ContactAdapter())
mcp_manager.register_adapter(DictionaryAdapter())
mcp_manager.register_adapter(NewsAdapter())
await mcp_manager.initialize()
print(f"✅ 可用适配器: {mcp_manager.get_available_adapters()}")
print(f"✅ 可用工具: {mcp_manager.get_available_tools()}")
# 测试通过manager调用
print("\n测试通过Manager调用...")
result = await mcp_manager.execute(
"dictionary", "query_word", word="serendipity", user_id="test"
)
print(f" 成功: {result.success}")
print(f" 来源: {result.source}")
except Exception as e:
print(f"❌ MCP Manager 测试失败: {e}")
import traceback
traceback.print_exc()
print("\n" + "=" * 70)
print("🎉 直接测试完成!")
print("=" * 70)
print("\n✅ MCP集成系统架构已就绪:")
print(" ┌─────────────────────────────────────────────┐")
print(" │ MCP Manager (统一入口) │")
print(" ├─────────────────────────────────────────────┤")
print(" │ ContactAdapter │ DictionaryAdapter │ News │")
print(" ├─────────────────────────────────────────────┤")
print(" │ MCP Client -> Database -> Mock (降级) │")
print(" └─────────────────────────────────────────────┘")
print("\n📖 文档: docs/MCP_INTEGRATION.md")
print("⚙️ 配置: backend/app/mcp/mcp_config.example.yaml")
return True
if __name__ == "__main__":
asyncio.run(test_mcp_direct())