【GPT】Coze使用开放平台接口-【6】Dify 也来一遍

news/2024/9/19 22:48:06/ 标签: gpt, coze, dify, 开放平台, 工作流

前面讲了 coze 的相关用法,这边想着用 Dify 也来一遍,刚开始的时候接触的是 Dify,后面才是 coze。Dify 和 coze 的侧重点不同,我个人是更倾向用 Dify 构建工作流就可以了,coze 还是相对全能。

本节用 Dify 也会创建插件,工具,工作流,API 调用,机器人就不在这边描述了(个人感觉不是很好用)


1. 创建工具

Dify 创建工具的方式只有通过 OpenAPI-Swagger 的 json 数据,方式是可以直接贴,或者 URL 导入,但是没有其他办法。

所以,就需要自己生成 OpenApi-Swagger 啦,还不支持 swagger 2.0。本身用的代码 web 框架还是 Gin,这点有点难受,有需求的可以看这篇 【Go】Swagger v2 转 OpenApi v3 CLI - swag2op。

所有接口的调整,也都只能在这个 Schema 里面修改,导入成功后,就只能有对应的子工具了。

有留意之前 coze 创建插件那一篇的朋友,应该感受到一个很大的区别,不过这个区别不在这边讲,见下一篇,或者见下面内容。

在这里插入图片描述

2. 创建工作流

创建的步骤就不赘述了,直接看进入工作流后的面板,这边我们用短语音识别来作为例子。

所有工作流的编排,测试,API,请求日志(这个是通过API接口调的),分析,都在一个页面。

在这里插入图片描述

画布上一开始也只有一个节点,开始节点,这意味着可以有多个结束节点。注意,每个节点有且仅有一个子节点

创建下一个节点的方式,只有在节点左右 2 侧的添加按钮(开始节点只有右侧有,结束节点就只有左侧有)。这样子的方式也挺直觉的,下一个节点要做什么,就在右侧显而易见。

2.1. 开始节点

开始节点的参数,只有 4 种:

  • 文本:如果最大长度不设置,就是无限
  • 段落:如果最大长度不设置,就是无限
  • 下拉选项
  • 数字

不设置是指,删除掉,而不是写 0

相对来说是比较少一点的,而且比较固定。

在这里插入图片描述

2.2. 工具节点

点击开始节点右侧创建按钮,选择到自定义工具,找到刚才创建的工具,点击即可。

在这里插入图片描述

点击后,会自动弹出这个节点的编辑页面,可能你要输入参数什么的,就会让你直接编辑。

选择参数的办法是通过 / 就会出来可以选择的参数,选择的参数也是在当前节点之前,以及开始节点的参数。

在这里插入图片描述

按照第二篇的方式,调用完授权接口,就要调实际的 AI 能力接口,同样的方法加入短语音识别的节点。这时候要配置 Authorization 变量,发现只有授权节点的一个 text 输出变量。而这个 text 其实是,auth 接口返回的整个 json 结构体,而不是 Authorization。

在这里插入图片描述

这里其实很不方便,如果字段多一点的,就很麻烦。所以 Dify 的工作流可能更倾向于对话的工作流,而不是这种有很多返回变量。因此,我们就要在每个工具调用后,添加一个代码节点,转换出我们要的变量。

修改节点也不用删除节点,再添加,可以直接点击节点右上角有一个更改节点,就可以替换成代码执行节点。

注意,千万要想清楚你的整个流程,再去创建流程,没有 Ctrl + z 回退。如果你的这个节点配置好了所有参数,或者 LLM 节点配置了prompt,一替换就是全部消失(不要问我怎么知道的)。

在这里插入图片描述

2.3. 代码执行节点

代码执行节点,支持 python3 和 javaScript 代码。输入变量的赋值,就是上一个节点的 text,解析这个 json object ,然后把你需要的值返回出来。输出变量的名称要跟代码里面的一致,不然会一直报错,也不会告诉你因为变量不同。

在这里插入图片描述

这样子提取出来后,就可以复制给下一个工具节点

在这里插入图片描述

2.4 配置结束节点

假设我们配置好了短语音识别工具,再用代码提取出来 result 结果,这个结果就可以给 End 节点输出。

在这里插入图片描述

2.6. 整体

在这里插入图片描述

2.7. 大模型节点

这个工作流没有用到 LLM,但还是想提一下。Dify 的 LLM 节点就是可以配置自己的大模型,也可以在本地部署开源大模型,可以用到比较多的大模型。在 Agent中,用户最多可同时选用 4 个大型模型进行协同测试,这一设计使得 Dify 平台更倾向于为工作流程或 Agent 提供一个环境,让使用者能够集中精力于工作流程的精细打磨与优化。

在这里插入图片描述

2.8. 调试工作流

右上角点击运行就是调试页面,调试结果就是呈现在右侧的这么一小条里面,即使是点了展开,宽度也是一样。这样在对长的内容,其实不是很友好,不过每个节点的信息还是记得详细的。

在这里插入图片描述

3. API 调用

Dify 对工作流的所有功能都集中在一个页面,这样不用去别的地方找,编排下面就是访问 API。访问 API 页面右上角就是 API 密钥的管理,创建。接口文档也在同一个页面,这样子就很快可以让开发者去实现接口调用。前提一样,要发布这个工作流,也不用别人审批。

在这里插入图片描述

我们只列一下 Blocking 模式的接口

鉴权

API 密钥申请

请求地址

http://{IP跟每个人部署时候配置的 HOST 有关}/v1/workflows/run

Header
参数取值说明
AuthorizationBearer $Access_Token用于验证客户端身份的访问令牌,API 密钥
Content-Typeapplication/json解释请求正文的方式。
Body

inputs

类型:json object

是否可选:可选

说明:开始节点需要传入的参数

response_mode

类型:string

是否可选:必选

说明:

返回响应模式,支持

  • streaming 流式模式(推荐)。基于 SSE 实现类似打字机输出方式的流式返回。
  • blocking 阻塞模式,等待执行完毕后返回结果。(请求若流程较长可能会被中断)。

user

类型:string

是否可选:必选

说明:用户标识

响应字段
参数类型说明
workflow_run_idIntegerworkflow 执行 ID
task_idString任务 ID,用于请求跟踪和下方的停止响应接口
dataString工作流执行结果,通常为 JSON 序列化字符串,部分场景下可能返回非 JSON 结构的字符串。
- idStringworkflow 执行 ID
- workflow_idString关联 Workflow ID
- statusString执行状态, running / succeeded / failed / stopped
- outputsObject输出内容,响应字段里面的 outputs 就是 end 节点里面配置的结果。如果里面是 result,那 output 里面就是 {“result”:“xxxx”}。
- errorString错误原因
- elapsed_timeInteger耗时(s)
- total_tokensInteger总使用 tokens
- total_stepsInteger总步数(冗余),默认 0
- created_atInteger开始时间
- finished_atInteger结束时间
示例

在这里插入图片描述

4. API 日志

发布之后的所有调用日志都可以查到,用接口返回的日志 ID 搜索,就可以找到刚才调用的结果,详情及追踪,这个还是很好用的。

不过有一个不好的是,返回的 log id 和 task id 并不能用来做搜索,必须得自己在输入加一个 uuid,然后才能搜索出来。

在这里插入图片描述

总结

初步用下来,Dify 挺适合团队内部构建工作流使用的。虽然有一些体验上不是很好,但是适合创建大模型的一些中间应用。而且工作流创建完之后,有一个日志追踪的,省掉了再加一个监控的系统(当然是对测试的时候)。给到其他开发,还是给到产品,都可以快速地体验以及分析其中的问题。如果有些小的体验上做一些优化,那这个工作流的体验其实还是很不错的,尤其是在工具节点的优化上。
最后一篇呢,就列了一些我对比 coze 和 Dify 的一些体验上的不同,Coze使用开放平台接口-【7】Dify 比较篇。


上一篇:Coze使用开放平台接口-【5】API 调用


http://www.ppmy.cn/news/1520865.html

相关文章

MATLAB 计算凹凸多边形的面积(85)

MATLAB 计算凹凸多边形的面积(84) 一、算法介绍二、算法实现1.代码一、算法介绍 计算凹凸多边形的面积,并输出计算结果,可视化 二、算法实现 1.代码 % 设置多边形的顶点坐标 % 这里以一个五边形为例 x = [1, 3, 4

java宠物商城网站系统的设计与实现

springboot508基于Springboot宠物商城网站系统 题目:宠物商城网站系统的设计与实现 摘 要 如今社会上各行各业,都喜欢用自己行业的专属软件工作,互联网发展到这个时候,人们已经发现离不开了互联网。新技术的产生,往往…

【无标题】一起学习LeetCode热题100道(67/100)

67.寻找旋转排序数组中的最小值(学习) 已知一个长度为 n 的数组,预先按照升序排列,经由 1 到 n 次 旋转 后,得到输入数组。例如,原数组 nums [0,1,2,4,5,6,7] 在变化后可能得到: 若旋转 4 次,则可以得到 …

【Linux修行路】进程通信——消息队列、信号量

目录 ⛳️推荐 一、消息队列 1.1 实现原理 1.2 消息队列接口 1.2.1 msgget——创建、获取一个消息队列 1.2.2 msgctl——释放消息队列、获取消息队列属性 1.2.3 msgsnd——发送数据 1.2.4 msgrcv——从消息队列中检索数据块 1.3 消息队列的指令操作 二、信号量 2.1 …

我写了个ffmpeg-spring-boot-starter 使得Java能剪辑视频!!

最近工作中在使用FFmpeg,加上之前写过较多的SpringBoot的Starter,所以干脆再写一个FFmpeg的Starter出来给大家使用。 首先我们来了解一下FFmpeg能干什么,FFmpeg 是一个强大的命令行工具和库集合,用于处理多媒体数据。它可以用来做…

【拉取Git项目到本地,知识小记,后续再改】

前提:Git已经安装好 https://blog.csdn.net/mukes/article/details/115693833 安装至步骤2.2.4即可 第一步创建本地项目目录 第二步获取他人提供的项目git地址或者自己在网上找的他人项目的git地址 Git 全局设置: git init git config --global user.name “ASxx”…

公寓项目(尚庭公寓笔记)

公寓项目 课程介绍项目概述移动端业务功能后台管理系统业务功能-公寓管理后台管理系统业务功能-租赁功能后台管理系统业务功能-系统管理&用户管理核心业务功能技术概述 项目开发流程项目原型数据库设计理论ER模型数据库设计流程 数据库设计实操概念模型逻辑模型公寓信息房间…

因 Mysql root 密码过于简单导致 Mysql 连接失败的解决方法

问题: Access denied for user ‘root’‘192.168.xx.xx’ (using password: YES) 用户“root”“192.168.xx.xx”的访问被拒绝(使用密码:YES) 解决方法: 1、使用root用户登录mysql,通过下面的命令给ro…

【云原生之kubernetes实战】k8s环境中部署Nginx服务

【云原生之kubernetes实战】k8s环境中部署Nginx服务 一、Nginx介绍1.1 Nginx简介1.2 Nginx特点1.3 Nginx使用场景二、本次实践介绍2.1 本次实践简介2.2 本次环境规划三、检查k8s环境3.1 检查工作节点状态3.2 检查系统pod状态四、部署storageclass(可选)4.1 配置NFS服务器4.2 …

XSS LABS - Level 16 过关思路

关注这个靶场的其他相关笔记:XSS - LABS —— 靶场笔记合集-CSDN博客 0x01:过关流程 进入靶场,右击页面,查看网页源码,搜索关键词 test 查看页面回显点: 页面只有一个回显点,跟前面关卡不同&am…

Spring Boot报错:没有配置数据源(url属性未设置)

文章目录 小结问题解决参考 小结 Spring Boot报错:没有配置数据源(url属性未设置),进行解决。 问题 Spring Boot报错: ERROR 2024-08-28 17:24:43.734 [main] - *************************** APPLICATION FAILED T…

提升多跳问答中的语言模型知识编辑能力

人工智能咨询培训老师叶梓 转载标明出处 大模型在静态知识库的更新上存在局限,特别是在面对需要多步骤推理的多跳问题时,难以提供准确和最新的回答。为了解决这一问题,来自美国佐治亚大学、纽约大学、莱斯大学、北卡罗来纳州立大学等机构的研…

flutter 提示框2 Dialog

flutter 提示框 写在点击的方法体中 child里放自己喜欢的 showDialog( context: context, builder: (BuildContext context) { final Dialog alertDialog Dialog( backgroundColor: Colors.transparent,shadowColor:Colors.transparent,child: Container(height: mediawi…

突破视觉理解极限,Qwen2-VL重磅登场

前沿科技速递🚀 经过近一年的持续努力,Qwen团队宣布推出最新一代的视觉语言模型:Qwen2-VL。基于Qwen2的基础,Qwen2-VL在多个方面实现了显著提升,相较于前代模型Qwen-VL,它具备以下核心优势: 1. …

风塔市场研究:未来几年年复合增长率CAGR为6.4%

塔架是风力涡轮机结构中的一个重要部件。它将载荷从机舱传递到地基,是决定盈利能力的重要因素:塔架越高,能量输出越高。 据QYResearch调研团队最新报告“全球风塔市场报告2024-2030”显示,预计2030年全球风塔市场规模将达到152.9亿…

如何修复软件中的BUG

笔者上一篇博文《如何开发出一款优秀的软件》主要讲了如何开发一款优秀的软件及相应的必要条件。但对一个已上线,已经成型的产品,该如何解决存在的bug呢?这是本文要阐述的内容。 在这里,首先说一下bug的种类及bug严重程度分类&…

MATLAB 中的 reshape 函数

在 MATLAB 中,矩阵和数组的处理是核心任务之一,而 reshape 函数是进行数据重组时的一个重要工具。无论你是在进行数据分析、信号处理还是算法开发,reshape 都能帮助你以灵活的方式重新组织数据。本文将详细介绍 reshape 函数的使用方法、注意…

java反射获取方法参数名、参数类型

package com.hx.utils;import com.hx.bean.Student; import org.springframework.core.LocalVariableTableParameterNameDiscoverer;import java.lang.reflect.*;/*** 反射应用*/ public class MyReflect {public static void main(String[] args) { // cancelAccess();…

猴子采集:实时数据采集,正在拼采集,类目采集,整店采集

图片:玉溪 文章:云长 作者:yunchang227 猴子采集核心功能亮点 : 一:无限自动采集 通过先进的算法和技术,猴子采集可以实现无限自动采集,彻底解放你的双手。只需设置好相关参数,…

《javaEE篇》--线程池

线程池是什么 线程的诞生是因为进程创建和销毁的成本太大,但是也是相对而言,如果频繁的创建和销毁线程那么这个成本就不能忽略了。 一般有两种方法来进一步提高效率,一种是协程(这里不多做讨论),另一种就是线程池 假如说有一个学校食堂窗口…