ai-robot-core/ai-service/scripts/test_api_search.py

83 lines
2.3 KiB
Python
Raw Permalink Normal View History

"""
通过 API 测试知识库检索性能
"""
import requests
import json
import time
API_BASE = "http://localhost:8000"
API_KEY = "oQfkSAbL8iafzyHxqb--G7zRWSOYJHvlzQxia2KpYms"
TENANT_ID = "szmp@ash@2026"
def test_kb_search():
"""测试知识库搜索 API"""
print("=" * 80)
print("测试知识库检索 API")
print("=" * 80)
headers = {
"Content-Type": "application/json",
"X-API-Key": API_KEY,
"X-Tenant-Id": TENANT_ID,
}
# 测试数据
test_cases = [
{
"name": "完整参数含context过滤",
"data": {
"query": "三年级语文学习",
"scene": "学习方案",
"top_k": 5,
"context": {"grade": "三年级", "subject": "语文"},
}
},
{
"name": "简化参数无context",
"data": {
"query": "三年级语文学习",
"scene": "学习方案",
"top_k": 5,
}
},
]
for test_case in test_cases:
print(f"\n{'='*80}")
print(f"测试: {test_case['name']}")
print(f"{'='*80}")
print(f"请求数据: {json.dumps(test_case['data'], ensure_ascii=False)}")
try:
start = time.time()
response = requests.post(
f"{API_BASE}/api/v1/mid/kb-search-dynamic",
headers=headers,
json=test_case['data'],
timeout=30,
)
elapsed = (time.time() - start) * 1000
print(f"\n响应状态: {response.status_code}")
print(f"总耗时: {elapsed:.2f} ms")
if response.status_code == 200:
result = response.json()
print(f"API 结果:")
print(f" success: {result.get('success')}")
print(f" hits count: {len(result.get('hits', []))}")
print(f" duration_ms: {result.get('duration_ms')}")
print(f" applied_filter: {result.get('applied_filter')}")
else:
print(f"错误: {response.text}")
except Exception as e:
print(f"请求失败: {e}")
print("\n" + "=" * 80)
if __name__ == "__main__":
test_kb_search()