type has to be either 'image_url' or 'text' at file:///E:/Users/Lenovo/AppData/L...
错误信息
AI_APICallError: type has to be either 'image_url' or 'text'
at file:///E:/Users/Lenovo/AppData/Local/Programs/Cherry%20Studio/resources/app.asar/out/renderer/assets/dist-DWBkLJID.js:1704:11
at async postToApi (file:///E:/Users/Lenovo/AppData/Local/Programs/Cherry%20Studio/resources/app.asar/out/renderer/assets/dist-DWBkLJID.js:1599:24)
at async OpenAICompatibleChatLanguageModel.doStream (file:///E:/Users/Lenovo/AppData/Local/Programs/Cherry%20Studio/resources/app.asar/out/renderer/assets/dist-MiiZ7jiT.js:452:48)
at async wrapStream (file:///E:/Users/Lenovo/AppData/Local/Programs/Cherry%20Studio/resources/app.asar/out/renderer/assets/store-BX3OZ3o6.js:48641:32)
at async fn (file:///E:/Users/Lenovo/AppData/Local/Programs/Cherry%20Studio/resources/app.asar/out/renderer/assets/store-BX3OZ3o6.js:47507:17)
at async file:///E:/Users/Lenovo/AppData/Local/Programs/Cherry%20Studio/resources/app.asar/out/renderer/assets/store-BX3OZ3o6.js:43861:19
at async _retryWithExponentialBackoff (file:///E:/Users/Lenovo/AppData/Local/Programs/Cherry%20Studio/resources/app.asar/out/renderer/assets/store-BX3OZ3o6.js:44024:10)
at async streamStep (file:///E:/Users/Lenovo/AppData/Local/Programs/Cherry%20Studio/resources/app.asar/out/renderer/assets/store-BX3OZ3o6.js:47476:109)
at async fn (file:///E:/Users/Lenovo/AppData/Local/Programs/Cherry%20Studio/resources/app.asar/out/renderer/assets/store-BX3OZ3o6.js:47782:5)
at async file:///E:/Users/Lenovo/AppData/Local/Programs/Cherry%20Studio/resources/app.asar/out/renderer/assets/store-BX3OZ3o6.js:43861:19
AI 解决方案
报错分析报告
1.错误翻译
原文:type has to be either 'image_url' or 'text'
译文:类型必须是 'image_url' 或 'text' 中的一个
2. 原因分析
type参数传入了非允许值(需为'image_url'或'text')。postToApi函数异步调用链中(文件dist-DWBkLJID.js:1599),参数验证阶段触发错误。3. 解决方案
// 修复示例:确保type参数符合API要求
async function callAIAPI(payload) {
// 校验并修正type参数
const validTypes = ['image_url', 'text'];
if (!validTypes.includes(payload.type)) {
payload.type = 'text'; // 默认 fallback 到合法值,或根据业务调整
}
// 调用API(示例)
return await fetch('/api/ai', {
method: 'POST',
body: JSON.stringify(payload)
});
}
4. 预防措施
enum Type { ImageUrl = 'image_url', Text = 'text' }),避免硬编码错误。zod、joi)验证输入,示例:z.object({ type: z.enum(['image_url', 'text']) })。