Files
email_alerts_v2/test_groq_api.py
T

118 lines
3.4 KiB
Python
Raw Normal View History

#!/usr/bin/env python3
"""
Test script to validate Groq API configuration and diagnose issues.
"""
import os
import sys
# Add the src directory to the path
sys.path.insert(0, os.path.join(os.path.dirname(__file__), "src"))
from ai import analyze_thread
def test_groq_api():
"""Test the Groq API with a simple request."""
print("Testing Groq API Configuration")
print("=" * 40)
# Check API key
api_key = os.getenv("GROQ_API_KEY")
if not api_key:
print("❌ GROQ_API_KEY environment variable not set")
print(" Please set your Groq API key: export GROQ_API_KEY='your-key-here'")
return False
print(f"✓ GROQ_API_KEY found (length: {len(api_key)})")
# Check model
model = os.getenv("GROQ_MODEL", "llama-3.1-70b-versatile")
print(f"✓ Using model: {model}")
# Test with simple data
print("\nTesting simple analysis...")
simple_messages = [
{
"date_sent": "2025-08-11 10:00:00",
"is_incoming": True,
"subject": "Test Question",
"from_email": "test@example.com",
"to_email": "user@example.com",
"body": "Can you help me with this issue? Please let me know.",
}
]
try:
result = analyze_thread("Test Question", simple_messages)
print("✓ Analysis successful!")
print(f" Model used: {result.get('model', 'unknown')}")
print(f" Actionable: {result.get('actionable', False)}")
print(f" Confidence: {result.get('confidence', 0)}")
print(f" Summary: {result.get('summary', 'No summary')[:100]}...")
if result.get("model") == "heuristic":
print("\n⚠️ Note: Fell back to heuristic analysis")
print(" This might indicate an API issue")
return True
except Exception as e:
print(f"❌ Analysis failed: {e}")
import traceback
traceback.print_exc()
return False
def test_rate_limiting():
"""Test rate limiting by making multiple quick requests."""
print("\nTesting Rate Limiting")
print("=" * 40)
import time
simple_messages = [
{
"date_sent": "2025-08-11 10:00:00",
"is_incoming": True,
"subject": "Quick test",
"from_email": "test@example.com",
"to_email": "user@example.com",
"body": "Quick test message.",
}
]
start_time = time.time()
for i in range(3):
print(f"Request {i + 1}...")
result = analyze_thread(f"Test {i + 1}", simple_messages)
print(f" Result: {result.get('model', 'unknown')} analysis")
total_time = time.time() - start_time
print(f"\nTotal time for 3 requests: {total_time:.2f} seconds")
if total_time < 2.5:
print("⚠️ Requests completed very quickly - rate limiting may not be working")
else:
print("✓ Rate limiting appears to be working")
if __name__ == "__main__":
success = test_groq_api()
if success:
test_rate_limiting()
print("\nTroubleshooting Tips:")
print("- If getting 400 errors: Check message content for special characters")
print("- If getting 401 errors: Verify GROQ_API_KEY is correct")
print(
"- If getting 429 errors: Reduce max_concurrent in analyze_and_update_threads()"
)
print("- If getting 503 errors: Groq service may be temporarily unavailable")