fix: load env variables, add fallback for doc conversion, and validate LLM API key

This commit is contained in:
Repinoid
2026-10-31 14:13:33 +03:00
parent ae34f04fc3
commit 631bc750d5
3 changed files with 91 additions and 18 deletions
+13 -1
View File
@@ -29,7 +29,19 @@ class HttpxLLMClient:
self.timeout = timeout
def complete(self, prompt: str) -> str:
"""Отправить запрос к модели LLM через HTTP POST и вернуть текстовое содержимое ответа.
Назначение и инварианты:
- Проверяет обязательное наличие непустого API-ключа перед формированием HTTP-запроса.
- Если ключ отсутствует или пуст, выбрасывает явное исключение ValueError вместо передачи
невалидного заголовка Authorization (например 'Bearer '), приводящего к ошибке
'Illegal header value' на уровне транспортной библиотеки httpx/httpcore.
- Обрезает случайные пробельные символы и переносы строк по краям токена.
"""
import httpx
clean_key = (self.key or "").strip()
if not clean_key:
raise ValueError("LLM_API_KEY is not configured or empty")
payload = {
"model": self.model,
"messages": [{"role": "user", "content": prompt}],
@@ -41,7 +53,7 @@ class HttpxLLMClient:
self.url,
json=payload,
headers={
"Authorization": f"Bearer {self.key}",
"Authorization": f"Bearer {clean_key}",
"Content-Type": "application/json",
},
)