Heim  >  Artikel  >  Technologie-Peripheriegeräte  >  So funktioniert das ChatGPT-Plugin

So funktioniert das ChatGPT-Plugin

WBOY
WBOYnach vorne
2023-05-05 23:22:052500Durchsuche

​Übersetzer |. Cui Hao

Reviewer |. Das bedeutet nicht nur, dass ChatGPT auf das Internet zugreifen und die neuesten Inhalte und Nachrichten durchsuchen kann, sondern es kann auch einige Vorgänge in unserem Namen durchführen, wie zum Beispiel Lebensmittel einkaufen, Flüge buchen und mehr.

Der Implementierungsprozess ist sehr einfach:

So funktioniert das ChatGPT-Plugin

Der Plug-in-Anbieter schreibt die API-Spezifikation mithilfe des OpenAPI-Standards. Dies ist ein Standard, den es schon seit einiger Zeit gibt und der ein Befürworter von API-Dokumentationstools wie Swagger ist.

Kompilieren Sie dann diese Spezifikation in einer Eingabeaufforderung, die ChatGPT erklärt, wie es die API verwendet, um Antworten zu verbessern. Stellen Sie sich detaillierte Eingabeaufforderungen einschließlich einer Beschreibung jedes verfügbaren Endpunkts vor.

Endlich stellen Nutzer neue Fragen. Wenn ChatGPT

Informationen von der API benötigt, stellt es die Anfrage und fügt sie dem Kontext hinzu, bevor es antwortet. Obwohl dieser Prozess zum Zeitpunkt des Schreibens in der offiziellen OpenAI-Dokumentation dokumentiert ist, ist der Zugriff eingeschränkt. Da ich noch keinen Zugriff erhalten habe, habe ich beschlossen, auf der Grundlage des oben Gesagten meinen eigenen Mechanismus zu implementieren. Nachfolgend finden Sie meinen Versuch, meinen eigenen ChatGPT-Plugin-Mechanismus zu implementieren.

feierlich

: Ich kann nur durch öffentliche Informationen bekannt gemacht werdenChatGPT-Plug-in , es gibt keinen anderen Kanal, den man kennen könnte Zusätzliche s Informationen. Die Demonstration in diesem Artikel dient der Veranschaulichung des Implementierungskonzepts. stellt nicht dar, wie es nach der Implementierung aussehen wird. API-Spezifikation wählen​Der erste Schritt besteht darin, zu verstehen, wie die API spezifiziert wird. OpenAI stellt einige Beispiel-API-Spezifikationen bereit, daher habe ich beschlossen, meine eigene Lösung mit denselben Eingaben zu implementieren und eine einfache Spezifikation für einen einzelnen Endpunkt zu schreiben.

Ich verwende DummyJSON, eine einfache API speziell zum Testen, insbesondere für den „Get all to do“-Endpunkt. Ich habe die folgende YAML-Datei als Spezifikation geschrieben.

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.
Wie in der Konfigurationsdatei oben gezeigt,

ein Endpunkt hat zwei Parameter: „limit“ und „skip“. Jetzt muss ich das Obige umrechnen

Nach mehrmaligen Diskussionen habe ich schließlich folgende Ergebnisse erhalten:

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>

告诉ChatGPT以特定的语法回应,并告诉它用户将提供响应。这是因为AI模型不会执行任何API调用——它必须将该操作委托给不同的系统。由于我们无法访问ChatGPT的内部组件,于是要求它将HTTP请求委托给用户。只要隐藏对话转换对最终用户不可见就行了用户甚至感知不到HTTP请求,就万事大吉了

编排​

ChatGPT是一个通过REST API公开的AI模型。向OpenAI模型发出请求只是端到端聊天机器人体验中的一步。这意味着可以设置模型传递的信息,以及向最终用户显示的信息。

为了使用ChatGPT实现虚拟助手的功能,我使用了Bot Framework Composer,这是一种基于UI的工具,允许我们构建对话体验并将其发布到不同的渠道。以下是高级别的解决方案架构:

So funktioniert das ChatGPT-Plugin

我用Bot Framework Composer构建了这个虚拟助手,因为它可以快速部署到多个终端用户渠道,且只需要很少的代码。如果您想要复制这个解决方案,您可能还需要考虑使用Power Virtual Agents,尤其是在生产中使用。

以下是对话流程的构建方式:

1. 用户提问

2.ChatGPT用预格式化的消息进行回复:

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

3.Azure Bot检测到这种格式,并将请求提交给DummyJSON API,而不会牵扯到最终用户。

4.Azure Bot代表用户向ChatGPT发出新请求,以获取响应正文。

5.ChatGPT格式化响应:"这是你的前5个待办事项:..."

6.Azure Bot回复给用户。

Eines ist mir sofort aufgefallen #Sie können verhindern, dass andere Websites oder Anwendungen aufgerufen werden, indem Sie Code generieren. Aus diesem Grund habe ich eine einfache Domainnamen-Zulassungsliste angewendet, Auf diese Weise stellen wir sicher, dass dies der Fall ist alle Bitte Anfrage kann nur an die DummyJSON-API gesendet werden, und es kann jeweils nur eine Nachricht gesendet werden – #🎜🎜 # um die Sicherheit der Nachrichten zu gewährleisten . Das Obige ist das Design Die Gesamtidee von 🎜#

🎜🎜# #

. Endergebnis #🎜 🎜#上skip einige Implementierungen # 🎜 🎜# Details bis das Erlebnis perfekt ist. Dies ist ein statistisches Tool. Rechnen Sie also mit etwas Versuch und Irrtum, bis Sie die richtigen Tipps gefunden haben. Aber letztendlich ist dies das Gespräch, das ich mit der endgültigen Version des Roboters geführt habe. #🎜🎜 ## 🎜🎜 ## 🎜🎜 ## 🎜🎜##🎜🎜 ## 🎜🎜 ## 🎜🎜 ## 🎜🎜 ## 🎜🎜 ## 🎜🎜 ## 🎜🎜#Schlussfolgerung#🎜🎜 #ChatGPT-Plugin

Funktionsimplementierung

#🎜🎜 # Komplizierter als die kurze Demo oben. Der Zweck dieser Demo ist es zu zeigen, wie es gemacht wird #🎜 🎜## 🎜🎜#ChatGPTs Integration – vertrauen Sie mir, ich bin genauso begeistert von der Implementierung wie Sie #🎜🎜 ## 🎜🎜#Prozess

Sehr neugierig. So funktioniert das ChatGPT-Plugin

Diese Demo

Geben Sie ChatGPT die Möglichkeit, HTTP zu integrieren# 🎜 🎜# bietet # 🎜🎜# Möglichkeiten und ich kann es kaum erwarten zu sehen, was die Community # 🎜🎜# Genug, um was wegzuwerfen. .

Gleichzeitig haben wir als Benutzer von Technologie auch ein Verantwortungsbewusstsein : Wenn eine böswillige Eingabeaufforderung es Azure Bot ermöglicht, eine Anfrage an einen zu stellen unbekannter Server, es wird Was ist passiert? Welche neuen Angriffsvektoren gibt es mittlerweile? In dem Bot, den ich geschrieben habe , wurde eine einfache Whitelist von Domänen angewendet – wird das ausreichen, wenn weiterhin neue Anwendungsfälle auftauchen? Ich habe es auch geschafft, die API-Spezifikation in einem Folgetipp umzuschreiben – sind damit irgendwelche Risiken verbunden? Es gibt viele Sicherheitsprobleme im Zusammenhang mit AI, und OpenAI ist sich dessen sicherlich bewusst. Insgesamt

Ich war tief beeindruckt von dieser Demo. Die Möglichkeiten von ChatGPT sind wirklich endlos und ich werde diese Funktion auf jeden Fall im Auge behalten, um zu sehen, wie sie sich in den kommenden Wochen und Monaten entwickelt. Ich hoffe, es bald auch in Azure OpenAI zu sehen! Einführung des Übersetzers

Cui Hao, 51CTO-Community-Redakteur, leitender Architekt, verfügt über 18 Jahre Erfahrung in der Softwareentwicklung und Architektur sowie 10 Jahre Erfahrung in der verteilten Architektur. ​

Originaltitel:

Wie ChatGPT-Plugins funktionieren (könnten), Autor: Marco Cardoso​.

Das obige ist der detaillierte Inhalt vonSo funktioniert das ChatGPT-Plugin. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:51cto.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen