问题描述
简单应用调用 AI 正常;高级编排中的 AI 节点调用模型时报错:
Error code: 422
{'error': 'Request param content len should not be 0', 'error_type': 'Input Validation Error'}
环境:模型接入昇腾 MindIE(OpenAI 兼容接口)时复现。该服务会校验请求里除 tool 角色外的所有 message,content 不能为空字符串。
复现步骤
- 创建高级编排应用,添加 AI 节点,不填写"角色设定"(system)(默认值为空字符串
"")。
- 发布应用并对话。
- 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
问题描述
简单应用调用 AI 正常;高级编排中的 AI 节点调用模型时报错:
环境:模型接入昇腾 MindIE(OpenAI 兼容接口)时复现。该服务会校验请求里除 tool 角色外的所有 message,content 不能为空字符串。
复现步骤
"")。原因分析
AI 节点
execute中无条件执行:位置:
apps/application/flow/step_node/ai_chat_step_node/impl/base_chat_node.py"",因此实际会向模型发送{"role": "system", "content": ""},MindIE 校验content len should not be 0直接拒绝。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 消息进入工具模式请求。