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

Azure OpenAI Service fournit un point de terminaison de saisie semi-automatique qui peut être utilisé pour un grand éventail de tâches. Le point de terminaison fournit une interface de texte entrant et texte extrait simple mais puissante à n’importe quel modèle Azure OpenAI. Pour déclencher la saisie semi-automatique, vous entrez du texte sous forme d’invite. Le modèle génère la saisie semi-automatique et tente de compléter votre contexte ou modèle. Supposons que vous fournissiez à l’API l’invite « Comme Descartes l’a dit, je pense, donc ». Pour cette invite, Azure OpenAI retourne le point de terminaison de saisie semi-automatique « je suis » avec une probabilité élevée.

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

write a tagline for an ice cream shop

Une fois que vous avez entré votre invite, Azure OpenAI affiche la saisie semi-automatique :

we serve up smiles with every scoop!

Les résultats de saisie semi-automatique que vous voyez peuvent varier, car l’API Azure OpenAI produit une nouvelle sortie pour chaque interaction. En d’autres termes, vous pourriez obtenir une saisie semi-automatique légèrement différente chaque fois que vous appelez l’API, même si votre invite reste identique. Vous pouvez contrôler ce comportement avec le paramètre Temperature.

Cette interface simple de texte entrant et texte extrait signifie que vous pouvez « programmer » le modèle Azure OpenAI en fournissant des instructions ou quelques exemples de ce que vous souhaitez faire. La réussite de la sortie 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 rédigeriez un problème écrit pour un étudiant préadolescent. 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

Les données de formation du modèle peuvent être différentes pour chaque type de modèle. Les données de formation les plus récentes du modèle s’étendent actuellement jusqu’en septembre 2021 uniquement. Selon votre invite, le modèle peut ne pas avoir connaissance d’actualités associées.

Invites de conception

Les modèles d’Azure OpenAI Service peuvent tout faire, de la création d’histoires originales à l’analyse de texte complexe. Parce qu’ils peuvent faire tellement de choses, il faut que vous soyez explicite dans vos demandes. 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 entrez l’invite « Donne-moi une liste de races de chats », le modèle ne suppose pas automatiquement que vous demandez uniquement une liste. Vous pourriez aussi facilement initier une conversation où les premiers mots sont « Donne-moi une liste de races de chats », suivis par « et je te dirai ceux que j’aime ». Si le modèle suppose uniquement que vous voulez une liste de chats, il ne serait pas aussi doué pour la création de contenu, la classification ou d’autres tâches.

Instructions pour la création d’invites robustes

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

  • Montrez et raconter. 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 par ordre alphabétique ou répertorie un paragraphe par sentiment, incluez ces détails dans votre invite pour les montrer au modèle.

  • Fournissez des données de qualité. Si vous essayez de créer un classifieur ou de faire suivre un schéma par le modèle, assurez-vous qu’il existe suffisamment d’exemples. Veillez à relire vos exemples. Le modèle est suffisamment intelligent pour résoudre des erreurs d’orthographe de base et vous donner une réponse qui a du sens. À l’inverse, le modèle peut supposer que les erreurs sont volontaires, ce qui peut influencer la réponse.

  • Vérifiez vos paramètres. Les paramètres de probabilité, comme Temperature et Top P, contrôlent le degré de déterminisme avec lequel le modèle génère une réponse. Si vous demandez une réaction avec une seule réponse juste, vous devez préciser des valeurs inférieures pour ces paramètres. Si vous recherchez une réponse qui n’est pas évidente, vous pourriez vouloir définir des valeurs supérieures. L’erreur la plus courante effectuée par des utilisateurs avec ces paramètres consiste à supposer qu’ils contrôlent « l’intelligence » ou la « créativité » de la réponse du modèle.

Résolution des problèmes d’invite

Si vous trouvez qu’il est compliqué de faire fonctionner l’API comme prévu, passez en revue les points suivants pour votre implémentation :

  • Est-ce clair quelle génération prévue doit avoir lieu ?
  • Y a-t-il suffisamment d’exemples ?
  • Avez-vous vérifié s’il y a des erreurs dans vos exemples ? (L’API ne vous l’indique pas directement.)
  • Utilisez-vous correctement les paramètres de probabilité Temperature et Top P ?

Classifier le texte

Pour créer un classifieur de texte avec l’API, vous fournissez une description de la tâche et quelques exemples. Dans cette démonstration, vous montrez à l’API comment classifier les sentiments de SMS. Un sentiment exprime la sensation ou l’expression globale dans le texte.

This is a text message sentiment classifier

Message: "I loved the new adventure movie!"
Sentiment: Positive

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

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

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

Message: "This new music video is unreal"
Sentiment:

Instructions pour la conception de classifieurs de texte

Cette démonstration révèle plusieurs instructions pour la conception de classifieurs :

  • Utilisez un langage simple pour décrire vos entrées et sorties. Utilisez un langage simple pour l’entrée « Message » et la valeur attendue qui exprime le « Sentiment ». Pour connaître les meilleures pratiques, commencez par des descriptions en langage simple. Vous pouvez utiliser des abréviations ou des clés pour indiquer l’entrée et la sortie lorsque vous générez votre invite. Cependant, il vaut mieux être aussi descriptif que possible. Vous pouvez ensuite travailler à reculons et supprimer des mots supplémentaires tant que les performances de l’invite sont cohérentes.

  • Montrez à l’API comment répondre à n’importe quel cas. La démonstration fournit plusieurs résultats : « Positif », « Négatif » et « Neutre ». Il est important d’encourager un résultat neutre, car il existe de nombreux cas où même un humain peut difficilement déceler qu’une chose est positive ou négative.

  • Utilisez des emojis et du texte, selon l’usage courant. La démonstration montre que le classifieur peut être un mélange de texte et d’emojis 👍. L’API lit les emojis et peut même convertir des expressions en emoji ou à partir de ces derniers. Pour une réponse optimale, utilisez des formes d’expression courantes pour vos exemples.

  • Utilisez moins d’exemples pour les tâches familières. Ce classifieur ne fournit qu’une poignée d’exemples, car l’API comprend déjà le sentiment et le concept d’un SMS. 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.

Plusieurs résultats à partir d’un seul appel d’API

Maintenant que vous comprenez comment créer un classifieur, développons la première démonstration pour la rendre plus efficace. Vous souhaitez pouvoir utiliser le classifieur pour obtenir plusieurs résultats à partir d’un seul appel d’API.

This is a text message sentiment classifier

Message: "I loved the new adventure movie!"
Sentiment: Positive

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

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

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

Message text
1. "I loved the new adventure 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 is unreal"

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

Message text
1. "He doesn't like homework"
2. "The taxi is late. She's angry 😠"
3. "I can't wait for the weekend!!!"
4. "My cat is adorable ❤️❤️"
5. "Let's try chocolate bananas"

Message sentiment ratings:
1.

Cette démonstration montre à l’API comment classifier des SMS par sentiment. Vous fournissez une liste numérotée de messages et une liste de classement des sentiments avec le même index de nombre. L’API utilise les informations de la première démonstration pour apprendre à classer les sentiments d’un seul SMS. Dans la deuxième démonstration, le modèle apprend à appliquer la classification des sentiments à une liste de SMS. Cette approche permet à l’API de classer cinq (ou plus encore) SMS dans un seul appel d’API.

Important

Lorsque vous demandez à l’API de créer des listes ou d’évaluer du texte, il est important d’aider l’API à éviter les dérives. Voici quelques éléments à respecter :

  • Prêtez une attention particulière à vos valeurs pour les paramètres de probabilité Top P ou Temperature.
  • Exécutez plusieurs tests pour vous assurer que vos paramètres de probabilité sont bien étalonnés.
  • N’utilisez pas de listes longues. Les listes longues peuvent entraîner des dérives.

Idées déclencheuses

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. Supposons que vous écriviez un roman à mystère et que vous avez besoin d’idées. Vous pouvez donner à l’API une liste comportant quelques idées et celle-ci essaye d’y ajouter plus d’idées. L’API peut créer des plans d’affaires, des descriptions de personnages, des slogans marketing et bien plus encore à partir d’une petite poignée d’exemples.

Dans la prochaine démonstration, vous utilisez l’API pour créer d’autres exemples pour utiliser la réalité virtuelle dans une 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.

Cette démonstration fournit à l’API une description de base pour votre liste ainsi qu’un élément de liste. Ensuite, vous utilisez une invite incomplète de « 2. » pour déclencher une réponse de l’API. L’API interprète l’entrée incomplète comme une demande pour générer des éléments similaires et les ajouter à votre liste.

Instructions pour déclencher des idées

Bien que cette démonstration utilise une invite simple, elle met en évidence plusieurs instructions pour déclencher de nouvelles idées :

  • Expliquez l’intention de la liste. Comme pour la démonstration du classifieur de texte, vous commencez par indiquer à l’API le sujet de la liste. Cette approche permet à l’API de se concentrer sur l’achèvement de la liste plutôt que d’essayer de déceler des modèles en analysant le texte.

  • Définissez le modèle pour les éléments de la liste. Lorsque vous fournissez une description en une phrase, l’API tente de suivre ce modèle en générant de nouveaux éléments pour la liste. Si vous souhaitez une réponse plus loquace, vous devez préciser cette intention avec une entrée de texte plus détaillée dans l’API.

  • Invitez l’API avec une entrée incomplète afin de déclencher de nouvelles idées. Lorsque l’API affronte un texte qui semble incomplet, tel que le texte d’invite « 2. », elle tente d’abord d’identifier tout texte susceptible de compléter l’entrée. Étant donné que la démonstration a un en-tête de liste et un exemple avec le numéro « 1. » et le texte qui l’accompagne, l’API interprète le texte d’invite incomplet « 2. » en tant que demande d’ajout d’éléments à la liste.

  • Découvrez des 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. Une approche consiste à commencer par un exemple, à laisser l’API en générer davantage, puis à sélectionner ceux que vous préférez et les ajouter à la liste. Quelques variantes supplémentaires de grande qualité peuvent considérablement améliorer la qualité des réponses.

Mener des conversations

À compter de la publication de GPT-35-Turbo et GPT-4, nous vous recommandons de créer la génération de conversation et des chatbots à l’aide de modèles qui prennent en charge le point de terminaison de saisie semi-automatique de conversation. Les modèles et le point de terminaison de saisie semi-automatique de conversation nécessitent une structure d’entrée différente de celle du point de terminaison de saisie semi-automatique.

L’API est habile pour mener des conversations avec des humains et même avec elle-même. Avec seulement quelques lignes d’instructions, l’API peut s’exécuter en tant que chatbot de service client qui répond intelligemment aux questions sans jamais être perturbée, ou comme interlocuteur amusant qui fait des blagues et des jeux de mots. La clé consiste à indiquer à l’API comment elle doit se comporter, puis à fournir quelques exemples.

Dans cette démonstration, l’API occupe 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: 

Examinons une variante pour un chatbot nommé « Cramer », un assistant virtuel amusant et relativement serviable. Pour aider l’API à comprendre la nature du rôle, fournissez quelques exemples de questions et de réponses. Il suffit de quelques réponses sarcastiques pour que l’API soit capable de repérer le modèle et fournisse un nombre infini de réponses similaires.

Cramer is a chatbot that reluctantly answers questions.

###
User: How many pounds are in a kilogram?
Cramer: This again? There are 2.2 pounds in a kilogram. Please make a note of this.
###
User: What does HTML stand for?
Cramer: 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?
Cramer: 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?
Cramer: 

Instructions pour la conception de conversations

Nos démonstrations montrent combien il est facile de créer un chatbot capable de mener une conversation. Bien que simple d’apparence, cette approche suit plusieurs instructions importantes :

  • Définissez l’intention de la conversation. Tout comme les autres invites, vous décrivez l’intention de l’interaction à l’API. Ici c’est « une conversation ». Cette entrée prépare l’API à traiter l’entrée suivante en fonction de l’intention initiale.

  • Indiquez à l’API comment se comporter. Les instructions explicites sur la façon dont l’API doit interagir sont un détail clé de cette démonstration : « L’assistant est serviable, créatif, intelligent et très aimable. » Sans vos instructions explicites, l’API pourrait s’égarer et imiter l’humain avec lequel il interagit. L’API pourrait devenir hostile ou présenter d’autres comportements indésirables.

  • Donnez une identité à l’API. Au début, l’API répond en tant qu’IA créée par OpenAI. Bien que l’API n’ait aucune identité intrinsèque, la description de son personnage lui permet de répondre d’une manière aussi proche de la vérité que possible. Vous pouvez utiliser des descriptions d’identité d’autres manières pour créer différentes sortes de chatbots. Si vous dites à l’API de répondre en tant que chercheur en biologie, vous obtiendrez des commentaires intelligents et réfléchis, comme ce que vous pouvez attendre d’une personne de ce milieu.

Transformer le texte

L’API est un modèle de langage qui connaît les différentes façons dont les mots et les personnages peuvent être utilisés pour exprimer des informations. Les données de connaissances prennent en charge la transformation du texte de langage naturel en code, ainsi que la traduction entre l’anglais et d’autres langues. L’API est également en mesure de comprendre le contenu à un niveau qui lui permet de le résumer, le convertir et l’exprimer de différentes façons. Prenons quelques exemples.

Traduire du texte d’une langue vers une autre

Cette démonstration indique à l’API comment convertir des expressions anglaises 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, car l’API a déjà une certaine maîtrise de la langue française. Vous n’avez pas besoin d’essayer d’enseigner la langue à l’API. Il vous suffit de fournir suffisamment d’exemples pour aider l’API à comprendre votre demande de convertir une langue à une autre.

Si vous souhaitez traduire de l’anglais vers une langue que l’API ne reconnaît pas, vous devez fournir à l’API plus d’exemples et un modèle affiné capable de produire des traductions naturelles.

Conversion entre texte et emojis

Cette démonstration convertit le titre d’un film de texte en caractères emoji. Cet exemple montre l’adaptabilité de l’API à reconnaître des schémas et à fonctionner avec d’autres personnages.

Carpool Time: 👨👴👩🚗🕒
Robots in Cars: 🚗🤖
Super Femme: 👸🏻👸🏼👸🏽👸🏾👸🏿
Webs of the Spider: 🕸🕷🕸🕸🕷🕸
The Three Bears: 🐻🐼🐻
Mobster Family: 👨👩👧🕵🏻‍♂️👲💥
Arrows and Swords: 🏹🗡🗡🏹
Snowmobiles:

Résumer le texte

L’API est capable de saisir le contexte d’un texte et le reformuler de différentes manières. Dans cette démonstration, l’API prend un bloc de texte et crée une explication compréhensible pour un enfant de primaire. Cet exemple montre que l’API a une compréhension linguistique approfondie.

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:
"""

Instructions pour la production de résumés de texte

La synthèse de texte implique souvent de fournir de grandes quantités de texte à l’API. Pour éviter que l’API ne dérive après avoir traité un bloc de texte volumineux, suivez ces instructions :

  • Entourez le texte à résumer par trois guillemets doubles. Dans cet exemple, vous entrez trois guillemets doubles (""") sur une ligne individuelle avant et après le bloc de texte à résumer. Ce style de mise en forme définit clairement le début et la fin du grand bloc de texte à traiter.

  • Expliquez l’intention du résumé et le public cible avant et après le résumé. Vous remarquerez que cet exemple diffère des autres, car vous fournissez à deux reprises des instructions à l’API : avant et après le texte à traiter. Les instructions redondantes permettent à l’API de se concentrer sur la tâche prévue et d’éviter les dérives.

Compléter des entrées partielles de texte et de code

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é.

Dans cette démonstration, vous fournissez à l’API une invite de texte qui semble incomplète. Vous terminez l’entrée de texte sur le mot « et ». L’API interprète le texte incomplet en tant que déclencheur pour poursuivre votre pensée.

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

Cette prochaine démonstration montre comment vous pouvez utiliser la fonctionnalité de saisie semi-automatique pour aider à rédiger des composants de code React. Vous commencez par envoyer du code à l’API. Vous terminez l’entrée de code par une parenthèse ouverte (. L’API interprète le code incomplet comme déclencheur pour compléter la définition de constante HeaderComponent. L’API peut compléter cette définition de code, car elle comprend la bibliothèque React correspondante.

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

Instructions pour générer des saisies semi-automatiques

Voici quelques instructions utiles pour utiliser l’API afin de générer des saisies semi-automatiques de texte et de code :

  • Réduisez la température pour maintenir la focalisation de l’API. Définissez des valeurs inférieures pour le paramètre Temperature afin d’indiquer à l’API de fournir des réponses axées sur l’intention décrite dans votre invite.

  • Augmentez la température pour permettre à l’API de partir sur des digressions. Définissez des valeurs supérieures pour le paramètre Temperature afin de permettre à l’API de répondre de manière tangentielle à l’intention décrite dans votre invite.

  • Utilisez les modèles Azure OpenAI GPT-35-Turbo et GPT-4. Pour les tâches qui impliquent la compréhension ou la génération de code, Microsoft recommande d’utiliser les modèles GPT-35-Turbo et GPT-4 d’Azure OpenAI. Ces modèles utilisent le nouveau format de saisie semi-automatique de conversation.

Générer des réponses factuelles

L’API a appris des connaissances basées sur des données réelles examinées pendant sa formation. Elle utilise ces données apprises pour formuler ses réponses. Toutefois, l’API peut également répondre d’une manière qui semble vraie, mais qui est en fait inventée.

Il existe plusieurs façons de limiter la probabilité que l’API invente une réponse en réponse à votre entrée. Vous pouvez définir le fondement d’une réponse vraie et factuelle, de sorte que l’API rédige sa réponse à partir de vos données. Vous pouvez également définir une valeur de probabilité de faible Temperature et montrer à l’API comment répondre lorsque les données ne sont pas disponibles pour une réponse factuelle.

La démonstration suivante montre comment instruire l’API à répondre de manière plus factuelle. Vous fournissez à l’API des exemples de questions et de réponses qu’elle comprend. Vous fournissez également des exemples de questions (« Q ») qu’elle peut ne pas reconnaître et utilisez un point d’interrogation pour la sortie de la réponse (« A »). Cette approche enseigne à l’API comment répondre à des questions auxquelles elle ne peut pas répondre de manière factuelle.

En guise de protection, vous définissez la probabilité de Temperature sur zéro afin que l’API soit plus susceptible de répondre avec un point d’interrogation (?) en cas de doute sur la réponse vraie et factuelle.

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 an 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 Egad Debunk?
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:

Instructions pour générer des réponses factuelles

Examinons les instructions pour limiter la probabilité que l’API invente une réponse :

  • Fournissez un fondement de vérité pour l’API. Indiquez à l’API ce qu’il faut utiliser comme fondement pour créer une réponse vraie et factuelle basée sur votre intention. Si vous fournissez à l’API un corps de texte à utiliser pour répondre aux questions (comme une entrée Wikipedia), l’API est moins susceptible d’inventer une réponse.

  • Utilisez une probabilité faible. Définissez une valeur de probabilité à faible Temperature afin que l’API reste axée sur votre intention et ne dérive pas vers la création d’une réponse inventée ou imaginaire.

  • Montrez à l’API comment répondre par « Je ne sais pas ». Vous pouvez entrer des exemples de questions et de réponses qui enseignent à l’API comment utiliser une réponse spécifique pour les questions auxquelles elle ne trouve pas de réponse factuelle. Dans l’exemple, vous apprenez à l’API à répondre par un point d’interrogation (?) lorsqu’elle ne trouve pas les données correspondantes. Cette approche permet également à l’API d’apprendre que la réponse « Je ne sais pas » est plus « correcte » que d’inventer une réponse.

Travailler avec du 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.

Pour plus d’informations sur la génération de saisies semi-automatiques de code, consultez l’article Modèles Codex et Azure OpenAI Service.

Étapes suivantes