2026年6月21日 星期日

修改ALLM環境變數,改善5分鐘會斷線

用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_

沒有留言:

張貼留言