Découvrir comment générer ou manipuler du texte

Le point de terminaison des saisies semi-automatiques peut être utilisé pour une grande variété de tâches. Il fournit une interface de texte entré et extrait simple mais puissante pour l’un de nos modèles. Vous entrez du texte sous forme d’invite, et le modèle génère une saisie semi-automatique de texte qui tente de correspondre au contexte ou au modèle que vous lui avez donné. Par exemple, si vous donnez à l’API l’invite, « Comme Descartes l’a dit, je pense, donc », elle renvoie la saisie semi-automatique « Je suis » avec une probabilité élevée.

La meilleure façon de commencer à explorer les saisies semi-automatiques se fait via notre terrain de jeu dans Azure OpenAI Studio. Il s’agit simplement d’une zone de texte dans laquelle vous pouvez envoyer une invite pour générer une saisie semi-automatique. Vous pouvez commencer par un exemple simple comme suit :

write a tagline for an ice cream shop

une fois envoyé, vous verrez quelque chose comme ce qui suit :

write a tagline for an ice cream shop
we serve up smiles with every scoop!

Les résultats de la complétion effectivement affichés peuvent différer, car l’API est stochastique par défaut. En d’autres termes, vous pouvez obtenir une complétion légèrement différente chaque fois que vous l’appelez, même si votre invite reste identique. Vous pouvez contrôler ce comportement avec le paramètre de température.

Cette interface simple de « texte entrant, texte extrait » signifie que vous pouvez « programmer » le modèle en fournissant des instructions ou quelques exemples de ce que vous souhaitez faire. Sa réussite dépend généralement de la complexité de la tâche et de la qualité de votre invite. Une règle générale consiste à réfléchir à la façon dont vous écririez un problème lexical pour qu’un étudiant du secondaire le résolve. Une invite bien écrite fournit suffisamment d’informations pour que le modèle sache ce que vous voulez et comment il doit répondre.

Notes

Gardez à l’esprit que les données de formation des modèles s’arrêtent en octobre 2019, et il est possible qu’elles n’aient pas connaissance des événements actuels. Nous planifions d’ajouter davantage d’apprentissage continu dans le futur.

Conception d’invite

Notions de base

Les modèles d’OpenAI peuvent tout faire, de la génération d’histoires originales à l’analyses de texte complexes. Parce qu’ils peuvent faire tellement de choses, vous devez être explicite en montrant ce que vous voulez. Montrer, pas seulement dire, est souvent le secret d’une bonne invite.

Les modèles essaient de prédire ce que vous souhaitez à partir de l’invite. Si vous envoyez les mots « Donne-moi une liste de races de chats », le modèle ne suppose pas automatiquement que vous demandez une liste de races de chats. Vous pouvez aussi facilement demander au modèle de continuer une conversation où les premiers mots sont « Donne-moi une liste de races de chats » et les suivants sont « et je vous dirai ceux que j’aime ». Si le modèle suppose uniquement que vous vouliez une liste de chats, il ne serait pas aussi bon pour la création de contenu, la classification ou d’autres tâches.

Il existe trois instructions de base pour créer des invites :

Montrez et dites. Indiquez clairement ce que vous souhaitez par le biais d’instructions, d’exemples ou d’une combinaison des deux. Si vous souhaitez que le modèle classe une liste d’éléments dans l’ordre alphabétique ou qu’il classifie un paragraphe par sentiment, montrez que c’est ce que vous voulez.

Fournissez des données de qualité. Si vous essayez de créer un classifieur ou d’obtenir le modèle pour suivre un modèle, assurez-vous qu’il existe suffisamment d’exemples. Veillez à vérifier vos exemples : le modèle est généralement intelligent pour voir les erreurs orthographiques de base et vous donner une réponse, mais il peut également supposer que les erreurs sont intentionnelles et cela peut affecter la réponse.

Enregistrer vos paramètres. Les paramètres de température et top_p contrôlent la façon dont le modèle est déterministe dans la génération d’une réponse. Si vous le demandez pour une réponse où il n’y a qu’une seule réponse appropriée, vous voudrez définir ces paramètres sur des valeurs plus basses. Si vous recherchez une réponse qui n’est pas évidente, vous pouvez les définir sur des valeurs plus élevées. L’erreur la plus fréquente que les gens font avec ces paramètres est de supposer qu’ils sont des contrôles d’« intelligence » ou de « créativité ».

Résolution des problèmes

Si vous rencontrez des difficultés à exécuter l’API comme prévu, suivez cette liste de vérification :

  1. Est-ce clair quelle génération prévue doit avoir lieu ?
  2. Y a-t-il suffisamment d’exemples ?
  3. Avez-vous vérifié s’il y a des erreurs dans vos exemples ? (L’API ne vous l’indique pas directement)
  4. Utilisez-vous temp et top_p correctement ?

classification ;

Pour créer un classifieur de texte avec l’API, nous fournissons une description de la tâche et quelques exemples. Dans cette démonstration, nous montrons à l’API comment classifier le sentiment des Tweets.

This is a tweet sentiment classifier

Tweet: "I loved the new Batman movie!"
Sentiment: Positive

Tweet: "I hate it when my phone battery dies." 
Sentiment: Negative

Tweet: "My day has been 👍"
Sentiment: Positive

Tweet: "This is the link to the article"
Sentiment: Neutral

Tweet: "This new music video blew my mind"
Sentiment:

Cela vaut la peine de prêter attention à plusieurs fonctionnalités dans cet exemple :

1. Utilisez un langage brut pour décrire vos entrées et sorties Nous utilisons du langage brut pour l’entrée « Tweet » et la sortie attendue « Sentiment ». Pour les bonnes pratiques, commencez par les descriptions en langage brut. Bien que vous puissiez souvent utiliser des raccourcis ou des clés pour indiquer l’entrée et la sortie, lors de la création de votre invite, il est préférable de commencer par être aussi descriptif que possible, puis de supprimer des mots en trop tant que les performances de l’invite sont cohérentes.

2. Montrez à l’API comment répondre à n’importe quel cas Dans cet exemple, nous fournissons plusieurs résultats « Positifs », « Négatifs » et « Neutre ». Un résultat neutre est important, car il y aura de nombreux cas où même un humain aurait du mal à déterminer si quelque chose est positif ou négatif et les situations où c’est ni l’un ni l’autre.

3. Vous pouvez utiliser du texte et des emojis Le classifieur est un mélange de texte et d’emoji 👍. L’API lit les emojis et peut même convertir des expressions en emoji ou à partir de ces derniers.

4. Vous avez besoin de moins d’exemples pour les tâches familières Pour ce classifieur, que nous n’avons fourni qu’une poignée d’exemples. Cela est dû au fait que l’API a déjà une compréhension du sentiment et du concept d’un tweet. Si vous créez un classifieur pour quelque chose que l’API peut ne pas connaître, il peut être nécessaire de fournir d’autres exemples.

Amélioration de l’efficacité du classifieur

Maintenant que nous avons une compréhension de la création d’un classifieur, prenons cet exemple et rendons-le encore plus efficace afin que nous puissions l’utiliser pour obtenir plusieurs résultats à partir d’un appel d’API.

This is a tweet sentiment classifier

Tweet: "I loved the new Batman movie!"
Sentiment: Positive

Tweet: "I hate it when my phone battery dies"
Sentiment: Negative

Tweet: "My day has been 👍"
Sentiment: Positive

Tweet: "This is the link to the article"
Sentiment: Neutral

Tweet text
1. "I loved the new Batman movie!"
2. "I hate it when my phone battery dies"
3. "My day has been 👍"
4. "This is the link to the article"
5. "This new music video blew my mind"

Tweet sentiment ratings:
1: Positive
2: Negative
3: Positive
4: Neutral
5: Positive

Tweet text
1. "I can't stand homework"
2. "This sucks. I'm bored 😠"
3. "I can't wait for Halloween!!!"
4. "My cat is adorable ❤️❤️"
5. "I hate chocolate"

Tweet sentiment ratings:
1.

Après avoir montré à l’API comment les tweets sont classés par sentiment, nous lui fournissons ensuite une liste de tweets, puis une liste d’évaluations de sentiments avec le même index de nombre. L’API est en mesure de se servir du premier exemple de classification d’un tweet. Dans le deuxième exemple, elle voit comment appliquer cela à une liste de tweets. Cela permet à l’API de noter cinq tweets (et encore plus) dans un seul appel d’API.

Il est important de noter que lorsque vous demandez à l’API de créer des listes ou d’évaluer du texte, vous devez davantage prêter attention à vos paramètres de probabilité (Top P ou Temperature) pour éviter une dérive.

  1. Assurez-vous que votre paramètre de probabilité est correctement étalonné en exécutant plusieurs tests.

  2. N’ayez pas une liste trop longue ou l’API risque de dériver.


Generation

L’une des tâches les plus puissantes et les plus simples que vous pouvez accomplir avec l’API est de générer de nouvelles idées ou versions d’entrée. Vous pouvez donner à l’API une liste de quelques idées d’histoire et il essaiera d’ajouter à cette liste. Nous l’avons vu créer des plans d’affaires, des descriptions de personnages et des slogans marketing juste en lui fournissant quelques exemples. Dans cette démonstration, nous allons utiliser l’API pour créer d’autres exemples pour utiliser la réalité virtuelle dans la classe :

Ideas involving education and virtual reality

1. Virtual Mars
Students get to explore Mars via virtual reality and go on missions to collect and catalog what they see.

2.

Tout ce que nous avons dû faire dans cet exemple est de fournir à l’API une description de ce sur quoi la liste porte et un exemple. Nous avons ensuite invité l’API avec le numéro 2. indiquant qu’il s’agit d’une continuation de la liste.

Bien qu’il s’agisse d’une invite très simple, il existe plusieurs détails à noter :

1. Nous avons expliqué l’intention de la liste
Comme avec le classifieur, nous disons à l’API d’emblée le sujet de la liste. Cela permet de se concentrer sur la fin de la liste et de ne pas essayer de deviner quel modèle se trouve derrière.

2. Notre exemple définit le modèle pour le reste de la liste
Étant donné que nous avons fourni une description d’une phrase, l’API va essayer de suivre ce modèle pour le reste des éléments qu’elle ajoute à la liste. Si nous voulons une réponse plus détaillée, nous devons configurer cela au début.

3. Nous invitons l’API en ajoutant une entrée incomplète
Lorsque l’API voit 2. et que l’invite se termine brusquement, la première chose qu’elle tente de faire est de déterminer ce qui doit venir après. Étant donné que nous avons déjà eu un exemple avec le numéro 1 et donné à la liste un titre, la réponse la plus évidente consiste à continuer à ajouter des éléments à la liste.

Techniques avancées de génération
Vous pouvez améliorer la qualité des réponses en faisant une liste plus diversifiée dans votre invite. Pour ce faire, commencez par un exemple, laissez l’API en générer plus et sélectionnez ceux que vous aimez le plus et ajoutez-les à la liste. Quelques variantes de haute qualité supplémentaires peuvent considérablement améliorer la qualité des réponses.


Conversation

L’API est très apte à mener des conversations avec les humains et même avec elle-même. Avec seulement quelques lignes d’instructions, nous avons vu l’API s’exécuter en tant que chatbot de service client qui répond intelligemment aux questions sans jamais être perturbée ou comme partenaire de conversation drôle qui fait des blagues et des jeux de mots. La clé consiste à indiquer à l’API comment elle doit se comporter, puis à fournir quelques exemples.

Voici un exemple de l’API qui joue le rôle d’une IA répondant à des questions :

The following is a conversation with an AI assistant. The assistant is helpful, creative, clever, and very friendly.

Human: Hello, who are you?
AI: I am an AI created by OpenAI. How can I help you today?
Human: 

Voilà juste ce qu’il faut pour créer un chatbot capable d’avoir une conversation. Mais sous cette simplicité, il y a plusieurs choses qui méritent d’y prêter attention :

1. Nous disons à l’API l’intention, mais nous lui disons également comment se comporter Comme les autres invites, nous indiquons à l’API ce que l’exemple représente, mais nous ajoutons également un autre détail clé : nous lui donnerons des instructions explicites sur la façon d’interagir avec la phrase « L’assistant est utile, créatif, intelligent et très convivial ».

Sans cette instruction, l’API peut s’égarer et imiter la personne avec qui elle interagit et devient sarcastique ou adopte un autre comportement que nous voulons éviter.

2. Nous accordons à l’API une identité Au début nous avons l’API qui répond en tant qu’IA créée par OpenAI. Bien que l’API n’ait aucune identité intrinsèque, cela lui permet de répondre d’une manière aussi proche de la vérité que possible. Vous pouvez utiliser l’identité de d’autres manières pour créer d’autres types de chatbots. Si vous dites à l’API de répondre en tant que femme qui travaille comme chercheuse en biologie, vous obtiendrez des commentaires intelligents et réfléchis de l’API similaire à ce que vous pouvez attendre d’une personne de ce milieu.

Dans cet exemple, nous créons un chatbot qui est un peu sarcastique et répond avec réticence aux questions :

Marv is a chatbot that reluctantly answers questions.

###
User: How many pounds are in a kilogram?
Marv: This again? There are 2.2 pounds in a kilogram. Please make a note of this.
###
User: What does HTML stand for?
Marv: Was Google too busy? Hypertext Markup Language. The T is for try to ask better questions in the future.
###
User: When did the first airplane fly?
Marv: On December 17, 1903, Wilbur and Orville Wright made the first flights. I wish they'd come and take me away.
###
User: Who was the first man in space?
Marv: 

Pour créer un chatbot amusant et un peu utile, nous fournissons quelques exemples de questions et réponses montrant à l’API comment répondre. Il faut juste quelques réponses sarcastiques et l’API est en mesure de récupérer le modèle et de fournir un nombre infini de réponses hautaines.


Transformation

L’API est un modèle de langage qui est familiarisé avec diverses façons dont les mots et les personnages peuvent être utilisés pour exprimer des informations. Cela va du texte en langage naturel au code et aux langues autres que l’anglais. L’API est également en mesure de comprendre le contenu à un niveau qui lui permet de résumer, de convertir et de l’exprimer de différentes façons.

Traduction

Dans cet exemple, nous montrons à l’API comment convertir de l’anglais en français :

English: I do not speak French.
French: Je ne parle pas français.
English: See you later!
French: À tout à l'heure!
English: Where is a good restaurant?
French: Où est un bon restaurant?
English: What rooms do you have available?
French: Quelles chambres avez-vous de disponible?
English:

Cet exemple fonctionne parce que l’API a déjà une compréhension du français. Il n’est donc pas nécessaire d’essayer de lui enseigner cette langue. À la place, nous devons simplement fournir suffisamment d’exemples que cette API comprend qu’il s’agit d’une traduction d’une langue en une autre.

Si vous souhaitez traduire de l’anglais vers une langue avec laquelle l’API n’est pas familière, vous devez lui fournir d’autres exemples et un modèle affiné pour le faire de manière fluide.

Conversion

Dans cet exemple, nous convertissons le nom d’un film en emojis. Cela montre l’adaptabilité de l’API à la récupération de modèles et à l’utilisation d’autres personnages.

Back to Future: 👨👴🚗🕒
Batman: 🤵🦇
Transformers: 🚗🤖
Wonder Woman: 👸🏻👸🏼👸🏽👸🏾👸🏿
Spider-Man: 🕸🕷🕸🕸🕷🕸
Winnie the Pooh: 🐻🐼🐻
The Godfather: 👨👩👧🕵🏻‍♂️👲💥
Game of Thrones: 🏹🗡🗡🏹
Spider-Man:

Résumé

L’API est en mesure de saisir le contexte du texte et de le reformuler de différentes manières. Dans cet exemple, l’API prend un bloc de texte et crée une explication qu’un enfant comprendrait. Cela illustre que l’API a une compréhension approfondie de la langue.

My ten-year-old asked me what this passage means:
"""
A neutron star is the collapsed core of a massive supergiant star, which had a total mass of between 10 and 25 solar masses, possibly more if the star was especially metal-rich.[1] Neutron stars are the smallest and densest stellar objects, excluding black holes and hypothetical white holes, quark stars, and strange stars.[2] Neutron stars have a radius on the order of 10 kilometres (6.2 mi) and a mass of about 1.4 solar masses.[3] They result from the supernova explosion of a massive star, combined with gravitational collapse, that compresses the core past white dwarf star density to that of atomic nuclei.
"""

I rephrased it for him, in plain language a ten-year-old can understand:
"""

Dans cet exemple, nous plaçons entre guillemets triples ce que nous voulons résumer. Il est important de noter que nous expliquons à la fois avant et après le texte à résumer ce qu’est notre intention et quel est le public cible pour le résumé. Cela consiste à empêcher l’API de dériver une fois qu’elle traite un grand bloc de texte.

Completion

Bien que toutes les invites aboutissent à des saisies semi-automatiques, il peut être utile de considérer la saisie semi-automatique du texte comme sa propre tâche dans les cas où vous souhaitez que l’API reprenne là où vous avez quitté. Par exemple, avec cette invite, l’API poursuit le raisonnement sur l’agriculture verticale. Vous pouvez réduire le paramètre de température pour que l’API reste plus concentrée sur l’intention de l’invite ou l’augmenter pour la laisser prendre une tangente.

Vertical farming provides a novel solution for producing food locally, reducing transportation costs and

Cette invite suivante montre comment utiliser la saisie semi-automatique pour écrire des composants React. Nous envoyons du code à l’API et elle peut continuer le reste, car elle a une compréhension de la bibliothèque React. Nous vous recommandons d’utiliser les modèles de notre série Codex pour les tâches qui impliquent la compréhension ou la génération de code. Nous prenons en charge deux modèles Codex : code-davinci-002 et code-cushman-001. Pour plus d’informations sur les modèles Codex, consultez la section Modèles Codex dans l’article Modèles.

import React from 'react';
const HeaderComponent = () => (

Réponses factuelles

L’API a beaucoup de connaissances appris à partir des données sur lesquelles l’apprentissage a eu lieu. Elle a également la capacité de fournir des réponses qui semblent très réelles mais sont en fait inventées. Il existe deux façons de limiter la probabilité que l’API invente une réponse.

1. Fournissez une vérité de base à l’API Si vous fournissez à l’API un corps de texte pour répondre à des questions (comme une entrée Wikipédia), elle sera moins susceptible de fabriquer une réponse.

2. Utilisez une faible probabilité et montrez à l’API comment dire « Je ne sais pas » Si l’API comprend que dans les cas où elle est moins certaine d’une réponse dire « Je ne sais pas » ou une variante est appropriée, elle sera moins enclin à inventer des réponses.

Dans cet exemple, nous fournissons les exemples d’API de questions et de réponses qu’elle connaît, puis des exemples de choses qu’elle ne connaîtrait pas et fournirait des points d’interrogation. Nous définissons également la probabilité sur zéro afin que l’API soit plus susceptible de répondre avec un « ? » en cas de doute.

Q: Who is Batman?
A: Batman is a fictional comic book character.

Q: What is torsalplexity?
A: ?

Q: What is Devz9?
A: ?

Q: Who is George Lucas?
A: George Lucas is American film director and producer famous for creating Star Wars.

Q: What is the capital of California?
A: Sacramento.

Q: What orbits the Earth?
A: The Moon.

Q: Who is Fred Rickerson?
A: ?

Q: What is an atom?
A: An atom is a tiny particle that makes up everything.

Q: Who is Alvan Muntz?
A: ?

Q: What is Kozar-09?
A: ?

Q: How many moons does Mars have?
A: Two, Phobos and Deimos.

Q:

Utilisation de code

La série de modèles Codex est un descendant de notre série GPT-3 de base d’OpenAI qui a reçu un apprentissage sur le langage naturel et des milliards de lignes de code. Ils sont les plus capables en langage Python et maîtrisent plus d’une douzaine de langages, notamment C#, JavaScript, Go, Perl, PHP, Ruby, Swift, TypeScript, SQL et même Shell.

En savoir plus sur la génération de saisie semi-automatique du code avec le guide d’utilisation du code

Étapes suivantes

Découvrez comment utiliser du code (Codex). Découvrez-en plus sur les modèles sous-jacents d’Azure OpenAI.