什么是 ChatGPT 插件?

ChatGPT 插件是開(kāi)發(fā)用來(lái)輔助模型完成知識(shí)學(xué)習(xí)或操作執(zhí)行的擴(kuò)展。

例如,我們知道,ChatGPT 的知識(shí)僅限于 2021 年 9 月之前,因此任何關(guān)于近期數(shù)據(jù)的問(wèn)題都不會(huì)得到回答。此外,超出模型訓(xùn)練范圍、過(guò)于具體的問(wèn)題也不會(huì)得到回答。

插件可以拓寬可能的應(yīng)用范圍,并增強(qiáng)模型的功能,但反過(guò)來(lái),插件的輸出也會(huì)因模型本身而增強(qiáng)。

ChatGPT 目前支持的官方插件列表如下所示。隨著越來(lái)越多的組織試用 ChatGPT,這個(gè)列表很快會(huì)變得越來(lái)越長(zhǎng):

瀏覽列表會(huì)發(fā)現(xiàn),用例正在慢慢增加。以 Expedia 為例,它的插件將 ChatGPT 擴(kuò)展為可協(xié)助制定旅行計(jì)劃,使 ChatGPT 成為旅行計(jì)劃助手。

這篇博文旨在幫助 Elastic 實(shí)現(xiàn)類(lèi)似的目標(biāo),允許 ChatGPT 訪問(wèn) Elastic 最新的知識(shí)庫(kù),協(xié)助您完成 Elastic 項(xiàng)目。

架構(gòu)

我們將對(duì)我的同事?Jeff Vestal?在第 1 部分中提供的示例代碼稍作修改,這將對(duì)成本產(chǎn)生積極影響。

我們將取消對(duì) OpenAI API 的調(diào)用,因?yàn)楝F(xiàn)在 ChatGPT 將履行從 Elasticsearch 提取內(nèi)容并在理解后返回給用戶的職責(zé):

1.ChatGPT 調(diào)用插件的 /search 終端。

2.插件代碼創(chuàng)建一個(gè)發(fā)送到 Elasticsearch 的搜索請(qǐng)求。

3.將文檔正文和原始 URL 返回給 Python。

4.該插件將文檔正文和 URL 以文本形式返回給 ChatGPT。

5.ChatGPT 使用來(lái)自插件的信息來(lái)創(chuàng)建響應(yīng)。

重申一下,本文假定您已經(jīng)設(shè)置好了?Elastic Cloud?帳戶,對(duì)內(nèi)容進(jìn)行了矢量化,并擁有一個(gè)隨時(shí)可用的裝滿數(shù)據(jù)的 Elasticsearch 集群。如果您還沒(méi)有完成這些設(shè)置,請(qǐng)參閱我們之前的文章,了解詳細(xì)的操作步驟。

插件代碼

OpenAI 為 ChatGPT 構(gòu)建了一個(gè)相當(dāng)簡(jiǎn)單易用的插件框架。它部署了一個(gè)公開(kāi)以下內(nèi)容的服務(wù):

可在此處找到插件代碼。

插件文件結(jié)構(gòu)

下面的屏幕截圖顯示了插件結(jié)構(gòu):

Python 代碼

要獲取完整的代碼,請(qǐng)參考?GitHub 存儲(chǔ)庫(kù)。我們只看這段代碼的主要部分:


@app.get("/search")

@app.get("/logo.png")

@app.get("/.well-known/ai-plugin.json")

@app.get("/openapi.yaml")

我們把所有細(xì)節(jié)都去掉了,只保留了主要部分。這里有兩類(lèi) API:

1.OpenAI 構(gòu)建插件所需的 API:

2.插件 API:

插件清單

插件清單供 ChatGPT 用來(lái)驗(yàn)證插件是否存在(可訪問(wèn))。插件清單定義如下:

{
"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"
}

此處需要說(shuō)明幾點(diǎn): 

1.共有兩個(gè)描述: 

2.有一些占位符(如 PLUGIN_HOSTNAME)會(huì)在 Python 代碼中被替換。

OpenAPI 定義

我們的代碼將只向 ChatGPT 公開(kāi)一個(gè) 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

對(duì)于定義文件,重點(diǎn)是:

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

您可以選擇一種部署方法來(lái)公開(kāi)插件,也可以選擇使用不同的云服務(wù)提供商。在本文中,我們使用的是 GCP,更具體地說(shuō)是 Google Cloud Run 和 Google Cloud Build。前者用于公開(kāi)和運(yùn)行服務(wù),后者用于持續(xù)集成。

設(shè)置

此設(shè)置假定您的 GCP 用戶擁有以下權(quán)限:

如果該用戶沒(méi)有這些權(quán)限,您需要在?GCP IAM 頁(yè)面上更新權(quán)限。?

我們將使用 gcloud CLI 來(lái)設(shè)置環(huán)境。您可以在此處找到安裝說(shuō)明。

安裝完成后,運(yùn)行以下命令進(jìn)行身份驗(yàn)證:

  gcloud auth

然后將項(xiàng)目標(biāo)識(shí)符設(shè)置為 GCP 項(xiàng)目:

  gcloud config set project PROJECT_ID

現(xiàn)在就可以開(kāi)始構(gòu)建和部署了。

構(gòu)建和部署

第一步是使用 Cloud Build 構(gòu)建容器映像,并將映像推送到 Google 容器注冊(cè)表:

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

將 PROJECT_ID 替換為您的 GCP 項(xiàng)目 ID,將 my-python-app 替換為您要為容器映像指定的名稱。

導(dǎo)出 Python 代碼創(chuàng)建 Elasticsearch 客戶端所需的環(huán)境:

  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

您應(yīng)該能看到您的服務(wù)在 Cloud Run 中運(yùn)行:

Cloud Run 服務(wù)

請(qǐng)注意,您還可以激活持續(xù)集成,這樣 GitHub 存儲(chǔ)庫(kù)中的任何提交都會(huì)觸發(fā)重新部署。在服務(wù)詳細(xì)信息頁(yè)面上,單擊設(shè)置持續(xù)部署

在 ChatGPT 中安裝插件

當(dāng)插件部署完成并擁有可公開(kāi)訪問(wèn)的終端后,就可以在 ChatGPT 中安裝它。在本例中,由于插件部署在 Google Cloud Run 中,您可以在此處獲取 URL:

Elastic 文檔 GPT

然后在 ChatGPT 中,進(jìn)入插件商店:

插件 Alpha 版

選擇“開(kāi)發(fā)自己的插件”:

開(kāi)發(fā)自己的插件

粘貼您從 Google Cloud Run 頁(yè)面復(fù)制的 URL:

輸入網(wǎng)站域名

確??烧业讲寮也寮行В?/p>

找到插件

按照安裝說(shuō)明操作,直到在列表中看到您的插件:

插件 Alpha 版 Elastic

我們來(lái)測(cè)試一下插件!

好了,現(xiàn)在重頭戲來(lái)了!請(qǐng)記住,當(dāng)您的提示超出 ChatGPT 的知識(shí)范疇時(shí),它會(huì)決定進(jìn)行委派。要確保這一點(diǎn),只需提出一個(gè)與下面的示例類(lèi)似的問(wèn)題:

最新版 Elastic 的功能亮點(diǎn)

按照本文提供的步驟操作,您可以創(chuàng)建自己的插件,并將它部署到云服務(wù)提供商或您自己的主機(jī)上。這樣,您就可以開(kāi)始探索如何增強(qiáng) ChatGPT 的知識(shí)和功能,利用專業(yè)知識(shí)和專有知識(shí)增強(qiáng)這個(gè)已經(jīng)非常出色的工具。

以下是您可能感興趣的其他AI大模型:

在本博文中,我們可能使用了第三方 生成式 AI 工具,這些工具由其各自所有者擁有和運(yùn)營(yíng)。Elastic 對(duì)第三方工具沒(méi)有任何控制權(quán),對(duì)其內(nèi)容、操作或使用不承擔(dān)任何責(zé)任或義務(wù),對(duì)您使用此類(lèi)工具可能造成的任何損失或損害也不承擔(dān)任何責(zé)任或義務(wù)。在 AI 工具中使用個(gè)人、敏感或機(jī)密信息時(shí),請(qǐng)務(wù)必謹(jǐn)慎。您提交的任何數(shù)據(jù)都可能用于 AI 訓(xùn)練或其他目的。Elastic 不保證您所提供信息的安全性或保密性。在使用任何生成式 AI 工具之前,您應(yīng)自行熟悉隱私慣例和使用條款。

原文鏈接:ChatGPT 和 Elasticsearch:可以將 ChatGPT 與 Elastic 數(shù)據(jù)結(jié)合使用的插件 | Elastic Blog

上一篇:

使用 LangChain 和 Elasticsearch 實(shí)現(xiàn)隱私至上的 AI 搜索

下一篇:

加速生成式AI體驗(yàn)
#你可能也喜歡這些API文章!

我們有何不同?

API服務(wù)商零注冊(cè)

多API并行試用

數(shù)據(jù)驅(qū)動(dòng)選型,提升決策效率

查看全部API→
??

熱門(mén)場(chǎng)景實(shí)測(cè),選對(duì)API

#AI文本生成大模型API

對(duì)比大模型API的內(nèi)容創(chuàng)意新穎性、情感共鳴力、商業(yè)轉(zhuǎn)化潛力

25個(gè)渠道
一鍵對(duì)比試用API 限時(shí)免費(fèi)

#AI深度推理大模型API

對(duì)比大模型API的邏輯推理準(zhǔn)確性、分析深度、可視化建議合理性

10個(gè)渠道
一鍵對(duì)比試用API 限時(shí)免費(fèi)