| from typing import Optional | |
| from huggingface_hub import InferenceClient | |
| import os | |
| DEFAULT_MODEL = os.environ.get("HF_CODE_MODEL", "HuggingFaceH4/zephyr-7b-beta") | |
| def generate_code(prompt: str, language: str = "python", max_new_tokens: int = 512) -> str: | |
| """Generate code or technical text via HF Inference API. | |
| Falls back to a simple template if API call fails. | |
| """ | |
| client = InferenceClient(token=os.environ.get("HF_TOKEN")) | |
| system_hint = f"You are an expert {language} code assistant. Output only code unless explanation is requested." | |
| full_prompt = f"{system_hint}\nTask: {prompt}\nLanguage: {language}" | |
| try: | |
| text = client.text_generation( | |
| model=DEFAULT_MODEL, | |
| prompt=full_prompt, | |
| max_new_tokens=max_new_tokens, | |
| temperature=0.2, | |
| ) | |
| return text.strip() | |
| except Exception as e: | |
| return f"# Fallback template due to API error: {e}\nprint('Hello from {language} generator')\n" |