fix: load env variables, add fallback for doc conversion, and validate LLM API key
This commit is contained in:
@@ -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",
|
||||
},
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user