
制定藍圖:什么樣的API策略能夠確保未來的成功?
ChatGPT 插件是開發(fā)用來輔助模型完成知識學(xué)習(xí)或操作執(zhí)行的擴展。
例如,我們知道,ChatGPT 的知識僅限于 2021 年 9 月之前,因此任何關(guān)于近期數(shù)據(jù)的問題都不會得到回答。此外,超出模型訓(xùn)練范圍、過于具體的問題也不會得到回答。
插件可以拓寬可能的應(yīng)用范圍,并增強模型的功能,但反過來,插件的輸出也會因模型本身而增強。
ChatGPT 目前支持的官方插件列表如下所示。隨著越來越多的組織試用 ChatGPT,這個列表很快會變得越來越長:
瀏覽列表會發(fā)現(xiàn),用例正在慢慢增加。以 Expedia 為例,它的插件將 ChatGPT 擴展為可協(xié)助制定旅行計劃,使 ChatGPT 成為旅行計劃助手。
這篇博文旨在幫助 Elastic 實現(xiàn)類似的目標(biāo),允許 ChatGPT 訪問 Elastic 最新的知識庫,協(xié)助您完成 Elastic 項目。
我們將對我的同事?Jeff Vestal?在第 1 部分中提供的示例代碼稍作修改,這將對成本產(chǎn)生積極影響。
我們將取消對 OpenAI API 的調(diào)用,因為現(xiàn)在 ChatGPT 將履行從 Elasticsearch 提取內(nèi)容并在理解后返回給用戶的職責(zé):
1.ChatGPT 調(diào)用插件的 /search
終端。
description_for_human
(請參閱下面的 plugin-manifest)。2.插件代碼創(chuàng)建一個發(fā)送到 Elasticsearch 的搜索請求。
3.將文檔正文和原始 URL 返回給 Python。
4.該插件將文檔正文和 URL 以文本形式返回給 ChatGPT。
5.ChatGPT 使用來自插件的信息來創(chuàng)建響應(yīng)。
重申一下,本文假定您已經(jīng)設(shè)置好了?Elastic Cloud?帳戶,對內(nèi)容進行了矢量化,并擁有一個隨時可用的裝滿數(shù)據(jù)的 Elasticsearch 集群。如果您還沒有完成這些設(shè)置,請參閱我們之前的文章,了解詳細的操作步驟。
OpenAI 為 ChatGPT 構(gòu)建了一個相當(dāng)簡單易用的插件框架。它部署了一個公開以下內(nèi)容的服務(wù):
可在此處找到插件代碼。
下面的屏幕截圖顯示了插件結(jié)構(gòu):
要獲取完整的代碼,請參考?GitHub 存儲庫。我們只看這段代碼的主要部分:
…
@app.get("/search")
…
@app.get("/logo.png")
…
@app.get("/.well-known/ai-plugin.json")
…
@app.get("/openapi.yaml")
…
我們把所有細節(jié)都去掉了,只保留了主要部分。這里有兩類 API:
1.OpenAI 構(gòu)建插件所需的 API:
2.插件 API:
插件清單供 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.共有兩個描述:
2.有一些占位符(如 PLUGIN_HOSTNAME)會在 Python 代碼中被替換。
我們的代碼將只向 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
對于定義文件,重點是:
您可以選擇一種部署方法來公開插件,也可以選擇使用不同的云服務(wù)提供商。在本文中,我們使用的是 GCP,更具體地說是 Google Cloud Run 和 Google Cloud Build。前者用于公開和運行服務(wù),后者用于持續(xù)集成。
此設(shè)置假定您的 GCP 用戶擁有以下權(quán)限:
如果該用戶沒有這些權(quán)限,您需要在?GCP IAM 頁面上更新權(quán)限。?
我們將使用 gcloud CLI 來設(shè)置環(huán)境。您可以在此處找到安裝說明。
安裝完成后,運行以下命令進行身份驗證:
gcloud auth
然后將項目標(biāo)識符設(shè)置為 GCP 項目:
gcloud config set project PROJECT_ID
現(xiàn)在就可以開始構(gòu)建和部署了。
第一步是使用 Cloud Build 構(gòu)建容器映像,并將映像推送到 Google 容器注冊表:
gcloud builds submit --tag gcr.io/PROJECT_ID/my-python-app
將 PROJECT_ID 替換為您的 GCP 項目 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 中運行:
請注意,您還可以激活持續(xù)集成,這樣 GitHub 存儲庫中的任何提交都會觸發(fā)重新部署。在服務(wù)詳細信息頁面上,單擊設(shè)置持續(xù)部署。
當(dāng)插件部署完成并擁有可公開訪問的終端后,就可以在 ChatGPT 中安裝它。在本例中,由于插件部署在 Google Cloud Run 中,您可以在此處獲取 URL:
然后在 ChatGPT 中,進入插件商店:
選擇“開發(fā)自己的插件”:
粘貼您從 Google Cloud Run 頁面復(fù)制的 URL:
確保可找到插件且插件有效:
按照安裝說明操作,直到在列表中看到您的插件:
好了,現(xiàn)在重頭戲來了!請記住,當(dāng)您的提示超出 ChatGPT 的知識范疇時,它會決定進行委派。要確保這一點,只需提出一個與下面的示例類似的問題:
按照本文提供的步驟操作,您可以創(chuàng)建自己的插件,并將它部署到云服務(wù)提供商或您自己的主機上。這樣,您就可以開始探索如何增強 ChatGPT 的知識和功能,利用專業(yè)知識和專有知識增強這個已經(jīng)非常出色的工具。
以下是您可能感興趣的其他AI大模型:
在本博文中,我們可能使用了第三方 生成式 AI 工具,這些工具由其各自所有者擁有和運營。Elastic 對第三方工具沒有任何控制權(quán),對其內(nèi)容、操作或使用不承擔(dān)任何責(zé)任或義務(wù),對您使用此類工具可能造成的任何損失或損害也不承擔(dān)任何責(zé)任或義務(wù)。在 AI 工具中使用個人、敏感或機密信息時,請務(wù)必謹(jǐn)慎。您提交的任何數(shù)據(jù)都可能用于 AI 訓(xùn)練或其他目的。Elastic 不保證您所提供信息的安全性或保密性。在使用任何生成式 AI 工具之前,您應(yīng)自行熟悉隱私慣例和使用條款。
原文鏈接:ChatGPT 和 Elasticsearch:可以將 ChatGPT 與 Elastic 數(shù)據(jù)結(jié)合使用的插件 | Elastic Blog
制定藍圖:什么樣的API策略能夠確保未來的成功?
詳解API:應(yīng)用程序編程接口終極指南
精通API規(guī)范:構(gòu)建明確指導(dǎo)和預(yù)期的指南
API 優(yōu)先方法如何徹底改變軟件開發(fā)
掌握良好的 API 設(shè)計原則:是什么、為什么和怎么辦
API-first產(chǎn)品經(jīng)理的熱門 API 工具和 API 指標(biāo)
ChatGPT生態(tài)系統(tǒng)的安全漏洞導(dǎo)致第三方網(wǎng)站賬戶和敏感數(shù)據(jù)泄露
想要系統(tǒng)了解Agentic Workflow,看這25篇論文就夠了
生成式 AI 在電商領(lǐng)域究竟有多牛,這款產(chǎn)品給出了回答