from __future__ import annotations import os from dotenv import load_dotenv from openai import OpenAI load_dotenv() _DEFAULT_MODEL = "google/gemini-flash-1.5" def complete(prompt: str, max_tokens: int = 200) -> str: """Call OpenRouter with prompt, return response text. Raises on failure.""" client = OpenAI( base_url="https://openrouter.ai/api/v1", api_key=os.environ["OPENROUTER_API_KEY"], ) model = os.environ.get("OPENROUTER_MODEL", _DEFAULT_MODEL) resp = client.chat.completions.create( model=model, max_tokens=max_tokens, messages=[{"role": "user", "content": prompt}], extra_body={"reasoning": {"enabled": False}}, ) content = resp.choices[0].message.content if content is None: finish_reason = resp.choices[0].finish_reason raise RuntimeError( f"OpenRouter returned empty content for model {model!r} " f"(finish_reason={finish_reason!r}, raw={resp.model_dump_json()})" ) return content.strip()