未获取到有效的AI回复 at InputRouter.llmHandler (E:\neuro\my-neuro-main\live-2d\js\ai\llm-...
🚨 错误信息
🤖 AI解决方案
1. 错误翻译
plaintext
原文:Error: 未获取到有效的AI回复
译文:Error: 未能获取到有效的AI回复
2. 原因分析
这个错误表明,在程序的AI对话处理链中,语音输入经过路由处理后,调用大语言模型(LLM)接口时,未能获得一个结构正确或内容有效的回复。错误发生在:
llm-handler.js 文件第596行的 llmHandler 函数。ASRController.js → InputRouter.js → llm-handler.js。1. API调用失败:连接大语言模型API(如GPT、Claude等)时网络超时、认证失败或服务不可用。
2. 响应解析错误:API返回了数据,但格式不符合预期(例如,非JSON格式、缺少特定字段),导致解析时认为“无效”。
3. 内容无效:API返回了空回复、错误信息,或一个无法被后续逻辑处理的响应体。
3. 解决方案
需要在
llm-handler.js 的 llmHandler 函数中添加更健壮的错误处理和日志记录。``javascript
// 文件:E:\neuro\my-neuro-main\live-2d\js\ai\llm-handler.js
// 在 llmHandler 函数中,调用AI API和解析响应的部分进行改造
async function llmHandler(inputData) {
try {
// 1. 调用AI API
const response = await fetch('YOUR_LLM_API_ENDPOINT', {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'Authorization': Bearer ${process.env.API_KEY}
},
body: JSON.stringify({
// ... 你的请求参数
message: inputData.text,
// ...
}),
timeout: 15000 // 可选:设置超时
});
// 2. 检查HTTP响应状态
if (!response.ok) {
const errorBody = await response.text();
console.error(LLM API HTTP Error: ${response.status}, errorBody);AI服务请求失败: ${response.statusText}
throw new Error();
}
// 3. 解析响应体
const result = await response.json();
// 4. 验证响应结构是否有效
if (!result || typeof result !== 'object') {
console.error('无效的API响应格式:', result);
throw new Error('AI返回了无效的数据结构');
}
// 5. 检查你期望的有效回复字段(例如 result.choices[0].message.content 或 result.reply)
const aiReply = extractValidReply(result); // 请根据你的API实际响应格式实现此函数
if (!aiReply || aiReply.trim() === '') {
console.error('AI回复内容为空:', result);
throw new Error('AI回复内容为空');
}
// 6. 返回有效的回复
return aiReply;
} catch (error) {
console.error('llmHandler 处理失败:', error.message);
// 此处可以返回一个友好的默认回复,而不是让整个链条崩溃
// return "抱歉,我暂时无法回答这个问题。";
// 或者,重新抛出错误,但包装得更清晰
throw new Error(未获取到有效的AI回复: ${error.message});
}
}
// 辅助函数:根据你的API响应格式提取有效回复
function extractValidReply(apiResult) {
// 示例:适配OpenAI格式
// if (apiResult.choices && apiResult.choices[0]?.message?.content) {
// return apiResult.choices[0].message.content;
// }
// 示例:适配你的自定义格式
// if (apiResult.reply) {
// return apiResult.reply;
// }
// 请根据实际情况修改
return null;
}
`
4. ️ 预防措施
中记录详细的错误日志(包括API响应状态码、原始响应体),以便快速定位是网络、认证还是响应格式问题。