""" Test script for Model 4 (Perplexity) and Model 5 (Gemini) APIs. """ import os from pathlib import Path from dotenv import load_dotenv from perplexity_service import get_perplexity_service from gemini_service import get_gemini_service # Load .env file env_path = Path(__file__).parent / '.env' if env_path.exists(): load_dotenv(env_path) print(f"✓ Loaded .env file from {env_path}") else: print(f"⚠ .env file not found at {env_path}, using environment variables only") # Test data TEST_CONVERSATION = "Tối nay anh có lịch đột xuất. ||| Thế mai được không?" TEST_TRIGGER = "neutral" TEST_MOVE = "escalate" def test_perplexity(): """Test Perplexity API (Model 4).""" print("=" * 60) print("Testing Model 4 - Perplexity API") print("=" * 60) try: service = get_perplexity_service() print(f"✓ Perplexity service initialized") print(f" Model: {service.model}") print(f" API Key: {'Set' if service.api_key else 'Not set'}") print("\nGenerating reply...") reply = service.generate_reply( conversation=TEST_CONVERSATION, trigger=TEST_TRIGGER, move=TEST_MOVE, ) print(f"\n✓ Success!") print(f" Input conversation: {TEST_CONVERSATION}") print(f" Trigger: {TEST_TRIGGER}") print(f" Move: {TEST_MOVE}") print(f" Generated reply: {reply}") print(f" Reply length: {len(reply.split())} words") return True, reply except Exception as e: print(f"\n✗ Error: {str(e)}") return False, str(e) def test_gemini(): """Test Gemini API (Model 5).""" print("\n" + "=" * 60) print("Testing Model 5 - Gemini API") print("=" * 60) try: # Try default model first model_name = "gemini-2.0-flash" service = get_gemini_service(model_name=model_name) print(f"✓ Gemini service initialized") print(f" Model: {service.model_name}") print(f" API Key: {'Set' if service.api_key else 'Not set'}") print("\nGenerating reply...") formatted_conversation = f"Male: {TEST_CONVERSATION.split('|||')[0].strip()} ||| Female: {TEST_CONVERSATION.split('|||')[1].strip()}" reply = service.generate_reply( conversation=formatted_conversation, trigger=TEST_TRIGGER, move=TEST_MOVE, max_output_tokens=500, # Use higher limit for testing ) print(f"\n✓ Success!") print(f" Input conversation: {formatted_conversation}") print(f" Trigger: {TEST_TRIGGER}") print(f" Move: {TEST_MOVE}") print(f" Generated reply: {reply}") print(f" Reply length: {len(reply.split())} words") return True, reply except Exception as e: print(f"\n✗ Error: {str(e)}") return False, str(e) def main(): """Run all tests.""" print("\n" + "=" * 60) print("API Endpoint Test Script") print("=" * 60) print(f"\nTest Data:") print(f" Conversation: {TEST_CONVERSATION}") print(f" Trigger: {TEST_TRIGGER}") print(f" Move: {TEST_MOVE}") print() # Check environment variables print("Environment Variables:") perplexity_key = os.getenv("PERPLEXITY_API_KEY") google_key = os.getenv("GOOGLE_API_KEY") print(f" PERPLEXITY_API_KEY: {'✓ Set' if perplexity_key else '✗ Not set'}") print(f" GOOGLE_API_KEY: {'✓ Set' if google_key else '✗ Not set'}") print() # Test Perplexity perplexity_success, perplexity_result = test_perplexity() # Test Gemini gemini_success, gemini_result = test_gemini() # Summary print("\n" + "=" * 60) print("Test Summary") print("=" * 60) print(f" Model 4 (Perplexity): {'✓ PASSED' if perplexity_success else '✗ FAILED'}") print(f" Model 5 (Gemini): {'✓ PASSED' if gemini_success else '✗ FAILED'}") print() if perplexity_success and gemini_success: print("✓ All tests passed!") return 0 else: print("✗ Some tests failed. Check errors above.") return 1 if __name__ == "__main__": exit(main())