#!/usr/bin/env python """ Test script for Ollama integration Tests connection, configuration, and summarization """ from config import Config from ollama_client import OllamaClient print("\n" + "="*70) print("Ollama Integration Test") print("="*70) # Print configuration Config.print_config() # Validate configuration issues = Config.validate() if issues: print("⚠ Configuration Issues:") for issue in issues: print(f" - {issue}") print() # Initialize client client = OllamaClient( base_url=Config.OLLAMA_BASE_URL, model=Config.OLLAMA_MODEL, api_key=Config.OLLAMA_API_KEY, enabled=Config.OLLAMA_ENABLED, timeout=Config.OLLAMA_TIMEOUT ) # Test 1: Check if Ollama is enabled print("Test 1: Configuration Check") print(f" Ollama Enabled: {Config.OLLAMA_ENABLED}") if not Config.OLLAMA_ENABLED: print(" ⚠ Ollama is disabled. Set OLLAMA_ENABLED=true in .env to enable.") print("\n" + "="*70) exit(0) # Test 2: Test connection print("\nTest 2: Connection Test") conn_result = client.test_connection() print(f" Available: {conn_result['available']}") print(f" Current Model: {conn_result['current_model']}") if conn_result['available']: print(f" ✓ Connected to Ollama server") if conn_result['models']: print(f" Available models: {', '.join(conn_result['models'][:5])}") if conn_result['current_model'] not in conn_result['models']: print(f" ⚠ Warning: Model '{conn_result['current_model']}' not found in available models") else: print(f" ✗ Connection failed: {conn_result['error']}") print("\n" + "="*70) exit(1) # Test 3: Test summarization with sample article print("\nTest 3: Summarization Test") print(" Testing with sample German article...") sample_article = """ Die neue U-Bahn-Linie, die das Münchner Stadtzentrum mit dem Flughafen verbindet, wurde heute eröffnet. Oberbürgermeister Dieter Reiter nahm zusammen mit hunderten Anwohnern an der Eröffnungszeremonie teil. Die Linie wird die Reisezeit zwischen dem Flughafen und der Münchner Innenstadt erheblich verkürzen. Der Bau dauerte fünf Jahre und kostete etwa 2 Milliarden Euro. Die neue Linie umfasst 10 Stationen und verkehrt während der Hauptverkehrszeiten alle 10 Minuten. Experten erwarten, dass die neue Verbindung den Verkehr in der Stadt deutlich entlasten wird. Die Münchner Verkehrsgesellschaft rechnet mit täglich über 50.000 Fahrgästen auf der neuen Strecke. """ result = client.summarize_article(sample_article, max_words=Config.SUMMARY_MAX_WORDS) print(f"\n Success: {result['success']}") if result['success']: print(f" ✓ Summarization successful!") print(f"\n Original word count: {result['original_word_count']}") print(f" Summary word count: {result['summary_word_count']}") print(f" Compression ratio: {result['original_word_count'] / max(result['summary_word_count'], 1):.1f}x") print(f" Duration: {result['duration']:.2f}s") print(f"\n Summary (English):") print(f" {'-'*70}") print(f" {result['summary']}") print(f" {'-'*70}") else: print(f" ✗ Summarization failed: {result['error']}") # Test 4: Test with English article print("\nTest 4: English Article Test") print(" Testing with English article...") english_article = """ The city council approved a new bike lane network spanning 50 kilometers across Munich. The project aims to promote sustainable transportation and reduce car traffic in the city center. Construction will begin next month and is expected to be completed within two years. The bike lanes will connect major residential areas with business districts and public transport hubs. Environmental groups have praised the initiative as a significant step toward carbon neutrality. """ result2 = client.summarize_article(english_article, max_words=50) print(f"\n Success: {result2['success']}") if result2['success']: print(f" ✓ Summarization successful!") print(f" Original: {result2['original_word_count']} words → Summary: {result2['summary_word_count']} words") print(f" Duration: {result2['duration']:.2f}s") print(f"\n Summary:") print(f" {result2['summary']}") else: print(f" ✗ Summarization failed: {result2['error']}") # Summary print("\n" + "="*70) print("Test Summary") print("="*70) print(f"✓ Configuration: Valid") print(f"✓ Connection: {'Success' if conn_result['available'] else 'Failed'}") print(f"✓ German→English: {'Success' if result['success'] else 'Failed'}") print(f"✓ English→English: {'Success' if result2['success'] else 'Failed'}") print("="*70) if result['success'] and result2['success']: print("\n🎉 All tests passed! Ollama integration is working correctly.") print("\nYou can now run the crawler with AI summarization:") print(" python crawler_service.py 5") else: print("\n⚠ Some tests failed. Check the errors above.") print()