Skip to content

Commit 552b377

Browse files
TimInTechclaude
andcommitted
fix(llm): start without API key instead of crashing in constructor
Im secret-freien Modell ist der OpenAI-Key ohne gesetzte Umgebungsvariable leer. Neuere openai-Versionen werfen jedoch bereits im Konstruktor `openai.OpenAI(api_key="")` einen OpenAIError ("Missing credentials"), wodurch BlitztextApp und die GUI-Tests beim Start abbrechen. Der echte Client wird jetzt nur noch bei vorhandenem Key gebaut; ohne Key greift wie bisher _check_openai() zur Aufrufzeit mit einer klaren Nutzer-Meldung. Damit startet die App auch ohne Key, und die GUI-Tests (WHISPER_GUI_TESTS=1) laufen wieder grün. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
1 parent a33e871 commit 552b377

1 file changed

Lines changed: 11 additions & 2 deletions

File tree

app/llm_service.py

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -66,14 +66,23 @@ def __init__(
6666
else:
6767
try:
6868
import openai
69-
70-
self.client = openai.OpenAI(api_key=self.api_key)
7169
except ImportError:
7270
self._openai_installed = False
7371
self._client_is_fallback_mock = True
7472
from unittest.mock import MagicMock
7573

7674
self.client = MagicMock()
75+
else:
76+
if self.api_key and self.api_key.strip():
77+
self.client = openai.OpenAI(api_key=self.api_key)
78+
else:
79+
# Ohne API-Key keinen echten Client bauen: Neuere openai-Versionen
80+
# werfen bereits im Konstruktor bei leerem Key. Der eigentliche
81+
# Fehler wird zur Aufrufzeit über _check_openai() klar gemeldet,
82+
# damit die App auch ohne gesetzten Key startet.
83+
from unittest.mock import MagicMock
84+
85+
self.client = MagicMock()
7786

7887
def is_available(self) -> bool:
7988
return bool(self.api_key and self.api_key.strip())

0 commit comments

Comments
 (0)