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

Dify工作流实战

前言:实现通过dify工作流创建优惠券,后续可以根据自己公司的业务,创建对应的工作流,实现不同的业务场景

一、工作流需要实现的流程

  • 用户传入需求
  • 大模型理解需求,生成创建优惠券的接口数据
  • 调用创建接口,成功创建优惠券

二、Dify工作流设计

1、开始

2、获取当前时间

  • 大模型在没有联网的时候,基本不能拿到当前时间,所有我们需要通过工具去拿当前时间
  • 在格式里面,我们可以设置时间格式%Y-%m-%d %H:%M:%S,时区选择上海(按需)

3、获取时间戳

  • 获取时间戳的输入就是获取当前时间的输出,可以在输入框输入/,就可以拿到想要的输入变量

4、LLM-生成测试用例

添加需要用到的大模型,我这边用的是 Doubao-1.5-visi on-pro-32k,在系统提示词里面输入提示词,提示词里面包含一下结构

  • # 角色:接口测试专家---------------这个目的是让大模型认识到你是以什么角度去执行任务

  • ## 背景:用户提出需求,根据用户的需求生成具体的json数据-------------------------------交待一下这个工作流具体要做什么

  • ## json格式要求:直接把创建优惠券的接口入参放进来,每个参数给写数据,数据后面写你对这个参数的具体要求,比如,金额,用户没给具体金额,默认值就是100-----------交待对数据格式的要求,其他要求也可以写在里面

  • ## 技能:理解用户需求,熟悉json格式,熟悉http协议-------要求大模型在执行的过程中需要具备的能力

  • ## 工作流:分析用户需求,确定要构造几张优惠券;参考json格式要求,输出一样的格式,将所有的json对象都放在一个数组里面,哪怕是一张优惠券也要放在一个数组里面,获取当前时间---说明一下整个执行过程,还有要求

  • ## 限制:用户没给具体需要的值,就用默认值,开始时间需要结束时间,门槛金额要大于优惠券金额,直接给json,需要对给出的数据做结束

  • ## 示例:---用户需求:帮我构造1张面额为500的优惠券,输出json:[{"title":"优惠券测试123","coupon_price":500,"coupon_threshold_price":600,"start_time":"2025-04-07 00:00:00","end_time":"2025-04-14 00:00:00","create_num":100,"limit_num":1,"type":"FREE_GET"}]---

提示词可以在执行的过程中不断的调整,越写越熟练

设置温度和最大生成长度,温度相当于每次生成内容的随机性,我一般设置成0.7,输出长度直接拉到最大

5、测试一下LLM出来的效果

6、代码--处理时间戳

背景:因为s开始时间和结束时间的传参都是时间戳,如果在工作流中要求大模型构造数据的时候用时间戳,很难构造出来,出来的数据总是有问题,所有我们可以直接让大模型构正常的时间,然后通过代码转换,不会代码的同学也没事,给你们一个提示词模板,可以通过提示词让ai生成代码,把生成的代码放到工作流中,可以进行测试一下

# 背景
编写一个python函数,可以把入参中的日期改成时间戳# 需求
入参中的start_time和end_time,需要把这两个参数转换成对应的时间戳#函数入参
##入参
贴一下自己的入参#函数返回
是一个字典,包含了替换时间戳后的入参#限制
1、函数名称为main
2、函数入参均为字符格式,根据用户的需求,包含一个或者多个入参
3、函数返回结果为一个字典,根据用户需求返回对应数据
4、所有代码封装到main函数即可,不需要拆分

7、调用创建优惠券接口,需要用到token,可以先用http请求先调用http请求,获取token,再进行调用创建优惠券接口

8、代码,获取access_toke

9、迭代

用户可能需要创建多张优惠券,那就需要循环调用创建优惠券的接口。

  • 迭代的入参需要是一个数组

  • 迭代本质上就是一个for循环

  • 因为入参是一个数组,数值里面有很多json,我们需要拿到这一个个json,可以通过一个迭代的内置变量去拿到,items

  • 迭代里面要加一http请求去创建优惠券,整个http请求的参数是键值对,大模型给我们的数据是一个包含很多个json的数值,我们要拿到单个数值

    ,然后将单个数组里面的参数都拿出来,再返回出去,给到http请求来用,这一步我们可以用代码来实现,代码的入参是/items这个迭代的内置变量,

    注意输出变量的数据类型,看看之前提示词定义的数据

  • 迭代的返回可以设置成http接口的body

def main(arg1: dict) -> dict:return {"title": arg1['title'] ,"coupon_price": arg1['coupon_price'] ,"coupon_threshold_price": arg1['coupon_threshold_price'] ,"start_time": arg1['start_time'] ,"end_time": arg1['end_time'] ,"create_num": arg1['create_num'] ,"limit_num": arg1['limit_num'] ,"type": arg1['type']}

10、直接回答

设置成迭代的返回就行,然后进行测试

http://www.dtcms.com/a/288566.html

相关文章:

  • 安装minerU的API服务
  • 如何避免广度优先搜索(BFS)在有环图中陷入无限循环
  • ADC和DMA简述
  • 第四次作业
  • linux + 宝塔面板 部署 django网站 启动方式:uwsgi 和gunicorn如何选择 ?
  • 用 Jetpack Compose 写 Android 的 “Hello World”
  • windows + phpstorm 2024 + phpstudy 8 + php7.3 + thinkphp6 配置xdebug调试
  • YOLOv8目标检测项目代码详解与习题
  • C++ 桶排序、基数排序、堆排序
  • C++ - 仿 RabbitMQ 实现消息队列--服务端核心模块实现(一)
  • Spring之事务使用指南
  • spring-ai-alibaba如何上传文件并解析
  • 前端环境搭建---基于SpringBoot+MySQL+Vue+ElementUI+Mybatis前后端分离面向小白管理系统搭建
  • RK3588 安卓adb操作
  • [HDLBits] Cs450/gshare
  • 42.sentinel实现线程隔离
  • 嵌入式硬件篇---继电器
  • 06 51单片机之矩阵键盘
  • XSS GAME靶场
  • XSS的学习笔记
  • vscode环境下c++的常用快捷键和插件
  • tabBar设置底部菜单选项、iconfont图标(图片)库、模拟京东app的底部导航栏
  • 基于深度学习的日志分析系统实现方案,使用Python构建CNN模型进行日志诊断
  • 在NLP深层语义分析中,深度学习和机器学习的区别与联系
  • 苍穹外卖|项目日记(完工总结)
  • Mobile Neural Network (MNN) 3.2.1
  • docker-compose启动前后端分离项目(单机)
  • ABP VNext + Playwright E2E:前后端一体化自动化测试
  • 秒赤Haproxy配置算法
  • The law and schools