type
Post
status
Published
date
Sep 7, 2025
slug
summary
tags
category
icon
password
当我在dify中分别使用不同的模型:deepseek-reasoner与qwen3-max接入同样的12306-mcp与flight-mcp时,分别发现了以下问题: 1.使用deepseek-reasoner模型时,调用mcp工具一直报400并提示reason_content字段缺失 2.使用qwen3-max时,调用mcp一直虚构mcp工具名
由此发现了两个模型机制上的不同。
 
注意:在使用模搭社区的mcp时,将所给的配置字段“type”务必在dify中改为transport

📝 主要问题

deepseek-reasoner

使用deepseek-reasoner模型时,调用mcp工具一直报400并提示reason_content字段缺失

🧐 错误原因解析

根据错误信息,问题出在API请求中“助理消息”的第二个位置缺少了必需的 reasoning_content 字段。
这个错误的典型场景是: 当在Dify中配置的 DeepSeek模型启用了“思维模式”,并且该模型尝试调用一个工具(比如你的12306 MCP)时,API要求模型在返回的工具调用消息中必须包含 reasoning_content 来展示其推理过程。如果请求中没有包含这个字段,就会返回这个400错误。

🔍 问题根源:模型机制与Dify的兼容性

Dify在构建API请求时,很可能遵循了标准OpenAI格式,默认没有为模型在工具调用过程中返回的“助手消息”包含 reasoning_content 字段。而启用了思考模式的DeepSeek模型,API会强制要求并期待在特定的消息位置看到这个字段,否则就会报错。
简单来说,这是模型特性(必须输出推理内容)与平台默认的请求格式(未包含该字段)之间的不匹配。
解决办法:可以使用deepseek-chat或者切换别的模型

qwen3-max

使用qwen3-max时,调用mcp一直虚构mcp工具名
Qwen3 直接尝试调用用户请求中提到的工具,它假设这个工具存在于MCP服务中,当工具不存在时,MCP服务器直接返回错误。这是因为qwen3-max采用了更激进的策略。

在Dify中的优化方法:

  1. 提示词工程优化
      • 在系统提示词中明确要求"先列出可用工具"
        • 添加工具调用策略的指导
    1. 工作流设计
        • 可以设计一个预检查步骤
        • 或者使用Dify的条件分支来处理工具不存在的情况
    deepseek与qwen在策略上的差异Docker支持GPU
    Loading...