- Fix KeyError 'root' in FileGrouper when merging groups with no root-level files - Fix changelog commit parsing breaking on multiline bodies (use %x00 separator) - Add empty choices/content checks in OpenAI, Anthropic, OpenRouter providers - Fix config edit crash when config is empty - Fix validate command using wrong color for 'no staged files' - Add type check for corrupted YAML config (non-dict returns empty dict)
23 lines
711 B
Python
23 lines
711 B
Python
from openai import OpenAI
|
|
|
|
from devgen.providers.base import BaseProvider
|
|
|
|
|
|
class OpenaiProvider(BaseProvider):
|
|
"""Generates content using OpenAI's Chat Completions API."""
|
|
|
|
DISPLAY_NAME = "OpenAI"
|
|
DEFAULT_MODEL = "gpt-4o"
|
|
|
|
def _generate(self, prompt, api_key, model, **kwargs):
|
|
kwargs.pop("debug", None)
|
|
client = OpenAI(api_key=api_key)
|
|
response = client.chat.completions.create(
|
|
model=model,
|
|
messages=[{"role": "user", "content": prompt}],
|
|
**kwargs,
|
|
)
|
|
if not response.choices:
|
|
raise RuntimeError(f"OpenAI returned no choices for model {model!r}.")
|
|
return response.choices[0].message.content or ""
|