ChatGPT 和 Elasticsearch:使用 ChatGPT 处理 Elastic 数据的插件

这篇具有很好参考价值的文章主要介绍了ChatGPT 和 Elasticsearch:使用 ChatGPT 处理 Elastic 数据的插件。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

作者:Baha Azarmi

ChatGPT 和 Elasticsearch:使用 ChatGPT 处理 Elastic 数据的插件

你可能已经阅读过这篇关于我们将 Elasticsearch 的相关性功能与 OpenAI 问答功能相结合的博文。 该帖子的主要思想是说明如何将 Elastic 与 OpenAI 的 GPT 模型结合使用来构建响应并向用户返回上下文相关的内容。

我们构建的应用程序可以公开一个搜索端点并被任何前端服务调用。 好消息是,现在 OpenAI 已经发布了未来 ChatGPT 插件框架的私有 alpha 版。

在此博客中,你将学习如何使用 Elastic 文档实施插件并将 ChatGPT 的使用扩展到在 Elasticsearch 中索引的任何内容。

 ChatGPT 和 Elasticsearch:使用 ChatGPT 处理 Elastic 数据的插件

什么是 ChatGPT 插件?

ChatGPT 插件是为帮助模型完成其知识或执行操作而开发的扩展。

例如,我们知道 ChatGPT 从知识角度的割接时间是 2021 年 9 月,所以任何关于近期数据的问题都不会回答。 此外,任何与超出模型训练范围的过于具体的问题相关的问题都不会得到回答。

插件可以扩大可能的应用范围并增强模型的功能,但相应地,插件的输出会被模型本身增强。

ChatGPT 目前支持的官方插件列表如下。 随着越来越多的组织尝试使用 ChatGPT,你可以预期此列表会迅速扩展:

ChatGPT 和 Elasticsearch:使用 ChatGPT 处理 Elastic 数据的插件

当你浏览列表时,你会注意到用例在这里慢慢显现出来。 以 Expedia 为例,其插件正在扩展 ChatGPT 以协助规划旅行,使 ChatGPT 成为旅行规划助手。

此博客旨在为 Elastic 实现类似的目标 — 允许 ChatGPT 访问 Elastic 的当前知识库并协助你完成 Elastic 项目。

ChatGPT 和 Elasticsearch:使用 ChatGPT 处理 Elastic 数据的插件

架构

我们将对我的同事 Jeff Vestal 在第 1 部分中提供的示例代码进行轻微修改,这会对成本产生积极影响。

我们将删除对 OpenAI API 的调用,因为现在 ChatGPT 将履行从 Elasticsearch 获取内容并将其消化回用户的角色:

ChatGPT 和 Elasticsearch:使用 ChatGPT 处理 Elastic 数据的插件

1)ChatGPT 调用插件的 “/search” 端点。

        这个决定是基于插件 “rules”`description_for_human`(见下面的插件清单)。

2)插件代码创建一个发送到 Elasticsearch 的搜索请求。

3)文档正文和原始 url 返回给 Python。

4)插件将文档正文和 url 以文本形式返回给 ChatGPT。

5)ChatGPT 使用来自插件的信息来制作其响应

同样,这篇博文假设你已经设置了你的 Elastic Cloud 帐户,对你的内容进行了向量化处理,并拥有一个充满数据的 Elasticsearch 集群以供使用。 如果你还没有设置所有这些,请参阅我们之前的帖子以了解要遵循的详细步骤。

插件代码

OpenAI 为 ChatGPT 构建了一个相当易于处理的插件框架。 它部署了一个公开的服务:

  • 插件 manifest,解释插件向用户和 ChatGPT 提供的内容
  • 插件 openAPI 定义,这是使 ChatGPT 能够理解可用 API 的功能描述

插件代码可以在这里找到。

插件文件结构

下面的屏幕截图显示了结构的样子:

ChatGPT 和 Elasticsearch:使用 ChatGPT 处理 Elastic 数据的插件

  • 根据 OpenAI 最佳实践,插件清单存储在 .well-known 目录下的 ai-plugin.json 文件中。
  • 主要服务代码在 app.py 中。
  • Dockerfile 稍后将用于将插件部署到 Google Cloud Compute。
  • ChatGPT 插件商店中显示的插件徽标 (logo.ong),此处为 Elastic 徽标。
  • 插件的 OpenAI 描述。

Python代码

有关完整代码,请参阅 GitHub 存储库。 我们将只看这段代码的主要部分:

…
@app.get("/search")
…
@app.get("/logo.png")
…
@app.get("/.well-known/ai-plugin.json")
…
@app.get("/openapi.yaml")
…

我们去掉了所有细节,将主要部分保留在这里。 这里有两类 API:

1)OpenAI构建插件所需的:

  • /logo.png:获取插件标志
  • /.well-known/ai-plugin.json:获取插件清单
  • /openapi.yaml:获取插件 OpenAPI 描述

2.插件 API:

/search 是这里唯一暴露给 ChatGPT 并在 Elasticsearch 中运行搜索的

插件清单

ChatGPT 将使用插件清单来验证插件的存在(可访问)。 定义如下:

{
   "schema_version": "v1",
   "name_for_human": "ElasticGPTDoc_Plugin",
   "name_for_model": "ElasticGPTDoc_Plugin",
   "description_for_human": "Elastic Assistant, you know, for knowledge",
   "description_for_model": "Get most recent elasticsearch docs post 2021 release, anything after release 7.15",
   "auth": {
     "type": "none"
   },
   "api": {
     "type": "openapi",
     "url": "PLUGIN_HOSTNAME/openapi.yaml",
     "is_user_authenticated": false
   },
   "logo_url": "PLUGIN_HOSTNAME/logo.png",
   "contact_email": "info@elastic.co",
   "legal_info_url": "http://www.example.com/legal"
 }

这里有两点需要指出:

1)有两种说明:

  • description_for_human - 这是人们在 ChatGPT 网络用户界面中安装插件时看到的内容。
  • description_for_model - 模型了解何时使用插件的说明。

2)Python 代码中有 PLUGIN_HOSTNAME 等占位符被替换。

OpenAPI 定义

我们的代码将只向 ChatGPT 公开一个 API 端点,允许它搜索 Elastic 文档。 这是描述:

openapi: 3.0.1
info:
 title: ElasticDocGPT
 description: Retrieve information front the most recent Elastic documentation
 version: 'v1'
servers:
 - url: PLUGIN_HOSTNAME
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 documentations
     responses:
       "200":
         description: OK

对于定义文件,关键点是:

  • 我们获取 ChatGPT 提示内容并将其作为查询传递给我们的 Elasticsearch 集群。
  • Python 代码中替换了一些占位符,例如 PLUGIN_HOSTNAME。

在 Google Cloud Platform (GCP) 中部署 Elastic 插件

你可以选择一种部署方法来公开你的插件,也可以选择使用不同的云提供商。 我们在这篇博文中使用了 GCP——更具体地说是 Google Cloud Run 和 Google Cloud Build。 一是暴露和运行服务,二是持续集成。

设置

此设置假定你的 GCP 用户具有以下权限:

  • 在 Google Container Registry 中使用 Google Cloud Build 构建容器镜像
  • 在 Google Cloud Run 中部署容器

如果没有,你将需要更新 GCP IAM 页面上的权限。

我们将使用 gcloud CLI 来设置我们的环境。 你可以在此处找到安装说明。

安装后,运行以下命令进行身份验证:

gcloud auth

然后将项目标识符设置为你的 GCP 项目:

 gcloud config set project PROJECT_ID

你现在已准备好构建和部署。

构建和部署

第一步是使用 Cloud Build 构建容器镜像并将其推送到 Google Container Registry:

  gcloud builds submit --tag gcr.io/PROJECT_ID/my-python-app

将 PROJECT_ID 替换为你的 GCP 项目 ID,将 my-python-app 替换为你要为容器映像指定的名称。

导出 Python 代码创建 Elasticsearch 客户端所需的环境:

  export YOUR_CLOUD_ID=VALUE 
  export YOUR_CLOUD_PASS=VALUE 
  export YOUR_CLOUD_USER=VALUE

最后,将容器镜像部署到 Cloud Run:

  gcloud run deploy my-python-app \
  --image gcr.io/PROJECT_ID/my-python-app \
  --platform managed \
  --region us-central1 \
  --allow-unauthenticated \
  --set-env-vars  cloud_id=YOUR_CLOUD_ID,cloud_pass=YOUR_CLOUD_PASS,cloud_user=YOUR_CLOUD_USER

你应该会看到你的服务在 Cloud Run 中运行:

ChatGPT 和 Elasticsearch:使用 ChatGPT 处理 Elastic 数据的插件

请注意,你还可以激活持续集成,以便 GitHub 存储库中的任何提交都将触发重新部署。 在服务详细信息页面上,单击设置持续部署。

ChatGPT 和 Elasticsearch:使用 ChatGPT 处理 Elastic 数据的插件

在 ChatGPT 中安装插件

部署插件并具有可公开访问的端点后,即可将其安装在 ChatGPT 中。 在我们的例子中,由于它部署在 Google Cloud Run 中,你可以在此处获取 URL:

ChatGPT 和 Elasticsearch:使用 ChatGPT 处理 Elastic 数据的插件

然后在 ChatGPT 中,进入插件商店:

ChatGPT 和 Elasticsearch:使用 ChatGPT 处理 Elastic 数据的插件

选择做 “Develop your own plugin”:

ChatGPT 和 Elasticsearch:使用 ChatGPT 处理 Elastic 数据的插件

粘贴你从 Google Cloud Run 页面复制的 URL:

ChatGPT 和 Elasticsearch:使用 ChatGPT 处理 Elastic 数据的插件

确保插件已找到且有效:

ChatGPT 和 Elasticsearch:使用 ChatGPT 处理 Elastic 数据的插件

按照安装说明进行操作,直到你在列表中看到你的插件可用:

ChatGPT 和 Elasticsearch:使用 ChatGPT 处理 Elastic 数据的插件

让我们测试一下我们的插件!

好的,现在是最好的部分! 请记住,当你的提示超出其知识范围时,ChatGPT 会决定委托。 为确保发生这种情况,只需提出类似于此示例的问题:

ChatGPT 和 Elasticsearch:使用 ChatGPT 处理 Elastic 数据的插件

通过本博客中提供的步骤,你可以创建自己的插件并将其部署在云提供商或你自己的主机上。 这使你可以开始探索增强 ChatGPT 的知识和功能,用专业和专有知识增强本已令人惊叹的工具。

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

以下是你可能会感兴趣的其他一些博客:

  • ChatGPT 和 Elasticsearch:OpenAI 遇见私有数据
  • 使用 OpenTelemetry 和 Elastic 监控 OpenAI API 和 GPT 模型
  • 使用 ChatGPT 探索安全的未来

在这篇博文中,我们可能使用了由其各自所有者拥有和运营的第三方生成人工智能工具。 Elastic 对第三方工具没有任何控制权,我们对其内容、操作或使用不承担任何责任,也不对你使用此类工具可能造成的任何损失或损害承担任何责任。 使用带有个人、敏感或机密信息的 AI 工具时请谨慎行事。 你提交的任何数据都可能用于人工智能训练或其他目的。 无法保证你提供的信息将得到安全保护或保密。 在使用之前,你应该熟悉任何生成人工智能工具的隐私惯例和使用条款。

Elastic、Elasticsearch 和相关标记是 Elasticsearch N.V. 在美国和其他国家/地区的商标、徽标或注册商标。 所有其他公司和产品名称均为其各自所有者的商标、徽标或注册商标。文章来源地址https://www.toymoban.com/news/detail-457308.html

到了这里,关于ChatGPT 和 Elasticsearch:使用 ChatGPT 处理 Elastic 数据的插件的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Elasticsearch:如何通过 3 个简单步骤从 Elastic 数据中删除个人身份信息

    作者:Peter Titov 对于任何组织来说,个人身份信息 (Personally Identifiable information, PII) 合规性都是一个日益严峻的挑战。 无论你是在电子商务、银行、医疗保健还是其他数据敏感的领域,PII 都可能会在无意中被捕获和存储。 拥有结构化日志,可以轻松快速识别、删除和保护敏

    2024年02月13日
    浏览(50)
  • Elasticsearch:使用 Docker-Compose 启动单节点 Elastic Stack

    首先必须指出的是,在我之前的文章 “Elasticsearch:使用 Docker compose 来一键部署 Elastic Stack 8.x”,我有详述根据官方文档如何创建一个带有三个节点的安全 Elasticsearch 集群。本文基于著名的 Deviatony 存储库和 Elastic 的官方说明。 建议先通读这些说明,如果你已经可以根据这些

    2024年02月05日
    浏览(61)
  • Elasticsearch:如何使用自定义的证书安装 Elastic Stack 8.x

    在我之前的文章 “如何在 Linux,MacOS 及 Windows 上进行安装 Elasticsearch”,我详细描述了如何在各个平台中安装 Elastic Stack 8.x。在其中的文章中,我们大多采用默认的证书来安装 Elasticsearch。在今天的文章中,我们用自己创建的证书一步一步地来安装 Elastic Stack 8.x。我们可以参

    2024年02月08日
    浏览(34)
  • Observability:如何使用 Elastic Agents 把定制的日志摄入到 Elasticsearch 中

    在我之前的文章 “Observability:使用 Elastic Agent 来摄入日志及指标 - Elastic Stack 8.0”,我详细地描述了如何安装 Elasticsearch,Stack 及 Elastic Agents 来采集系统日志及指标。很多开发者可能会有疑问,在我们的实际使用中,我们更多的可能是需要采集定制的应用日志,而不是系统日

    2024年02月02日
    浏览(61)
  • Elasticsearch:使用 ELSER 释放语义搜索的力量:Elastic Learned Sparse EncoderR

    在信息过载的时代,根据上下文含义和用户意图而不是精确的匹配来查找相关搜索结果已成为一项重大挑战。 传统的搜索引擎通常无法理解用户查询的语义上下文,从而导致相关性较低的结果。 在现代向量搜索之前,我们有 “传统”的 词袋(Bags of word - BOW)方法。

    2024年02月15日
    浏览(52)
  • Observability:如何把 Elastic Agent 采集的数据输入到 Logstash 并最终写入到 Elasticsearch

    在之前的文章 “安装独立的 Elastic Agents 并采集数据 - Elastic Stack 8.0”,我们详述了如何使用 No Fleet Server 来把数据写入到 Elasticsearch 中。在今天的文章中,我们来详述如下使用 Elastic Agents 在独立(standalone)模式下来采集数据并把数据最终通过 Logstash 来写入到 Elasticsearch 中去

    2024年02月11日
    浏览(51)
  • 数据库ChatGPT插件来了,SQL使用体验进一步起飞

    基于 ChatGPT API 和 OpenMLDB 数据库实现的 openmldb-chatgpt-plugin 项目开源了,作为人类迄今为止最强AI模型之一(GPT4未开放API),集成了 ChatGPT 模型的数据库有多好用,下面将带大家体验一下。 实现原理是在ChatGPT API基础上做了一定的 Prompt engineering ,没有用 fine tune ,在标准SQL场景

    2023年04月16日
    浏览(60)
  • 使用Elasticsearch处理大量数据,如何翻页查询

    当使用Elasticsearch处理大量数据时,从第一页直接跳转到第100页进行查询确实是一个挑战,因为需要计算跳过的记录数并有效地获取目标页的数据。以下是一些建议来实现这种跳页查询: 使用 from 和 size 参数 : Elasticsearch提供了 from 和 size 参数来实现分页。 from 参数指定了要

    2024年04月15日
    浏览(61)
  • Elasticsearch:NLP 和 Elastic:入门

    自然语言处理 ( N atural L anguage P rocessing - NLP) 是人工智能 (AI) 的一个分支,专注于尽可能接近人类解释的理解人类语言,将计算语言学与统计、机器学习和深度学习模型相结合。 AI - Artificial Inteligence 人工智能 ML - Machine Learning 机器学习 DL - Deep Learning  深度学习 NLP - Naturual L

    2024年02月05日
    浏览(47)
  • Elasticsearch8重置elastic用户密码

    elastic可以说是es中预留的一个用户名,在按照官网yum安装方法安装启动后通过下面的方式测试是否正确运行 因为安装完成后自动开启了安全访问,所以必须要加 --cacert参数指定安装自动生成的认证文件,协议必须是https,但是结果返回了: 很纳闷,不知道为啥,既然是无法认

    2024年02月12日
    浏览(37)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包