61 lines
2.0 KiB
Python
61 lines
2.0 KiB
Python
"""
|
|
测试动态生成的工具 Schema
|
|
"""
|
|
|
|
import asyncio
|
|
import sys
|
|
import json
|
|
from pathlib import Path
|
|
|
|
sys.path.insert(0, str(Path(__file__).parent.parent))
|
|
|
|
from sqlalchemy.ext.asyncio import create_async_engine, AsyncSession
|
|
from sqlalchemy.orm import sessionmaker
|
|
|
|
from app.core.config import get_settings
|
|
from app.services.mid.kb_search_dynamic_tool import KbSearchDynamicTool
|
|
|
|
|
|
async def test_dynamic_tool_schema():
|
|
"""测试动态生成的工具 Schema"""
|
|
settings = get_settings()
|
|
|
|
engine = create_async_engine(settings.database_url)
|
|
async_session = sessionmaker(engine, class_=AsyncSession, expire_on_commit=False)
|
|
|
|
tenant_id = "szmp@ash@2026"
|
|
|
|
print(f"\n{'='*80}")
|
|
print(f"测试动态生成的工具 Schema")
|
|
print(f"{'='*80}")
|
|
print(f"租户 ID: {tenant_id}")
|
|
|
|
async with async_session() as session:
|
|
tool = KbSearchDynamicTool(session)
|
|
|
|
# 获取静态 Schema
|
|
static_schema = tool.get_tool_schema()
|
|
print(f"\n--- 静态 Schema ---")
|
|
print(json.dumps(static_schema, indent=2, ensure_ascii=False))
|
|
|
|
# 获取动态 Schema
|
|
dynamic_schema = await tool.get_dynamic_tool_schema(tenant_id)
|
|
print(f"\n--- 动态 Schema ---")
|
|
print(json.dumps(dynamic_schema, indent=2, ensure_ascii=False))
|
|
|
|
# 再次获取,测试缓存
|
|
print(f"\n--- 测试缓存 ---")
|
|
dynamic_schema2 = await tool.get_dynamic_tool_schema(tenant_id)
|
|
print(f"缓存命中: {dynamic_schema == dynamic_schema2}")
|
|
|
|
# 打印 context 字段的详细结构
|
|
print(f"\n--- context 字段详情 ---")
|
|
context_props = dynamic_schema["parameters"]["properties"].get("context", {}).get("properties", {})
|
|
print(f"过滤字段数量: {len(context_props)}")
|
|
for key, value in context_props.items():
|
|
print(f" {key}: {value}")
|
|
|
|
|
|
if __name__ == "__main__":
|
|
asyncio.run(test_dynamic_tool_schema())
|