/MainProcess] 22208184909825/agent-e80a0 agent invoke chat to retry again llm er...

2026年04月15日 09:34 processing

错误信息

[2025-09-03 11:10:25,969: ERROR/MainProcess] 22208184909825/agent-e80a0 agent invoke chat to retry again llm error: Error code: 400 - {'error': {'message': "Invalid schema for function 'self_intent_recognition_0': None is not of type 'array'. (request id: 20250903110948261917640BBDOPt2p)", 'type': 'openai_error', 'param': '', 'code': 'invalid_function_parameters'}}

AI 解决方案

报错分析报告

1.错误翻译


原文:Invalid schema for function 'self_intent_recognition_0': None is not of type 'array'.
译文:函数'self_intent_recognition_0'的schema无效:None不是数组类型。

2.原因分析


  • 根本原因:函数self_intent_recognition_0的参数schema中,某字段预期为数组(array)类型,但实际传入了None值。

  • 发生位置:函数调用时的参数校验阶段(OpenAI侧校验schema一致性),因类型不匹配触发invalid_function_parameters错误。
  • 3.解决方案


    #### 方案1:修正函数Schema(推荐)
    将问题字段的类型明确为数组,并设置合理默认值(如空数组):
    {
      "name": "self_intent_recognition_0",
      "parameters": {
        "type": "object",
        "properties": {
          "target_field": {  // 替换为实际字段名
            "type": "array",
            "items": { "type": "string" },  // 按实际需求调整item类型
            "default": []  // 避免None,用空数组兜底
          }
        },
        "required": ["target_field"]  // 若为必填项则保留
      }
    }
    

    #### 方案2:修复调用传参
    确保调用时传递数组而非None

    # 错误写法(传None)
    result = self_intent_recognition_0(target_field=None)
    
    # 修复后(传空数组或有效数据)
    result = self_intent_recognition_0(target_field=[])  # 空数组
    # 或
    result = self_intent_recognition_0(target_field=["有效数据1", "有效数据2"])
    

    4. 预防措施


  • Schema设计原则:定义函数参数时,避免将array类型与None共存(如需可选,用default: []替代nullable)。

  • 前置校验工具:使用jsonschema库本地验证参数合法性,或OpenAI SDK的schema校验功能。

  • - 推荐工具:pip install jsonschema(Python)、[OpenAI Function Calling Docs](https://platform.openai.com/docs/guides/function-calling)。

    ---
    :请将上述target_field替换为实际报错的字段名(可通过错误日志中的request id关联代码定位)。