Traducteur | Cui Hao
Reviewer | Chonglou
OpenAI vient d'annoncer le plug-in ChatGPT - un moyen de permettre à ChatGPT d'effectuer des opérations sur le Web. Cela signifie non seulement que ChatGPT peut accéder à Internet et parcourir les derniers contenus et actualités, mais il peut également effectuer certaines opérations en notre nom, telles que faire des courses, réserver des vols, etc.
Le processus de mise en œuvre est très simple :
Le fournisseur de plug-in écrit la spécification de l'API en utilisant la norme OpenAPI. Il s'agit d'une norme qui existe depuis un certain temps et qui est un partisan des outils de documentation API comme Swagger.
Ensuite, compilez cette spécification dans une invite qui explique à ChatGPT comment il utilise l'API pour améliorer les réponses. Imaginez une invite détaillée comprenant une description de chaque point de terminaison disponible.
Enfin, les utilisateurs posent de nouvelles questions. Si ChatGPT a besoin d'informations de l'API, il fera la demande et l'ajoutera au contexte avant de répondre.
Bien que ce processus soit documenté dans la documentation officielle d'OpenAI au moment de la rédaction, l'accès est restreint. Comme je n'y ai pas encore accès, j'ai décidé de mettre en œuvre mon propre mécanisme basé sur ce qui précède. Voici donc ma tentative d'implémenter mon propre mécanisme de plugin ChatGPT.
déclare solennellement : Je ne peut être connu que par le biais d'informations publiquesPlug-in ChatGPT , il n'y a pas d'autre chaîne à connaître Informations supplémentaires . La démonstration dans cet article est d'illustrer le concept de mise en œuvre, ne représente pas à quoi elle ressemblera après la mise en œuvre. Choisissez la spécification de l'API
J'utilise DummyJSON, une API simple spécifiquement pour les tests, en particulier le point de terminaison "get all to-do". J'ai écrit le fichier YAML suivant comme spécification.
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.
un point de terminaison a deux paramètres : "limit" et "skip". Maintenant, je dois convertir ce qui précède
Après des discussions répétées, j'ai finalement obtenu les résultats suivants :
我会告诉ChatGPT以特定的语法回应,并告诉它用户将提供响应。这是因为AI模型不会执行任何API调用——它必须将该操作委托给不同的系统。由于我们无法访问ChatGPT的内部组件,于是要求它将HTTP请求委托给用户。只要隐藏对话转换对最终用户不可见就行了,用户甚至感知不到HTTP请求,就万事大吉了。 ChatGPT是一个通过REST API公开的AI模型。向OpenAI模型发出请求只是端到端聊天机器人体验中的一步。这意味着可以设置模型传递的信息,以及向最终用户显示的信息。 为了使用ChatGPT实现虚拟助手的功能,我使用了Bot Framework Composer,这是一种基于UI的工具,允许我们构建对话体验并将其发布到不同的渠道。以下是高级别的解决方案架构: 我用Bot Framework Composer构建了这个虚拟助手,因为它可以快速部署到多个终端用户渠道,且只需要很少的代码。如果您想要复制这个解决方案,您可能还需要考虑使用Power Virtual Agents,尤其是在生产中使用。 以下是对话流程的构建方式: 1. 用户提问 2.ChatGPT用预格式化的消息进行回复: 3.Azure Bot检测到这种格式,并将请求提交给DummyJSON API,而不会牵扯到最终用户。 4.Azure Bot代表用户向ChatGPT发出新请求,以获取响应正文。 5.ChatGPT格式化响应:"这是你的前5个待办事项:..." 6.Azure Bot回复给用户。 Une chose qui a immédiatement attiré mon attention le produit peut l'empêcher d'appeler d'autres sites Web ou applications en générant du code. Pour cette raison, j'ai appliqué une simple liste d'autorisation de domaine, Cela garantit que toutes les demandes ne peuvent être envoyées qu'à l'API DummyJSON, et une seule à la fois – Ceci assure la sécurité de l'envoi des messages. Ce qui précède est l'idée générale de la définition du plan partie points . Les ci-dessus ont sauté une certaine mise en œuvre jusqu'à ce que l'expérience soit parfaite. Il s'agit d'un outil statistique, alors attendez-vous à quelques essais et erreurs jusqu'à ce que vous trouviez les bons indices. Mais finalement, c'est la conversation que j'ai eue avec la version finale du robot. Plugin ChatGPTimplémentation des fonctionnalitésque la démo rapide ci-dessus C'est plus compliqué. Le but de ce demo est de montrer comment terminer l'intégration Chatgpt de - croyez-moi, je suis aussi familier avec l'implémentation Processus comme tu es très curieux . Cette démo donne à ChatGPT la possibilité d'intégrer HTTP offre possibilités, j'ai hâte de voir ce que la communauté peut lancer Frais Fleurs. En même temps, en tant qu'utilisateurs de technologie, nous avons également un sens des responsabilités : si une invite malveillante permet à Azure Bot de faire une requête à un serveur inconnu, ce sera Que s'est-il passé ? Quels nouveaux vecteurs d’attaque existe-t-il désormais ? Dans le bot que j'ai écrit , une simple liste blanche de domaines est appliquée - est-ce suffisant alors que de nouveaux cas d'utilisation continuent d'émerger ? J'ai également réussi à réécrire la spécification de l'API dans un conseil de suivi : y a-t-il des risques associés à cela ? Il existe de nombreux problèmes de sécurité à prendre en compte liés à AI, et OpenAI en est certainement conscient. Dans l'ensemble, J'ai été profondément impressionné par cette démo. Les possibilités de de ChatGPT sont vraiment infinies et je garderai certainement un œil sur cette fonctionnalité pour voir comment elle évoluera dans les semaines et les mois à venir. J’espère le voir bientôt dans Azure OpenAI aussi ! Introduction au traducteur Titre original : Comment les plugins ChatGPT (pourraient) fonctionner, auteur : Marco Cardoso 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>
编排
2.<http_request>{
"url": "https://dummyjson.com/todos?limit=5",
"method": "GET",
"body": "",
"headers": {}
}</http_request>
Résultat final
Conclusion
Cui Hao, rédacteur de la communauté 51CTO, architecte senior, a 18 ans d'expérience en développement logiciel et en architecture, et 10 ans d'expérience en architecture distribuée.
Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!