如何利用开源工具搭建AI大模型底座

开源社区是技术发展的一个重要部分,对于AI大模型来说,也是如此。

我们在这篇文章中来尝试通过开源工具来构建AI大模型的底座,涉及到的技术包括:

  • Langchain
  • OpenAI
  • Flowise
  • LocalAI
  • Llama

使用Langchain构建第一个对话应用

如果你使用过ChatGPT,你应该知道它是一个基于大语言模型的应用程序,可以与人类进行多轮对话。

为了让大语言模型能够与人类友好的多轮对话,我们需要引入两个额外组件:

  1. ConversationBufferMemory,它帮助LLM记录我们的对话过程。
  2. ConversationChain,它帮我们管理整个绘画过程,通过调用BufferMemory中的对话信息,它可以让无状态的LLM了解我们的对话上下文。

我们可以使用下面的代码来通过Langchain实现一个简易版的ChatGPT:

from langchain.llms import OpenAI
from langchain.chains import ConversationChain
from langchain.memory import ConversationBufferMemoryimport os
os.environ["OPENAI_API_KEY"] = '...'llm = OpenAI(temperature=0)
mem = ConversationBufferMemory()# Here it is by default set to "AI"
conversation = ConversationChain(llm=llm, verbose=True, memory=mem)conversation.predict(input="Hi there!")

通过Flowise零代码搭建LLM应用平台

Flowise官网:https://flowiseai.com/

Flowise is a low-code/no-code drag & drop tool with the aim to make it easy for people to visualize and build LLM apps.

我们可以在Windows/Mac/Linux中安装Flowise,以Linux为例,安装Flowise步骤如下:

  1. 安装NodeJS
  2. 安装Docker和Docker compose
  3. 运行下面的脚本安装和启动Flowise
    npm install -g flowise
    npx flowise start

我们可以通过http://{server}:3000 来访问Flowise,截图如下:
在这里插入图片描述

通过Flowise Portal,我们可以创建新的Chatflow,在打开的flow页面,我们可以通过拖拽的方式,来构建flow:
在这里插入图片描述
例如,我们上面提到的通过Langchain来构建简易ChatGPT应用,创建出来的flow如下截图:

在这里插入图片描述

我们可以通过页面右上角的对话按钮,对我们的flow进行测试:
在这里插入图片描述

在LLM应用中引入领域知识库

在实际应用中,我们可以为模型增加外部记忆,在提示词中引入一些领域知识,来帮助模型提升回答质量。

这种方式的具体步骤如下:

  1. 对输入文档进行切片,生成语义向量(Embedding),存入向量数据库作为外部记忆。
  2. 根据所提的问题,检索向量数据库,获取文档中的内容片段。
  3. 把文档片段和所提的问题一并组织成提示词,提交给大语言模型,让其理解文档内容,针对问题生成恰当的答案。

为了实现这个应用,我们需要引入以下组件:

  1. Docx File Loader,负责加载外部输入的文档。
  2. Recursive Character Text Splitter,用来对文档内容进行断句切片。
  3. OpenAI Embeddings,负责将断句后的内容切片映射成高维Embedding。
  4. In-Memory Vector Store,负责将Embedding存入数据库中,供LLM作为外部记忆。
  5. Conversational Retrieval QA Chain,负责根据问题,获得外部知识,在LLM思考生成答案后返回给用户。

使用Flowise构建上述的应用,截图如下:

在这里插入图片描述

使用LocalAI做可用LLM应用

我们前面做的LLM应用都依赖于OpenAI API,会有一些风险,我们可以考虑构建本地大模型。

我们可以基于LocalAI开源应用来实现这一点。

下面是搭建过程:

$ git clone https://github.com/go-skynet/LocalAI
$ cd LocalAI

我们使用一个小模型进行部署。

$ wget https://gpt4all.io/models/ggml-gpt4all-j.bin -O models/ggml-gpt4all-j
$ cp -rf prompt-templates/ggml-gpt4all-j.tmpl models/

然后我们可以加载models并将其封装为API服务。

$ docker-compose pull
$ docker-compose up -d

接下来是获取model列表进行验证。

$ curl http://localhost:8080/v1/models
{"object":"list","data":[{"id":"ggml-gpt4all-j","object":"model"}]}

这样我们可以修改Flowise,使用本地模型代替OpenAI。
在这里插入图片描述

使用Llama2构建LLM应用

我们还可以使用Llama2来构建LLM应用,这在应用许可上更加友好。

我们可以下载Llama2模型文件。

$ wget -c "https://huggingface.co/TheBloke/Llama-2-7B-chat-GGML/resolve/main/llama-2-7b-chat.ggmlv3.q4_0.bin" ./models

然后重启LocalAI,查看Llama2是否被正常部署。

$ curl -v  http://localhost:8080/v1/models
{"object":"list","data":[{"id":"llama-2-7b-chat.ggmlv3.q4_0.bin","object":"model"}]}

我们可以返回Flowise flow,将模型名字修改为llama-2-7b-chat.ggmlv3.q4_0.bin,这样我们就可以使用Llama2来回答我们的问题。

再进一步,我们还可以尝试使用AutoGPT或者AgentGPT来构建更加负责的LLM应用,帮助我们完成更有挑战性的事情。

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

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

相关文章

udig下载、安装及汉化,生成geoserver图层样式sld文件

uDig是一款开源免费的桌面地理信息系统框架软件。uDig汉化版主要采用RCP技术构建,内置的多专业的水文工具,拥有复杂专业的分析能力,既可以作为独立程序运行,还可以作为插件使用。 uDig是一个 open source (EPL and BSD) 桌面应用程…

java线程状态

图形说明: Thread.State源码注释: public enum State {/*** 新生状态:线程对象创建,但是还未start()*/NEW,/*** 线程处于可运行状态,但是这个可运行状态并不代表线程一定在虚拟机中执行。* 需要等待从操作系统获取到资源(比如处理器时间片…

数据艺术:精通数据可视化的关键步骤

数据可视化是将复杂数据转化为易于理解的图表和图形的过程,帮助我们发现趋势、关联和模式。同时数据可视化也是数字孪生的基础,本文小编带大家用最简单的话语为大家讲解怎么制作一个数据可视化大屏,接下来跟随小编的思路走起来~ 1.数据收集和…

Sublime Text汉化,主打简单明了

在Sublime中设置中文的步骤如下: 1.打开Sublime Text,使用快捷键ShiftCtrlP(MacOS下cmdShiftP),弹出查找栏。 2.在搜索框中输入关键字"install",出现下拉选项,点击选择其中的"P…

音频——I2S 标准模式(二)

I2S 基本概念飞利浦(I2S)标准模式左(MSB)对齐标准模式右(LSB)对齐标准模式DSP 模式TDM 模式 文章目录 I2S format时序图逻辑分析仪抓包 I2S format 飞利浦 (I2S) 标准模式 数据在跟随 LRCLK 传输的 BCLK 的第二个上升沿时传输 MSB,其他位一直到 LSB 按顺序传传输依…

【IEEE会议】第五届信息与计算机前沿技术国际学术会议(ICFTIC 2023)

第五届信息与计算机前沿技术国际学术会议(ICFTIC 2023) 2023 5th International Conference on Frontiers Technology of Information and Computer 第五届信息与计算机前沿技术国际学术会议(ICFTIC 2023)将在中国青岛举行, 会期是2023年11月17-19日,…

C#-抽象类与接口

文章目录 一、抽象类和接口总结总结补充说明主要区别 二、抽象类2.1 抽象类概述与声明2.2 抽象方法2.3 抽象类与抽象方法的使用 三、接口3.1 接口概述概述特征声明示例 3.2 接口的实现和继承说明示例 3.3 显式接口成员实现说明注意示例 一、抽象类和接口总结 总结 抽象类和接…

Vue框架--理解MVVM

我们知道,MVVM是Model-View-ViewModel的简写。它本质上就是MVC的改进版。我们看看MVVM的模型架构,如下所示: 架构理解与实例

差分数组/前缀和

文章目录 1094. 拼车1109. 航班预定统计303. 区域和检索 - 数组不可变560. 和为K的子数组523. 连续的子数组的和 1094. 拼车 class Solution {public boolean carPooling(int[][] trips, int capacity) {int[] diff new int[1001]; // 记录每个站点改变的人数,比如…

R语言和Python用泊松过程扩展:霍克斯过程Hawkes Processes分析比特币交易数据订单到达自激过程时间序列...

全文下载链接:http://tecdat.cn/?p25880 本文描述了一个模型,该模型解释了交易的聚集到达,并展示了如何将其应用于比特币交易数据。这是很有趣的,原因很多。例如,对于交易来说,能够预测在短期内是否有更多…

融合MMEdu和Transformers技术的视障出行智能辅助系统(上海浦育AI未来夏令营结题论文)

融合MMEdu和Transformers技术的视障出行智能辅助系统 摘要 面对社会生活中众多视障者对出行的需求,视障出行智能辅助系统融合MMEdu和Transformers技术为视障者提供实时路况分析。本系统利用图像分类、目标检测和深度估计等软件技术,对摄像头实时获取的每…

【C++】异常处理详解

本篇文章重点将会对C中的异常的相关处理操作进行详解。希望本篇文章的内容会对你有所帮助。 目录 一、C语言的异常处理 二、C异常 2、1 异常概念 2、2 异常的使用 2、3 异常类 2、4 异常的重新抛出 三、异常的安全与规范 3、1 异常的安全 3、2 异常的规范 四、异常的优缺点 &am…