":{"message":"contents is required (request id: 20251127095206403422290jhobUCZu)...

2025年11月27日 09:53 状态: processing

🚨 错误信息

[09:53:15.127][INFO][ TRSSYz ] [chatgpt][getGeminiKey]随机使用第1个 Key: sk-RipQ****2u2XO7IEmG > [09:53:22.078][WARN][ TRSSYz ] [chatgpt] Gemini API 错误 (500),进行重试。错误信息: {"error":{"message":"contents is required (request id: 20251127095206403422290jhobUCZu)","type":"rix_api_error","param":"","code":"invalid_request"}} [09:53:22.144][WARN][ TRSSYz ] [chatgpt] Gemini API 错误 (500),进行重试。错误信息: {"error":{"message":"contents is required (request id: 20251127095206487857368m7PaXRwG)","type":"rix_api_error","param":"","code":"invalid_request"}} [09:53:22.182][WARN][ TRSSYz ] [chatgpt] Gemini API 错误 (500),进行重试。错误信息: {"error":{"message":"contents is required (request id: 20251127095206537374829A8jWanaX)","type":"rix_api_error","param":"","code":"invalid_request"}} [09:53:22.220][WARN][ TRSSYz ] [chatgpt] Gemini API 错误 (500),进行重试。错误信息: {"error":{"message":"contents is required (request id: 202511270952065758574640OeLYM6u)","type":"rix_api_error","param":"","code":"invalid_request"}} [09:53:22.263][WARN][ TRSSYz ] [chatgpt] Gemini API 错误 (500),进行重试。错误信息: {"error":{"message":"contents is required (request id: 20251127095206619077180cw1XGVBX)","type":"rix_api_error","param":"","code":"invalid_request"}} [09:53:22.309][WARN][ TRSSYz ] [chatgpt] Gemini API 错误 (500),进行重试。错误信息: {"error":{"message":"contents is required (request id: 20251127095206664991266J65G5JDk)","type":"rix_api_error","param":"","code":"invalid_request"}} [09:53:22.355][WARN][ TRSSYz ] [chatgpt] Gemini API 错误 (500),进行重试。错误信息: {"error":{"message":"contents is required (request id: 20251127095206711392045veGH6SOu)","type":"rix_api_error","param":"","code":"invalid_request"}} [09:53:22.395][WARN][ TRSSYz ] [chatgpt] Gemini API 错误 (500),进行重试。错误信息: {"error":{"message":"contents is required (request id: 20251127095206751356263ZHki1SgC)","type":"rix_api_error","param":"","code":"invalid_request"}} [09:53:22.438][WARN][ TRSSYz ] [chatgpt] Gemini API 错误 (500),进行重试。错误信息: {"error":{"message":"contents is required (request id: 20251127095206793719651h9Aa3dGD)","type":"rix_api_error","param":"","code":"invalid_request"}} [09:53:22.486][WARN][ TRSSYz ] [chatgpt] Gemini API 错误 (500),进行重试。错误信息: {"error":{"message":"contents is required (request id: 20251127095206842045626W0RBEoGn)","type":"rix_api_error","param":"","code":"invalid_request"}} [09:53:22.524][ERRO][ TRSSYz ] Error: {"error":{"message":"contents is required (request id: 202511270952068802122476c8mey4z)","type":"rix_api_error","param":"","code":"invalid_request"}} at CustomGoogleGeminiClient.sendMessage (file:///root/TRSS_AllBot/TRSS-Yunzai/plugins/chatgpt-plugin/client/CustomGoogleGeminiClient.js:281:15) at process.processTicksAndRejections (node:internal/process/task_queues:105:5) at async chatgpt.sendMessage (file:///root/TRSS_AllBot/TRSS-Yunzai/plugins/chatgpt-plugin/model/core.js:653:14) at async chatgpt.abstractChat (file:///root/TRSS_AllBot/TRSS-Yunzai/plugins/chatgpt-plugin/apps/chat.js:900:25) at async chatgpt (file:///root/TRSS_AllBot/TRSS-Yunzai/plugins/chatgpt-plugin/apps/chat.js:580:5) at async PluginsLoader.deal (file:///root/TRSS_AllBot/TRSS-Yunzai/lib/plugins/loader.js:276:45) [09:53:22.526][INFO][2040931135 => 1156231720] 发送群消息:[{"type":"reply","data":{"id":"-1493986367"}},{"type":"text","data":{"text":"出现错误:{\"error\":{\"message\":\"contents is required (request id: 202511270952068802122476c8mey4z)\",\"type\":\"rix_api_error\",\"param\":\"\",\"code\":\"invalid_request\"}}"}}]

🤖 AI解决方案

Gemini API 错误分析

错误翻译

原文:"contents is required"
译文:"内容是必需的"

原因分析

根本原因: 调用 Gemini API 时未提供必需的 contents 参数。

具体位置:

  • CustomGoogleGeminiClient.js:281:15 - 发送消息到 Gemini API 的客户端代码

  • 调用 Gemini API 时请求体中缺少 contents 字段
  • 解决方案

    修复发送到 Gemini API 的请求体结构:

    // 正确的 Gemini API 请求格式
    const requestBody = {
      contents: [
        {
          parts: [
            {
              text: "您的消息内容"
            }
          ]
        }
      ],
      // 其他可选参数...
    };
    
    // 确保在 CustomGoogleGeminiClient.sendMessage 方法中正确构建请求
    async sendMessage(messages, options = {}) {
      const contents = messages.map(msg => ({
        parts: [{ text: msg.content }],
        role: msg.role === 'user' ? 'user' : 'model'
      }));
      
      const requestBody = {
        contents: contents,
        // 其他必需的参数...
      };
    }

    ️ 预防措施

  • 参数验证: 在发送 API 请求前验证 contents 参数是否存在且格式正确

  • API 文档检查: 定期参考 Gemini API 官方文档,确保请求格式符合最新规范

  • 使用类型检查: 在 TypeScript 项目中定义明确的接口类型来确保请求结构正确

// 预防性检查
if (!contents || !Array.isArray(contents) || contents.length === 0) {
  throw new Error('Gemini API 需要有效的 contents 参数');
}