前言 说一下目前使用 dify 引擎搭建工作流的时候遇到的问题:把工作流打包成工具(workflow_tool)之后,工作流工具不能流式输出。这次修改的目的就是是其能够流式输出,优化体验。 改造前的问题 先讲一下目前的需求:现在我们小组主要负责的是搭建烟草领域的问数智能体,相关数据又分为销量数据、零售户数据、品牌品规数据等领域,由于每个部分的计算规则不一样,一开始想着把所有计算规则都塞到...
根据前面两小节的认识,可以发现 dify 的处理流程大概是这样的: 1234567891011121314151617181920212223workflowAppRunner.run() -> workflow_entry.run() -> GraphEngine.run() { if 流程类型 is CHAT: 使用Answer...
在上一小节简单解析了一下 dify 工作流引擎处理过程中WorkflowAppRunner -> WorkflowEntry -> GraphEngine 这几层的处理过程。然后上一节说到 WorkflowAppRunner 会先根据配置文件解析出工作流的图数据结构,用以后续的执行,这一小节就详细介绍一下这个部分。我们重点讲Graph.init 这个部分,然后由于这个部分比较复杂...
注:当前研究的 dify 版本为 0.19.1 正好最近和小组长一起在尝试修改 dify 的后台代码,希望可以将“工作流工具”改成流式输出的格式,不过任何事都得一步步来,这两天先看了一下 dify 里最核心的部分:GraphEngine,正好记录一下阅读完源码之后的一点理解。 1. 简单梳理 Workflow 部分源码结构 按照 dify 的 Readme 文件将后端服务跑起来之后,我...
%% ~~好久没写博客了,自从上月去导师公司体验早九晚五的工作生活之后,每天回来就想开躺,Obsidian都懒得开了(在此为我的懒惰道歉😭)。 不过总体说来,这一个月在项目架构、打包部署方面收获还是挺多,之前干的活基本都是堆屎造梦,当发生改动的时候很可能要修改很多东西,甚至是要重写。这一个月以来主要是对之前项目进行解耦,提前约定好各个模块的输入和输出格式,每个人可以先做自己的模块,然后我再...
线段树是一种高级数据结构,我自己刷题用这种数据结构已经很多次了,可是一旦过段时间不刷就容易忘记这个结构,因此这里做下笔记,忘记的时候方便自己回忆。 1.基础结构 线段树基础信息 OI 官网介绍:线段树介绍_OI 简单来说,线段树可以在的时间内批量修改和查询区间的值,但批量操作需要有合并性,比如批量相加,乘除,最大最小值等。其空间复杂度为,准确来说是,4 这个数字取自实践尝试所得。OI ...
1、Git init (在本地工程目录下),生成.git 文件夹 1Git init 2、上传修改的文件 1git add * (*可替换成具体要上传的文件名,*表示提交所有有变化的文件) 3、添加上传文件的描述 1git commit -m "test" (”test“为分支名) 4、(创建分支) 1git branch test 5、(切换分支) 1git checkout ...
之前刷了很长时间的 lc,在 lc 平台比较好的一点是只需要编写方法的片段,不需要编写整段代码。只是长时间刷 lc 有点枯燥,lc 的标签感觉分类不是特别准,还有长时间不写输入输出我都已经快忘记基础代码怎么写了 😂。所以今年开始我改在洛谷刷题了,也算换换口味嘛。 只是在提交了几题之后发现有点不对劲,有的题目我编写的算法时间复杂度和空间复杂度理应都是没有问题的,但是一提交就会内存超限?!!前...
这周假期刚过,回到工位的我一打开 VSCode,奇怪的发现 VSCode 终端多出了一行警告信息: ‘chcp’ is not recognized as an internal or external command, operable program or batch file 看到这个警告信息我感觉不对啊,用了近三年的 VSCode 了,终端从来没有弹出过这个警告,怎么会连chcp...
基于多媒体的推荐(MMRec)利用多模态内容(图像、文字描述等)作为历史交互的辅助信息来确定用户偏好。 大多数 MMRec 方法通过利用大量用户互动项目的多模态内容来预测用户兴趣,而忽略了用户未互动项目的多模态内容的潜在影响。现有的 MMRec 方案虽然可以捕捉到多模态内容中尽可能多的特征,但是往往忽略了这些特征中与用户偏好无关的部分。这些无关特征的混入不仅对预测用户偏好没有实际作用,反而还...