Failed to load resource: the server responded with a status of 500 (Internal Server Error)
fmode.query.mjs:8 Response
ERROR Error: [object Object]
提示词(Prompt)过长导致豆包1.6模型API调用失败
提示词内容过长
对话历史累积
其他可能原因
// 添加详细的调试日志
console.log('🤖 调用豆包1.6模型...');
console.log('📸 图片数量:', options.images.length);
console.log('📝 提示词长度:', prompt.length, '字符');
console.log('🏠 空间类型:', options.spaceType);
console.log('💬 对话历史:', conversationHistory?.length || 0, '条');
// 检查提示词长度
if (prompt.length > 10000) {
console.warn('⚠️ 提示词过长,可能导致API调用失败');
}
error: (err) => {
console.error('❌ AI分析失败,详细错误:', err);
console.error('❌ 错误类型:', err?.constructor?.name);
console.error('❌ 错误消息:', err?.message);
console.error('❌ 错误详情:', JSON.stringify(err, null, 2));
// 根据错误类型提供更具体的错误信息
let errorMessage = 'AI分析失败';
if (err?.message?.includes('500')) {
errorMessage = 'AI服务暂时不可用(服务器错误),请稍后重试';
} else if (err?.message?.includes('timeout')) {
errorMessage = 'AI分析超时,请减少图片数量或简化需求后重试';
} else if (err?.message?.includes('token')) {
errorMessage = '提示词过长,请简化描述或减少对话历史';
} else if (err?.message) {
errorMessage = `AI分析失败: ${err.message}`;
}
reject(new Error(errorMessage));
subscription?.unsubscribe();
}
// 限制最近3轮对话(用户+AI各3条)
if (conversationHistory && conversationHistory.length > 0) {
const recentHistory = conversationHistory.slice(-6); // 最近3轮对话
prompt += `\n\n【对话历史】\n以下是最近的对话记录:\n\n`;
recentHistory.forEach((msg, index) => {
const role = msg.role === 'user' ? '用户' : 'AI助手';
// 限制每条消息最多500字符
const content = msg.content.length > 500
? msg.content.substring(0, 500) + '...'
: msg.content;
prompt += `${role}:${content}\n\n`;
});
}
首次分析(无对话历史)
上传1-2张图片 → 点击"AI分析" → 等待响应
追问测试(有对话历史)
在对话框输入:"请详细分析色彩搭配" → 发送
错误检查
减少图片数量
简化文字描述
清空对话历史
分阶段提问
动态调整提示词
// 根据是否有对话历史,使用不同的提示词版本
if (conversationHistory && conversationHistory.length > 0) {
// 使用简化版提示词(只包含核心维度)
prompt = this.buildSimplePrompt(...);
} else {
// 使用完整版提示词(包含详细说明)
prompt = this.buildFullPrompt(...);
}
添加提示词压缩
// 移除多余的空格和换行
prompt = prompt.replace(/\n{3,}/g, '\n\n').trim();
图片预处理
// 检查图片URL是否可访问
// 压缩图片大小
// 限制图片分辨率
实现提示词模板系统
添加重试机制
// 如果失败,自动简化提示词重试
async function analyzeWithRetry(options) {
try {
return await analyze(options);
} catch (err) {
if (err.message.includes('500') || err.message.includes('token')) {
// 使用简化版提示词重试
return await analyzeSimple(options);
}
throw err;
}
}
提示词缓存
分片分析
流式优化
智能上下文管理
现在的修复已经可以:
建议立即测试,如果还有500错误,查看控制台的详细错误信息。