ChatGPT 和 Elasticsearch:使用 Elastic 数据创建自定义 GPT

news2024/12/23 14:42:50

作者:Sandra Gonzales

ChatGPT Plus 订阅者现在有机会创建他们自己的定制版 ChatGPT,称为 GPT,这替代了之前博客文章中讨论的插件。基于本系列的第一部分的基础 —— 我们深入探讨了在 Elastic Cloud 中设置 Elasticsearch 数据和创建向量嵌入 —— 这篇博客将指导你完成开发一个定制的 GPT 的过程,该 GPT 旨在与你的 Elasticsearch 数据无缝交互。

定制 GPT

与插件系统相比,GPT 标志着一项重大进步,为用户提供了一种更简便的方式来创建 ChatGPT 的定制版本。通过直观的用户界面,这种增强简化了定制过程,通常无需编码技能就可以应用于广泛的应用程序。除了基本的个性化定制之外,那些希望将 ChatGPT 与外部数据集成的用户可以通过自定义动作来实现这一点。用户可以选择在 GPT 商店分享这些定制的 GPT,将它们保留为个人使用,或者只在公司的 ChatGPT 团队计划中与你的公司工作空间共享。

如何实现 ChatGPT 与 Elasticsearch 的通信

  1. ChatGPT 通过 Cloud Run 服务的 /search 端点发起调用。
  2. 服务将此输入用于创建 Elasticsearch 搜索请求。
  3. 查询响应与文档主体和 URL 一起返回给服务。
  4. 服务以文本形式将文档主体和 URL 返回给定制的 ChatGPT。
  5. 然后,此响应以文本形式中继回给 GPT,准备进行解释。

再次强调,此博客假设你已设置了 Elastic Cloud 账户,对内容进行了向量化处理,并拥有填充了数据的 Elasticsearch 集群,可供使用。如果你还没有完成所有设置,请参阅我们之前的帖子,了解详细的步骤。

代码

为了使我们的定制 GPT 得以实现,我们创建了一个服务,作为 ChatGPT 和我们的 Elasticsearch 数据之间的中间件。这个服务的核心是一个 Python 应用程序,它设置了一个 Quart 应用程序,并定义了 /search 端点。此外,我们使用一个Dockerfile来便于在Cloud Run上部署应用程序。

Python 应用程序连接到我们的 Elastic Cloud 集群,执行一个结合了 BM25 和 kNN 查询的混合搜索,并返回相关的文档主体和 URL。这使得我们的定制 GPT 能够实时访问和利用 Elasticsearch 数据。

完整的代码请参考 GitHub 存储库。这包括了用于 Cloud Run 部署的 Python 应用程序和 Dockerfile。

部署服务

关于使用 Google Cloud Platform(GCP)部署服务的详细步骤,请参考我们之前关于 ChatGPT 插件的博客文章中的部署部分。在那里,你将找到一份逐步指南,指导你在 GCP 上设置和部署你的服务。

创建 GPT

登录你的 ChatGPT Plus 账户后,通过你的个人资料导航到 “My GPTs”(我的 GPT)找到 “Create a GPT”(创建 GPT)链接。或者,你的对话上方的 “Explore GPTs”(探索GPT)部分也可以进入 GPT 商店,在那里你可以找到创建 GPT 的链接。

配置 GPT

GPT 编辑器提供了两种配置你的 GPT 的方式:通过对话提示进行引导设置的 “Create”(创建)标签,以及用于直接配置输入的 “Configure”(配置)标签。为了配置 Elastic Docs Assistant,我们将主要使用手动配置,以精确定义我们的 GPT 的设置。

为你的 GPT 指定一个名称,例如 “Elastic Docs Assistant”,并添加一个简短的描述,突出其功能。

在 Instructions(指令栏) 下,定义你的 GPT 的主要角色,并为其提供展示信息的指令:

You are an Elasticsearch Docs Assistant.  Your function is to assist users with docs on Elastic products by querying the defined /search action. Answer the user's query using only the information from the /search action response. If the response contains no results, respond "I'm unable to answer the question based on the information I have from Elastic Docs." and nothing else.  Be sure to include the URL at the bottom of each response.

切换到 “Create”(创建)标签,让 ChatGPT 生成对话开始提示和一个 logo。或许我会上传我自己的 logo。

我们不会上传任何知识文件,因为我们使用的所有数据都在 Elasticsearch 中。相反,我们将定义一个动作。

定义一个动作

这是我们将数据连接到 Elasticsearch 的地方。点击 “Create a new action”(创建新动作)将带我们进入动作编辑器。

首先,我在我的环境中设置了一个自定义头部名称,用于定义我在端点服务中使用的 API 密钥。

然后我复制我的 OpenAPI 规范:

openapi: 3.0.1
info:
  title: ElasticDocs_CustomGPT 
  description: Retrieve information from the most recent Elastic documentation
  version: 'v1'
servers:
  - url: YOUR_SERVICE_URL
paths:
  /search:
    get:
      operationId: search
      summary: retrieves the document matching the query
      parameters:
      - in: query
        name: query
        schema:
            type: string
        description: use to filter relevant part of the elasticsearch documentation 
      responses:
        "200":
          description: OK

输入这些信息后,我们的模式将被自动验证,并显示一个搜索动作,任何错误都会显示为红色。如果一切都看起来不错,这就是预览窗格特别有用的地方。你不仅可以测试动作以确认其功能,而且助手还提供有关请求的调试信息。这对于根据服务的响应来完善你的 GPT 的回答非常有帮助。

通过配置 GPT 指令以动态修改其动作请求,可以实现更进一步的定制,例如在用户输入发送到服务之前重写用户输入,或者根据用户输入中的某些条件添加请求查询参数。这消除了传统编码逻辑的需要,前提是你的端点被设计为支持这些修改。

发布 GPT

点击预览窗格上方右上角的 “Publish”(发布),即可转到你新创建的 GPT。

展望未来

通过利用 Elasticsearch 进行动态的、数据驱动的对话,探索定制 GPT 的过程仅仅揭示了可能性的一角。通过利用 ChatGPT 的界面,并将其连接到外部数据,我们为定制化和具有上下文丰富性的交互引入了新的维度,使用了最先进的 AI 模型。

你今天就可以尝试本博客中讨论的所有功能!通过注册免费的 Elastic Cloud 试用版开始吧。

在本博客文章中,我们可能使用了第三方生成AI工具,这些工具由各自的所有者拥有和操作。Elastic 对这些第三方工具没有任何控制权,我们对其内容、操作或使用不承担任何责任或义务,也不对你使用此类工具可能引起的任何损失或损害负责。在使用含有个人、敏感或机密信息的 AI 工具时,请小心谨慎。你提交的任何数据可能会用于 AI 训练或其他目的。无法保证你提供的信息将被保密或安全。在使用任何生成 AI 工具之前,你应该熟悉其隐私实践和使用条款。

Elastic、Elasticsearch 及相关标志是 Elasticsearch N.V. 在美国及其他国家的商标、标志或注册商标。所有其他公司和产品名称都是其各自所有者的商标、标志或注册商标。

准备在你的应用中构建 RAG 吗?想尝试不同的 LLMs 与向量数据库? 查看我们在 Github 上的 LangChain、Cohere 等样本笔记本,并加入即将开始的Elasticsearch 工程师培训!

原文:ChatGPT and Elasticsearch: Creating Custom GPTs with Elastic Data — Elastic Search Labs

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

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

相关文章

个人网站制作 Part 19 添加在线聊天支持 | Web开发项目

文章目录 👩‍💻 基础Web开发练手项目系列:个人网站制作🚀 添加在线聊天支持🔨使用在线聊天工具🔧步骤 1: 选择在线聊天工具🔧步骤 2: 注册Tawk.to账户🔧步骤 3: 获取嵌入代码 &…

申请OV SSL证书的好处

什么是OV SSL证书: OV SSL证书也叫组织验证型SSL证书,是众多SSL证书当中最受广大用户欢迎的一种类型。因为它不仅需要验证域名的所有权,还需要对企业的相关身份信息进行审核,确保企业是一个真实存在的合法实体。除了这些&#xf…

Web前端 Javascript笔记3

1、垃圾回收机制 内存中的生命周期 1、内存分配 2、内存使用(读写) 3、内存回收,使用完毕之后,垃圾回收器完成 内存泄漏:该回收的,由于某些未知因素,未释放,叫做内存泄漏 栈&#xf…

【系统分析师】需求工程☆

文章目录 0、需求工程概述1、需求的分类2、需求获取3、需求分析3.1 结构化需求分析-SA3.1.1DFD- 数据流图3.1.2 STD-状态转换图3.1.3 ER图-实体联系图 3.2 面向对象需求分析-OOA3.2.1 工具-UML图3.2.2 UML分类3.2.3 用例图 ☆3.2.4 类图 / 对象图 ☆3.2.5 顺序图3.2.6 活动图3.…

prompt 工程整理(未完、持续更新)

工作期间会将阅读的论文、一些个人的理解整理到个人的文档中,久而久之就积累了不少“个人”能够看懂的脉络和提纲,于是近几日准备将这部分略显杂乱的内容重新进行梳理。论文部分以我个人的理解对其做了一些分类,并附上一些简短的理解&#xf…

平面上最近点对

OJ:P1429 平面最近点对(加强版) - 洛谷 | 计算机科学教育新生态 (luogu.com.cn) 非常详细的博客:平面上最近点对 - 洛谷专栏 (luogu.com.cn) 更正式的文章:平面最近点对 - OI Wiki 这也是我们算法课的一个实验。不过我做的不好…

Eigen库从入门到放弃(2. Getting Started)

Eigen的头文件定义了多种类型,但是对于简单的来说,使用MatrixXd就足够了,MatrixXd表示任意尺寸的矩阵,但是要注意数据类型是double的。Eigen/Dense的头文件定义了所有MatrixXd和相关类型的成员函数。所有头文件中定义的函数都是在…

康耐视visionpro-CogFindCircleTool操作工具详细说明

◆CogFindCircleTool]功能说明: 通过用多个卡尺找到多个点来拟合所要找的圆 ◆CogFindCircleTool操作说明: ①.打开工具栏,双击或点击鼠标拖拽添加CogFindCircleTool工具 ②.添加输入图像,右键“链接到”或以连线拖拽的方式选择相应输入源 ③预期的圆弧:设置预期圆弧的…

python-numpy(3)-线性代数

一、方程求解 参考资料 对于Ax b 这种方程: np.linalg.inv(A).dot(B)np.linalg.solve(A,b) 1.1 求解多元一次方程一个直观的例子 # AXB # X A^(-1)*B A np.array([[7, 3, 0, 1], [0, 1, 0, -1], [1, 0, 6, -3], [1, 1, -1, -1]]) B np.array([8, 6, -3, 1]…

Unity上接入手柄,手柄控制游戏物体移动

1、unity软件上安装system input 组件。菜单栏【window】-【Packag Manager】打开如下界面,查找Input System,并且安装。 2、安装成功后插入手柄到windows上,打开菜单栏上【window】--【Analysis】--【Input Debuger】 进入Input Debug界面,可以看到手柄设备能被Unity识别。…

Flutter - iOS 开发者速成篇

首先 安装FLutter开发环境:M1 Flutter SDK的安装和环境配置 然后了解Flutter和Dart 开源电子书:Flutter实战 将第一章初略看一下,你就大概了解一下Flutter和Dart这门语言 开始学习Dart语言 作为有iOS经验的兄弟们,学习Dart最快…

快速上手Vue

目录 概念 创建实例 插值表达式 Vue响应式特性 概念 Vue是一个用于 构建用户界面 的 渐进式 框架 构建用户界面&#xff1a;基于数据渲染出用户看到的页面 渐进式&#xff1a;Vue相关生态&#xff1a;声明式渲染<组件系统<客户端路由<大规模状态管理<构建工具 V…

云服务器安装Mysql、MariaDB、Redis、tomcat

前置工作 进入根目录 cd / 进入/user/local文件夹 上传压缩包 rz 压缩包 Mysql 1.下载并安装MySQL官方的 Yum Repository wget http://dev.mysql.com/get/mysql-community-release-el7-5.noarch.rpm rpm -ivh mysql-community-release-el7-5.noarch.rpm yum install mysql-…

<计算机网络自顶向下> TCPUDP套接字编程

应用实现&#xff1a;源端的应用进程交换报文实现应用协议&#xff0c;来实现各种各样的网络应用&#xff08;dash&#xff0c;email, etc&#xff09; 而应用层通信不可以直接通信&#xff0c;需要借助下层的服务才可以进行&#xff0c;通过层间接口交给下层&#xff0c;通过…

Linux(Ubuntu) 查看并删除使用【dpkg】安装的软件【mysql 8.3安装失败---原因调查(Depends: libc6 (>= 2.35) but 2.31-0ubuntu9.1)】

目录 ■前言 ■查看安装的软件 ■删除安装的软件 正常删除&#xff08;dpkg -r xxxxName&#xff09; 问题解决&#xff1a;use --purge to remove them too ■其他调查信息 命令 图片1 图片2 图片3 图片4 图片5&#xff08;和镜像库有关&#xff09; 图片6 ■前…

在MOS管栅极前加100Ω电阻,有啥妙用

我们经常会听到在MOSFET栅极前增加一个电阻。那么&#xff0c;为什么要增加这个电阻&#xff0c;进一步地来讲&#xff0c;为什么要增加一个100Ω电阻&#xff1f; 在MOSFET的栅极前增加一个电阻&#xff1f; MOS管是电压型控制器件&#xff0c;一般情况下MOS管的导通&#x…

【学习笔记十五】批次管理和容量管理

一、批次管理 1.配置 SAP EWM 特定参数 激活仓库的批次管理 2.ERP端物料需要启用批次管理 3.EWM物料需要启用批次管理 一般是ERP启用批次管理&#xff0c;相关的配置也会传输到EWM系统 4.建立批次主数据 5.创建采购订单并创建内向交货单&#xff0c;维护批次 6.维护产品主数…

Ubuntu 22.04 开机自动挂载webdav - 设置开机自启脚本 - 解决坚果云webdav无写入权限

效果图&#xff1a; 前言&#xff1a; 1&#xff09;亲测/etc/fstab的办法没有成功自动挂载&#xff0c;换成传统的rc.local可以解决&#xff1b; 2&#xff09;rc-local.service是系统自带的一个开机自启服务&#xff0c;但是在 ubuntu 20.04 上&#xff0c;该服务默认没有开…

NLP_知识图谱_图谱问答实战

文章目录 图谱问答NERac自动机实体链接实体消歧 多跳问答neo4j_graph执行流程结构图![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/1577c1d9c9e342b3acbf79824aae980f.png)company_data![在这里插入图片描述](https://img-blog.csdnimg.cn/direct/20f567d877c743b…

深度学习图像处理基础工具——opencv 实战信用卡数字识别

任务 信用卡数字识别 穿插之前学的知识点 形态学操作 模板匹配 等 总体流程与方法 1.有一个模板 2 用轮廓检测把模板中数字拿出来 外接矩形&#xff08;模板和输入图像的大小要一致 &#xff09;3 一系列预处理操作 问题的解决思路 1.分析准备&#xff1a;准备模板&#…