annator-command-center / tests /standalone /test_llm_integration.py
techprotrade's picture
Deploy ATOM FastAPI command center runtime (part 9)
81e3673 verified
Raw
History Blame Contribute Delete
3.9 kB
#!/usr/bin/env python3
"""
Quick test script to verify BYOK LLM integration in new API endpoints.
Run this to test competitor analysis and learning plan generation.
"""
import asyncio
import os
import sys
# Add backend to path
sys.path.insert(0, os.path.dirname(os.path.abspath(__file__)))
async def test_competitor_analysis():
"""Test competitor analysis with BYOK integration"""
print("\n" + "="*60)
print("Testing Competitor Analysis with BYOK Integration")
print("="*60)
from api.competitor_analysis_routes import analyze_with_llm
competitor_data = {
"name": "Tesla",
"url": "https://www.tesla.com",
"data_source": "test"
}
focus_areas = ["products", "pricing", "marketing"]
try:
insights = await analyze_with_llm(competitor_data, focus_areas)
print(f"\n✅ Competitor: {insights.competitor}")
print(f"Strengths: {', '.join(insights.strengths[:2])}...")
print(f"Weaknesses: {', '.join(insights.weaknesses[:2])}...")
print(f"Market Position: {insights.market_position}")
print("\n✅ Competitor analysis test PASSED")
return True
except Exception as e:
print(f"\n❌ Competitor analysis test FAILED: {e}")
import traceback
traceback.print_exc()
return False
async def test_learning_plan():
"""Test learning plan generation with BYOK integration"""
print("\n" + "="*60)
print("Testing Learning Plan Generation with BYOK Integration")
print("="*60)
from api.learning_plan_routes import generate_learning_modules
topic = "Machine Learning"
current_level = "beginner"
duration_weeks = 4
preferred_formats = ["videos", "exercises"]
learning_goals = ["Understand neural networks", "Build ML models"]
try:
modules = await generate_learning_modules(
topic=topic,
current_level=current_level,
duration_weeks=duration_weeks,
preferred_formats=preferred_formats,
learning_goals=learning_goals
)
print(f"\n✅ Topic: {topic}")
print(f"Modules Generated: {len(modules)}")
print(f"\nFirst Module: {modules[0].title}")
print(f"Objectives: {', '.join(modules[0].objectives[:2])}...")
print(f"Resources: {len(modules[0].resources)} items")
print("\n✅ Learning plan test PASSED")
return True
except Exception as e:
print(f"\n❌ Learning plan test FAILED: {e}")
import traceback
traceback.print_exc()
return False
async def main():
"""Run all tests"""
print("\n🧪 BYOK LLM Integration Test Suite")
print("="*60)
# Check if API keys are configured
has_keys = any([
os.getenv("OPENAI_API_KEY"),
os.getenv("ANTHROPIC_API_KEY"),
os.getenv("DEEPSEEK_API_KEY"),
os.getenv("GOOGLE_API_KEY")
])
if not has_keys:
print("\n⚠️ WARNING: No LLM API keys found in environment")
print(" Tests will use fallback implementations")
print(" Set OPENAI_API_KEY, ANTHROPIC_API_KEY, or DEEPSEEK_API_KEY for LLM integration")
else:
print("\n✅ LLM API keys detected")
# Run tests
results = []
results.append(await test_competitor_analysis())
results.append(await test_learning_plan())
# Summary
print("\n" + "="*60)
print("Test Summary")
print("="*60)
passed = sum(results)
total = len(results)
if passed == total:
print(f"✅ All {total} tests PASSED")
print("\n🎉 BYOK integration is working correctly!")
else:
print(f"⚠️ {passed}/{total} tests passed")
print("\nNote: Failures may be due to missing API keys (using fallbacks)")
return passed == total
if __name__ == "__main__":
success = asyncio.run(main())
sys.exit(0 if success else 1)