| 123456789101112131415161718192021222324252627282930313233 |
- 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()
|