从零开始的Dify大模型应用开发指南

大模型相关目录

大模型,包括部署微调prompt/Agent应用开发、知识库增强、数据库增强、知识图谱增强、自然语言处理、多模态等大模型应用开发内容
从0起步,扬帆起航。

  1. 大模型应用向开发路径:AI代理工作流
  2. 大模型应用开发实用开源项目汇总
  3. 大模型问答项目问答性能评估方法
  4. 大模型数据侧总结
  5. 大模型token等基本概念及参数和内存的关系
  6. 大模型应用开发-华为大模型生态规划
  7. 从零开始的LLaMA-Factory的指令增量微调
  8. 基于实体抽取-SMC-语义向量的大模型能力评估通用算法(附代码)
  9. 基于Langchain-chatchat的向量库构建及检索(附代码)
  10. 一文教你成为合格的Prompt工程师
  11. 最简明的大模型agent教程
  12. 批量使用API调用langchain-chatchat知识库能力
  13. langchin-chatchat部分开发笔记(持续更新)
  14. 文心一言、讯飞星火、GPT、通义千问等线上API调用示例
  15. 大模型RAG性能提升路径
  16. langchain的基本使用
  17. 结合基础模型的大模型多源信息应用开发
  18. COT:大模型的强化利器
  19. 多角色大模型问答性能提升策略(附代码)
  20. 大模型接入外部在线信息提升应用性能
  21. 从零开始的Dify大模型应用开发指南

文章目录

  • 大模型相关目录
  • Dify框架
  • 使用示例
    • 部署安装
    • 基本功能
    • 模型配置
      • 注意,模型可用性检测
    • 流程开发
      • 知识检索节点
      • 分支节点
      • 模型节点
      • HTTP节点
  • 最后


Dify框架

用一句话介绍Dify,我想引用Dify官网的介绍。

比 LangChain 更易用。

众所周知,Langchin是大模型应用开发框架中较早、传播较广、功能集成较多的一个大模型应用开发框架,不少人的大模型研究工作都从langchain开始。

最近犹豫研发需求增加,开发难度提升,langchain框架的开发效率已经不太能满足公司研发团队需求,因此我们另辟蹊径,找到了Dify。

Didy是一个开源的 LLM 应用开发平台。提供从AI workflow 编排Agent 构建Prompt工程RAG 检索在线信息接入多模态能力接入模型管理等大模型性能提升技术,能够使开发者轻松引入COT回馈机制few-shot等大模型性能提升技巧,构建 生成式 AI 原生应用

可见,Dify已经能够比较全面地覆盖本系列文章之前提到的种种大模型开发技术和技巧,虽然与理想大模型平台有所差距【缺少数据侧模块(数据抓取、数据处理等功能点)和模型侧模块(微调数据集构建、模型微调等功能点)】,但在系统开发侧已经足够优秀。

尤其是,Dify的开发模型属于敏捷开发,可拖拽式构建大模型应用,上手门槛低、开发效率高。

使用示例

本文以一个在线数据引入和RAG项目为例,介绍Dify开发使用。

部署安装

Dify已于github开源

https://github.com/langgenius/dify

拉到项目后,根据项目教程用docker快速部署即可。

且需要根据项目教程配置环境参数。

基本功能

启动网页服务:
在这里插入图片描述
登陆账号
在这里插入图片描述
可见,dy开发十分简洁,主要功能有:
位于左上角的:空白应用开发、模板开发
位于页面中间顶部的:探索、工作室、工具
在这里插入图片描述
其中,从模板开发预定义如下:
在这里插入图片描述
可见典型的生成任务、知识库任务、智能体应用任务、工作流编排等等,Dify均提供了应用构建模板。
在这里插入图片描述
选择一个模板后顶一下应用名称和描述即可开始设计,如下图所示,其主要是分为节点和关联线两个部分,均可增删改。
在这里插入图片描述
比如节点增添可如下所示:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

模型配置

在开发大模型服务时,需为框架配置好可用的大模型服务。
入口在如下位置:
在这里插入图片描述
点击后可见界面如下:
在这里插入图片描述
可见,dify支持ollama、OpenAI API等等格式的 模型接入方式(可自行添加更多、自定义更多)。此外,不同模型推理框架还对应词嵌入模型、大语言模型、重排模型等等。最后,模型返回结果格式也和其加载框架有关。此处不多赘述。
本文采用OpenAI API格式的形式进行大模型接入(以kimi chat逆向为例)。
具体流程如下:
在本地部署kimi-free-api项目

https://github.com/LLM-Red-Team/kimi-free-api

按指令docker部署环境
在这里插入图片描述
在这里插入图片描述
在dify的OpenAI界面下配置相关参数
在这里插入图片描述
其中API KEY为kimi-free-api项目所提及的refresh_token,依据教程在kimi-chat页面F12开发者模式下即可获取。

注意,模型可用性检测

下述代码:

import requests
import json



# 定义发送请求的函数
def send_request(question):
    url = 'http://172.19.138.52:8000/v1/chat/completions'

    data = {
       "model": "kimi-test",
        "messages": [
            {
                "role": "user",
                "content": question
            }
        ],
        "conversation_id": "cnndivilnl96vah411dg",
        "use_search": 'true',
        "stream": 'false'
    }
    json_data = json.dumps(data)
    response = requests.post(url,
                             data=json_data,
                             headers={
                                 "Content-Type": "application/json",
                                 'Authorization': f'Bearer eyJhbGciOi'
                                      }
                             )

    response_text = response.text

    return response_text



# test
result = send_request('你好,请介绍一下大数据局?')
answer = result
print(answer)

上述代码配合linux上的docker api后台即可检测模型服务是否有用,如有用,则显示如下:
在这里插入图片描述

流程开发

本次设计总体流程如下:
在这里插入图片描述

易知道,本次设计主要是一个RAG结合在线信息检索的项目。具体地,大模型依据输入后知识库检索结果进行判断,检索到信息后输入给大模型进行总结,是一条典型RAG路径;若未检索到符合阈值要求的知识库信息,则传入谷歌搜索界面进行信息检索,将检索信息及初始query传入LLM进行总结,这是一条AI信息检索路径;最后若检索结果不合要求,服务则输出指定内容

知识检索节点

在全流程中,设计对知识库相关配置,如下:
在这里插入图片描述
从上图所示区域即可设定输入query变量及所需查询知识库、查询知识库模型。
预设知识库流程如下:
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
分割策略需对具体数据集做适配,我个人推荐自定义模式配合数据处理脚本进行,此处不做赘述。
还要再写一份技术方案意思是还需要写一个正在研发的,还没有完成的。
在这里插入图片描述
此处我推荐向量检索形式,topk以及阈值自行根据问答效果进行适配。

分支节点

此处分支节点,即条件判断、代码执行以及问题分类器三个节点。
在这里插入图片描述
条件分支功能较为有限
在这里插入图片描述
代码执行完全可以利用python语言设计复杂的功能和逻辑判断
在这里插入图片描述
问题分类器则是依据大模型能力对问题进行分析选择不同地后续路径,其本质是Agent组的思想。需配置输入、分类以及所用模型。

模型节点

在这里插入图片描述
模型节点需配置所用模型、prompt、输入变量、是否多轮等参数,cot、few-shot等等技巧可在此进行应用。

HTTP节点

在这里插入图片描述
该节点可通过http请求实现附加功能。也可以通过对url post的方式实现对大模型的另一种功能引入。

最后

我们所开发的服务可以通过API或独立页面形式使用。
在这里插入图片描述
在这里插入图片描述
当然,回馈机制、复杂多角色工作流、agent组、可视化、多模态分析以及更丰度的大模型应用开发,Dify均可进行便捷实现,此处不一一列举。本文抛砖引玉,希望诸位能在大模型开发上做出更多有用的设计和尝试,谢谢!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mfbz.cn/a/582842.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Paddle】PCA线性代数基础 + 领域应用:人脸识别算法(1.1w字超详细:附公式、代码)

【Paddle】PCA线性代数基础及领域应用 写在最前面一、PCA线性代数基础1. PCA的算法原理2. PCA的线性代数基础2.1 标准差 Standard Deviation2.2 方差 Variance2.3 协方差 Covariance2.4 协方差矩阵 The Covariance Matrix2.5 paddle代码demo①:计算协方差矩阵2.6 特…

【方法】PPT文件如何撤销密码保护?

对于重要的PPT文件,很多人会设置密码保护,那后续不需要保护的时候,要怎么撤销密码呢? 首先,我们要看下想要撤销的是什么密码,以及在记得密码或者忘记密码的情况下,处理方式也不同,下…

保证接口幂等性的多种实现方式(数据库方案)

1. 幂等性的概念 接口幂等性是指在软件工程和Web服务领域中,一个接口(通常是HTTP API)无论被调用一次还是多次,其对系统产生的副作用应该是相同的,即结果保持一致,不会因为多次请求而有所不同。换句话说&am…

nginx--安装

yum安装 官方包链接:nginx: Linux packages 官方yum源链接:nginx: Linux packages 配置yum源 [rootlocalhost ~]# yum install -y nginx [nginx-stable] namenginx stable repo baseurlhttp://nginx.org/packages/centos/$releasever/$basearch/ gp…

嵌入式学习62-C++

知识零碎: 析构函数语法: ~类名(){} 1.析构函数,没有返回值也不写void 2.析构函数是构造函数的反过程 构造函数 在执行过程中的三个过程…

【C++初阶】string

✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅✅ ✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨✨ 🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿🌿&#x1…

客户端连接ZK失败处理方案

文章目录 背景介绍报错信息处理方案第一步、查看zookeeper启动是否正常第二步、检查本地网络是否正常第三步、检查本地JDK版本 对于zookeeper服务注册中心,在前期【 Dubbo框架注册中心-Zookeeper搭建】博客中有环境搭建部署介绍,感兴趣可以参考安装。 背…

第七天 dfs剪枝优化

第七天 dfs剪枝&优化 1可行性剪枝 2最优性剪枝 3重复性剪枝 题 1 输入 5 5 6 …S. XX.X. …X… …D.X …X… 输出 YES —————————————— 题解 #include<iostream> #include<cstdio> using namespace std; const int N 10; int n,m,T; char …

前端入门:HTML(CSS边距,塌陷)

1.CSS边距 auto:浏览器自动计算的边距 length&#xff1a;以px,pt,cm等为单位指定边距&#xff0c;pt代表的是磅&#xff0c;1磅0.376毫米。 %&#xff1a;以父元素宽度的百分比来指定边距。 其中&#xff0c;length和%都可以取负值&#xff0c;表示减少外边距的空间大小。 …

命令执行。

命令执行 在该项目的readme中&#xff0c;描述了怎么去调用的flink 通过java原生的runtime来调用flink&#xff0c;下一步就是去看看具体的调用过程了&#xff0c;是否存在可控的参数 找到具体提交命令的类方法CommandRpcClinetAdapterImpl#submitJob() 这里要确定command&am…

SAP-ERP TM运输管理模块详解-3

9、定义采购数据结算 事务代码及配置路径&#xff1a; TCODE: SPRO 路径&#xff1a;IMG > 后勤执行 > 运输 > 装运成本 > 结算 > 分配采购数据。详见图9-1。 配置路径截图&#xff1a; 、 如图9-2所示&#xff0c;配置根据计划运输点Z001装运成本类型Z001…

国家强制标准来了!契约锁如何帮您合规签署8项特殊作业票

“作业票”是明确现场施工内容、排查作业风险、落实安全措施的授权许可票&#xff0c;也是现场施工作业安全管理的第一道关口。 近年国家应急管理部组织修订的国家标准《危险化学品企业特殊作业安全规范》&#xff08;GB 30871-2022&#xff09;已将“8大特殊作业票”的部分管理…

【机器学习-19】集成学习---投票法(Voting)

一、引言 集成学习&#xff08;Ensemble Learning&#xff09;是机器学习领域中的一种重要策略&#xff0c;它通过结合多个模型的预测结果来提高整体性能。在单个模型容易过拟合或欠拟合的情况下&#xff0c;集成学习能够通过综合多个模型的优点来减少这种风险&#xff0c;从而…

代码量应该和数据结构的学习深度成比例。

在开始前我有一些资料&#xff0c;是我根据网友给的问题精心整理了一份「数据结构的资料从专业入门到高级教程」&#xff0c; 点个关注在评论区回复“888”之后私信回复“888”&#xff0c;全部无偿共享给大家&#xff01;&#xff01;&#xff01; 代码量少&#xff0c;敲个…

2024年水资源保护盛事,“澜湄周”邀请国信华源加入!

4月26日&#xff0c;2024年水资源领域“澜湄周”活动在北京举行。水利部国科司、外交部亚洲司和边海司、湄公河五国驻华使馆以及澜湄水资源合作单位的代表嘉宾出席活动。北京国信华源公司特邀参加&#xff0c;现场就深化澜湄水资源合作展开深入交流研讨。 澜湄六国&#xff0c;…

软件测试用例模板

今天给大家分享下测试用例模板包含哪些内容&#xff1a; 1、测试项&#xff1a;[测试项名称] 2、测试用例标题&#xff1a;[测试用例标题] 3、优先级&#xff1a;[测试用例的优先级&#xff0c;冒烟用例为P0&#xff0c;基础用例P1等] 4、前置条件&#xff1a;[列出执行该测…

LeetCode_(兜兜转转还是你)浪漫的环形链表问题

✨✨所属专栏&#xff1a;LeetCode刷题专栏✨✨ ✨✨作者主页&#xff1a;嶔某✨✨ 第一题&#xff1a; 这道题的代码很简单&#xff0c;但是后续的一些问题在思考的过程是很复杂的。下面我们就一起来分析一下吧&#xff01; 链表带环的意思就是说链表的某个节点的next指针指向…

定位系统源码,工厂人员定位系统源码,UWB高精度定位系统源码

一套java定位系统源码&#xff0c;工厂人员定位系统源码&#xff0c;UWB高精度定位系统源码&#xff0c;前后端分离架构&#xff0c;源码有演示。 工厂人员定位系统&#xff0c;高精度的位置数据作为智能工厂数据流的重要组成部分&#xff0c;可实现对工厂内的人&#xff0c;车…

环状串的字典序

【题目描述】 长度为n的环状串有n种表示法&#xff0c;分别为从某个位置开始顺时针得到。例如&#xff0c;图3-4的环状串有10种表示&#xff1a; CGAGTCAGCT&#xff0c;GAGTCAGCTC&#xff0c;AGTCAGCTCG等。在这些表示法中&#xff0c;字典序最小的称为"最小表示"…

利用GaussDB的可观测性能力构建故障模型

D-SMART高斯专版已经开发了几个月了&#xff0c;目前主要技术问题都已经解决&#xff0c;也能够初步看到大概的面貌了。有朋友问我&#xff0c;GaussDB不已经有了TPOPS了&#xff0c;为什么你们还要开发D-SMART高斯专版呢&#xff1f; 实际上TPOPS和D-SMART虽然都可以用于Gaus…
最新文章