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.mzph.cn/pingmian/78551.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

《从分遗产说起:JS 原型与继承详解》

“天天开心就好” 先来讲讲概念: 原型(Prototype) 什么是原型? 原型是 JavaScript 中实现对象间共享属性和方法的机制。每个 JavaScript 对象(除了 null)都有一个内部链接指向另一个对象,这…

立马耀:通过阿里云 Serverless Spark 和 Milvus 构建高效向量检索系统,驱动个性化推荐业务

作者:厦门立马耀网络科技有限公司大数据开发工程师 陈宏毅 背景介绍 行业 蝉选是蝉妈妈出品的达人选品服务平台。蝉选秉持“陪伴达人赚到钱”的品牌使命,致力于洞悉达人变现需求和痛点,提供达人选高佣、稳变现、速响应的选品服务。 业务特…

Android显示学习笔记本

根据博客 Android-View 绘制原理(01)-JAVA层分析_android view draw原理分析-CSDN博客 提出了我的疑问 Canvas RenderNode updateDisplayListDirty 这些东西的关系 您的理解在基本方向上是对的,但让我详细解释一下 Android 中 updateDisplayListDirty、指令集合、…

JavaWeb学习打卡-Day4-会话技术、JWT、Filter、Interceptor

会话技术 会话:用户打开浏览器,访问web服务器的资源,会话建立,直到有一方断开连接,会话结束。在一次会话中可以包含多次请求和响应。会话跟踪:一种维护浏览器状态的方法,服务器需要识别多次请求…

让数据优雅落地:用 serde::Deserialize 玩转结构体实体

前言 想象一下,服务器突然飞来一堆 JSON 数据,就像一群无头苍蝇冲进办公室,嗡嗡作响,横冲直撞。此刻,你的任务,就是把这群“迷路数据”安置进正确的格子里,分门别类,秩序井然,不混不乱,不漏一只。 好在 Rust 早就为我们备好瑞士军刀:serde::Deserialize。它不仅刀…

Virtio 技术解析 | 框架、设备实现与实践指南

本文为 “Virtio” 相关文章合辑。 略作重排,如有内容异常,请看原文。 Virtio 简介(一)—— 框架分析 posted 2021-04-21 10:14 Edver 1. 概述 在传统设备模拟中,虚拟机内部设备驱动完全不知自身处于虚拟化环境&a…

云计算赋能质检LIMS的价值 质检LIMS系统在云计算企业的创新应用

在云计算技术高速发展的背景下,实验室信息化管理正经历深刻变革。质检LIMS(实验室信息管理系统)作为实验室数字化转型的核心工具,通过与云计算深度融合,为企业提供了高弹性、高安全性的解决方案。本文将探讨质检LIMS在…

【win11 安装WSL2 详解一遍过!!】

共有五个步骤,按部就班的做,保准成功! 1. 打开开发者模式 设置->系统->开发者模式 2. 打开linux的win子系统 找到控制面板-程序和功能-启用或关闭Windows功能,选中“适用于Linux的Windows子系统”,“虚拟机…

Godot开发2D冒险游戏——第三节:游戏地图绘制

一、初步构建游戏地图 在游戏场景当中添加一个新的子节点:TileMapLayer 这一层称为瓦片地图层 根据提示,下一步显然是添加资源 为TileMapLayer节点添加一个TileSet 将地板添加进来,然后选择自动分割图集 自定义时要确保大小合适 让Godot自…

Django创建的应用目录详细解释以及如何操作数据库自动创建表

创建好Django项目后 如果要创建 python manage.py startapp 模块名模块 使用 我创建一个system模块后是 注意:urls是我自己建的文件 1.migrations目录 存放数据库的迁移文件,当models.py中模型定义发生变化时,通过迁移操作能同步数据库结构变化 __init__ 使该目录…

将输入帧上下文打包到下一个帧的预测模型中用于视频生成

Paper Title: Packing Input Frame Context in Next-Frame Prediction Models for Video Generation 论文发布于2025年4月17日 Abstract部分 在这篇论文中,FramePack是一种新提出的网络结构,旨在解决视频生成中的两个主要问题:遗忘和漂移。 具体来说,遗忘指的是在生成视…

STM32 串口USART

目录 常见的通信方式 串行通信和并行通信 全双工,半双工和单工通信 同步通信和异步通信 通信速率 常见的通信协议 串口基础知识 电平特性 串口传输协议 STM32F103的USART资源 端口引脚 数据寄存器单元 发送接收控制单元 实现串口发送 printf…

Taro on Harmony :助力业务高效开发纯血鸿蒙应用

背景 纯血鸿蒙逐渐成为全球第三大操作系统,业界也掀起了适配鸿蒙原生的浪潮,用户迁移趋势明显,京东作为国民应用,为鸿蒙用户提供完整的购物体验至关重要。   去年 9 月,京东 AP…

gem5-gpu教程05 内存建模

memory-modeling|Details on how memory is modeled in gem5-gpu gem5-gpu’s Memory Simulation gem5-gpu在很大程度上避开了GPGPU-Sim的单独功能模拟,而是使用了gem5的执行中执行模型。因此,当执行存储/加载时,内存会被更新/读取。没有单独的功能路径。(顺便说一句,这…

【python】lambda用法(结合例子理解)

目录 lambda 是什么? 为什么叫 lambda? 语法 举例 1. 最简单的 lambda:单个数字处理 2. 用 lambda 排序一组字符串(按照长度排序) 3. 在列表里找出绝对值最小的数字 4. 给 map() 用 lambda 5. 组合使用:筛选出偶数 lambda 和 def 的对比 lambda 适合用在什么地…

【ROS2】机器人操作系统安装到Ubuntu22.04简介(手动)

主要参考: https://book.guyuehome.com/ROS2/1.系统架构/1.3_ROS2安装方法/ 官方文档:https://docs.ros.org/en/humble/Installation.html 虚拟机与ubuntu系统安装 略,见参考文档 ubutun换国内源,略 1. 设置本地语言 确保您有…

C 调用 C++:extern “C” 接口详解与实践 C/C++混合编译

C 调用 C:extern “C” 接口详解与实践 核心问题在于 C 编译器会对函数名进行“修饰”(Name Mangling)以支持函数重载等特性,而 C 编译器则不会。此外,C 语言本身没有类、对象等概念。为了解决这个问题,我…

汽车制造行业如何在数字化转型中抓住机遇?

近年来,随着新一轮科技革命和产业变革的深入推进,汽车制造行业正迎来一场前所未有的数字化转型浪潮。无论是传统车企还是新势力品牌,都在积极探索如何通过数字化技术提升竞争力、开拓新市场。那么,在这场变革中,汽车制…

k8s学习记录(五):Pod亲和性详解

一、前言 上一篇文章初步探讨了 Kubernetes 的节点亲和性,了解到它在 Pod 调度上比传统方式更灵活高效。今天我们继续讨论亲和性同时Kubernetes 的调度机制。 二、Pod亲和性 上一篇文章中我们介绍了节点亲和性,今天我们讲解一下Pod亲和性。首先我们先看…

HarmonyOS:Navigation实现导航之页面设置和路由操作

导读 设置标题栏模式设置菜单栏设置工具栏路由操作页面跳转页面返回页面替换页面删除移动页面参数获取路由拦截 子页面页面显示类型页面生命周期页面监听和查询 页面转场关闭转场自定义转场共享元素转场 跨包动态路由系统路由表自定义路由表 示例代码 Navigation组件适用于模块…