83 lines
2.3 KiB
Python
83 lines
2.3 KiB
Python
"""
|
||
通过 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()
|