自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

如何使用ChatGPT插件工作

譯文 精選
人工智能
OpenAI剛剛宣布了ChatGPT插件——一種讓ChatGPT在Web上執(zhí)行操作的方法。這不僅意味著ChatGPT可以訪問互聯(lián)網(wǎng)并瀏覽最新內(nèi)容和新聞,還可以代替我們執(zhí)行一些操作,比如購買雜貨、預(yù)訂機(jī)票等等。

?譯者 | 崔皓

審校 | 重樓

OpenAI剛剛宣布了ChatGPT插件——一種讓ChatGPT在Web上執(zhí)行操作的方法。這不僅意味著ChatGPT可以訪問互聯(lián)網(wǎng)并瀏覽最新內(nèi)容和新聞,還可以代替我們執(zhí)行一些操作,比如購買雜貨、預(yù)訂機(jī)票等等。

實(shí)現(xiàn)過程非常簡單:?

插件提供者使用OpenAPI標(biāo)準(zhǔn)編寫API規(guī)范。這是一個(gè)已經(jīng)存在了一段時(shí)間的標(biāo)準(zhǔn),是類似Swagger API文檔工具的支持者。?

然后,將這個(gè)規(guī)范編譯成提示,向ChatGPT解釋它如何使用API來增強(qiáng)答案。想象一下詳細(xì)的提示,包括每個(gè)可用端點(diǎn)的描述。?

最后,用戶提出新的問題。如果ChatGPT需要從API中獲取信息,它將在回答之前進(jìn)行請(qǐng)求并添加到上下文中。?

盡管在撰寫本文時(shí),這個(gè)過程已經(jīng)在官方OpenAI文檔中有所記錄,但訪問受到了限制。由于還沒有獲取訪問權(quán)限,我決定根據(jù)以上內(nèi)容實(shí)現(xiàn)自己的機(jī)制。因此,下面是我嘗試實(shí)現(xiàn)自己的ChatGPT插件機(jī)制。?

鄭重聲明:我也只能通過公開信息了解ChatGPT插件,并沒有其他渠道了解額外信息。本文的演示是為了說明實(shí)現(xiàn)的概念,并不能代表實(shí)現(xiàn)之后的樣子。?

選擇API規(guī)范?

第一步是了解如何指定API。OpenAI提供了一些樣本API規(guī)范,因此我決定使用相同的輸入來實(shí)現(xiàn)自己的解決方案,并為單個(gè)端點(diǎn)編寫了一個(gè)簡單規(guī)范。?

我使用DummyJSON,一個(gè)專門用于測(cè)試的簡單API,特別是“獲取所有代辦事項(xiàng)”的端點(diǎn)。我編寫了以下YAML文件作為規(guī)范。?

openapi: 3.0.1
info:
title: TODO Plugin
description: A plugin that allows the user to create and manage a TODO list using ChatGPT.
version: 'v1'
servers:
- url: https://dummyjson.com/todos
paths:
/todos:
get:
operationId: getTodos
summary: Get the list of todos
parameters:
- in: query
name: limit
schema:
type: integer
description: Number of todos to return
- in: query
name: skip
schema:
type: integer
description: Number of todos to skip from the beginning of the list
responses:
"200":
description: OK
content:
application/json:
schema:
$ref: '#/components/schemas/getTodosResponse'
components:
schemas:
getTodosResponse:
type: object
properties:
todos:
type: array
items:
type: object
properties:
id:
type: int
todo:
type: string
completed:
type: bool
userId:
type: string
description: The list of todos.

如上面配置文件所示,一個(gè)端點(diǎn)有兩個(gè)參數(shù): "limit" 和 "skip"。?

現(xiàn)在,我需要將上面的?

經(jīng)過反復(fù)討論,最終得到了以下結(jié)果:?

You are a virtual assistant that helps users with their questions by relying on
information from HTTP APIs. When the user asks a question, you should determine whether
you need to fetch information from the API to properly answer it. If so, you will
request the user to provide all the parameters you need, and then ask them to run the
request for you. When you are ready to ask for a request, you should specify it using
the following syntax:

<http_request>{
"url": "<request URL>",
"method": "<method>",
"body": {<json request body>},
"headers": {<json request headers>}
}</http_request>

Replace in all the necessary values the user provides during the interaction, and do not
use placeholders. The user will then provide the response body, which you may use to
formulate your answer. You should not respond with code, but rather provide an answer
directly.

The following APIs are available to you:

---
<OpenAPI Specification goes here>

會(huì)告訴ChatGPT以特定的語法回應(yīng),并告訴它用戶將提供響應(yīng)。這是因?yàn)锳I模型不會(huì)執(zhí)行任何API調(diào)用——它必須將該操作委托給不同的系統(tǒng)。由于我們無法訪問ChatGPT的內(nèi)部組件,于是要求它將HTTP請(qǐng)求委托給用戶。只要隱藏對(duì)話轉(zhuǎn)換對(duì)最終用戶不可見就行了用戶甚至感知不到HTTP請(qǐng)求,就萬事大吉了。?

編排?

ChatGPT是一個(gè)通過REST API公開的AI模型。向OpenAI模型發(fā)出請(qǐng)求只是端到端聊天機(jī)器人體驗(yàn)中的一步。這意味著可以設(shè)置模型傳遞的信息,以及向最終用戶顯示的信息。?

為了使用ChatGPT實(shí)現(xiàn)虛擬助手的功能,我使用了Bot Framework Composer,這是一種基于UI的工具,允許我們構(gòu)建對(duì)話體驗(yàn)并將其發(fā)布到不同的渠道。以下是高級(jí)別的解決方案架構(gòu):?

我用Bot Framework Composer構(gòu)建了這個(gè)虛擬助手,因?yàn)樗梢钥焖俨渴鸬蕉鄠€(gè)終端用戶渠道,且只需要很少的代碼。如果您想要復(fù)制這個(gè)解決方案,您可能還需要考慮使用Power Virtual Agents,尤其是在生產(chǎn)中使用。?

以下是對(duì)話流程的構(gòu)建方式:

1. 用戶提問

2.ChatGPT用預(yù)格式化的消息進(jìn)行回復(fù):

2.<http_request>{
"url": "https://dummyjson.com/todos?limit=5",
"method": "GET",
"body": "",
"headers": {}
}</http_request>

3.Azure Bot檢測(cè)到這種格式,并將請(qǐng)求提交給DummyJSON API,而不會(huì)牽扯到最終用戶。

4.Azure Bot代表用戶向ChatGPT發(fā)出新請(qǐng)求,以獲取響應(yīng)正文。

5.ChatGPT格式化響應(yīng):"這是你的前5個(gè)待辦事項(xiàng):..."

6.Azure Bot回復(fù)給用戶。

有一件事情立即引起了我的注意產(chǎn)品可以阻止它通過生成代碼的方式調(diào)用其他網(wǎng)站或者應(yīng)用。出于這個(gè)原因,我應(yīng)用了一個(gè)簡單的域名允許列表,這樣保證所有請(qǐng)求只能發(fā)送到DummyJSON API,而且只能一次發(fā)送一條 – 從而保證消息發(fā)送的安全性。

以上就是設(shè)計(jì)的整體思路。?

最終結(jié)果?

上面跳過了一些實(shí)現(xiàn)的細(xì)節(jié),直到體驗(yàn)完美為止。這是一個(gè)統(tǒng)計(jì)工具,預(yù)計(jì)需要一些試錯(cuò),直到找到正確的提示。但最終,這是我與機(jī)器人的最終版本進(jìn)行的對(duì)話。?

結(jié)論?

ChatGPT插件功能的實(shí)現(xiàn)比上面的快速演示要更加復(fù)雜。這次Demo的目的是展示如何完成ChatGPT的集成——相信我,我和你一樣對(duì)實(shí)現(xiàn)過程非常好奇。這個(gè)Demo給ChatGPT集成HTTP的能力提供了可能性,我迫不及待想看看社區(qū)能夠拋出什么新鮮花樣。?

同時(shí),我們作為技術(shù)的用戶,也有一種責(zé)任感:如果一個(gè)有惡意的提示讓Azure Bot向一個(gè)未知的服務(wù)器發(fā)出請(qǐng)求會(huì)發(fā)生什么?現(xiàn)在有哪些新的攻擊向量?在我編寫的機(jī)器人中,應(yīng)用了簡單的域名白名單——隨著新的用例不斷出現(xiàn),這是否足夠?我還設(shè)法在后續(xù)的提示中重寫了API規(guī)范——是否存在與此可能相關(guān)的風(fēng)險(xiǎn)?有許多AI相關(guān)的安全問題需要考慮,而OpenAI當(dāng)然也意識(shí)到了這一點(diǎn)。?

總的來說,這次Demo讓我印象深刻ChatGPT的可能性確實(shí)是無限的,我一定會(huì)關(guān)注這個(gè)功能,看它在未來幾周和幾個(gè)月內(nèi)的發(fā)展。我也希望盡快在Azure OpenAI中看到它!?

譯者介紹?

崔皓,51CTO社區(qū)編輯,資深架構(gòu)師,擁有18年的軟件開發(fā)和架構(gòu)經(jīng)驗(yàn),10年分布式架構(gòu)經(jīng)驗(yàn)。?

原文標(biāo)題:??How ChatGPT Plugins (could) work??,作者:MarcoCardoso?

責(zé)任編輯:華軒 來源: 51CTO
相關(guān)推薦

2023-06-12 17:54:50

2023-04-12 08:00:00

人工智能ChatGPTPython

2011-09-13 09:49:59

PhoneGap插件

2023-10-10 08:00:00

2023-03-30 12:39:47

2023-08-02 07:01:37

2023-05-14 19:35:00

2023-03-01 16:15:16

2024-01-15 16:28:42

ChatGPTGenAI人工智能

2023-02-07 10:09:20

ChatGPT人工智能

2023-06-26 00:01:11

2023-11-13 09:00:00

2023-02-13 11:43:26

CHATGPT人工智能

2023-04-03 11:52:00

ChatGPTDevOps技術(shù)

2023-02-13 14:47:32

人工智能機(jī)器學(xué)習(xí)ChatGPT

2023-05-17 15:38:13

2023-07-19 08:07:27

ChatGPTSyslog

2012-05-23 10:12:34

2015-03-27 13:04:20

Beanstalkd工

2020-07-15 07:53:41

VSCode Task腳本命令
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)