fix: timeout do provedor nunca chegava ao httpx; endpoint agora visível
Causa do 'Provedor de LLM indisponível' no ambiente com Ollama local foi externa: OLLAMA_BASE_URL exportada no shell (http://localhost:11434/v1) vence o .env na interpolação do docker-compose, e localhost dentro do container é o próprio container. Nada no app indicava a URL em uso. Dois defeitos de código que tornavam isso indetectável — e um deles produziria a mesma mensagem mesmo com a URL correta: - _BaseProvider criava o httpx.AsyncClient com o atributo de classe (120 s) e as subclasses atribuíam self.timeout depois. O httpx congela o timeout na construção, então os 300 s pedidos pelo Ollama nunca valeram: um primeiro atendimento com modelo frio era cortado em 120 s com exatamente a mensagem 'provedor indisponível'. O timeout agora é passado ao super(). - LLMProviderError de conexão não citava o endereço tentado; o log dizia só 'All connection attempts failed'. Passa a incluir a endpoint, com credenciais user:pass@ redigidas. /api/health expõe llm_endpoint para comparação direta com o .env. README e .env.example documentam a precedência shell > .env, o fato de /v1 ser a superfície OpenAI-compatível (o adaptador usa /api/chat nativo) e a latência medida do primeiro atendimento.
This commit is contained in:
1 parent
ebf430c535
commit
68861b502c
7 files changed
+188
-8
No files matched your search
@@ -46,6 +46,10 @@ class HealthResponse(BaseModel):
|
||||
status: Literal["ok"] = "ok"
|
||||
llm_provider: str
|
||||
indexing: Literal["ready", "indexing", "error"]
|
||||
# A URL realmente em uso. Uma `OLLAMA_BASE_URL` herdada do shell pode
|
||||
# sobrescrever o `.env` silenciosamente; sem este campo o operador não tem
|
||||
# como perceber que o backend está apontando para outro lugar.
|
||||
llm_endpoint: str | None = None
|
||||
version: str = "1.0.0"
|
||||
|
||||
|
||||
|
||||
Reference in new issue
Block a user