Trabalhar com preenchimentos de texto no OpenAI do Azure

Concluído

Os modelos GPT-35-Turbo e GPT-4 são modelos de linguagem otimizados para interfaces de conversação. Os modelos se comportam de maneira diferente dos modelos GPT-3 mais antigos. Os modelos anteriores eram de inserção e emissão de texto, o que significa que aceitavam uma sequência de prompts e retornavam um preenchimento para anexar ao prompt conforme você acabou de aprender.

No entanto, os modelos GPT-35-Turbo e GPT-4 são de entrada de conversas e saída de mensagens. Os modelos esperam uma entrada formatada em um formato de transcrição específico semelhante a um chat e retornam uma conclusão que representa uma mensagem escrita por modelo no chat.

O GPT-35-Turbo e o GPT-4 continuam podem aceitar e gerar preenchimentos de texto, mas sua maior qualidade é o chat.

No OpenAI do Azure, existem duas opções diferentes para interagir com esses tipos de modelos:

  • API de Conclusão de Chat.
  • API de Conclusão com a Linguagem de Marcação de Chat (ChatML).

A API de Preenchimento de Chat é uma nova API dedicada para interagir com os modelos GPT-35-Turbo e GPT-4, e vamos usá-la à medida que vamos avançando aqui.

Como entender as funções da API de Preenchimento de Chat

A OpenAI treinou os modelos GPT-35-Turbo e GPT-4 para aceitar entradas formatadas como uma conversa. Cada inserção ou prompt enviados ao modelo e cada resposta retornada pelo modelo são adicionados a uma conversa de caráter geral na API de Preenchimento de Chat.

A API de Preenchimento de Chat se refere aos prompts inseridos e às respostas emitidas como mensagens.

O modelo aceita uma matriz de objetos de mensagem com uma conversa organizada por funções. Existem três tipos de funções: Sistema, Usuário e Assistente.

Função do Sistema

A função do sistema também conhecida como mensagem do sistema é incluída no início da matriz. Esta mensagem fornece as instruções iniciais para o modelo. Você pode fornecer várias informações na função do sistema, incluindo:

  • Uma breve descrição do assistente
  • Traços de personalidade do assistente
  • Instruções ou regras que você gostaria que o assistente seguisse
  • Dados ou informações necessárias para o modelo, tais como dúvidas relevantes provenientes de Perguntas Frequentes

Você pode personalizar a função do sistema para seu caso de uso ou apenas incluir instruções básicas. A função/mensagem do sistema é opcional, mas é recomendável incluir pelo menos uma mensagem básica para obter os melhores resultados.

As funções de usuário e assistente

A conversa ocorre entre um usuário e o assistente. O usuário é a pessoa que insere os prompts e interage com o modelo. As respostas do modelo são representadas pela função do sistema.

A mensagem que o usuário envia ao modelo deve seguir as boas práticas de criação de prompts para obter respostas da maior qualidade possível.

Exemplos de prompt de mensagens

Aqui temos alguns exemplos de diferentes estilos de prompts que você pode usar com os modelos GPT-35-Turbo e GPT-4. Esses exemplos são apenas um ponto de partida, e você pode experimentar diferentes prompts para personalizar o comportamento.

Exemplo básico

Se quiser que o modelo GPT-35-Turbo se comporte de forma semelhante ao chat.openai.com, você pode usar uma mensagem básica do sistema como "O Assistente é um modelo de linguagem grande treinado pelo OpenAI".

Vamos aprender como usar o SDK do .NET da API de Preenchimentos de Chat na próxima unidade. Por enquanto, vamos nos limitar aos nomes de variáveis como um exemplo.


string systemMessage = "Assistant is a large language model trained by OpenAI";
string userMessage = "Who were the founders of Microsoft?";

Exemplo com instruções

Para alguns cenários, você pode querer dar instruções adicionais ao modelo para definir guardrails para o que o modelo é capaz de fazer.

string systemMessage = """
Assistant is an intelligent chatbot designed to help users answer their tax related questions.
Instructions: 
- Only answer questions related to taxes. 
- If you're unsure of an answer, you can say "I don't know" or "I'm not sure" and recommend users go to the IRS website for more information. 
""";

string userMessage = "When are my taxes due?";

Gerenciando conversas

O modelo não tem memória, então precisa de uma transcrição atualizada com todas as perguntas e respostas a cada nova pergunta; caso contrário, perderá o contexto.

Isso significa que você vai precisar enviar a conversa inteira atualizada para o modelo sempre que interagir com ele e, consequentemente, o limite de token para cada modelo poderia ser facilmente atingido.

O limite de token para gpt-35-turbo é 4096 tokens, enquanto os limites de token para gpt-4 e gpt-4-32k são 8192 e 32768, respectivamente. Você precisa se manter abaixo desses limites, caso contrário irá receber um erro.

Você pode monitorar o número de tokens e remover as mensagens mais antigas da matriz enviada ao modelo. É melhor sempre manter a mensagem do sistema e remover apenas as mensagens do assistente ou do usuário. No entanto, com o tempo, esse método de gerenciamento de conversas pode fazer com que a qualidade da conversação se deteriore, já o modelo gradualmente irá perdendo o contexto das partes anteriores da conversa.

Alternativamente, assim que o limite de tokens for atingido você poderá solicitar ao usuário que inicie uma nova conversa.

Verificar seus conhecimentos

1.

Qual é a importância da função do sistema?