Aprenda como gerar ou manipular texto

O Serviço OpenAI do Azure fornece um ponto de extremidade de conclusão que pode ser usado para uma ampla variedade de tarefas. O ponto de extremidade fornece uma interface de texto simples, mas poderosa, para qualquer modelo openAI do Azure. Para disparar a conclusão, insira algum texto como um prompt. O modelo gera a conclusão e tenta corresponder ao seu contexto ou padrão. Suponha que você forneça o prompt "Como Descartes disse, eu penso, portanto" à API. Para esse prompt, o OpenAI do Azure retorna o ponto de extremidade de conclusão "existo" com alta probabilidade.

A melhor maneira de começar a explorar as conclusões é por meio de nosso playground no Estúdio do OpenAI do Azure. É uma caixa de texto simples em que você pode digitar um prompt para gerar uma conclusão. Você pode começar com um prompt simples como este:

write a tagline for an ice cream shop

Depois de inserir o prompt, o Azure OpenAI exibe a conclusão:

we serve up smiles with every scoop!

Os resultados de conclusão que você vê podem ser diferentes porque a API do OpenAI do Azure produz uma nova saída para cada interação. Você pode obter uma conclusão um pouco diferente sempre que chamar a API, mesmo que o prompt permaneça o mesmo. Controle esse comportamento com a configuração Temperature.

Essa interface simples "de texto de entrada, texto de saída" significa que você pode "programar" o modelo OpenAI do Azure fornecendo instruções ou apenas alguns exemplos do que gostaria que ele fizesse. Seu sucesso geralmente depende da complexidade da tarefa e da qualidade do prompt. Uma regra geral é pensar em como você escreveria um problema de palavra para um aluno do ensino fundamental resolver. Um prompt bem escrito fornece informações suficientes para que o modelo saiba o que você deseja e como ele deve responder.

Observação

Os dados de treinamento do modelo podem ser diferentes para cada tipo de modelo. Os dados de treinamento do modelo mais recente atualmente se estendem apenas até setembro de 2021. Dependendo do prompt, o modelo pode não ter conhecimento dos eventos atuais relacionados.

Prompts de design

Os modelos do Serviço OpenAI do Azure podem fazer tudo, desde a geração de histórias originais até a execução de análises de texto complexas. Porque eles podem fazer tantas coisas, você deve ser explícito em mostrar o que você quer. Mostrar, não apenas contar, muitas vezes é o segredo para um bom prompt.

Os modelos tentam prever o que você deseja no prompt. Se você digitar o prompt "Me dê uma lista de raças de gatos", o modelo não assumiria automaticamente que você está pedindo somente uma lista. Você poderia iniciar uma conversa em que as primeiras palavras sejam "Forneça uma lista de raças de gatos" seguida de "e eu vou te dizer de quais eu gosto". Se o modelo assumisse apenas que você queria uma lista de gatos, ele não seria tão bom na criação de conteúdo, classificação ou outras tarefas.

Diretrizes para criar prompts robustos

Há três diretrizes básicas para criar prompts úteis:

  • Mostrar e contar. Deixe claro o que você deseja por meio de instruções, exemplos ou uma combinação dos dois. Se você quiser que o modelo classifique uma lista de itens em ordem alfabética ou classifique um parágrafo por sentimento, inclua esses detalhes em seu prompt para mostrar o modelo.

  • Forneça dados de qualidade. Se você estiver tentando criar um classificador ou fazer com que o modelo siga um padrão, verifique se há exemplos suficientes. Certifique-se de revisar seus exemplos. O modelo é inteligente o suficiente para resolve erros de ortografia básicos e fornecer uma resposta significativa. Por outro lado, o modelo pode assumir que os erros são intencionais, o que pode afetar a resposta.

  • Verifique suas configurações. Configurações de probabilidade, como Temperature e Top P controlam o quão determinístico o modelo está na geração de uma resposta. Se você estiver solicitando uma resposta em que haja apenas uma resposta correta, especifique valores mais baixos para essas configurações. Se você está procurando uma resposta que não seja óbvia, talvez você queira aumentar os valores. O erro mais comum que os usuários cometem com essas configurações é supondo que eles controlam a "esperteza" ou a "criatividade" na resposta do modelo.

Solução de problemas de prompt

Se você estiver tendo problemas para fazer com que a API seja executada conforme o esperado, examine os seguintes pontos para sua implementação:

  • Está claro qual deve ser a geração pretendida?
  • Há exemplos suficientes?
  • Você verificou seus exemplos de erros? (A API não informará diretamente)
  • Você está usando as configurações de probabilidade Temperature e Top P corretamente?

Classificar textos

Para criar um classificador de texto com a API, fornecemos uma descrição da tarefa e fornecemos alguns exemplos. Nesta demonstração, mostramos à API como classificar o sentimento de mensagens de texto. O sentimento expressa o sentimento ou a expressão geral no texto.

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:

Diretrizes para criar classificadores de texto

Esta demonstração revela várias diretrizes para criar classificadores:

  • Use uma linguagem simples para descrever suas entradas e saídas. Use linguagem simples para a entrada "Mensagem" e o valor esperado que expressa o "Sentimento". Para práticas recomendadas, comece com descrições de linguagem simples. Muitas vezes, você pode usar abreviações ou chaves para indicar a entrada e a saída ao criar seu prompt, mas é melhor começar sendo o mais descritivo possível. Em seguida, você pode trabalhar para trás e remover palavras extras, desde que o desempenho para o prompt seja consistente.

  • Mostre à API como responder a qualquer caso. A demonstração fornece vários resultados: "Positivo", "Negativo" e "Neutro". O suporte a um resultado neutro é importante porque há muitos casos em que até mesmo um humano pode ter dificuldade em determinar se algo é positivo ou negativo.

  • Use emoji e texto, de acordo com a expressão comum. A demonstração mostra que o classificador pode ser uma combinação de texto e emoji 👍. A API lê emojis e pode até converter expressões de e para elas. Para obter a melhor resposta, use formas comuns de expressão para seus exemplos.

  • Use menos exemplos para tarefas familiares. Esse classificador fornece apenas alguns exemplos porque a API já tem uma compreensão do sentimento e do conceito de uma mensagem de texto. Se você estiver criando um classificador para algo com o qual a API pode não estar familiarizada, talvez seja necessário fornecer mais exemplos.

Vários resultados de uma única chamada à API

Agora que você entende como criar um classificador, vamos expandir a primeira demonstração para torná-la mais eficiente. Você deseja poder usar o classificador para obter vários resultados de uma única chamada à 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.

Essa demonstração mostra a API como classificar mensagens de texto por sentimento. Você fornece uma lista numerada de mensagens e uma lista de classificações de sentimento com o mesmo índice numérico. A API usa as informações na primeira demonstração para saber como classificar o sentimento de uma única mensagem de texto. Na segunda demonstração, o modelo aprende a aplicar a classificação de sentimento a uma lista de mensagens de texto. Essa abordagem permite que a API avalie cinco (e até mais) mensagens de texto em uma única chamada de API.

Importante

Quando você solicita à API para criar listas ou avaliar texto, é importante ajudar a API a evitar descompasso. Veja alguns pontos a serem seguidos:

  • Preste atenção aos seus valores para as configurações de probabilidade Top P ou Temperature.
  • Execute vários testes para verificar se as configurações de probabilidade estão calibradas corretamente.
  • Não use listas longas. Listas longas podem levar à descompasso.

Disparar ideias

Uma das tarefas mais poderosas e simples que você pode realizar com a API é gerar novas ideias ou versões de entrada. Suponha que você está escrevendo um romance misterioso e precisa de algumas ideias de história. Você pode fornecer à API uma lista de algumas ideias e ela tentará adicionar mais ideias à sua lista. A API pode criar planos de negócios, descrições de caracteres, slogans de marketing e muito mais de apenas um punhado de exemplos.

Na próxima demonstração, você usará a API para criar mais exemplos de como usar a realidade virtual na sala de aula:

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.

Essa demonstração fornece à API uma descrição básica para sua lista juntamente com um item de lista. Em seguida, você usa um prompt incompleto de "2." para disparar uma resposta da API. A API interpreta a entrada incompleta como uma solicitação para gerar itens semelhantes e adicioná-los à sua lista.

Diretrizes para disparar ideias

Embora essa demonstração use um prompt simples, ela realça várias diretrizes para disparar novas ideias:

  • Explicar a intenção da lista. Semelhante à demonstração do classificador de texto, você começa informando à API do que se trata a lista. Essa abordagem ajuda a API a se concentrar em concluir a lista em vez de tentar determinar padrões analisando o texto.

  • Defina o padrão para os itens na lista. Quando você fornece uma descrição de uma frase, a API tenta seguir esse padrão ao gerar novos itens para a lista. Se você quiser uma resposta mais detalhada, precisará estabelecer essa intenção com uma entrada de texto mais detalhada para a API.

  • Solicite a API com uma entrada incompleta para disparar novas ideias. Quando a API encontra texto que parece incompleto, como o texto do prompt "2.", ele primeiro tenta determinar qualquer texto que possa concluir a entrada. Como a demonstração tinha um título de lista e um exemplo com o número "1" e o texto que acompanhava, a API interpretou o texto do prompt incompleto "2" como uma solicitação para continuar adicionando itens à lista.

  • Técnicas de geração avançada. Melhore a qualidade das respostas fazendo uma lista mais diversificada no prompt. Uma abordagem é começar com um exemplo, deixar a API gerar mais exemplos e, em seguida, selecionar os exemplos que você mais gosta e adicioná-los à lista. Mais algumas variações de alta qualidade podem melhorar drasticamente a qualidade das respostas.

Conduzir conversas

A partir do lançamento do GPT-35-Turbo e GPT-4, recomendamos que você crie chatbots e geração de conversa usando modelos que dão suporte ao ponto de extremidade de conclusão do chat. Os modelos de conclusão de chat e o ponto de extremidade exigem uma estrutura de entrada diferente do ponto de extremidade de conclusão.

A API é hábil em continuar conversas com humanos e até mesmo consigo mesma. Com apenas algumas linhas de instrução, a API pode funcionar como um chatbot de atendimento ao cliente que responde a perguntas de forma inteligente, sem ficar confuso, ou como um parceiro de conversa inteligente que faz piadas e trocadilhos. A chave é informar à API como ela deve se comportar e, em seguida, fornecer alguns exemplos.

Nesta demonstração, a API fornece a função de uma IA respondendo a perguntas:

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: 

Vamos examinar uma variação de um chatbot chamado "Cramer", um assistente virtual divertido e um tanto útil. Para ajudar a API a entender o caractere da função, você fornece alguns exemplos de perguntas e respostas. Bastam apenas algumas respostas sarcásticas e a API pode captar o padrão e fornecer um número infinito de respostas semelhantes.

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: 

Diretrizes para criar conversas

Nossas demonstrações mostram a facilidade com que você pode criar um chatbot capaz de manter uma conversa. Embora pareça simples, essa abordagem segue várias diretrizes importantes:

  • Defina a intenção da conversa. Assim como os outros prompts, você descreve a intenção da interação com a API. Nesse caso, "uma conversa". Essa entrada prepara a API para processar a entrada subsequente de acordo com a intenção inicial.

  • Diga à API como se comportar. Um detalhe importante nesta demonstração são as instruções explícitas sobre como a API deve interagir: "A assistente é útil, criativa, inteligente e muito amigável". Sem suas instruções explícitas, a API pode desviar e imitar o humano com o qual está interagindo. A API pode se tornar hostil ou exibir outro comportamento indesejável.

  • Dê uma identidade à API. No início, você tem a API respondendo como uma IA criada pela OpenAI. Embora a API não tenha uma identidade intrínseca, a descrição do caractere ajuda a API a responder da forma mais próxima possível da verdade. Você pode usar as descrições de identidade de caracteres de outras maneiras para criar diferentes tipos de chatbots. Se você disser à API para responder como um cientista pesquisador em biologia, receberá comentários inteligentes e ponderados da API, semelhantes aos que você esperaria de alguém com essa formação.

Texto de transformação

A API é um modelo de linguagem que está familiarizado com várias maneiras pelas quais as palavras e as identidades de caracteres podem ser usadas para expressar informações. Os dados de conhecimento dão suporte à transformação de texto de linguagem natural em código e tradução entre outros idiomas e inglês. A API também é capaz de entender o conteúdo em um nível que permite resumir, converter e expressá-lo de maneiras diferentes. Vamos ver alguns exemplos.

Traduzir texto de um idioma para outro

Esta demonstração instrui a API sobre como converter frases em inglês em francês:

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:

Esse exemplo funciona porque a API já domina o idioma francês. Você não precisa tentar ensinar o idioma à API. Você só precisa fornecer exemplos suficientes para ajudar a API a entender sua solicitação para converter de um idioma para outro.

Se você quiser traduzir do inglês para um idioma que a API não reconhece, você precisará fornecer à API mais exemplos e um modelo ajustado que possa produzir traduções fluentes.

Converter entre texto e emoji

Essa demonstração converte o nome de um filme de texto em caracteres emoji. Esse exemplo mostra a capacidade de adaptação da API para entender padrões e trabalhar com outros caracteres.

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

Resumir textos

A API pode compreender o contexto do texto e reformulá-lo de maneiras diferentes. Nesta demonstração, a API usa um bloco de texto e cria uma explicação compreensível por uma criança. Esse exemplo ilustra que a API tem um profundo domínio da linguagem.

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

Diretrizes para produzir resumos de texto

O resumo de texto geralmente envolve o fornecimento de grandes quantidades de texto para a API. Para ajudar a evitar que a API desabilitar depois de processar um grande bloco de texto, siga estas diretrizes:

  • Coloque o texto para resumir entre aspas duplas triplas. Neste exemplo, você insere três aspas duplas (""") em uma linha separada antes e depois do bloco de texto a ser resumido. Esse estilo de formatação define claramente o início e o fim do grande bloco de texto a ser processado.

  • Explique a intenção de resumo e o público-alvo antes e depois do resumo. Observe que este exemplo difere dos outros porque você fornece instruções à API duas vezes: antes e depois do texto a ser processado. As instruções redundantes ajudam a API a se concentrar em sua tarefa pretendida e evitar descompasso.

Concluir entradas parciais de texto e código

Embora todos os prompts resultem em conclusões, pode ser útil pensar na conclusão do texto como sua própria tarefa em instâncias em que você deseja que a API retome de onde parou.

Nesta demonstração, você fornece um prompt de texto para a API que parece estar incompleta. Você interrompe a entrada de texto na palavra "e". A API interpreta o texto incompleto como um gatilho para continuar seu treinamento de pensamento.

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

A próxima demonstração mostra como você pode usar o recurso de conclusão para ajudar a escrever React componentes de código. Você começa enviando algum código para a API. Você interrompe a entrada de código com um parêntese aberto (. A API interpreta o código incompleto como um gatilho para concluir a HeaderComponent definição de constante. A API pode concluir essa definição de código porque tem uma compreensão da biblioteca React correspondente.

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

Diretrizes para gerar conclusões

Aqui estão algumas diretrizes úteis para usar a API para gerar conclusões de texto e código:

  • Diminua a temperatura para manter o foco da API. Defina valores mais baixos para a configuração Temperature para instruir a API a fornecer respostas focadas na intenção descrita em seu prompt.

  • Aumente a Temperatura para permitir que a API seja tangente. Defina valores mais altos para a configuração Temperature para permitir que a API responda de uma maneira tangencial à intenção descrita em seu prompt.

  • Use os modelos GPT-35-Turbo e GPT-4 OpenAI do Azure. Para tarefas que envolvem entender ou gerar código, a Microsoft recomenda usar os modelos OpenAI do AzureGPT-35-Turbo e GPT-4. Esses modelos usam o novo formato de conclusões de chat.

Gerar respostas factuais

A API aprendeu o conhecimento que se baseia em dados reais revisados durante seu treinamento. Ele usa esses dados aprendidos para formar suas respostas. No entanto, a API também tem a capacidade de responder de uma forma que soe verdadeira, mas, na verdade, é fabricada.

Há algumas maneiras de limitar a probabilidade da API criar uma resposta em resposta à sua entrada. Você pode definir a base para uma resposta verdadeira e factual, de modo que a API elabore sua resposta de seus dados. Você também pode definir um valor de baixa Temperature probabilidade e mostrar à API como responder quando os dados não estiverem disponíveis para uma resposta factual.

A demonstração a seguir mostra como ensinar a API a responder de maneira mais factual. Você fornece à API exemplos de perguntas e respostas que ela entende. Você também fornece exemplos de perguntas ("Q") que ele pode não reconhecer e usar um ponto de interrogação para a saída da resposta ("A"). Essa abordagem ensina a API a responder a perguntas que não pode responder factualmente.

Como uma proteção, você define a Temperature probabilidade como zero para que a API seja mais propensa a responder com um ponto de interrogação (?) se houver alguma dúvida sobre a resposta verdadeira e factual.

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:

Diretrizes para gerar respostas factuais

Vamos examinar as diretrizes para ajudar a limitar a probabilidade da API criar uma resposta:

  • Forneça uma verdade básica para a API. Instrua a API sobre o que usar como base para criar uma resposta verdadeira e factual com base em sua intenção. Se você fornecer à API um corpo de texto a ser usado para responder a perguntas (como uma entrada da Wikipédia), a API terá menos probabilidade de fabricar uma resposta.

  • Use uma probabilidade baixa. Defina um valor de baixa Temperature probabilidade para que a API permaneça focada em sua intenção e não faça o descompasso ao criar uma resposta fabricada ou confabulada.

  • Mostre à API como responder com "Eu não sei". Você pode inserir perguntas e respostas de exemplo que ensinam a API a usar uma resposta específica para perguntas para as quais ela não consegue encontrar uma resposta factual. No exemplo, você ensina a API a responder com um ponto de interrogação (?) quando não consegue localizar os dados correspondentes. Essa abordagem também ajuda a API a aprender ao responder com "Eu não sei" é mais "correta" do que criar uma resposta.

Trabalhe com código

A série de modelos Codex é um descendente da série GPT-3 básica do OpenAI que foi treinado em linguagem natural e em bilhões de linhas de código. Ela é a mais preparada no Python e proficiente em dezenas de linguagens, incluindo C#, JavaScript, Go, Perl, PHP, Ruby, Swift, TypeScript, SQL e até Shell.

Para obter mais informações sobre como gerar conclusões de código, consulte Modelos codex e Serviço OpenAI do Azure.

Próximas etapas