Atlas / tests /test_chat_analytics.py
findEthics
Adding analytics capabilities
1d4dc07
Raw
History Blame Contribute Delete
5.05 kB
#!/usr/bin/env python3
"""
Test chat request to see if analytics are collected
"""
import asyncio
import httpx
import json
async def test_chat_request():
"""Make a chat request and check if analytics are collected"""
try:
print("πŸš€ Testing Chat Request with Analytics Collection")
print("=" * 60)
# Make a chat request
chat_data = {
"prompt": "Hello, this is a test message for analytics",
"max_new_tokens": 100,
"use_search": True,
"temperature": 0.7
}
print("πŸ“€ Sending chat request...")
async with httpx.AsyncClient(timeout=30.0) as client:
response = await client.post(
"http://localhost:7860/chat",
json=chat_data,
headers={"Content-Type": "application/json"}
)
print(f"πŸ“₯ Response status: {response.status_code}")
if response.status_code == 200:
result = response.json()
print(f"βœ… Chat response received (length: {len(result.get('response', ''))} chars)")
# Check for session ID in headers
session_id = response.headers.get('X-Session-ID')
if session_id:
print(f"πŸ†” Session ID: {session_id}")
else:
print("⚠️ No session ID in response headers")
return True
else:
print(f"❌ Chat request failed: {response.text}")
return False
except Exception as e:
print(f"❌ Error making chat request: {e}")
return False
async def check_data_after_request():
"""Check if data was collected after the chat request"""
try:
print("\nπŸ” Checking Data Collection After Chat Request")
print("=" * 60)
# Wait a moment for data to be written
await asyncio.sleep(2)
from analytics.database import get_sessions_collection, get_messages_collection
sessions_collection = await get_sessions_collection()
messages_collection = await get_messages_collection()
if sessions_collection is None or messages_collection is None:
print("❌ Database collections not available")
return
# Check sessions
sessions_count = await sessions_collection.count_documents({})
print(f"πŸ“Š Sessions in database: {sessions_count}")
if sessions_count > 0:
latest_session = await sessions_collection.find_one({}, sort=[("start_time", -1)])
print(f" Latest session ID: {latest_session.get('session_id', 'N/A')}")
print(f" Message count: {latest_session.get('message_count', 0)}")
print(f" Status: {latest_session.get('status', 'N/A')}")
# Check messages
messages_count = await messages_collection.count_documents({})
print(f"πŸ’¬ Messages in database: {messages_count}")
if messages_count > 0:
latest_message = await messages_collection.find_one({}, sort=[("timestamp", -1)])
print(f" Latest message ID: {latest_message.get('message_id', 'N/A')}")
print(f" Session ID: {latest_message.get('session_id', 'N/A')}")
print(f" Prompt length: {latest_message.get('prompt_length', 0)}")
print(f" Response time: {latest_message.get('response_time_ms', 0)}ms")
print(f" Used search: {latest_message.get('used_search', False)}")
print(f" Success: {latest_message.get('success', False)}")
return sessions_count > 0 and messages_count > 0
except Exception as e:
print(f"❌ Error checking data: {e}")
import traceback
traceback.print_exc()
return False
async def main():
# Test chat request
chat_success = await test_chat_request()
if chat_success:
# Check if data was collected
data_collected = await check_data_after_request()
if data_collected:
print("\nβœ… SUCCESS: Analytics data is being collected!")
# Test dashboard again
print("\n🎯 Testing Dashboard After Data Collection")
print("=" * 60)
from analytics.dashboard import get_basic_stats
stats = await get_basic_stats()
print("Updated dashboard stats:")
for key, value in stats.items():
print(f" {key}: {value}")
else:
print("\n❌ PROBLEM: No analytics data was collected!")
print(" The chat request worked but analytics collection failed.")
else:
print("\n❌ PROBLEM: Chat request failed!")
print(" Cannot test analytics collection.")
if __name__ == "__main__":
asyncio.run(main())