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()
|