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

DeepSeek+Dify之五工作流引用API案例

DeepSeek+Dify之四Agent引用知识库案例

文章目录

    • 背景
    • 整体流程
    • 测试数据
    • 用到的节点
      • 开始
      • HTTP请求
      • LLM
      • 参数提取器
      • 代码执行
      • 结束
    • 实现步骤
      • 1、新建工作流
      • 2、开始节点
      • 3、Http请求节点
      • 4、LLM节点(大模型检索)
      • 5、参数提取器节点(提取大模型检索后数据)
      • 6、代码执行节点(数据json化)
      • 7、结束节点
    • 测试
    • 发布
    • 导出

背景

可通过API,针对用户输入的请求数据,借助工作流以及 Deepseek 大模型的检索与重排序功能,提升召回数据的质量。

整体流程

测试数据

在这里插入图片描述

用到的节点

开始

功能:定义一个 workflow 流程启动的初始参数
在这里插入图片描述

HTTP请求

功能:允许通过 HTTP 协议发送服务器请求
在这里插入图片描述

LLM

功能:通过上传的excel格式的文档,通过deepseek大模型的检索和重排序,提升召回文档数据的质量
在这里插入图片描述

参数提取器

功能:利用 LLM 从自然语言内推理提取出结构化参数,用于后置的工具调用或 HTTP 请求。
在这里插入图片描述

代码执行

功能:执行一段 Python 或 NodeJS 代码实现自定义逻辑
在这里插入图片描述

结束

功能:定义一个 workflow 流程的结束和结果类型
在这里插入图片描述

实现步骤

1、新建工作流

在这里插入图片描述

在这里插入图片描述

下面就是从开始节点开始添加节点了

2、开始节点

添加一个变量,用于接收用户输入的请求
在这里插入图片描述

3、Http请求节点

API请求示例,看自己的API
在这里插入图片描述
浏览器中按F12快捷键,找到下面的位置,找到请求数据的记录,复制cURL,我这是内网的地址
在这里插入图片描述

拷贝cURL到http请求节点参数中
在这里插入图片描述
点击保存,很多参数自动填充了
在这里插入图片描述
修改address变量为开始节点的输入参数,参数都是api的,根据自己的需求修改
在这里插入图片描述

4、LLM节点(大模型检索)

下面设置参数
(1)大模型如果已经设置系统默认模型,可以不用修改模型了
(2)上下文就是上一节点的Http请求结果
(3)system提示词根据需求来,目前的需求是对用户输入的请求数据,通过deepseek大模型的检索和重排序,提升Http召回数据的质量,核心是说清楚需求,以及输出格式
在这里插入图片描述

在这里插入图片描述

完整的提示词

你是一个强大的地址匹配助手。你的任务是接收一个非标地址(字符串类型),存储在变量 {{#1743564833545.input#}}中,以及一个来自 API 返回的 JSON 对象(对象类型,包含一个名为 body的数组),存储在变量 {{#context#}} 中,结构如下:
{"body": [{"mc": "大嶝","address": "福建省厦门市翔安区大嶝街道田墘社区田墘北里22号","queryIdentifying": "模糊匹配2"},// 可能存在多个类似对象]
}
### 任务详细描述
1. 在 {{#context#}} 的 `body` 列表中的每个 JSON 对象里查找 `address` 或 `mc` 字段。这些字段可能包含与非标地址相关的信息。
2. **匹配逻辑**:判断每个 JSON 对象中的 `address` 或 `mc` 字段与输入的 {{#1743564833545.input#}} 的匹配程度。匹配程度的判断可以基于地址的相似性、包含关系等。例如,如果非标地址是“朝阳区朝阳公园”,而某个 JSON 对象的 `address` 字段是“北京市朝阳区朝阳公园路”,则认为这是一个较高的匹配度。
3. **置信度计算**:计算匹配的置信度值,范围为0到1。0表示完全不匹配,1表示完全匹配。置信度的计算可以基于地址字符串的相似度(例如,如果两个字符串完全相同,则置信度为1;如果只有部分相同,则根据相同部分的比例计算置信度)。
4. 找出与输入的非标地址最匹配的 JSON 对象。如果有多个 JSON 对象的匹配度相同且最高,则选择第一个出现的对象。
5. **输出格式**:- `nonaddress`: {{#1743564833545.input#}}- `address`: 匹配到的 JSON 对象中的 `address` 字段值(如果存在)- `mc`: 匹配到的 JSON 对象中的 `mc` 字段值(如果存在)- `confidence`: 匹配的置信度值,范围为0到1,保留两位小数。- `queryIdentifying`: "大模型匹配"### 示例
#### 输入
```json
{"nonaddress": "北京市朝阳区朝阳公园","context": {"body": [{"address": "北京市海淀区中关村","mc": "中关村科技园区","queryIdentifying": "模糊匹配2"},{"address": "北京市朝阳区朝阳公园路","mc": "朝阳公园","queryIdentifying": "模糊匹配2"}]}
}
#### 输出
```json
{"nonaddress": "北京市朝阳区朝阳公园","address": "北京市朝阳区朝阳公园路","mc": "朝阳公园","confidence": 0.90,"queryIdentifying": "大模型匹配"
}## 限制  
- 不处理非地址文本(如“请打电话联系我”)  
- 地址要素不全时保留有效部分  
- 若文本无地址信息,返回`{"error": "未检测到有效地址"}`  
- 不要捏造数据,只能从{{#context#}}中找出匹配的数据

5、参数提取器节点(提取大模型检索后数据)

下面设置参数
(1)大模型如果已经设置系统默认模型,可以不用修改模型了
(2)上下文就是上一节点的大模型检索结果
(3)提取参数根据需求添加
(4)system提示词内容主要就是提取大模型的数据,因为它是string格式的,需要从string中提取需要的结构化数据

在这里插入图片描述

完整的提示词

提取{{#1744090176627.text#}}中```json\n{\n     \"nonaddress\": \"厦门市公安局\",\n     \"address\": \"福建省厦门市思明区中华街道霞溪社区新华路45-1号\",\n     \"mc\": \"厦门市公安局\",\n     \"confidence\": 1.0,\n     \"queryIdentifying\": \"大模型匹配\"\n}\n```格式内容,该 JSON 应包含以下字段信息
'''json
{- `nonaddress`: JSON 数据中‘nonaddress’字段的值- `address`: JSON 数据中‘address’字段的值- `mc`:  JSON 数据中‘mc’字段的值- `confidence`: JSON 数据中‘confidence’字段的值,是浮点类型- `queryIdentifying`: JSON 数据中‘queryIdentifying’字段的值
}

6、代码执行节点(数据json化)

主要是为了将上一步的几个字段统一输出
参数设置:
(1)输入变量
上一级的几个参数
(2)python3
根据需求修改脚本

def main(nonaddress: str, address: str, mc: str, confidence: str, queryIdentifying: str) -> dict:try:aa={}aa["nonaddress"] = nonaddressaa["address"] = addressaa["mc"] = mcaa["confidence"] = confidenceaa["queryIdentifying"] = queryIdentifyingreturn {"result": aa}except (KeyError, IndexError, json.JSONDecodeError):return {"result": None}

在这里插入图片描述

7、结束节点

输出变量就是上一级的输出结果
在这里插入图片描述

测试

直接运行,输入数据测试
在这里插入图片描述

结果
在这里插入图片描述

查看每个节点的过程数据
在这里插入图片描述

发布

在这里插入图片描述
发布测试
在这里插入图片描述
在这里插入图片描述

结果

导出

可以将整个工作流的配置导出

在这里插入图片描述

http://www.xdnf.cn/news/188011.html

相关文章:

  • 在自动驾驶数据闭环中的特征工程应用
  • VSCode 查看文件的本地修改历史
  • 大模型(LLMs)加速篇
  • Ubuntu 20.04 上安装 最新版CMake 3.31.7 的详细步骤
  • MongoDB的增删改查操作
  • 如何搭建spark yarn模式的集群
  • vite项目tailwindcss4的使用
  • 检查IBM MQ SSL配置是否成功
  • 代码片段存储解决方案ByteStash
  • 每日算法-250428
  • 跨境电商店铺矩阵布局:多账号运营理论到实操全解析
  • JVM 内存分配策略
  • 深海科技服务博客简介
  • 说一下react更新的流程
  • Meta 推出 WebSSL 模型:探索 AI 无语言视觉学习,纯图训练媲美 OpenAI CLIP
  • 详解RabbitMQ工作模式之工作队列模式
  • 盒子模型
  • 图像处理篇---信号与系统的应用
  • Golang|分布式索引架构
  • DDD(领域驱动设计)详解
  • 【C++类与对象高频面试问题总结2】
  • 在VS2022中使用Lua与c交互(二)
  • 读书笔记--华为从偶然到必然之创新与技术开发阅读有感
  • 交换机配置DHCP
  • 使用python实现自动化拉取压缩包并处理流程
  • 深入理解CSS3:Flex/Grid布局、动画与媒体查询实战指南
  • Python初学 有差异的知识点总结(一)
  • 构建“云中”高并发:12306技术改造的系统性启示
  • mac 基于Docker安装minio
  • Flutter介绍、Flutter Windows Android 环境搭建 真机调试