Partilhar via


Saiba como gerar ou manipular texto usando a API de conclusão herdada

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 entrada e saída de texto simples, mas poderosa, para qualquer modelo OpenAI do Azure. Para acionar 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 acho, portanto" para a API. Para esse prompt, o Azure OpenAI retorna o ponto de extremidade de conclusão "Eu sou" com alta probabilidade.

Importante

A menos que você tenha um caso de uso específico que exija o ponto de extremidade de conclusão, recomendamos usar o ponto de extremidade de conclusão de bate-papo, que permite que você aproveite os modelos mais recentes, como GPT-4o, GPT-4o mini e GPT-4 Turbo.

A melhor maneira de começar a explorar as conclusões é através do playground no Azure AI Studio. É uma caixa de texto simples onde você insere 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 seu prompt, o Azure OpenAI exibe a conclusão:

we serve up smiles with every scoop!

Os resultados de conclusão que você vê podem diferir porque a API do Azure OpenAI produz uma nova saída para cada interação. Você pode obter uma conclusão ligeiramente diferente cada vez que chamar a API, mesmo que seu prompt permaneça o mesmo. Você pode controlar esse comportamento com a Temperature configuração.

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

Nota

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

Prompts de design

Os modelos do Serviço OpenAI do Azure podem fazer tudo, desde gerar histórias originais até executar 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 dizer, é muitas vezes o segredo para uma boa linha de comandos.

Os modelos tentam prever o que você quer a partir do prompt. Se você digitar o prompt "Dê-me uma lista de raças de gatos", o modelo não assume automaticamente que você está pedindo apenas uma lista. Você pode estar começando uma conversa onde suas primeiras palavras são "Dê-me uma lista de raças de gatos" seguido de "e eu lhe direi quais eu gosto". Se o modelo assumisse apenas que você queria uma lista de gatos, não seria tão bom na criação de conteúdo, classificação ou outras tarefas.

Diretrizes para a criação de prompts robustos

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

  • Mostrar e contar. Deixe claro o que você quer através 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.

  • Fornecer dados de qualidade. Se estiver a tentar criar um classificador ou fazer com que o modelo siga um padrão, certifique-se de que existem exemplos suficientes. Certifique-se de revisar seus exemplos. O modelo é suficientemente inteligente para resolver erros ortográficos básicos e dar-lhe uma resposta significativa. Por outro lado, o modelo pode assumir que os erros são intencionais, o que pode afetar a resposta.

  • Verifique as suas definições. As configurações de probabilidade, como Temperature e Top P, controlam o quão determinístico o modelo é na geração de uma resposta. Se você estiver pedindo uma resposta onde há apenas uma resposta certa, especifique valores mais baixos para essas configurações. Se estiver à procura de uma resposta que não seja óbvia, poderá querer utilizar valores mais elevados. O erro mais comum que os usuários cometem com essas configurações é assumir que controlam "esperteza" ou "criatividade" na resposta do modelo.

Solução de problemas para problemas imediatos

Se você estiver tendo problemas para fazer com que a API tenha o desempenho esperado, analise os seguintes pontos para sua implementação:

  • É claro qual deve ser a geração pretendida?
  • Há exemplos suficientes?
  • Verificou os seus exemplos em busca de erros? (A API não informa diretamente.)
  • Você está usando as Temperature configurações e Top P probabilidade corretamente?

Classificar texto

Para criar um classificador de texto com a API, forneça uma descrição da tarefa e alguns exemplos. Nesta demonstração, você mostra à API como classificar o sentimento das mensagens de texto. O sentimento expressa o sentimento geral ou expressão 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 projetar classificadores:

  • Use 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 em linguagem simples. Muitas vezes, você pode usar taquigrafia ou teclas para indicar a entrada e 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". Apoiar um resultado neutro é importante porque há muitos casos em que até mesmo um ser humano pode ter dificuldade em determinar se algo é positivo ou negativo.

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

  • Use menos exemplos para tarefas familiares. Este 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 de API

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

Esta demonstração mostra à 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 da primeira demonstração para aprender a classificar o sentimento para 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 classifique cinco (e até mais) mensagens de texto em uma única chamada de API.

Importante

Quando você pede à API para criar listas ou avaliar texto, é importante ajudar a API a evitar desvios. Aqui estão alguns pontos a seguir:

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

Ideias de gatilho

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 de mistério e precisa de algumas ideias de história. Você pode dar à API uma lista de algumas ideias e ela tenta adicionar mais ideias à sua lista. A API pode criar planos de negócios, descrições de personagens, slogans de marketing e muito mais a partir de apenas um pequeno punhado de exemplos.

Na próxima demonstração, você usa 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.

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

Orientações para desencadear ideias

Embora esta demonstração use um prompt simples, ela destaca várias diretrizes para acionar novas ideias:

  • Explique a intenção da lista. Semelhante à demonstração para o classificador de texto, você começa dizendo à API do que se trata a lista. Essa abordagem ajuda a API a se concentrar em completar 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.

  • Avise a API com uma entrada incompleta para acionar novas ideias. Quando a API encontra texto que parece incompleto, como o texto do prompt "2.", ela 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 a acompanhava, a API interpretou o texto de prompt incompleto "2." como uma solicitação para continuar adicionando itens à lista.

  • Explore técnicas avançadas de geração. Você pode melhorar a qualidade das respostas fazendo uma lista mais longa e diversificada em seu 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 em seus exemplos 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 geração conversacional e chatbots usando modelos que suportem o ponto de extremidade de conclusão de 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 manter conversas com humanos e até 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 um parceiro de conversa inteligente que faz piadas e trocadilhos. A chave é dizer à API como ela deve se comportar e, em seguida, fornecer alguns exemplos.

Nesta demonstração, a API fornece o papel 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: 

Vejamos uma variação para um chatbot chamado "Cramer", um assistente virtual divertido e um tanto útil. Para ajudar a API a entender o caráter da função, você fornece alguns exemplos de perguntas e respostas. Tudo o que é preciso é apenas algumas respostas sarcásticas e a API pode pegar 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 projetar 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. Neste 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 chave nesta demonstração são as instruções explícitas de como a API deve interagir: "O assistente é útil, criativo, inteligente e muito amigável." Sem suas instruções explícitas, a API pode se desviar e imitar o ser humano com quem está interagindo. A API pode tornar-se hostil ou apresentar outros comportamentos indesejáveis.

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

Transformar o texto

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

Traduzir de um idioma para outro

Esta demonstração instrui a API sobre como converter frases em inglês para 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:

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

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

Converter entre texto e emoji

Esta demonstração converte o nome de um filme de texto em caracteres emoji. Este exemplo mostra a adaptabilidade da API para pegar 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 texto

A API pode compreender o contexto do texto e reformulá-lo de diferentes maneiras. Nesta demonstração, a API pega um bloco de texto e cria uma explicação que é compreensível por uma criança em idade primária. Este exemplo ilustra que a API tem uma compreensão profunda 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:
"""

Orientações para a elaboração de resumos de textos

A sumarização de texto geralmente envolve o fornecimento de grandes quantidades de texto para a API. Para ajudar a evitar que a API se desvie depois de processar um grande bloco de texto, siga estas diretrizes:

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

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

Texto parcial completo e entradas de código

Embora todos os prompts resultem em conclusão, pode ser útil pensar na conclusão de texto como sua própria tarefa nos casos em que você deseja que a API continue de onde parou.

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

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

Esta 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 constante. A API pode concluir essa definição de código porque tem um entendimento da biblioteca correspondente React .

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

Diretrizes para gerar finalizações

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

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

  • Aumente a temperatura para permitir que a API tangente. Defina valores mais altos para a Temperature configuração 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 Azure OpenAI. Para tarefas que envolvem a compreensão ou a geração de código, a Microsoft recomenda o uso dos modelos OpenAI do Azure e GPT-4 do GPT-35-Turbo Azure. Esses modelos usam o novo formato de conclusão de chat.

Gerar respostas factuais

A API aprendeu 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 parece verdadeira, mas é, na verdade, fabricada.

Há algumas maneiras de limitar a probabilidade de a API criar uma resposta em resposta à sua entrada. Você pode definir a base para uma resposta verdadeira e factual, para que a API elabore sua resposta a partir 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 uma maneira mais factual. Você fornece à API exemplos de perguntas e respostas que ela entende. Você também fornece exemplos de perguntas ("Q") que podem não reconhecer e usar um ponto de interrogação para a saída de resposta ("A"). Essa abordagem ensina a API a responder a perguntas que ela não pode responder factualmente.

Como salvaguarda, você define a Temperature probabilidade como zero para que a API tenha mais probabilidade de 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:

Orientações para gerar respostas factuais

Vamos analisar as diretrizes para ajudar a limitar a probabilidade de a 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 para usar para responder a perguntas (como uma entrada da Wikipédia), é menos provável que a API fabrique uma resposta.

  • Use uma probabilidade baixa. Defina um valor de baixa Temperature probabilidade para que a API permaneça focada na sua intenção e não caia na criação de uma resposta fabricada ou confabulada.

  • Mostre à API como responder com "Não sei". Você pode inserir exemplos de perguntas e respostas que ensinam a API a usar uma resposta específica para perguntas para as quais 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 encontrar os dados correspondentes. Essa abordagem também ajuda a API a aprender quando responder com "Não sei" é mais "correto" do que inventar uma resposta.

Trabalhar com código

A série de modelos Codex é um descendente da série GPT-3 base da OpenAI, que foi treinada em linguagem natural e bilhões de linhas de código. É mais capaz em Python e proficiente em mais de uma dúzia de linguagens, incluindo C#, JavaScript, Go, Perl, PHP, Ruby, Swift, TypeScript, SQL e até mesmo Shell.

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

Próximos passos

  • Saiba como trabalhar com os modelos GPT-35-Turbo e GPT-4.
  • Saiba mais sobre os modelos do Serviço OpenAI do Azure.