当前位置: 首页 > news >正文

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.4
    restart: always
    environment:
    ......

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

 

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

相关文章:

  • 用selenium+ChromeDriver豆瓣电影 肖申克的救赎 短评爬取(pycharm 爬虫)
  • 基于CNN-LSTM联合网络的主瓣干扰辨识
  • 三个HTTP请求参数注解@RequestHeader、@RequestParam和@RequestBody的使用对比
  • 神聖的綫性代數速成例題21. 酉空間的基本概念、酉變換與酉矩陣的性質及應用、矩陣的奇異值分解及其應用
  • Eclipse Debug 调试
  • 【C++】STL库_list 的模拟实现
  • 三个print优雅打印datetime模块的“时间密码”
  • 笔试专题(二)
  • Rust函数、条件语句、循环
  • 动态查找表
  • 1.2 编译器结构
  • 把 ASP.NET Core 服务(BigDogServer)部署到 Linux 并作为服务运行
  • 一文读懂 GPT 与 BERT:预训练逻辑及差异剖析
  • 缓存过期时间之逻辑过期
  • 蓝桥备赛(25)算法篇【差分】
  • word文件转换为Markdown格式
  • 关于极端场景下,数据库更新与 MQ 消息一致性保障方案的详细总结
  • Qt信号与槽高级特性与项目实战:原理剖析与工程化应用指南
  • 20250330 Pyflink with Paimon
  • rocky linux下载软件
  • 杭州一季度GDP为5715亿元,同比增长5.2%
  • 国家发改委:是否进口美国饲料粮、油料不会影响我国粮食供应
  • 人社部:将会同更多部门分行业、分领域制定专项培训计划
  • 上海市政府常务会议研究抓好稳就业稳企业稳市场稳预期工作,让企业感受温度
  • 文旅部:推动离境退税购物便利化有利于更多国内优质商品走出去
  • 传染病防治法修订草案:拟加强医疗机构疾病预防控制能力建设