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

2026年04月15日 09:31 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'. (request id: 20250903110948261917640BBDOPt2p)
译文:函数“self_intent_recognition_0”的 schema 无效:None 不是“array”类型。(请求ID: 20250903110948261917640BBDOPt2p)

2.原因分析


  • 根本原因:函数self_intent_recognition_0的参数 schema 中某字段要求为array类型,但实际传入了None

  • 发生位置:LLM 调用该函数进行意图识别时,参数校验失败(上下文是 agent 重试 LLM 聊天请求)。
  • 3. 解决方案


    # 修复后的函数 Schema 示例(OpenAI Function Calling 格式)
    functions = [
        {
            "name": "self_intent_recognition_0",
            "description": "自意图识别函数",
            "parameters": {
                "type": "object",
                "properties": {
                    # 假设问题字段为"candidate_intents"(需为 array 类型)
                    "candidate_intents": {
                        "type": "array",
                        "items": {"type": "string"},
                        "default": []  # 用空数组替代 None 作为默认值
                    }
                },
                "required": []  # 根据业务逻辑调整必填项
            }
        }
    ]
    
    # 修复后的调用示例(传参用空数组代替 None)
    import json
    response = openai.ChatCompletion.create(
        model="gpt-3.5-turbo",
        messages=[{"role": "user", "content": "测试"}],
        functions=functions,
        function_call={
            "name": "self_intent_recognition_0",
            "arguments": json.dumps({"candidate_intents": []})  # 避免传 None
        }
    )
    

    4. 预防措施


  • 最佳实践1:定义 function schema 时,对array类型字段设置default: [](空数组),禁止None传入。

  • 最佳实践2:调用前用 [jsonschema 库](https://pypi.org/project/jsonschema/) 验证参数是否符合 schema,提前拦截错误。

  • 推荐工具:使用 OpenAI 官方的 [Function Calling 调试工具](https://platform.openai.com/docs/guides/functions) 或 Postman 模拟请求。