164 lines
6.0 KiB
Python
164 lines
6.0 KiB
Python
import requests
|
||
import json
|
||
import time
|
||
import sys
|
||
|
||
def check_server_health():
|
||
"""Check if server is running"""
|
||
try:
|
||
response = requests.get("http://localhost:3015/health", timeout=5)
|
||
print(f"Server health: {response.status_code}")
|
||
if response.status_code == 200:
|
||
print("✅ Server is running")
|
||
return True
|
||
else:
|
||
print(f"❌ Server returned status {response.status_code}")
|
||
return False
|
||
except Exception as e:
|
||
print(f"❌ Server not reachable: {e}")
|
||
return False
|
||
|
||
def test_query_with_rerank():
|
||
"""Test query with rerank enabled"""
|
||
url = "http://localhost:3015/query"
|
||
headers = {
|
||
"Content-Type": "application/json",
|
||
"X-API-Key": "jleu1212",
|
||
"X-Workspace": "test1"
|
||
}
|
||
|
||
query = "what is odds"
|
||
|
||
print(f"\nTesting query: '{query}' for workspace: test1")
|
||
print("="*60)
|
||
|
||
# Test with rerank enabled
|
||
print("\n1. Testing WITH rerank enabled (enable_rerank=True):")
|
||
data_with_rerank = {
|
||
"query": query,
|
||
"enable_rerank": True,
|
||
"only_need_context": True
|
||
}
|
||
|
||
try:
|
||
start_time = time.time()
|
||
response = requests.post(url, headers=headers, json=data_with_rerank, timeout=30)
|
||
elapsed = time.time() - start_time
|
||
|
||
print(f" Status Code: {response.status_code}")
|
||
print(f" Response Time: {elapsed:.2f}s")
|
||
|
||
if response.status_code == 200:
|
||
result = response.json()
|
||
response_text = result.get('response', '')
|
||
|
||
# Check for rerank-related messages
|
||
if "Rerank is enabled but no rerank model is configured" in response_text:
|
||
print(" ⚠️ Rerank warning found: 'Rerank is enabled but no rerank model is configured'")
|
||
print(" This means the checkbox works but Jina API is not configured")
|
||
return False
|
||
elif "Successfully reranked" in response_text:
|
||
print(" ✅ Rerank success message found!")
|
||
return True
|
||
elif "jina" in response_text.lower():
|
||
print(" ✅ Jina-related content found!")
|
||
return True
|
||
else:
|
||
print(" ℹ️ No rerank indicators found in response")
|
||
# Check if we can find any rerank scores
|
||
if "rerank_score" in response_text.lower():
|
||
print(" ✅ Rerank scores found in response!")
|
||
return True
|
||
else:
|
||
print(" ℹ️ No rerank scores found")
|
||
return False
|
||
else:
|
||
print(f" ❌ Error: {response.status_code}")
|
||
print(f" Response: {response.text[:200]}")
|
||
return False
|
||
|
||
except Exception as e:
|
||
print(f" ❌ Error: {e}")
|
||
return False
|
||
|
||
def check_server_logs_for_rerank():
|
||
"""Check server logs for rerank configuration"""
|
||
print("\n2. Checking server logs for rerank configuration...")
|
||
try:
|
||
# Read the last few lines of the log file
|
||
with open("lightrag.log", "r", encoding="utf-8") as f:
|
||
lines = f.readlines()
|
||
last_lines = lines[-50:] # Last 50 lines
|
||
|
||
# Look for rerank-related messages
|
||
rerank_found = False
|
||
for line in last_lines:
|
||
if "rerank" in line.lower():
|
||
print(f" Found: {line.strip()}")
|
||
rerank_found = True
|
||
if "disabled" in line.lower():
|
||
print(" ❌ Rerank is disabled in server logs")
|
||
return False
|
||
elif "enabled" in line.lower():
|
||
print(" ✅ Rerank is enabled in server logs")
|
||
return True
|
||
|
||
if not rerank_found:
|
||
print(" ℹ️ No rerank-related messages found in recent logs")
|
||
return False
|
||
|
||
except Exception as e:
|
||
print(f" ❌ Error reading logs: {e}")
|
||
return False
|
||
|
||
def main():
|
||
print("="*60)
|
||
print("FINAL TEST: Jina Rerank Configuration Verification")
|
||
print("="*60)
|
||
|
||
# Step 1: Check server health
|
||
if not check_server_health():
|
||
print("\n❌ Server is not running. Please start the server first.")
|
||
return
|
||
|
||
# Wait a moment for server to fully initialize
|
||
print("\nWaiting 5 seconds for server initialization...")
|
||
time.sleep(5)
|
||
|
||
# Step 2: Check server logs
|
||
logs_ok = check_server_logs_for_rerank()
|
||
|
||
# Step 3: Test query with rerank
|
||
query_ok = test_query_with_rerank()
|
||
|
||
# Step 4: Final analysis
|
||
print("\n" + "="*60)
|
||
print("FINAL ANALYSIS:")
|
||
print("="*60)
|
||
|
||
if logs_ok and query_ok:
|
||
print("✅ SUCCESS: Jina rerank appears to be configured and working!")
|
||
print(" - Server logs show rerank is enabled")
|
||
print(" - Query with enable_rerank=True works without warnings")
|
||
elif not logs_ok and query_ok:
|
||
print("⚠️ PARTIAL SUCCESS: Query works but server logs don't show rerank")
|
||
print(" - The 'enable rerank' checkbox is functional")
|
||
print(" - Server may need to be restarted with --rerank-binding jina")
|
||
elif logs_ok and not query_ok:
|
||
print("⚠️ PARTIAL SUCCESS: Server configured but query shows warnings")
|
||
print(" - Server is configured for rerank")
|
||
print(" - Jina API key may be missing or invalid")
|
||
else:
|
||
print("❌ FAILURE: Rerank is not properly configured")
|
||
print(" - Server needs to be restarted with modified start_server.py")
|
||
print(" - Check that --rerank-binding jina is set")
|
||
|
||
print("\nNext steps:")
|
||
print("1. If 'Rerank is enabled but no rerank model is configured' appears,")
|
||
print(" the server needs a valid Jina API key")
|
||
print("2. Get a Jina API key from https://jina.ai/")
|
||
print("3. Update the JINA_API_KEY in start_server.py")
|
||
print("4. Restart the server")
|
||
|
||
if __name__ == "__main__":
|
||
main() |