虹科分享 | 用Redis为LangChain定制AI代理——OpenGPTs

文章速览:

  1. OpenGPTs简介
  2. Redis在OpenGPTs中的作用
  3. 在本地使用OpenGPTs
  4. 在云端使用OpenGPTs
  5. Redis与LangChain赋能创新

OpenAI最近推出了OpenAI GPTs——一个构建定制化AI代理的无代码“应用商店”,随后LangChain开发了类似的开源工具OpenGPTs。OpenGPTs是一款低代码的开源框架,专用于构建定制化的人工智能代理。因为Redis具有高速和稳定性的优点,所以LangChain选择了Redis来作为OpenGPTs的默认向量数据库。

如何利用OpenGPTs和Redis构建一个智能AI代理?

LangChain创始人Harrison Chase表示:“我们在OpenGPTs中使用Redis存储所有长期内容,包括将其用作用于检索的向量存储和用于存储消息与代理配置的数据库。Redis将所有这些功能集成在一个数据库中,这非常有吸引力。”

一、OpenGPTs简介

通过几个配置步骤,我们可以用OpenGPTs构建一个精通Redis的机器人,名为“RedisGuru”。

以下是我们选择的LLM、系统消息和工具的示例,包括DuckDuckGo搜索、维基百科搜索,以及通过Kay.ai访问的公共新闻稿。

配置并部署RedisGuru后,可以测试代理如何运行:

此外,我们还可以查询有关Redis数据结构的问题。可以看到,RedisGuru记住了我的名字:

我们构建的这个RedisGuru代理只是一个应用示例。你也可以构建各类应用,比如电子邮件文案编辑器、智能研究助理、代码审查员等。

二、Redis在OpenGPTs中的作用

在这个OpenGPTs演示的背后,Redis提供了一个强大且高性能的数据层,是 OpenGPTs 技术栈不可或缺的一部分。

Redis可以持久化用户聊天会话(线程)、代理配置和嵌入式文档块,并用于向量数据库检索。

  • 用户聊天会话:为了在对话中维持“状态”,Redis为OpenGPTs提供了用户与AI代理间的持久聊天线程。这些聊天会话也被输入到LLM中,以提供当前对话状态的上下文信息。
  • 代理配置:为了支持多租户代理架构,Redis为OpenGPTs提供了一个远程的、低延迟的存储层。当应用程序启动时,它从Redis读取指定的代理设置,然后开始处理请求。
  • 向量数据库用于RAG:为了让对话基于实际情况,OpenGPTs允许我们上传“知识”源,以便LLM将其与生成的答案结合。通过一种称为检索增强生成(RAG)的过程,OpenGPTs将上传的文档存储在Redis中,并提供实时向量搜索,以检索与LLM相关的上下文。

这些功能是Redis平台的一部分,通过我们的LangChain + Redis集成融入到应用程序中。

Redis与LangChain的OpenGPTs集成带来了更高的灵活性、可扩展性以及实时处理和搜索能力。处理多样化数据结构的能力是Redis成为OpenGPTs记忆功能的首选解决方案。

三、在本地使用OpenGPTs

如果想亲自体验OpenGPTs,你可以在项目的README文件中找到更详细的指南。以下是一个快速概述:

1、安装后端依赖:克隆项目仓库,然后导航到后端目录并安装必要的Python依赖项。

cd backend

pip install -r requirements.txt

2、连接Redis和OpenAI:OpenGPTs使用Redis作为LLM的记忆库,使用OpenAI进行LLM的生成和嵌入。设置环境变量REDIS_URL和OPENAI_API_KEY,以连接到您的Redis实例和OpenAI账户。

export OPENAI_API_KEY=your-openai-api-key

export REDIS_URL=redis://your-redis-url

3、启动后端服务器:在本地机器上运行LangChain服务器,提供应用程序服务。

langchain serve --port=8100

4、启动前端:在前端目录中,使用yarn启动开发服务器。

cd frontend

yarn

yarn dev

5、在浏览器中打开http://localhost:5173/,与您的本地OpenGPTs部署进行交互。

四、在云端使用OpenGPTs

如果希望在没有本地设置的情况下使用OpenGPTs,可以尝试在谷歌云上部署。另外,你还可以访问由LangChain、LangServe和Redis支持的托管预览部署。这种部署展示了OpenGPTs的可定制性和易用性。

五、RedisLangChain赋能创新

Redis企业版作为一款企业级的低延迟向量数据库,在支持生成性AI项目方面具有独特优势。其不仅提供向量搜索,还提供多功能数据结构,能有效满足LLMs的应用状态需求。这个强大的平台提供了优异的可扩展性和性能,Redis借此成为生成式AI领域的重要工具。

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

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

相关文章

OpenCV——多分辨率LBP的计算方法

目录 一、算法原理1、原理概述2、参考文献 二、代码实现三、结果展示 OpenCV——多分辨率LBP的计算方法由CSDN点云侠原创,爬虫自重。如果你不是在点云侠的博客中看到该文章,那么此处便是不要脸的爬虫。 一、算法原理 1、原理概述 基本LBP算子虽然在早期…

Golang条件编译 | 获取系统的磁盘空间内存占用demo | gopsutil/disk库(跨平台方案)

文章目录 一、Golang条件编译1. 构建标签( Build tags)2. 文件后缀(File suffixes) 二、GO golang 获取磁盘空间 条件编译思路 三、【推荐】使用github.com/shirou/gopsutil/disk这个库,如何获取机器下不同磁盘分区的内容 一、Golang条件编译…

Vue.js设计与实现阅读-2

Vue.js设计与实现阅读-2 1、前言2、框架设计的核心要素2、1 提升用户体验2、2 控制代码体积2、3 Tree-Shaking2、4 特性开关2、5 错误处理 1、前言 上一篇我们了解到了 命令式和声明式的区别,前者关注过程,后者关注结果了解了虚拟dom存在的意义&#x…

Ubuntu22.04 netplan 网络配置

Ubuntu18.04修改IP地址的方法(error in network definition ......is missing /prefixlength)_error in network definition: expected sequence-CSDN博客 Ubuntu20.04 单网卡配置多ip_ubuntu单网卡多ip-CSDN博客 ubuntu配置多网段IP-CSDN博客 Netplan使用(高版…

把应用转为LINUX服务失败,两个奇怪错误

应用经常崩溃,于是就想转为服务,让系统帮忙重启。这个事情当然信心满满,咱之前做过,最近也刚刚实验过。想法是好的,现实是残酷的,遇到两个问题无解: 访问内存失败 经过定位,确认是…

CMake入门教程【实战篇】Ninja环境搭建与加速项目构建

文章目录 1.什么是Ninja?2.为什么选择Ninja?3.Ninja的特点4.如何使用Ninja5.vscode+msvc+cmake+ninja示例命令行操作示例vscode1.什么是Ninja? Ninja是一个专注于速度的小型构建系统。与其他构建系统不同,Ninja采用了一种低级方法,旨在实现快速的增量构建。它的设计理念是…

笔记软件内怎么查看文章字数 笔记查看字数的操作步骤

在记录生活点滴、工作要务时,你是否曾像我一样,为了知道写了多少字而犯愁?尤其是在需要精确控制字数时,那种焦虑感更是如影随形。 记得有一次,我为了一个项目报告苦思冥想,好不容易写了个初稿,…

Java--ListUtil工具类,实现将一个大列表,拆分成指定长度的子列表

文章目录 前言实现代码执行结果 前言 在项目中有时会出现列表很大,无法一次性批量操作,我们需要将列表分成指定大小的几个子列表,一份一份进行操作,本文提供这样的工具类实现这个需求。 实现代码 以下为代码实现: …

源码编译FFmpeg4.3

FreeSWITCH的mod_av模块目前(1.10.11)暂不支持FFmpeg4.4(或者更高版本),但4.3就没问题 最近试了试源码编译FFmpeg4.3,记录如下(系统centos7.9): git clone GitHub - Bt…

Rust语言的Hello, World! 程序解析

Rust是一门现代系统编程语言,注重内存安全和并发性。让我们从一个经典的 “Hello, World!” 程序开始,逐步解析它的每个部分。 fn main() {println!("Hello, world!"); }1. fn main() { ... } 在Rust中,程序的执行从 main 函数开…

锂电池的电压和容量怎么计算?

锂电池组是由电池单体(电芯)通过串并联来组成 1、串联(S)增加电压,容量不变。 例如:1个磷酸铁锂电池的额定电压为3.2V,容量为4000mAH,将10个磷酸铁锂电芯串联,电池组电压:3.2v*10&a…

目标检测正负样本分配策略----ATSS

一、ATSS 参考:https://blog.csdn.net/xuzz_498100208/article/details/110355048 https://zhuanlan.zhihu.com/p/411659547 作者提出了一种自适应的选取正样本的方法,具体方法如下: 1.对于每个输出的检测层,选计算每个anchor的中…

Spring Boot中加@Async和不加@Async有什么区别?设置核心线程数、设置最大线程数、设置队列容量是什么意思?直接在yml中配置线程池

在 Spring 中,Async 注解用于将方法标记为异步执行的方法。当使用 Async 注解时,该方法将在单独的线程中执行,而不会阻塞当前线程。这使得方法可以在后台执行,而不会影响主线程的执行。 在您提供的代码示例中,a1() 和…

java-面向对象

什么是类?什么是对象? - 现实生活中是由很多很多对象组成的,基于对象抽出了类 - 对象:软件中真实存在的单个个体/东西 类:类别/类型,代表一类个体 - 类是对象的模子,对象是类的具体的实例 - 类中…

【gpt4 8k 免费使用】Coze 是一款用来开发新一代 AI Chat Bot 的应用编辑平台

Coze 快速开始 | Coze Welcome to Coze Coze 是什么? Coze 是一款用来开发新一代 AI Chat Bot 的应用编辑平台,无论你是否有编程基础,都可以通过这个平台来快速创建各种类型的 Chat Bot,并将其发布到各类社交平台和通讯软件上。…

【C++】类和对象之匿名对象友元内部类

目录 一、匿名对象 1、基础格式 2、使用场景 二、友元 1、友元函数 2、友元类 三、内部类 1、概念 2、特性 四、拷贝对象时的一些编译器优化 1、函数传参 2、对象返回 一、匿名对象 1、基础格式 【注意】 🟢匿名对象的声明周期只有当前行,进入…

[计算机提升] 创建FTP共享

4.7 创建FTP共享 4.7.1 FTP介绍 在Windows系统中,FTP共享是一种用于在网络上进行文件传输的标准协议。它可以让用户通过FTP客户端程序访问并下载或上传文件,实现文件共享。 FTP共享的用途非常广泛,例如可以让多个用户共享文件、进行文件备份…

超越5大最先进的文本到视频系统!MagicVideo-V2:多阶段高保真视频生成框架(字节)

本项工作介绍了MagicVideo-V2,将文本到图像模型、视频运动生成器、参考图像embedding模块和帧内插模块集成到端到端的视频生成流程中。由于这些架构设计的好处,MagicVideo-V2能够生成具有极高保真度和流畅度的美观高分辨率视频。通过大规模用户评估&…

【设计模式-6】建造者模式的实现与框架中的应用

建造者模式又被成为生成器模式,是一种使用频率比较低,相对复杂的创建型模式,在很多源码框架中可以看到建造者的使用场景,稍后我们会在本文末尾展示几个框架的使用案例。  建造者模式所构造的对象通常是比较复杂而且庞大的&#x…