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

news2024/11/17 15:54:03

文章速览:

  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.coloradmin.cn/o/1376341.html

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

相关文章

配电柜监测:别再人工巡检!一文讲透!

随着现代社会对电力的依赖性不断增强,各行各业对电力系统的可靠性和安全性提出了更高的要求。 配电柜作为电力系统的核心组成部分,其监控与管理显得尤为重要。为了满足企业对电力系统监测的需求,配电柜监控系统应运而生。 客户案例 制造企业…

cad的模型怎么打散导入3d---模大狮模型网

将CAD中的模型打散并导入3D建模软件,需要以下步骤: 将CAD中的模型进行分组或分层:在CAD中,将模型按照不同的组或层进行分组或分层。这样可以方便地控制每个部分的显示和隐藏,在导入3D建模软件后,也可以更方…

iOS rootless无根越狱解决方案

据游戏工委数据统计,2023年国内游戏市场实际销售收入与用户规模双双创下新高,游戏普遍采用多端并发方式,成为收入增长的主因之一。 中国市场实际销售收入及增长率丨数据来源:游戏工委 多端互通既是机遇,也是挑战。从游…

MySQL中datetime和timestamp的区别

datetime和timestamp的区别 相同点: 存储格式相同 datetime和timestamp两者的时间格式都是YYYY-MM-DD HH:MM:SS 不同点: 存储范围不同. datetime的范围是1000-01-01到9999-12-31. 而timestamp是从1970-01-01到2038-01-19, 即后者的时间范围很小. 与时区关系. datetime是存储…

tiktok_浅谈hook ios之发包x-ss-stub

frida-trace ios手机一部,需要越狱的电脑一台idacrackerXI 目标app: ipa 包,点击前往 密码:8urs 协议分析起始从抓包开始,个人习惯 一般安卓逆向可以直接搜关键词,但是ios 都在 Mach-O binary (reverse…

vue3+ts+vite项目从0 搭建,配置安装router/pinia/element-plus/scss等

一、安装vite环境 官网:https://cn.vitejs.dev/guide/why.html npm init vite1.选择vue 2.选择typescipt 3.创建成功 默认项目结构如下 4.安装项目依赖 npm install 5.启动项目 npm run dev二。安装配置scss 1.运行安装scss npm install -D sass sass-loa…

搜维尔科技:【简报】元宇宙数字人赛道,《全息影像技术应用》!

期待着看展的主角来到今天要参观的全息影像展,平时就喜欢看展的她对于所谓的全息影像非常好奇,于是她带着期待的心情进入展内。进入展内的主角看到的是与之前完全不同的画展,每幅画看起来就像真的一样,充满好奇的她在展览的各处游…

如何在Docker本地搭建流程图绘制神器draw.io并实现公网远程访问

推荐 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击跳转到网站 前言 提到流程图,大家第一时间可能会想到Visio,不可否认,VIsio确实是功能强大,但是软…

PyPDF2 3.0.0更新,一些函数被弃用,需要重新写

1.PdfFileWriter is deprecated and was removed in PyPDF2 3.0.0. Use PdfWriter instead. 这错误表明你正在使用的 PyPDF2 版本中已经移除了 PdfFileWriter,并在版本 3.0.0 中被替代为 PdfWriter。这是因为在 PyPDF2 的更新中,一些 API 被重新组织和更…

目标检测脚本之mmpose json转yolo txt格式

目标检测脚本之mmpose json转yolo txt格式 一、需求分析 在使用yolopose及yolov8-pose 网络进行人体姿态检测任务时,有时需要标注一些特定场景的中的人型目标数据,用来扩充训练集,提升自己训练模型的效果。因为单纯的人工标注耗时费力&…

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

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

0111qt

实现闹钟,并播报懒虫...~ daytest.pro: QT core gui texttospeechgreaterThan(QT_MAJOR_VERSION, 4): QT widgetsCONFIG c11# The following define makes your compiler emit warnings if you use # any Qt feature that has been marked deprecated (th…

堆叠线:实现高效连接和数据传输的利器

堆叠线是一种常见的网络连接解决方案,主要应用于数据中心和企业网络等领域。本文将介绍堆叠线的定义、分类、作用以及与光纤线的区别,同时提供详细的堆叠线接法和相关问题的解答。 第一部分:堆叠线是什么 堆叠线是一种用于连接网络设备的高…

mysql日志那些事

一、Mysql常见日志 MySQL有不同类型的日志文件,用来存储不同类型的日志,分为二进制日志、错误日志、通用查询日志、慢查询日志和中继日志,使用这些日志可以查看MySQL内部发生的事情。 二、慢查询日志(slow query log&#xff0…

windows安装RabbitMq,修改数据保存位置

1、先安装Erlang, Erlang和RabbitMQ有版本对应关系。 官网RabbitMQ与Erlang版本对应RabbitMQ Erlang Version Requirements — RabbitMQ 2、安装RabbitMQ。 3、修改数据保存地址。找到安装目录下的sbin文件夹,找到rabbitmq-env.bat,编辑文件…

初识Hadoop-概述与关键技术

一.大数据概述 1.什么是大数据 高速发展的信息时代,新一轮科技革命和变革正在加速推进,技术创新日益成为重塑经济发展模式和促进经济增长的重要驱动力量,而“大数据”无疑是核心推动力。 那么,什么是“大数据”呢&#xff1…

力扣hot100 二叉树的最近公共祖先 递归

Problem: 236. 二叉树的最近公共祖先 👨‍🏫 参考大佬题解 💖 图解 时间复杂度, 示例: O ( n ) O(n) O(n) 空间复杂度, 示例: O ( n ) O(n) O(n) 💖 AC code /*** Definition for a binary tree node.*…

在Java中正确使用Optional

Optional类是在Java 8中引入的,用于解决NullPointerException的问题。 java.util.Optional类是一个泛型类型的类,只包含一个类型为T的值。其目的是提供对可能为null的类型T的引用对象的更安全的替代方案。但是,只有在正确使用的情况下&#…

Discourse 访问统计数据的不一致

Discourse 如果使用网站跟踪程序,例如 Google Analytics 得到的网站访问数据和真实的网站访问数据是不一致的。 通常 Google Analytics 提供的数据更少,或者说是少很多。 这是因为 Discourse 的数据调用使用的是 API,在你的页面载入后&…

Java医院综合绩效考核系统源代码

医院绩效考核管理系统是采用B/S架构模式设计、使用JAVA语言开发、后台使用MySql数据库进行管理的一整套计算机应用软件。系统和his系统进行对接,按照设定周期,从his系统获取医院科室和医生、护士、其他人员工作量,对没有录入信息化系统的工作…