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

开始使用 ChatGPT 和 Elasticsearch 创建自定义 GPT。了解如何创建与您的 Elasticsearch 数据无缝交互的自定义 GPT。

ChatGPT Plus 订阅者现在有机会创建他们自己的 ChatGPT 定制版本,称为 GPT,取代了我们之前博客文章中讨论的插件。本博客建立在我们 上一篇博客文章(我们深入研究了在 Elastic Cloud 中设置 Elasticsearch 数据和创建向量嵌入)的基础上,将指导您完成开发一个旨在与您的 Elasticsearch 数据无缝交互的自定义 GPT 的过程。

自定义 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 帐户后,通过您的个人资料导航到“我的 GPT”,以找到“创建 GPT”链接。或者,您对话上方的“探索 GPT”部分也会链接到 GPT 商店,您可以在其中找到创建 GPT 的链接。

配置自定义 GPT

GPT 编辑器提供了两种配置 GPT 的方法:“创建”选项卡用于通过对话提示进行引导式设置,“配置”选项卡用于直接配置输入。为了配置 Elastic Docs 助手,我们将主要使用手动配置来精确定义 GPT 的设置。

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

在说明下,定义 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.

让我们切换到“创建”选项卡,并要求 ChatGPT 生成对话开头和徽标。也许我会上传我自己的徽标。

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

定义操作

在这里,我们将我们的数据连接到 Elasticsearch。点击“创建新操作”将带您进入操作编辑器。

首先,我定义我在端点服务中使用的 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

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

自定义 GPT 的下一步是什么

利用 Elasticsearch 进行动态、数据驱动的对话的自定义 GPT 的探索才刚刚开始揭示其可能的潜力。通过利用 ChatGPT 界面的强大功能并将其连接到外部数据,我们引入了定制的新维度,以及与最先进的 AI 模型进行上下文丰富的交互。

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

在本博文中,我们可能使用了第三方生成式 AI 工具,这些工具归其各自所有者所有并由其运营。Elastic 对第三方工具没有任何控制权,并且对它们的内容、运营或使用不承担任何责任或义务,也不对您使用此类工具可能产生的任何损失或损害负责。使用 AI 工具处理个人、敏感或机密信息时,请务必谨慎。您提交的任何数据都可能用于 AI 训练或其他目的。我们无法保证您提供的信息将被保密或安全。在使用任何生成式 AI 工具之前,您应该熟悉其隐私惯例和使用条款。

Elastic、Elasticsearch 及其相关标记是 Elasticsearch N.V. 在美国和其他国家/地区的商标、徽标或注册商标。所有其他公司和产品名称均为其各自所有者的商标、徽标或注册商标。

Elasticsearch 与行业领先的生成式 AI 工具和提供商具有原生集成。查看我们关于超越 RAG 基础知识的网络研讨会 超越 RAG 基础知识,或关于构建生产就绪型应用程序的网络研讨会 Elastic 向量数据库

要为您的用例构建最佳搜索解决方案,请开始 免费云试用 或立即在您的 本地机器 上试用 Elastic。

准备好构建最先进的搜索体验了吗?

足够高级的搜索并非一人之力就能实现。Elasticsearch 由数据科学家、机器学习运维工程师、软件工程师等等同样热爱搜索的人员提供支持,他们与您一样对搜索充满热情。让我们联系起来,共同构建神奇的搜索体验,帮助您获得所需的结果。

亲自试用