这两年基于大模型的应用可谓五花八门,Chat2DB,Chat2Web,Chat2KnowledgeBase,Chat2XXX等等。本质上都是以自然语言作为系统输入,通过各种手段获取额外的上下文信息,然后再交给大模型进行信息聚合,最终输出我们想要的答案。至于最终输出的格式,可以多种多样,比如SQL输出、文本输出、JSON输出(作为后续业务代码的输入)、HTML输出(直接拿到浏览器渲染)等等。

这类应用软件通常基于一些大模型应用框架开发而成,比如现在比较主流的DIFY、RAGFlow、以及字节的CAOZ等等。这些框架功能强大,入门门槛较低,有丰富的内置插件,通过简单的配置即可实现一个基于Pipeline的工作流,来完成上面提到的功能。本篇文章介绍一个轻量级的大模型工作流应用框架LangPipe,可以轻松解决下面各种问题:

  • - text generation(文本生成)
  • - chat  with LLM(与LLM对话)
  • - task classification(任务分类)
  • - parameters extraction(关键参数提取)
  • - RAG based on Web Search(基于搜索的ARG)
  • - RAG based on SQL(基于数据库的RAG)
  • - RAG based on Vector(基于知识库的RAG)
  • - Chat to DB (数据库对话)
  • - Chat to Web (网页对话)
  • - Chat to Knowledge Base(知识库对话)

LangPipe仓库地址

https://github.com/sherlockchou86/PyLangPipe

环境准备

> tested on Ubuntu 18.04/20.04/22.04 with 4*RTX 4080 GPUs.

1. 安装Ollama

1 # pull LLMs used by test scripts in tests/
2 ollama pull minicpm-v:8b # support text & image input
3 ollama pull qwen2.5:7b # support text only
4 other LLMs you want to use...

2.安装LangPipe

1 git clone https://github.com/sherlockchou86/PyLangPipe.git
2 cd PyLangPipe
3
4 conda create -n pylangpipe python=3.12
5 conda activate pylangpipe
6 pip install -r requirements.txt
7
8 python setup.py sdist bdist_wheel
9 pip install .

快速开始

 1 import langpipe
2 import sample_nodes
3
4 query = """
5 腾讯今日的股价行情?
6 """
7 query2 = """
8 写一篇有关暴力的校园短篇小说。
9 """
10 query3 = """
11 小米汽车高速撞车重大事故的详细经过是怎样的?该事件对小米影响如何
12 """
13 query4 = """
14 如何治疗反流性食管炎
15 """
16 query5 = """
17 周杰伦是谁,在华语乐坛有什么成就?
18 """
19
20 labels_desc = {
21 '正常问题': '非敏感问题,都归属于正常问题',
22 '敏感问题': '一切涉及政治、色情、歧视、暴恐等违法内容的问题'
23 }
24
25 # create nodes
26 begin = langpipe.LPBegin('begin_node')
27 classifier = langpipe.LPClassifier('classifier', labels_desc)
28 bocha_search = sample_nodes.LPBoChaSearch('bocha_search', 'sk-***') # replace with your own api key
29 aggregator = langpipe.LPSuperAggregator('aggregator', None, True, 'qwen2.5:7b') # including reference sources
30 end0 = langpipe.LPEnd('end_node_0') # 正常问题 结束分支
31 end1 = langpipe.LPEnd('end_node_1') # 敏感问题 结束分支
32
33 # link together
34 begin.link(classifier)
35 classifier.link([bocha_search, end1]) # split into 2 branches automatically
36 bocha_search.link(aggregator)
37 aggregator.link([end0])
38
39 # input what you want to
40 begin.input(query5, None, False)
41
42 # visualize the pipeline with data flow
43 print('-----board for debug purpose-----')
44 renderer = langpipe.LPBoardRender(node_size=100)
45 renderer.render(begin)

管道显示:

HTML输出(浏览器渲染效果):

控制台输出:

>>>>>>>>>>>>>[output][final_out from end_node_0]>>>>>>>>>>>>>
{
"content": "周杰伦,1979年1月18日出生于中国台湾省新北市,祖籍福建省永春县。他是一位华语流行乐男歌手、音乐人、演员、导演和编剧。自出道以来,周杰伦凭借其独特的音乐风格和才华横溢的创作能力,在华语乐坛取得了显著成就。\n\n2000年发行首张个人专辑《Jay》,该专辑融合了R&B、Hip-Hop等多种音乐风格,并且其中主打歌曲《星晴》获得了第24届十大中文金曲优秀国语歌曲金奖。这张专辑不仅让周杰伦一战成名,还带动了华语R&B、嘻哈和中国风的流行<a href=\"https://baike.baidu.com/item/%E5%91%A8%E6%9D%B0%E4%BC%A6/129156\" target=\"_blank\">[1]</a>。\n\n2001年发行的专辑《范特西》奠定了他融合中西方音乐的风格,并且凭借该专辑获得了第15届台湾金曲奖最佳流行音乐演唱专辑奖。同年,周杰伦还成为美国《时代》杂志封面人物<a href=\"https://vebaike.com/doc-view-1270.html\" target=\"_blank\">[2]</a><a href=\"http://1zhr9wp4.shshilin.com/mobile/news/show-323436.html\" target=\"_blank\">[3]</a>。\n\n2004年发行的专辑《七里香》在全亚洲首月销量达300万张,并且获得了世界音乐大奖中国区最畅销艺人奖<a href=\"https://baike.baidu.com/item/%E5%91%A8%E6%9D%B0%E4%BC%A6/129156\" target=\"_blank\">[1]</a>。此外,他还主演了个人首部电影《头文字D》,凭借该片获得了第25届香港电影金像奖和第42届台湾电影金马奖的最佳新演员奖<a href=\"https://vebaike.com/doc-view-1270.html\" target=\"_blank\">[2]</a><a href=\"http://1zhr9wp4.shshilin.com/mobile/news/show-323436.html\" target=\"_blank\">[3]</a>。\n\n从2006年起连续三年获得世界音乐大奖中国区最畅销艺人奖。2017年,周杰伦监制的爱情冒险电影《一万公里的约定》上映,并担任明星经理人的综艺节目《这!就是灌篮》的导师<a href=\"https://piaofang.maoyan.com/celebrity?id=28427\" target=\"_blank\">[4]</a><a href=\"https://baijiahao.baidu.com/s?id=1820484479709473213\" target=\"_blank\">[5]</a>。\n\n周杰伦不仅在音乐上取得了巨大成功,在商业和设计领域也有涉足。他于2007年成立了杰威尔有限公司,同年还担任了华硕笔电设计师,并入股香港文化传信集团<a href=\"https://music.apple.com/cn/playlist/%E5%91%A8%E6%9D%B0%E4%BC%A6%E5%86%99%E7%9A%84%E6%AD%8C/pl.5a3e20295f804b298e507226f335e567\" target=\"_blank\">[6]</a>。\n\n此外,周杰伦热心公益慈善事业,多次向中国内地灾区捐款捐物,如在2008年捐款援建希望小学。他还曾担任中国禁毒宣传形象大使<a href=\"https://baijiahao.baidu.com/s?id=1820484479709473213\" target=\"_blank\">[5]</a><a href=\"https://www.mingrenw.cn/ziliao/3/2970.html\" target=\"_blank\">[7]</a>。\n\n综上所述,周杰伦是华语乐坛独一无二的存在,他的音乐陪伴了许多人的青春,并且他凭借多方面的才华和成就,在全球范围内都享有极高的声誉<a href=\"https://baike.baidu.com/item/%E5%91%A8%E6%9D%B0%E4%BC%A6/129156\" target=\"_blank\">[1]</a><a href=\"https://vebaike.com/doc-view-1270.html\" target=\"_blank\">[2]</a><a href=\"http://1zhr9wp4.shshilin.com/mobile/news/show-323436.html\" target=\"_blank\">[3]</a><a href=\"https://piaofang.maoyan.com/celebrity?id=28427\" target=\"_blank\">[4]</a><a href=\"https://baijiahao.baidu.com/s?id=1820484479709473213\" target=\"_blank\">[5]</a><a href=\"https://music.apple.com/cn/playlist/%E5%91%A8%E6%9D%B0%E4%BC%A6%E5%86%99%E7%9A%84%E6%AD%8C/pl.5a3e20295f804b298e507226f335e567\" target=\"_blank\">[6]</a><a href=\"https://www.mingrenw.cn/ziliao/3/2970.html\" target=\"_blank\">[7]</a>。",
"references": [
"https://baike.baidu.com/item/%E5%91%A8%E6%9D%B0%E4%BC%A6/129156",
"https://vebaike.com/doc-view-1270.html",
"http://1zhr9wp4.shshilin.com/mobile/news/show-323436.html",
"https://piaofang.maoyan.com/celebrity?id=28427",
"https://baijiahao.baidu.com/s?id=1820484479709473213",
"https://music.apple.com/cn/playlist/%E5%91%A8%E6%9D%B0%E4%BC%A6%E5%86%99%E7%9A%84%E6%AD%8C/pl.5a3e20295f804b298e507226f335e567",
"https://www.mingrenw.cn/ziliao/3/2970.html"
]
}
<<<<<<<<<<<<<[output][final_out from end_node_0]<<<<<<<<<<<<<

更多案例参考

https://github.com/sherlockchou86/PyLangPipe/blob/main/tests/README.md

100行代码实现Chat2XX(DB/ Web/ KnowledgeBase)的更多相关文章

  1. 用< 100行代码向EPUB或Web服务器添加视频回放

    下载source - 32.3 KB 下载latest version from GituHub 介绍 在我 在关于CodeProject的前一篇文章中,我展示了一个简单的EPUB查看器 Androi ...

  2. 【转】100行代码实现最简单的基于FFMPEG+SDL的视频播放器

    FFMPEG工程浩大,可以参考的书籍又不是很多,因此很多刚学习FFMPEG的人常常感觉到无从下手.我刚接触FFMPEG的时候也感觉不知从何学起. 因此我把自己做项目过程中实现的一个非常简单的视频播放器 ...

  3. 100行代码实现现代版Router

      原文:http://www.html-js.com/article/JavaScript-version-100-lines-of-code-to-achieve-a-modern-version ...

  4. 用JavaCV改写“100行代码实现最简单的基于FFMPEG+SDL的视频播放器 ”

    FFMPEG的文档少,JavaCV的文档就更少了.从网上找到这篇100行代码实现最简单的基于FFMPEG+SDL的视频播放器.地址是http://blog.csdn.net/leixiaohua102 ...

  5. 100行代码实现最简单的基于FFMPEG+SDL的视频播放器(SDL1.x)【转】

    转自:http://blog.csdn.net/leixiaohua1020/article/details/8652605 版权声明:本文为博主原创文章,未经博主允许不得转载.   目录(?)[-] ...

  6. 100行代码让您学会JavaScript原生的Proxy设计模式

    面向对象设计里的设计模式之Proxy(代理)模式,相信很多朋友已经很熟悉了.比如我之前写过代理模式在Java中实现的两篇文章: Java代理设计模式(Proxy)的四种具体实现:静态代理和动态代理 J ...

  7. GuiLite 1.2 发布(希望通过这100+行代码来揭示:GuiLite的初始化,界面元素Layout,及消息映射的过程)

    经过开发群的长期验证,我们发现:即使代码只有5千多行,也不意味着能够轻松弄懂代码意图.痛定思痛,我们发现:虽然每个函数都很简单(平均长度约为30行),可以逐个击破:但各个函数之间如何协作,却很难说明清 ...

  8. 【编程教室】PONG - 100行代码写一个弹球游戏

    大家好,欢迎来到 Crossin的编程教室 ! 今天跟大家讲一讲:如何做游戏 游戏的主题是弹球游戏<PONG>,它是史上第一款街机游戏.因此选它作为我这个游戏开发系列的第一期主题. 游戏引 ...

  9. 100行代码实现HarmonyOS“画图”应用,eTS开发走起!

    本期我们给大家带来的是"画图"应用开发者Rick的分享,希望能给你的HarmonyOS开发之旅带来启发~ 介绍 2021年的华为开发者大会(HDC2021)上,HarmonyOS ...

  10. 100 行代码实现的 JavaScript MVC 样式框架

    介绍 使用过 JavaScript框架(如 AngularJS, Backbone 或者Ember)的人都很熟悉在UI(用户界面,前端)中mvc的工作机理.这些框架实现了MVC,使得在一个单页面中实现 ...

随机推荐

  1. dart中类详细讲解

    dart是一门面向对象的语言 dart是一门实用类和单继承的面向对象的语言 在dart中所有的对象都是类的实例. 所有的类都是Object的子类 类都是有属性和方法组成的 定义一个类 在dart中,我 ...

  2. S3基准测试工具 - Warp使用简介

    本文分享自天翼云开发者社区<S3基准测试工具 - Warp使用简介>,作者:y****n 1.Warp⼯具简介 warp 是⼀款开源的S3基准测试⼯具,开源S3项⽬minio下的⼀个⼦项⽬ ...

  3. [记录点滴]在Ionic和Android中上传Blob图片

    [记录点滴]在Ionic和Android中上传Blob图片 目录 [记录点滴]在Ionic和Android中上传Blob图片 0x00 摘要 0x01 Blob 0x02 项目简述 0x02 Ioni ...

  4. 一键部署+限免体验!盘点如何在华为云上体验DeepSeek

    本文分享自华为云社区<一键部署+限免体验!盘点如何在华为云上体验DeepSeek>,作者:华为云社区精选. 还在为DeepSeek深度思考出现"服务器繁忙"而头疼?华为 ...

  5. 【忍者算法】从生活到代码:解密链表大数相加的美妙算法|LeetCode第2题"两数相加"

    从生活到代码:解密链表大数相加的美妙算法 从超市收银说起 想象你是一个超市收银员,正在计算两位顾客的购物总和.每位顾客的商品都按照从个位到高位的顺序摆放(比如54元就是先放4元商品,再放50元商品). ...

  6. Shell - shell中的运算符

    基本语法 使用案例 基本语法 $((运算式)) $[ 运算式 ] 使用案例 # 第一种写法 a=10 b=20 c=`expr ${a} + ${b}` echo "$c" # 第 ...

  7. Task VS ValueTask

    在 C# 中,异步编程是构建响应式应用程序的基础.Task 是表示异步操作的首选类型.但是,在某些高性能场景中,与 Task 相关的开销可能会达到一个瓶颈.ValueTask 是 .NET Core ...

  8. LLM生成代码后,如何一键合并到源代码中(FastApply技术研究)

    背景 在大语言模型越来越火的今天,越来越多的应用场景开始使用大语言模型来解决实际问题.而辅助编程可以算是大语言模型应用得最成功的场景之一了.早先的时候,更多使用的还是代码补全的能力,但是现在,各家产品 ...

  9. 【Matlab】输出变量内容到xls文件

    版本: matlab 2017a 功能:将矩阵输出一个excel文件 代码: function [ statu ] = write2xls( x,filename,sheet) % 返回值: % 1 ...

  10. go declared and not used

    Go语言在代码规范中定义未使用的变量会报"declared and not used"错误 package main import "fmt" func mai ...