page --> <!-- a padding to disable MSIE and Chrome friendly error page --> <!-- ...
错误信息
504 Gateway Time-out
nginx
</body>
</html>
<!-- a padding to disable MSIE and Chrome friendly error page -->
<!-- a padding to disable MSIE and Chrome friendly error page -->
<!-- a padding to disable MSIE and Chrome friendly error page -->
<!-- a padding to disable MSIE and Chrome friendly error page -->
<!-- a padding to disable MSIE and Chrome friendly error page -->
<!-- a padding to disable MSIE and Chrome friendly error page -->
at handleAPIError (E:\108\6.3.9\my-neuro-main\live-2d\js\api-utils.js:89:11)
at async LLMClient.chatCompletion (E:\108\6.3.9\my-neuro-main\live-2d\js\ai\llm-client.js:81:17)
at async InputRouter.llmHandler (E:\108\6.3.9\my-neuro-main\live-2d\js\ai\llm-handler.js:232:34)
at async InputRouter.handleTextInput (E:\108\6.3.9\my-neuro-main\live-2d\js\ai\conversation\InputRouter.js:131:9)
[ERROR] 用户显示错误: AI服务不可用,请稍后再试
AI 解决方案
报错分析报告
1.错误翻译
原文:504 Gateway Time-out
译文:504网关超时
2.原因分析
LLMClient.chatCompletion(llm-client.js:81:17)时,后端AI服务未及时响应,触发handleAPIError(api-utils.js:89:11)捕获错误,最终返回"AI服务不可用"。3. 解决方案
#### 方案1:代码层添加超时控制(推荐)
// 修复后的LLMClient.chatCompletion(以fetch为例)
async function chatCompletion(params) {
const controller = new AbortController();
const TIMEOUT = 30000; // 30秒超时(根据业务调整)
const timeoutId = setTimeout(() => controller.abort(), TIMEOUT);
try {
const res = await fetch(AI_SERVICE_URL, {
method: "POST",
headers: { "Content-Type": "application/json" },
body: JSON.stringify(params),
signal: controller.signal
});
clearTimeout(timeoutId);
if (!res.ok) throw new Error(`HTTP ${res.status}`);
return await res.json();
} catch (err) {
if (err.name === "AbortError") throw new Error("AI服务请求超时,请重试");
throw err;
}
}
#### 方案2:调整Nginx网关超时配置(需运维配合)
# 在Nginx代理配置中添加(如location /api/块)
proxy_read_timeout 60s; # 延长后端响应等待时间至60秒
proxy_connect_timeout 10s; # 连接后端超时时间
proxy_send_timeout 60s; # 发送请求超时时间
4. 预防措施
axios(自带timeout配置)替代原生fetch,或用p-retry库简化重试逻辑。---
注:若调整后仍频繁超时,需排查后端AI服务的性能瓶颈(如模型推理耗时、资源不足)。