| |
| """ |
| Test script to verify OpenRouter API key and translation functionality |
| """ |
|
|
| import os |
| import asyncio |
| import aiohttp |
| from translator import DocumentTranslator |
|
|
| async def test_api_key(): |
| """Test if the API key is working""" |
| print("π Testing OpenRouter API key...") |
| |
| api_key = os.getenv("OPENROUTER_API_KEY") |
| if not api_key: |
| print("β OPENROUTER_API_KEY environment variable not set!") |
| print("Please set it with: set OPENROUTER_API_KEY=your_key_here") |
| return False |
| |
| print(f"β
API key found: {api_key[:10]}...") |
| |
| |
| try: |
| headers = { |
| "Authorization": f"Bearer {api_key}", |
| "Content-Type": "application/json", |
| "HTTP-Referer": "https://huggingface.co", |
| "X-Title": "Document Translator" |
| } |
| |
| async with aiohttp.ClientSession() as session: |
| async with session.get( |
| "https://openrouter.ai/api/v1/models", |
| headers=headers |
| ) as response: |
| if response.status == 200: |
| print("β
API connection successful!") |
| return True |
| elif response.status == 429: |
| error_text = await response.text() |
| print(f"β οΈ Rate limit exceeded: {error_text}") |
| print("This is normal for free models. Try again later or use a different model.") |
| return True |
| else: |
| print(f"β API connection failed: {response.status}") |
| error_text = await response.text() |
| print(f"Error: {error_text}") |
| return False |
| except Exception as e: |
| print(f"β API test failed: {e}") |
| return False |
|
|
| async def test_translation(): |
| """Test basic translation functionality""" |
| print("\nπ Testing translation functionality...") |
| |
| translator = DocumentTranslator() |
| |
| if not translator.is_ready(): |
| print("β Translator not ready - API key issue") |
| return False |
| |
| try: |
| |
| models = await translator.get_available_models() |
| if not models: |
| print("β No models available") |
| return False |
| |
| selected_model = models[0]["id"] |
| print(f"Using model: {selected_model}") |
| |
| |
| test_text = "Hello, this is a test document." |
| print(f"Original text: {test_text}") |
| |
| translated = await translator.translate_text( |
| text=test_text, |
| model=selected_model, |
| source_lang="en", |
| target_lang="ar" |
| ) |
| |
| print(f"Translated text: {translated}") |
| |
| if translated != test_text: |
| print("β
Translation working correctly!") |
| return True |
| else: |
| print("β Translation returned original text - may indicate an issue") |
| return False |
| |
| except Exception as e: |
| print(f"β Translation test failed: {e}") |
| return False |
|
|
| async def test_specific_model(model_id: str): |
| """Test a specific model for translation""" |
| print(f"\nπ§ͺ Testing model: {model_id}") |
| |
| api_key = os.getenv("OPENROUTER_API_KEY") |
| if not api_key: |
| print("β OPENROUTER_API_KEY not set") |
| return False |
| |
| headers = { |
| "Authorization": f"Bearer {api_key}", |
| "Content-Type": "application/json", |
| "HTTP-Referer": "https://huggingface.co", |
| "X-Title": "Document Translator" |
| } |
| |
| test_payload = { |
| "model": model_id, |
| "messages": [ |
| {"role": "system", "content": "You are a professional translator."}, |
| {"role": "user", "content": "Translate 'Hello world' to Arabic"} |
| ], |
| "max_tokens": 50, |
| "temperature": 0.1 |
| } |
| |
| try: |
| async with aiohttp.ClientSession() as session: |
| async with session.post( |
| "https://openrouter.ai/api/v1/chat/completions", |
| headers=headers, |
| json=test_payload |
| ) as response: |
| if response.status == 200: |
| data = await response.json() |
| result = data["choices"][0]["message"]["content"] |
| print(f"β
Model works! Translation: {result}") |
| return True |
| elif response.status == 429: |
| error_text = await response.text() |
| print(f"β οΈ Model rate limited: {error_text}") |
| print("Try again later or use a different model.") |
| return True |
| else: |
| error_text = await response.text() |
| print(f"β Model test failed: {response.status} - {error_text}") |
| return False |
| except Exception as e: |
| print(f"β Test error: {e}") |
| return False |
|
|
| async def main(): |
| """Run all tests""" |
| print("π§ͺ Testing Document Translator Setup\n") |
| |
| |
| api_ok = await test_api_key() |
| |
| if api_ok: |
| |
| translation_ok = await test_translation() |
| |
| if translation_ok: |
| print("\nπ All tests passed! The translator should work correctly.") |
| else: |
| print("\nβ οΈ Translation test failed. Check the logs for details.") |
| else: |
| print("\nβ API key test failed. Please check your OPENROUTER_API_KEY.") |
| |
| print("\nπ Next steps:") |
| print("1. Make sure OPENROUTER_API_KEY is set correctly") |
| print("2. Upload a PDF or DOCX file to test the full workflow") |
| print("3. Check the translation.log file for detailed logs") |
|
|
| if __name__ == "__main__": |
| asyncio.run(main()) |