用AnythingLLM(ALLM)當前端去呼叫Ollama的LLM model,會出現5分鐘就斷線的問題。當LLM model很大,生成內容的時間超過5分鐘,就會因為用Node.js寫的ALLM預設fetch()是300秒,造成ALLM主動斷線,回傳 HTTP 500。修正方法是:
- sed -i '' "s/OLLAMA_RESPONSE_TIMEOUT='0'/OLLAMA_RESPONSE_TIMEOUT='86400000'/" ~/Library/Application\ Support/anythingllm-desktop/storage/.env
- sed -i '' "s/ANYTHINGLLM_FETCH_TIMEOUT='0'/ANYTHINGLLM_FETCH_TIMEOUT='86400000'/" ~/Library/Application\ Support/anythingllm-desktop/storage/.env
完成之後重開ALLM就可以了。以下說明這兩個環境變數的作用:
- OLLAMA_RESPONSE_TIMEOUT:OllamaAILLM 這個 class 專門讀這個變數,把預設 fetch 換成自訂的、timeout 拉長的 fetch(用 undici 的 Agent 設定 headersTimeout),只套用在跟 Ollama 對話的請求上
- ANYTHINGLLM_FETCH_TIMEOUT:控制 AnythingLLM 其他地方(非 Ollama 專屬路徑)的 fetch timeout
這些設定會讓兩條路徑的 timeout 都從 5 分鐘延長到 24 小時,model 要算超過24小時才會被AnythingLLM 主動斷線。要看相關的log則是執行:
- cd ~/Library/Application\ Support/anythingllm-desktop/storage/logs
- tail -f backend-2026-06-21.log | jq -r '.message'
_EOF_
沒有留言:
張貼留言