Dify 1.6.0 重磅上线:原生MCP 双向集成、结构化输出升级!

昨天dify又又升级了,这次升级有一个我非常关注的功能MCP。在之前的dify X mcp系列中Dify × MCP 实战(一):用插件一分钟搞定MCP Server(含时间踩坑实践),使用mcp的时候,是通过三方插件扩展支持的,官方并没有直接支持,使用的时候,就有点不太聪明的意思。

升级内容


mcp主要功能为:

  • 🔍 调用 MCP 服务,将在线mcp的http服务以工具形式接入你的 Agent 或 Workflow。
    • 在 Agent 中:当 LLM 运行时,自动选择合适的 MCP 操作。
    • 在 Workflow 中:将 MCP 调用精确放置在需要的位置,实现确定性执行。
  • 😄 发布 MCP 服务
    • 将自己的 Dify Agent / Workflow 发布为标准 MCP 服务,让任何兼容 MCP 的客户端都能搜寻并即时调用它。

升级


对于使用docker部署的同学,从上一个版本1.5.1直接修改下上面三个镜像的版本即可。
补充一点由于添加了mcp发布服务,nginx多了一条location 需要添加到default.conf.template

location / {  
  proxy_pass http://web:3000;  
  include proxy.conf;  
} 
# 在web下面添加,否则无法访问到发布的mcp服务
location /mcp {  
  proxy_pass http://api:5001;  
  include proxy.conf;  
}
# 拉取镜像
docker compose pull
# 销毁原实例
docker compose down
# 启动
docker compose up -d 


升级以后。

dify 原生mcp

mcp工具


官方说的很清楚了,mcp作为工具。

  • 1点击工具
  • 2点击MCP
  • 3点击添加MCP
  • dify 目前只支持http 形式的mcp
  • 我把之前dify x mcp 示例中的运维mcp服务配置进去

    配置完成以后,点击在右侧可以看到包含的工具(目前只支持工具,不支持提示词,提示词得自己在流程中写),可以删除,也可以更新工具。

    我们也可以通过魔搭配置高德的mcp服务。

使用


在原来的工作流中,使用第三方扩展的ReAct支持的mcp是通过在3位置配置的mcp服务来识别的。通过2添加工具,我们看到MCP类型的工具,已经出现刚配置的两个mcp服务,但是没法选择。

  • 1ReAct切换到官方的
  • 2 点击添加工具
  • 3点击MCP,这个时候,可以看到自己配置的mcp可以使用了

    添加以后可以看到出现了对应的工具。

    直接运行agent节点,可以看到带了一堆工具。

ps :dify 1.5的永久性缓存功能,对于调试工作流来说真的太方便了。 感兴趣的可以看Dify 1.5.0 上线:这次调试功能,真的省了我一半时间


点击运行,直接根据工具获取的数据自己出了报表。数据非常准确。

我把提示词放进去,非常nice。

按需定制 MCP 工具


对于已经集成进来的工具,点击1

  • 2的位置,我们可以调整工具描述,让它更贴合业务场景,替换原mcp的说明
  • 3的位置,我们可以配置参数的模式
    • 自动(Auto): 让LLM根据上下文只能决定该参数值
    • 固定值 :可以引入变量或者设置默认值,见下图

  • 第一个箭头是引入外部变量
  • 第二个箭头是自己填写具体的值

发布MCP服务

这个功能藏的优点深,刚开始一下子还没有找到。

点击应用左上角。

点击箭头方向,以启用mcp服务。

填写mcp描述

需要注意的是,

  • 生成的链接地址,需要自己手动改下
  • 生成的mcp服务是一个单工具的mcp服务

看到这里的链接,这次docker升级只改版本号是不行的,需要添加对应的转发规则。

可以看到更新的内容多了一个mcp的location,需要添加进去,否则无法访问

后记

需要注意的是

  • dify的官方对接MCP服务,不是让LLM从MCP提供的工具列表里找工具,而是让LLM从自己定义的工具列表里找工具,好处是更精准,坏处是,要用哪个工具我们得提前知道,缺少了一点点智能
  • 通过参数定制,可以解决让人头疼的时间问题,就比如之前掰不过来的时间,我们完全,可以通过程序输入透传进来。
  • 以前通过MCP Server插件将mcp服务从插件服务发布了出去,本次更新以后,直接从api里发布了出去

系列文章

uv配置环境

dify应用

DeepSeek+dify 本地知识库:真的太香了
Deepseek+Dify本地知识库相关问题汇总
dify的sandbox机制,安全隔离限制
DeepSeek+dify 本地知识库:高级应用Agent+工作流
DeepSeek+dify知识库,查询数据库的两种方式(api+直连)
DeepSeek+dify 工作流应用,自然语言查询数据库信息并展示
聊聊dify权限验证的三种方案及实现
dify1.0.0版本升级及新功能预览
Dify 1.1.0史诗级更新!新增"灵魂功能"元数据,实测竟藏致命Bug?手把手教你避坑
【避坑血泪史】80次调试!我用Dify爬虫搭建个人知识库全记录
手撕Dify1.x插件报错!从配置到网络到Pip镜像,一条龙排雷实录
dify1.2.0升级,全新循环节点优化,长文写作案例
dify1.x无网环境安装插件
dify应用:另类的关键词检索
Dify 1.5.0 上线:这次调试功能,真的省了我一半时间
Dify × MCP 实战(一):用插件一分钟搞定MCP Server(含时间踩坑实践)
Dify × MCP 实战(二):发布工作流为 AI 工具服务,全流程配置 + Cherry 调用实战
# Dify × MCP 实战(三):结果别再堆字了!用 AntV 插件打造图表可视化工具
Dify插件实战

dify源码

dify项目结构说明与win11本地部署
Dify 深度拆解(二):后端架构设计与启动流程全景图
10分钟搞定企业级登录!Dify无缝集成LDAP实战指南
一文吃透Dify账户系统:多租户 + 多登录方式 + 权限模型全揭底

ragflow相关

DeepSeek+ragflow构建企业知识库:突然觉的dify不香了(1)
DeepSeek+ragflow构建企业知识库之工作流,突然觉的dify又香了
DeepSeek+ragflow构建企业知识库:高级应用篇,越折腾越觉得ragflow好玩
RAGFlow爬虫组件使用及ragflow vs dify 组件设计对比
从8550秒到608秒!RAGFlow最新版本让知识图谱生成效率狂飙,终于不用通宵等结果了
以为发现的ragflow的宝藏接口,其实是一个天坑、Chrome/Selenium版本地狱
NLTK三重降噪内幕!RAGFlow检索强悍竟是靠这三板斧
从代码逆向RAGFlow架构:藏在18张表里的AI知识库设计哲学
解剖RAGFlow!全网最硬核源码架构解析
深度拆解RAGFlow分片引擎!3大阶段+视觉增强,全网最硬核架构解析
深度拆解RAGFlow分片引擎之切片实现
RAGFlow核心引擎DeepDoc之PDF解析大起底:黑客级PDF解析术与致命漏洞
RAGFlow 0.18.0 实战解读:从 MCP 支持到插件配置的全流程揭秘
ragflow 0.19.0 图文混排功能支持

mcp

上线3周:告警减少70%!AI巡检分级报告实战(一)
MCP不像想象的那么简单,MCP+数据库,rag之外的另一种解决方案
上线3周:告警减少85%!纯AI驱动巡检通知实战(二)无硬编码方案曝光

### Dify 结构化输出功能的使用方法与示例 Dify 1.3.0 版本引入了结构化输出支持,使语言模型能够返回易于处理的组织化数据[^3]。以下是关于如何使用 Dify结构化输出功能的具体方法和示例。 #### 1. 配置结构化输出 Schema 在使用 Dify结构化输出功能时,首先需要定义一个 JSON Schema,用于描述输出数据的结构。例如,以下是一个简单的 Schema 示例,用于控制模型输出的情绪类型: ```json { "type": "object", "properties": { "mood_type": { "type": "string", "enum": ["积极", "消极"] } }, "required": ["mood_type"] } ``` 此 Schema 定义了一个对象,其中包含一个名为 `mood_type` 的字段,该字段可以是“积极”或“消极”[^1]。 #### 2. 初始化模型与分词器 接下来,需要初始化模型和分词器以生成结构化输出。以下是一个 Python 示例代码,展示如何加载模型并生成回答: ```python import json from transformers import AutoModelForCausalLM, AutoTokenizer from datetime import datetime # 初始化模型和分词器 model_name = "your-model-name" tokenizer = AutoTokenizer.from_pretrained(model_name) model = AutoModelForCausalLM.from_pretrained(model_name) # 输入问题 input_text = "如何提高大模型的推理能力?" prompt = f"问题:{input_text}\n\n回答:" # 生成回答 inputs = tokenizer(prompt, return_tensors="pt") output = model.generate(**inputs, max_length=100) generated_text = tokenizer.decode(output[0], skip_special_tokens=True) # 将生成的内容转换为结构化格式 structured_output = { "问题": input_text, "回答": generated_text, "时间戳": str(datetime.now()) } # 将结构化输出保存为JSON文件 with open("output.json", "w", encoding="utf-8") as f: json.dump(structured_output, f, ensure_ascii=False, indent=4) print("生成的结构化输出已保存到 output.json 文件中。") ``` 上述代码展示了如何将生成的回答保存为 JSON 文件,便于后续处理[^2]。 #### 3. 使用 HTML 模板实现结构化输出 除了直接生成 JSON 格式的结构化输出外,还可以通过 HTML 模板进一步增强输出的表现力。例如,可以设计一个 HTML 页面,动态展示生成的结果。这一步骤可以根据具体需求进行定制[^2]。 #### 4.Dify 中启用结构化输出Dify 平台中启用结构化输出功能时,开发者可以通过前端界面配置 Schema,并确保后端逻辑正确解析模型的输出。以下是一个简化的步骤说明: - 在 LLM 节点中启用结构化输出支持。 - 定义 JSON Schema 来约束输出格式。 - 测试生成的结果是否符合预期。 这些操作由 @Nov1c444 和 @iamjoel 在相关 PR 中完成,确保开发者体验流畅且功能强大。 #### 5. 实际应用场景示例 假设需要生成一张图片并结合文字描述,可以参考以下流程: - 编写提示词(Prompt),例如“生成一只狗的图像”。 - 在 Marketplace 中查找相关插件,如 Stability AI 插件。 - 安装插件后,在工具栏中调用该插件。 - 授权 API Key 后开始生成内容。 - 最终结果可以通过结构化输出保存为 JSON 或其他格式[^4]。 ```json { "image_url": "https://example.com/generated_dog_image.png", "description": "这是一只金毛犬,看起来非常友好。", "timestamp": "2023-10-10T12:00:00Z" } ``` #### 总结 通过定义 Schema、初始化模型、生成结构化输出以及应用 HTML 模板,Dify结构化输出功能可以帮助开发者更高效地处理复杂任务。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值