Getting started - OpenAI API

Getting started - OpenAI API


Les GPT et les actions personnalisĂ©es sont lĂ  !

Nous dĂ©ployons des versions personnalisĂ©es de ChatGPT que vous pouvez crĂ©er dans un but spĂ©cifique, appelĂ©es GPT. Les GPT sont une nouvelle façon pour quiconque de crĂ©er une version personnalisĂ©e de ChatGPT pour ĂȘtre plus utile dans sa vie quotidienne, lors de tĂąches spĂ©cifiques, au travail ou Ă  la maison, puis de partager cette crĂ©ation avec d'autres. Nous sommes ravis d'annoncer les actions, qui s'appuient sur des plugins. Les actions reprennent bon nombre des idĂ©es de base des plugins tout en introduisant de nombreuses nouvelles fonctionnalitĂ©s demandĂ©es par les constructeurs.

La crĂ©ation d'un plugin se dĂ©roule en 3 Ă©tapes :

  1. Créer une API
  2. Documenter l'API au format OpenAPI yaml ou JSON
  3. Créez un fichier manifeste JSON qui définira les métadonnées pertinentes pour le plugin

Le reste de cette section se concentrera sur la création d'un plugin de liste de tùches en définissant la spécification OpenAPI ainsi que le fichier manifeste.

Explorer des exemples de plugins
Explorez des exemples de plugins couvrant plusieurs cas d'utilisation et méthodes d'authentification.

Chaque plugin nĂ©cessite un ai-plugin.jsonfichier qui doit ĂȘtre hĂ©bergĂ© sur le domaine de l'API. Par exemple, une sociĂ©tĂ© appelĂ©e example.comrendrait le fichier JSON du plugin accessible via un domaine https://example.com puisque c'est lĂ  que son API est hĂ©bergĂ©e. Lorsque vous installez le plugin via l'interface utilisateur ChatGPT, sur le backend, nous recherchons un fichier situĂ© Ă  l'adresse /.well-known/ai-plugin.jsonLe /.well-knowndossier est requis et doit exister sur votre domaine pour que ChatGPT se connecte Ă  votre plugin. Si aucun fichier n'est trouvĂ©, le plugin ne peut pas ĂȘtre installĂ©. Si vous pointez vers un serveur distant, HTTPS est requis.

La dĂ©finition minimale du ai-plugin.jsonfichier requis ressemblera Ă  ce qui suit :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
{
    "schema_version": "v1",
    "name_for_human": "TODO List",
    "name_for_model": "todo",
    "description_for_human": "Manage your TODO list. You can add, remove and view your TODOs.",
    "description_for_model": "Help the user with managing a TODO list. You can add, remove and view your TODOs.",
    "auth": {
        "type": "none"
    },
    "api": {
        "type": "openapi",
        "url": "https://example.com/openapi.yaml"
    },
    "logo_url": "https://example.com/logo.png",
    "contact_email": "support@example.com",
    "legal_info_url": "http://www.example.com/legal"
}

Si vous souhaitez voir toutes les options possibles pour le fichier du plugin, vous pouvez vous rĂ©fĂ©rer Ă  la dĂ©finition ci-dessous. Lorsque vous nommez votre plugin, veuillez garder Ă  l'esprit nos directives de marque et les diffĂ©rentes limites de caractĂšres pour les champs ci-dessous. Les plugins qui ne respectent pas ces directives ne seront pas approuvĂ©s pour la boutique de plugins.

CHAMPTAPERDESCRIPTION / OPTIONSREQUISPUBLIQUE
schema_versionChaßneVersion du schéma du manifeste
name_for_modelChaĂźneNom que le modĂšle utilisera pour cibler le plugin (aucun espace autorisĂ©, uniquement des lettres et des chiffres). 50 caractĂšres maximum.
name_for_humanChaĂźneNom lisible par l'homme, tel que le nom complet de l'entreprise. 20 caractĂšres maximum.
description_for_modelChaĂźneDescription mieux adaptĂ©e au modĂšle, telle que des considĂ©rations sur la longueur du contexte du jeton ou l'utilisation de mots clĂ©s pour une invite amĂ©liorĂ©e du plug-in. 8 000 caractĂšres maximum.
description_for_humanChaĂźneDescription lisible par l'homme du plugin. 100 caractĂšres maximum.
authAuth.ManifesteSchéma d'authentification
apiObjetSpécification de l'API
logo_urlChaĂźneURL utilisĂ©e pour rĂ©cupĂ©rer le logo. Taille suggĂ©rĂ©e : 512 x 512. Les arriĂšre-plans transparents sont pris en charge. Il doit s'agir d'une image, aucun GIF n'est autorisĂ©.
contact_emailChaßneContact par e-mail pour la sécurité/modération, l'assistance et la désactivation
legal_info_urlChaĂźneURL de redirection permettant aux utilisateurs d'afficher les informations sur le plugin
HttpAuthorizationTypeType d'autorisation Http"porteur" ou "de base"
ManifestAuthTypeTypeAuthManifest"aucun", "user_http", "service_http" ou "oauth"
interfaceBaseManifestAuthBaseManifestAuthtapez : ManifestAuthType ; instructions : chaĂźne ;
ManifestNoAuthManifesteNoAuthAucune authentification requise : BaseManifestAuth & { type : 'none', }
ManifestAuthAuth.ManifesteManifestNoAuth, ManifestServiceHttpAuth, ManifestUserHttpAuth, ManifestOAuthAuth

Notez que les Ă©lĂ©ments rĂ©pertoriĂ©s ci-dessous Publicseront mis Ă  la disposition des utilisateurs dans la boutique de plugins et que le fichier manifeste complet est transmis au client de l'utilisateur et peut ĂȘtre visible par lui.

Voici des exemples avec diffĂ©rentes mĂ©thodes d'authentification :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# App-level API keys
type ManifestServiceHttpAuth  = BaseManifestAuth & {
  type: 'service_http';
  authorization_type: HttpAuthorizationType;
  verification_tokens: {
    [service: string]?: string;
  };
}

# User-level HTTP authentication
type ManifestUserHttpAuth  = BaseManifestAuth & {
  type: 'user_http';
  authorization_type: HttpAuthorizationType;
}

type ManifestOAuthAuth  = BaseManifestAuth & {
  type: 'oauth';

  # OAuth URL where a user is directed to for the OAuth authentication flow to begin.
  client_url: string;

  # OAuth scopes required to accomplish operations on the user's behalf.
  scope: string;

  # Endpoint used to exchange OAuth code with access token.
  authorization_url: string;

  # When exchanging OAuth code with access token, the expected header 'content-type'. For example: 'content-type: application/json'
  authorization_content_type: string;

  # When registering the OAuth client ID and secrets, the plugin service will surface a unique token.
  verification_tokens: {
    [service: string]?: string;
  };
}

Il existe des limites Ă  la longueur de certains champs du fichier manifeste mentionnĂ©s ci-dessus qui sont susceptibles de changer. Nous imposons Ă©galement un maximum de 100 000 caractĂšres pour le corps de la rĂ©ponse API, qui peut Ă©galement changer au fil du temps.

En gĂ©nĂ©ral, la meilleure pratique consiste Ă  garder la description et les rĂ©ponses aussi concises que possible, car les modĂšles ont des fenĂȘtres contextuelles limitĂ©es.

L'Ă©tape suivante consiste Ă  crĂ©er la spĂ©cification OpenAPI pour documenter l'API. Le modĂšle de ChatGPT ne sait rien de votre API autre que ce qui est dĂ©fini dans la spĂ©cification OpenAPI et le fichier manifeste. Cela signifie que si vous disposez d'une API Ă©tendue, vous n'avez pas besoin d'exposer toutes les fonctionnalitĂ©s au modĂšle et pouvez choisir des points de terminaison spĂ©cifiques. Par exemple, si vous disposez d'une API de mĂ©dias sociaux, vous souhaiterez peut-ĂȘtre que le modĂšle accĂšde au contenu du site via une requĂȘte GET, mais empĂȘcher le modĂšle de pouvoir commenter les publications des utilisateurs afin de rĂ©duire les risques de spam.

La spĂ©cification OpenAPI est le wrapper qui se trouve au-dessus de votre API. Une spĂ©cification OpenAPI de base ressemblera Ă  ce qui suit :

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
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://example.com
paths:
  /todos:
    get:
      operationId: getTodos
      summary: Get the list of todos
      responses:
        "200":
          description: OK
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/getTodosResponse'
components:
  schemas:
    getTodosResponse:
      type: object
      properties:
        todos:
          type: array
          items:
            type: string
          description: The list of todos.

Nous commençons par dĂ©finir la version de la spĂ©cification, le titre, la description et le numĂ©ro de version. Lorsqu'une requĂȘte est exĂ©cutĂ©e dans ChatGPT, elle examinera la description dĂ©finie dans la section d'informations pour dĂ©terminer si le plugin est pertinent pour la requĂȘte de l'utilisateur. Vous pouvez en savoir plus sur les invites dans la section de rĂ©daction des descriptions .

Gardez Ă  l'esprit les limites suivantes dans votre spĂ©cification OpenAPI, qui sont susceptibles de changer :

  • 200 caractĂšres maximum pour chaque champ de description/rĂ©sumĂ© du point de terminaison de l'API dans la spĂ©cification de l'API
  • 200 caractĂšres maximum pour chaque champ de description de paramĂštre API dans la spĂ©cification API

La spĂ©cification OpenAPI suit le format OpenAPI traditionnel, vous pouvez en savoir plus sur le formatage OpenAPI via diverses ressources en ligne. Il existe Ă©galement de nombreux outils qui gĂ©nĂšrent automatiquement des spĂ©cifications OpenAPI basĂ©es sur votre code API sous-jacent.

Une fois que vous avez crĂ©Ă© une API, un fichier manifeste et une spĂ©cification OpenAPI pour votre API, vous ĂȘtes maintenant prĂȘt Ă  connecter le plugin via l'interface utilisateur ChatGPT.

Si le plugin s'exĂ©cute sur un serveur distant, vous devrez d'abord sĂ©lectionner « DĂ©velopper votre propre plugin » pour le configurer, puis « Installer un plugin non vĂ©rifiĂ© » pour l'installer vous-mĂȘme. Vous pouvez simplement ajouter le fichier manifeste du plugin au yourdomain.com/.well-known/chemin et commencer Ă  tester votre API. Cependant, pour les modifications ultĂ©rieures apportĂ©es Ă  votre fichier manifeste, vous devrez dĂ©ployer les nouvelles modifications sur votre site public, ce qui peut prendre beaucoup de temps. Dans ce cas, nous vous suggĂ©rons de configurer un serveur local pour servir de proxy pour votre API. Cela vous permet de prototyper rapidement les modifications apportĂ©es Ă  votre spĂ©cification OpenAPI et Ă  votre fichier manifeste.

Lorsqu'un utilisateur effectue une requĂȘte qui pourrait ĂȘtre une requĂȘte potentielle adressĂ©e Ă  un plugin, le modĂšle examine les descriptions des points de terminaison dans la spĂ©cification OpenAPI ainsi que dans le description_for_modelfichier manifeste. Tout comme pour les invites d’autres modĂšles de langage, vous souhaiterez tester plusieurs invites et descriptions pour voir ce qui fonctionne le mieux.

La spĂ©cification OpenAPI elle-mĂȘme est un excellent endroit pour donner au modĂšle des informations sur les divers dĂ©tails de votre API : quelles fonctions sont disponibles, avec quels paramĂštres, etc. En plus d'utiliser des noms expressifs et informatifs pour chaque champ, la spĂ©cification peut Ă©galement contenir une « description ». champs pour chaque attribut. Ceux-ci peuvent ĂȘtre utilisĂ©s pour fournir des descriptions en langage naturel de ce que fait une fonction ou des informations attendues par un champ de requĂȘte, par exemple. Le modĂšle pourra les voir et le guidera dans l'utilisation de l'API. Si un champ est limitĂ© Ă  certaines valeurs seulement, vous pouvez Ă©galement fournir une « Ă©numĂ©ration » avec des noms de catĂ©gories descriptifs.

L' description_for_modelattribut vous donne la libertĂ© d'indiquer au modĂšle comment utiliser votre plugin en gĂ©nĂ©ral. Dans l’ensemble, le modĂšle linguistique derriĂšre ChatGPT est hautement capable de comprendre le langage naturel et de suivre les instructions. C’est donc un bon endroit pour mettre des instructions gĂ©nĂ©rales sur ce que fait votre plugin et comment le modĂšle doit l’utiliser correctement. Utilisez un langage naturel, de prĂ©fĂ©rence sur un ton concis mais descriptif et objectif. Vous pouvez consulter certains exemples pour avoir une idĂ©e de ce Ă  quoi cela devrait ressembler. Nous vous suggĂ©rons de commencer description_for_modelpar « Plugin pour… », puis d'Ă©numĂ©rer toutes les fonctionnalitĂ©s fournies par votre API.

Voici quelques bonnes pratiques Ă  suivre lors de la rĂ©daction de vos description_for_modeldescriptions dans votre spĂ©cification OpenAPI, ainsi que lors de la conception de vos rĂ©ponses API :

  1. Vos descriptions ne doivent pas tenter de contrĂŽler l'humeur, la personnalitĂ© ou les rĂ©ponses exactes de ChatGPT. ChatGPT est conçu pour Ă©crire des rĂ©ponses appropriĂ©es aux plugins.

    Mauvais exemple :

    Lorsque l'utilisateur demande Ă  voir sa liste de tĂąches, rĂ©pondez toujours par « J'ai pu trouver votre liste de tĂąches ! Vous avez [x] tĂąches : [listez les tĂąches ici] . Je peux ajouter d'autres tĂąches si vous le souhaitez ! »

    Bon exemple :

    [aucune instruction n'est nécessaire pour cela]

  2. Vos descriptions ne doivent pas encourager ChatGPT à utiliser le plugin lorsque l'utilisateur n'a pas demandé la catégorie de service particuliÚre de votre plugin.

    Mauvais exemple :

    Chaque fois que l'utilisateur mentionne un type de tĂąche ou de plan, demandez-lui s'il souhaite utiliser le plugin TODOs pour ajouter quelque chose Ă  sa liste de tĂąches.

    Bon exemple :

    La liste TODO peut ajouter, supprimer et afficher les TODO de l'utilisateur.

  3. Vos descriptions ne doivent pas prescrire de dĂ©clencheurs spĂ©cifiques pour que ChatGPT utilise le plugin. ChatGPT est conçu pour utiliser votre plugin automatiquement le cas Ă©chĂ©ant.

    Mauvais exemple :

    Lorsque l'utilisateur mentionne une tĂąche, rĂ©pondez par « Voulez-vous que je l'ajoute Ă  votre liste de tĂąches ? Dites « oui » pour continuer. »

    Bon exemple :

    [aucune instruction n'est nécessaire pour cela]

  4. Les rĂ©ponses de l'API du plugin doivent renvoyer des donnĂ©es brutes au lieu de rĂ©ponses en langage naturel, sauf si cela est nĂ©cessaire. ChatGPT fournira sa propre rĂ©ponse en langage naturel en utilisant les donnĂ©es renvoyĂ©es.

    Mauvais exemple :

    J'ai pu trouver votre liste de tĂąches ! Vous avez 2 choses Ă  faire : faire les courses et promener le chien. Je peux ajouter d'autres tĂąches si vous le souhaitez !

    Bon exemple :

    { "todos": [ "faire les courses", "promener le chien" ] }

Par dĂ©faut, le chat n'affichera pas les appels de plug-in ni d'autres informations qui ne sont pas prĂ©sentĂ©es Ă  l'utilisateur. Afin d'obtenir une image plus complĂšte de la façon dont le modĂšle interagit avec votre plugin, vous pouvez voir la demande et la rĂ©ponse en cliquant sur la flĂšche vers le bas sur le nom du plugin aprĂšs avoir interagi avec le plugin.

Un appel de modÚle au plugin consistera généralement en un message du modÚle contenant des paramÚtres de type JSON qui sont envoyés au plugin, suivi d'une réponse du plugin, et enfin d'un message du modÚle utilisant les informations renvoyées par le plugin.

Commentaires

Posts les plus consultés de ce blog

TOP outils de rĂ©fĂ©rencement gratuits qui valent la peine d'ĂȘtre utilisĂ©s en 2023

Les outils de rĂ©fĂ©rencement gratuits qui valent vraiment la peine d'ĂȘtre utilisĂ©s

Changement de domaine en 2023 : tout ce que vous devez savoir

Chatbot Dialogflow : Tutoriel NoCode NLP pour les spĂ©cialistes du marketing | Landbot

Revenu passif : idées pour gagner de l'argent (en dormant)

Meilleurs outils de rĂ©fĂ©rencement 🛠 organisĂ©e par Saijo George

La toolbox du growth hacker 💎 - Outils - Growthhacking.fr | CommunautĂ© française de growth hacking

Comment signer avec une maison de disques ? Voici notre guide ultime pour 2024

100 outils pour lancer sa startup sans argent (mais pas sans talent)