Skip to content

高级编排 AI 节点"角色设定"为空时调用模型报 422 Request param content len should not be 0 #6662

Description

@shenkaibo

问题描述

简单应用调用 AI 正常;高级编排中的 AI 节点调用模型时报错:

Error code: 422
{'error': 'Request param content len should not be 0', 'error_type': 'Input Validation Error'}

环境:模型接入昇腾 MindIE(OpenAI 兼容接口)时复现。该服务会校验请求里除 tool 角色外的所有 message,content 不能为空字符串。

复现步骤

  1. 创建高级编排应用,添加 AI 节点,不填写"角色设定"(system)(默认值为空字符串 "")。
  2. 发布应用并对话。
  3. AI 节点请求模型时返回 422,简单应用同模型不发错。

原因分析

AI 节点 execute 中无条件执行:

message_list = [SystemMessage(system)] + message_list

位置:apps/application/flow/step_node/ai_chat_step_node/impl/base_chat_node.py

  • 默认新建的 AI 节点"角色设定"是空串 "",因此实际会向模型发送 {"role": "system", "content": ""},MindIE 校验 content len should not be 0 直接拒绝。
  • 简单应用只会在 system 非空时拼 SystemMessage(见 apps/application/chat_pipeline/step/generate_human_message_step/impl/base_generate_human_message_step.py),所以不报错。
  • 同仓库的 question_node / intent_node / image_understand_step_node / video_understand_step_node 均已做"system 非空才添加"的守卫,只有 AI 对话节点漏掉。

建议修复

与其它节点保持一致:system 为空时不再发送 SystemMessage;同时在 MCP/Agent 分支(mcp_response_generator -> create_deep_agent)传参时,system 为空则传 None,避免空 system 消息进入工具模式请求。

system = self.workflow_manage.generate_prompt(system) if system else (system or "")
...
chat_model,
SystemMessage(system) if system else None,
...
message_list = ([SystemMessage(system)] + message_list) if system else message_list

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions