| | |
| |
|
| | import logging |
| | import requests |
| | import os |
| | import json |
| |
|
| |
|
| | |
| | logging.basicConfig( |
| | level=logging.INFO, |
| | format='%(asctime)s - %(name)s:%(lineno)d - %(levelname)s - %(message)s', |
| | datefmt='%Y-%m-%d %H:%M:%S' |
| | ) |
| |
|
| | logger = logging.getLogger(__name__) |
| |
|
| | import requests |
| | import json |
| | import os |
| |
|
| | |
| | |
| | HF_TOKEN = os.getenv("HF_TOKEN") |
| |
|
| | if not HF_TOKEN: |
| | raise ValueError("Hugging Face API token not found. Please set the HF_TOKEN environment variable.") |
| |
|
| | |
| | |
| | API_URL = "https://router.huggingface.co/v1" |
| | MODEL_ID = "deepseek-ai/DeepSeek-V3-0324:fireworks-ai" |
| |
|
| | def generate_crossword_clue(word: str, context: str) -> str: |
| | """ |
| | Generates a crossword-style clue for a given word using the Hugging Face API router. |
| | |
| | Args: |
| | word (str): The word for which to generate a clue. |
| | context (str): The context sentence or phrase to help define the word. |
| | |
| | Returns: |
| | str: The generated crossword clue. |
| | """ |
| | headers = { |
| | "Authorization": f"Bearer {HF_TOKEN}", |
| | "Content-Type": "application/json" |
| | } |
| |
|
| | |
| | messages = [ |
| | { |
| | "role": "system", |
| | "content": f"You are a crossword puzzle clue generator. Given a word and a context, your task is to generate a single, concise, creative, and fair crossword puzzle clue. The clue should be for the word '{word}'." |
| | }, |
| | { |
| | "role": "user", |
| | "content": f"The word is '{word}'. The context is: '{context}'." |
| | } |
| | ] |
| |
|
| | |
| | |
| | payload = { |
| | "model": MODEL_ID, |
| | "messages": messages, |
| | |
| | "temperature": 0.7 |
| | } |
| |
|
| | try: |
| | response = requests.post(f"{API_URL}/chat/completions", headers=headers, data=json.dumps(payload)) |
| | response.raise_for_status() |
| | |
| | result = response.json() |
| | |
| | |
| | if "choices" in result and len(result["choices"]) > 0: |
| | final_clue = result["choices"][0]["message"]["content"].strip() |
| | return final_clue |
| | else: |
| | return "No clue generated." |
| |
|
| | except requests.exceptions.RequestException as e: |
| | print(f"An error occurred: {e}") |
| | |
| | if 'response' in locals(): |
| | print(f"API Response: {response.text}") |
| | return "Error generating clue." |
| |
|
| | |
| | if __name__ == "__main__": |
| | target_word = "cricket" |
| | target_context = "yesterday india won test series against england" |
| |
|
| | clue = generate_crossword_clue(target_word, target_context) |
| | |
| | print(f"Word: {target_word}") |
| | print(f"Context: {target_context}") |
| | print(f"Generated Clue: {clue}") |
| |
|
| | |
| | print("\n--- Another example ---") |
| | target_word_2 = "Shuttle" |
| | target_context_2 = "Man landed on the moon" |
| | clue_2 = generate_crossword_clue(target_word_2, target_context_2) |
| | print(f"Word: {target_word_2}") |
| | print(f"Context: {target_context_2}") |
| | print(f"Generated Clue: {clue_2}") |
| |
|
| |
|