Dify 0.15.3 输入变量无法被重新赋值问题-解决方法

目录

一、问题描述

 二、解决方法

2.1 原因

2.2 修改源码

2.3 重新打包 dify-api 镜像

2.4 修改 docker-compose.yaml 文件

2.5 重启启动镜像


一、问题描述

Dify 0.15.3 是一个比较稳定的版本,Dify 1.0 是一个大版本更新,目前还有很多 Bug。但是,Dify 0.15.3 在【开始】组件中存在一个Bug,即:同一个对话中,输入变量无法被重新赋值。

如上所示,val 变量值在同一会话中多次从 inputs 字段传入参数赋值时,val 一直是最初的值,不会变化。

 二、解决方法

2.1 原因

这是因为在 Dify 0.15.3 源码中,处理逻辑是:如果会话存在,则不解析输入参数,只有第一次会话时解析会话参数,原代码如下所示。

conversation_id=conversation.id if conversation else None,
inputs=conversation.inputs
if conversation                 # 旧会话不解析输入参数
else self._prepare_user_inputs( # 新会话解析输入参数user_inputs=inputs, variables=app_config.variables, tenant_id=app_model.tenant_id
),
query=query,

 

2.2 修改源码

分别修改api/core/app/apps/advanced_chat/app_generator.py、api/core/app/apps/agent_chat/app_generator.py、api/core/app/apps/chat/app_generator.py 的代码,如下所示。

2.3 重新打包 dify-api 镜像

修改代码后,使用 api/Dockerfile 文件重新打包 api 镜像,执行如下命令。

docker build -t dify-api:0.15.4 .

 

2.4 修改 docker-compose.yaml 文件

如果 Dify 还在运行中,执行如下命令停止,如下所示。

PS E:\code\code\dify-0.15.3\docker> docker compose down
[+] Running 11/11✔ Container docker-sandbox-1         Removed                                                                                                  0.8s✔ Container docker-weaviate-1        Removed                                                                                                  0.5s✔ Container docker-nginx-1           Removed                                                                                                 10.8s✔ Container docker-worker-1          Removed                                                                                                  5.2s✔ Container docker-ssrf_proxy-1      Removed                                                                                                 11.0s✔ Container docker-web-1             Removed                                                                                                 10.4s✔ Container docker-api-1             Removed                                                                                                  4.2s✔ Container docker-db-1              Removed                                                                                                  0.8s✔ Container docker-redis-1           Removed                                                                                                  0.7s✔ Network docker_ssrf_proxy_network  Removed                                                                                                  0.4s✔ Network docker_default             Removed                                                                                                  0.2s
PS E:\code\code\dify-0.15.3\docker>

修改 docker/docker-compose.yaml 中使用的 docker 镜像,修改 api 和 worker 使用的镜像为 dify-api:0.15.4,如下所示。

api:image: langgenius/dify-api:0.15.4 # 修改为 0.15.4restart: alwaysenvironment:......# worker service# The Celery worker for processing the queue.
worker:image: langgenius/dify-api:0.15.4   # 修改为 0.15.4restart: alwaysenvironment:......

 

2.5 重启启动镜像

执行如下命令重启 Dify。

PS E:\code\code\dify-0.15.3\docker> docker compose up -d
[+] Running 11/11✔ Network docker_ssrf_proxy_network  Created                                                                                                  0.0s✔ Network docker_default             Created                                                                                                  0.0s✔ Container docker-db-1              Started                                                                                                  1.1s✔ Container docker-ssrf_proxy-1      Started                                                                                                  2.0s✔ Container docker-sandbox-1         Started                                                                                                  1.7s✔ Container docker-web-1             Started                                                                                                  1.5s✔ Container docker-redis-1           Started                                                                                                  1.8s✔ Container docker-weaviate-1        Started                                                                                                  1.7s✔ Container docker-worker-1          Started                                                                                                  2.8s✔ Container docker-api-1             Started                                                                                                  2.8s✔ Container docker-nginx-1           Started                                                                                                  3.2s
PS E:\code\code\dify-0.15.3\docker>

执行完以上修改后,开始组件中的变量就可以重新赋值了。

参考链接:

Ensure the 'inputs' field in /chat-messages takes effect every time by Wu-Jiayang · Pull Request #7955 · langgenius/dify · GitHub

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/898789.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

SQL Server查询计划操作符(7.3)——查询计划相关操作符(11)

7.3. 查询计划相关操作符 98)Table Scan:该操作符从查询计划参数列确定的表中获取所有数据行。如果其参数列中出现WHERE:()谓词,则只返回满足该谓词的数据行。该操作符为逻辑操作符和物理操作符。该操作符具体如图7.3-98节点1所示。 图 7.3-…

数据库练习2

目录 1.向heros表中新增一列信息,添加一些约束,并尝试查询一些信息 2.课堂代码练习 插入语句 INSERT INTO 删除语句DELETE和TRUNCATE 更新语句UPDATE和replace 查询语句SELECT 条件查询 select语句中的特殊情况 ​​​查询排序 order by 分组查询…

Java架构师成长之路

概述 本教程主要从6个方面,全面讲解Java技术栈的知识。 1.性能调优 深入理解MySQL底层原理、索引逻辑,数据结构与算法。使用Explain进行优化分析MVCC原理剖析日志机制解析 2.框架源码 掌握Spring底层原理带你手写一个Spring解析IOC、AOP源码、以及事…

资金管理策略思路

详细描述了完整交易策略的实现细节,主要包括输入参数、变量定义、趋势判断、入场与出场条件、止损与止盈设置等多个方面。 输入参数(Input): EntryFrL (.6):多头入场的前一日波动范围的倍数。 EntryFrS (.3)&#xff1…

k8s--集群内的pod调用集群外的服务

关于如何让同一个局域网内的Kubernetes服务的Pod访问同一局域网中的电脑上的服务。 可能的解决方案包括使用ClusterIP、NodePort、Headless Service、HostNetwork、ExternalIPs,或者直接使用Pod网络。每种方法都有不同的适用场景,需要逐一分析。 例如&…

数据模型,数据建模,组件,核心价值,使用,意义

数据模型 一组由符号,文本组成的集合, 用以准确表达信息景观, 达到有效交流,沟通的目的 数据建模 是发现,分析和确定数据需求的过程,是一种称为数据模型的精确形式表示和传递这些需求 数据模型的组件 实体, 关系, 属性和域 数据模型的核心价值 交流性 精确性 数据模型的…

【QA】外观模式在Qt中有哪些应用?

1. QWidget及其布局管理系统 外观模式体现 QWidget 是Qt中所有用户界面对象的基类,而布局管理系统(如 QVBoxLayout、QHBoxLayout、QGridLayout 等)就像是一个外观类。客户端代码(开发者编写的界面代码)通常不需要直接…

解锁云原生后端开发新姿势:腾讯云大模型API实战攻略

目录 云原生后端与大模型融合的开篇之章​ 探秘云原生后端开发​ 云原生后端是什么​ 云原生后端架构核心要素​ 微服务架构​ 容器化技术​ 服务发现与配置管理​ Kubernetes 编排​ 走进腾讯云大模型知识引擎​ 引擎独特功能与优势​ DeepSeek - R1、V3 两款模型 …

AWS NoSQL解决方案全景图

(技术架构对比表) 服务名称数据模型协议兼容性核心架构特性适用场景DynamoDB键值/文档原生API分布式SSD、自动分片高并发事务处理DocumentDB文档型MongoDB 4.0存储计算分离、6副本日志体系JSON数据聚合分析MemoryDB键值流数据Redis 6.2多AZ持久化、微秒…

【拒绝算法PUA】LeetCode 2116. 判断一个括号字符串是否有效

目录 系列文章目录 专题总结: C刷题技巧总结: 题目 2116. 判断一个括号字符串是否有效 难度 描述 解题方法1 系列文章目录 专题总结: 【拒绝算法PUA】0x00-位运算【拒绝算法PUA】0x01- 区间比较技巧【拒绝算法PUA】0x02- 区间合并技…

常见中间件漏洞攻略-Tomcat篇

一、 CVE-2017-12615-Tomcat put方法任意文件写入漏洞 第一步:开启靶场 第二步:在首页抓取数据包,并发送到重放器 第三步:先上传尝试一个1.txt进行测试 第四步:上传后门程序 第五步:使用哥斯拉连接 二、后…

《精益创业》第十三章《尾声:杜绝浪费》总结

核心思想: “杜绝浪费”是精益创业的终极目标与核心理念,其本质是通过系统性识别并消除一切不创造用户价值的活动,将有限资源聚焦于真正驱动增长的“价值流”。浪费不仅指物质损耗,更包括时间、人力与机会成本的隐性流失。 一、精…

【nodejs】爬虫路漫漫,关于nodejs的基操

一.下载安装nodejs 官网地址:Node.js — 在任何地方运行 JavaScript 二.下载安装vscode代码编辑器 官网地址:Download Visual Studio Code - Mac, Linux, Windows 三.修改本地脚本策略 1,windowsi 打开电脑设置 2,输入powersh…

图论 | 岛屿数量(深搜,广搜)

岛屿数量 acm模式&#xff1a;99.岛屿数量 核心代码模式&#xff1a; 200. 岛屿数量 思路 遍历grid&#xff0c;如果它是1&#xff0c;则通过bfs/dfs将这个小岛的grid变为0 dfs def dfs(grid,i,j):if i<0 or j<0 or i>len(grid) or j>len(grid[0]):returnif g…

CSS 文档流:元素排列的底层逻辑与布局控制

CSS 文档流:元素排列的底层逻辑与布局控制 一、文档流的核心概念 文档流(Normal Flow)作为浏览器默认的布局模式,从根本上决定了元素在页面上的自然排列顺序。**它的核心规则遵循从上到下依次堆叠的原则,其中块级元素会独占一行,行内元素则水平排列。**这种布局模式与书…

el-table表格toggleRowSelection方法选中无效

开发中会有对表格中进行默认选中的功能&#xff0c;element-plus官方有一个选中示例&#xff0c;如下 const toggleSelection (rows?: User[]) > {if (rows) {rows.forEach((row) > {multipleTableRef.value!.toggleRowSelection(row, undefined)})} else {multipleTa…

Java EE(16)——网络原理——TCP协议解析二

4.滑动窗口(效率机制) 上篇博客讲到的确认应答/超时重传/连接管理都是安全机制&#xff0c;但也会降低传输效率。滑动窗口就是在保证可靠传输的基础上&#xff0c;尽可能地提高传输效率。 根据确认应答机制&#xff0c;客户端每发送一个请求都需要收到服务器的确认应答报文后才…

从入门到精通【MySQL】 CRUD

文章目录 &#x1f4d5;1. Create 新增✏️1.1 单行数据全列插入✏️1.2 单行数据指定列插入✏️1.3 多行数据指定列插入 &#x1f4d5;2. Retrieve 检索✏️2.1 全列查询✏️2.2 指定列查询✏️2.3 查询字段为表达式✏️2.4 为查询结果指定别名✏️2.5 结果去重查询 &#x1f…

C++学习之云盘上传文件列表下载

1.上传打开文件操作 1. 注册 客户端 成功 {"code":"002"} 该用户已存在 {"code":"003"} 失败 {"code":"004"} 服务器 2. 登录 客户端 服务器 // url http: //127.0.0.1:80/reg // post 数据格式 …

OpenCV图像拼接(5)用于计算一组图像的特征点和描述符的函数computeImageFeatures()

操作系统&#xff1a;ubuntu22.04 OpenCV版本&#xff1a;OpenCV4.9 IDE:Visual Studio Code 编程语言&#xff1a;C11 算法描述 cv::detail::computeImageFeatures 是 OpenCV 中用于计算一组图像的特征点和描述符的函数&#xff0c;通常在图像拼接或类似的任务中使用。这个函…