90 lines
2.3 KiB
Python
Executable File
90 lines
2.3 KiB
Python
Executable File
#!/usr/bin/env python3
|
|
"""
|
|
Test script for Crumbforest Chat API
|
|
Tests both Krümeleule and FunkFox characters
|
|
"""
|
|
import requests
|
|
import json
|
|
import sys
|
|
|
|
|
|
API_URL = "http://localhost:8000/api/chat"
|
|
|
|
|
|
def test_character(character_id: str, question: str):
|
|
"""Test a character with a question."""
|
|
print(f"\n{'='*60}")
|
|
print(f"🧪 Testing: {character_id.upper()}")
|
|
print(f"📝 Question: {question}")
|
|
print(f"{'='*60}\n")
|
|
|
|
payload = {
|
|
"character_id": character_id,
|
|
"question": question,
|
|
"lang": "de"
|
|
}
|
|
|
|
try:
|
|
response = requests.post(API_URL, json=payload, timeout=30)
|
|
response.raise_for_status()
|
|
|
|
result = response.json()
|
|
|
|
print(f"✅ Response received!")
|
|
print(f"🤖 Provider: {result['provider']}")
|
|
print(f"🧠 Model: {result['model']}")
|
|
print(f"📚 Context found: {result['context_found']}")
|
|
print(f"📄 Sources: {len(result['sources'])}")
|
|
print(f"\n💬 Answer:\n")
|
|
print(result['answer'])
|
|
|
|
if result['sources']:
|
|
print(f"\n📚 Sources used:")
|
|
for idx, source in enumerate(result['sources'], 1):
|
|
print(f" {idx}. {source['file_path']} (score: {source['score']:.3f})")
|
|
|
|
return True
|
|
|
|
except requests.exceptions.RequestException as e:
|
|
print(f"❌ Error: {e}")
|
|
if hasattr(e, 'response') and e.response is not None:
|
|
print(f"Response: {e.response.text}")
|
|
return False
|
|
|
|
|
|
def main():
|
|
"""Run all tests."""
|
|
print("🌲🦊🦉 Crumbforest Chat API Test Suite")
|
|
print("=" * 60)
|
|
|
|
# Test 1: Krümeleule
|
|
success_eule = test_character(
|
|
"eule",
|
|
"Was ist ADHS als Kraftquelle?"
|
|
)
|
|
|
|
# Test 2: FunkFox
|
|
success_fox = test_character(
|
|
"funkfox",
|
|
"Was ist ein Terminal und wie nutzt man es?"
|
|
)
|
|
|
|
# Summary
|
|
print(f"\n{'='*60}")
|
|
print("📊 TEST SUMMARY")
|
|
print(f"{'='*60}")
|
|
print(f"🦉 Krümeleule: {'✅ PASS' if success_eule else '❌ FAIL'}")
|
|
print(f"🦊 FunkFox: {'✅ PASS' if success_fox else '❌ FAIL'}")
|
|
print(f"{'='*60}\n")
|
|
|
|
if success_eule and success_fox:
|
|
print("🎉 All tests passed! BOOOYAAAA! 🚀")
|
|
return 0
|
|
else:
|
|
print("⚠️ Some tests failed.")
|
|
return 1
|
|
|
|
|
|
if __name__ == "__main__":
|
|
sys.exit(main())
|