| |
| """ |
| Demo: API-Based Crossword Clue Generation |
| Shows the completed multiple model comparison system working. |
| """ |
|
|
| import sys |
| import os |
| import time |
| from pathlib import Path |
|
|
| |
| sys.path.insert(0, str(Path(__file__).parent)) |
|
|
| from api_clue_generator import APIClueGenerator |
|
|
| def demo_api_models(): |
| """Demo the completed API-based clue generation system.""" |
| |
| print("π― Demo: API-Based Crossword Clue Generation") |
| print("=" * 60) |
| print("Using Hugging Face Router API with working approach from clue_with_hf.py") |
| |
| |
| generator = APIClueGenerator() |
| |
| if not generator.hf_token: |
| print("β Error: HF_TOKEN environment variable not set") |
| return |
| |
| print(f"β
Token configured: {bool(generator.hf_token)}") |
| print(f"π€ Available models: {list(generator.models.keys())}") |
| |
| |
| demo_cases = [ |
| ("ELEPHANT", "animals"), |
| ("GUITAR", "music"), |
| ("BASKETBALL", "sports"), |
| ("COMPUTER", "technology"), |
| ] |
| |
| print(f"\nπ§ͺ Testing {len(demo_cases)} word-topic combinations") |
| print("=" * 60) |
| |
| for i, (word, topic) in enumerate(demo_cases, 1): |
| print(f"\nπ Demo {i}/{len(demo_cases)}: '{word}' + '{topic}'") |
| print("-" * 40) |
| |
| try: |
| start_time = time.time() |
| results = generator.generate_clue(word, topic) |
| elapsed = time.time() - start_time |
| |
| print(f"β±οΈ Generated in {elapsed:.1f}s") |
| |
| |
| for model_key, clue in results.items(): |
| if clue: |
| quality, score = generator.evaluate_clue_quality(word, clue) |
| |
| |
| if quality == "EXCELLENT": |
| icon = "π" |
| elif quality == "GOOD": |
| icon = "β
" |
| elif quality == "ACCEPTABLE": |
| icon = "π" |
| else: |
| icon = "β" |
| |
| print(f" {icon} {model_key:15} | {quality:10} | {clue}") |
| else: |
| print(f" β {model_key:15} | FAILED | No response") |
| |
| except Exception as e: |
| print(f"β Error: {e}") |
| |
| print(f"\n" + "=" * 60) |
| print("β
DEMO COMPLETE") |
| print("=" * 60) |
| print("π Successfully implemented API-based crossword clue generation!") |
| print("π‘ Key features:") |
| print(" β’ Uses HF Router API with chat completions format") |
| print(" β’ Tests multiple models (DeepSeek-V3, Llama-3.3-70B)") |
| print(" β’ Evaluates clue quality automatically") |
| print(" β’ No local model downloads required") |
| print("\nπ Available tools:") |
| print(" β’ api_clue_generator.py - Core API generator") |
| print(" β’ test_multiple_models.py - Comprehensive model comparison") |
| print(" β’ interactive_clue_tester.py - Interactive testing (for manual use)") |
| print(" β’ This demo script") |
|
|
|
|
| if __name__ == "__main__": |
| demo_api_models() |