Trabalhar com finalizações de texto no Azure OpenAI
Os modelos GPT-35-Turbo e GPT-4 são modelos de linguagem otimizados para interfaces de conversação. Os modelos comportam-se de forma diferente dos modelos GPT-3 mais antigos. Os modelos anteriores eram text-in e text-out, o que significa que eles aceitavam uma string de prompt e retornavam uma conclusão para anexar ao prompt como você acabou de aprender.
No entanto, os modelos GPT-35-Turbo e GPT-4 são conversa-in e message-out. Os modelos esperam entrada formatada em um formato de transcrição específico semelhante ao bate-papo e retornam uma conclusão que representa uma mensagem escrita pelo modelo no chat.
GPT-35-Turbo e GPT-4 ainda podem aceitar e gerar finalizações de texto, mas onde eles brilham é com o chat.
No Azure OpenAI, há duas opções diferentes para interagir com esses tipos de modelos:
- API de conclusão de chat.
- API de conclusão com Chat Markup Language (ChatML).
A API de conclusão de bate-papo é uma nova API dedicada para interagir com os modelos GPT-35-Turbo e GPT-4 e vamos usá-la ao longo daqui.
Noções básicas sobre as funções da API de conclusão de bate-papo
A OpenAI treinou os modelos GPT-35-Turbo e GPT-4 para aceitar entradas formatadas como uma conversa. Cada entrada ou prompt enviado para o modelo e cada resposta retornada pelo modelo é adicionada a uma conversa geral na API de conclusão do bate-papo.
A API de Conclusão de Chat refere-se aos prompts de entrada e respostas de saída 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.
A 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:
- 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ários para o modelo, como perguntas relevantes de uma FAQ
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 recomenda-se incluir pelo menos uma básica para obter os melhores resultados.
As funções de usuário e assistente
A conversa acontece entre um usuário e o assistente. O usuário é a pessoa que insere 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 para o modelo deve seguir as práticas recomendadas para projetar prompts, a fim de obter respostas da mais alta qualidade.
Exemplos de prompt de mensagem
Aqui estão alguns exemplos de diferentes estilos de prompts que você pode usar com os modelos GPT-35-Turbo e GPT-4. Os exemplos são apenas um ponto de partida e você pode experimentar diferentes prompts para personalizar o comportamento.
Exemplo básico
Se você 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 "Assistente é um modelo de linguagem grande treinado pela OpenAI".
Aprenderemos como usar o SDK .NET da API de conclusão de bate-papo na próxima unidade, por enquanto ficaremos com nomes de variáveis como 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 guarda-corpos 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, por isso precisa de uma transcrição atualizada a cada nova pergunta com todas as perguntas e respostas, caso contrário perderá o contexto.
Isso significa que você precisará enviar a conversa completa e atualizada para o modelo toda vez que interagir com ele e, em seguida, o limite de token para cada modelo poderá ser facilmente atingido.
O limite de token para gpt-35-turbo
é de 4096 tokens, enquanto os limites de token para gpt-4
e gpt-4-32k
são 8192 e 32768, respectivamente. Você deve permanecer abaixo desses limites, caso contrário, você receberá um erro.
Você pode acompanhar a contagem de tokens e remover as mensagens mais antigas da matriz enviada para o 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 da conversa pode fazer com que a qualidade da conversa se degrade à medida que o contexto de partes anteriores da conversa é perdido.
Como alternativa, uma vez que o limite de token é atingido, você pode solicitar que o usuário inicie uma nova conversa.