yggdrasil.loki.engines.openai_engine¶
openai_engine ¶
OpenAI-backed :class:TokenEngine.
OpenAIEngine ¶
OpenAIEngine(
*,
model: Optional[str] = None,
tier: Optional[str] = None,
api_key: Optional[str] = None,
base_url: Optional[str] = None
)
Bases: TokenEngine
Reason via the OpenAI Chat Completions API (openai SDK).
model_label
property
¶
Human label for status output — the pin, or the adaptive ceiling.
choose_tier ¶
choose_tier(
messages: Optional[list[dict[str, Any]]] = None,
system: Optional[str] = None,
) -> str
Adaptive tier for this request: "deep" or "fast".
Sizes on the message content (the actual work, not the fixed system boilerplate) and scans both message and system text for reasoning signals. Long or signalled requests get the deep tier; the rest stay fast. Override for a smarter policy.
resolve_model ¶
resolve_model(
*,
messages: Optional[list[dict[str, Any]]] = None,
system: Optional[str] = None,
tier: Optional[str] = None
) -> Optional[str]
The model id to use for this request.
An explicit self.model pin wins. Otherwise a forced tier (arg or
self.tier) selects from :attr:MODELS; with neither, the tier is
chosen adaptively. Falls back to :attr:default_model when the tier
isn't in the map.
generate ¶
generate(
prompt: str,
*,
system: Optional[str] = None,
tier: Optional[str] = None,
**options: Any
) -> str
Convenience: complete a single user prompt → reply text.
generate_stream ¶
generate_stream(
prompt: str,
*,
system: Optional[str] = None,
tier: Optional[str] = None,
**options: Any
) -> "Iterator[str]"
Convenience: stream a single user prompt → text chunks.