ChatGPT

ChatGPT Engenharia de Prompt

Nesta seção, abordamos as mais recentes técnicas de engenharia de prompts para ChatGPT, incluindo dicas, aplicativos, limitações, documentos e materiais de leitura adicionais.

⚠️

Esta seção está em intenso desenvolvimento.

Tofotos:


Introdução ao ChatGPT

O ChatGPT é um novo modelo treinado pela OpenAI (opens in a new tab) que tem a capacidade de interagir de forma conversacional. Este modelo é treinado para seguir instruções em um prompt para fornecer respostas apropriadas no contexto de um diálogo. O ChatGPT pode ajudar a responder perguntas, sugerir receitas, escrever letras em um determinado estilo, gerar código e muito mais.

ChatGPT é treinado usando Reinforcement Learning from Human Feedback (RLHF). Embora esse modelo seja muito mais capaz do que as iterações GPT anteriores (e também treinado para reduzir resultados nocivos e falsos), ele ainda apresenta limitações. Vamos cobrir algumas das capacidades e limitações com exemplos concretos.

Você pode usar a visualização de pesquisa do ChatGPT aqui, mas para os exemplos abaixo, usaremos o modo Chat no OpenAI Playground.


Revisando a tarefa de conversa

Em um dos guias anteriores, abordamos um pouco sobre os recursos de conversação e solicitação de função. Cobrimos como instruir o LLM a ter uma conversa em um estilo específico, com intenção, comportamento e identidade específicos.

Vamos revisar nosso exemplo básico anterior, onde criamos um sistema de conversação capaz de gerar respostas mais técnicas e científicas às perguntas.

Prompt:

A seguir, uma conversa com um assistente de pesquisa de IA. O tom assistente é técnico e científico.

Humano: Olá, quem é você?
AI: Saudações! Eu sou um assistente de pesquisa de IA. Como posso te ajudar hoje?
Humano: Você pode me falar sobre a criação de buracos negros?
IA:

No exemplo acima, você pode ver dois componentes importantes:

  • a intenção ou explicação do que é o chatbot
  • a identidade que instrui o estilo ou tom que o chatbot usará para responder

O exemplo simples acima funciona bem com as APIs de conclusão de texto que usam text-davinci-003. Mais recentemente, OpenAI anunciou as APIs ChatGPT (opens in a new tab), que é um modelo mais poderoso e barato chamado gpt-3.5-turbo foi especificamente construído para este tipo de funcionalidade (conclusões de chat). Na verdade, a OpenAI recomenda esse como seu melhor modelo, mesmo para casos de uso que não sejam de bate-papo. Outros benefícios do uso das APIs do ChatGPT são redução significativa de custos (90%) e eficiência.

Grandes empresas como Snap Inc. e Instacart já estão integrando recursos de conversação desenvolvidos pelo ChatGPT em seus produtos, que variam de recomendações personalizadas a metas de compras abertas.


Conversas com ChatGPT

Conversas em vários turnos

Para começar a demonstrar os recursos do ChatGPT, usaremos o exemplo do assistente do chatbot acima e discutiremos os resultados. Comparado ao text-davinci-003, o modelo gpt-3.5-turbo que alimenta o ChatGPT usa um formato de chat como entrada. O modelo espera uma série de mensagens como entrada e as usa para gerar uma resposta.

Entrada:

SISTEMA: Você é um assistente de pesquisa de IA. Você usa um tom que é técnico e científico.
USUÁRIO: Olá, quem é você?
ASSISTENTE: Saudações! Eu sou um assistente de pesquisa de IA. Como posso te ajudar hoje?
USUÁRIO: Você pode me falar sobre a criação de buracos negros?

Saída:

ASSISTENTE: Claro! Buracos negros são criados quando uma estrela massiva fica sem combustível e colapsa sob sua própria gravidade. Esse colapso faz com que a estrela fique incrivelmente densa, com um campo gravitacional tão forte que nem a luz consegue escapar dele. Esse ponto sem retorno é conhecido como horizonte de eventos. Uma vez que uma estrela cruza o horizonte de eventos, ela é considerada um buraco negro...

Observe que, no exemplo acima, simplifiquei a entrada e a saída, mas a API de conclusão de bate-papo do ChatGPT exige que as mensagens estejam em um formato específico. Adicionei um instantâneo abaixo de como este exemplo ficaria usando o 'Modo de bate-papo' no OpenAI Playground:

CHATGPT1

A chamada de API mais formal para nosso exemplo seria algo como o exemplo abaixo:

import openai
 
openai.ChatCompletion.create(
  model="gpt-3.5-turbo",
  messages=[
        {"role": "system", "content": "You are an AI research assistant. You use a tone that is technical and scientific."},
        {"role": "user", "content": "Hello, who are you?"},
        {"role": "assistant", "content": "Greeting! I am an AI research assistant. How can I help you today?"},
        {"role": "user", "content": "Can you tell me about the creation of black holes?"}
    ]
)

Na verdade, espera-se que a maneira como os desenvolvedores interagem com o ChatGPT no futuro seja feita por meio da Chat Markup Language (opens in a new tab) (ChatML para curto).

Tarefas de turno único

O formato de bate-papo permite conversas em vários turnos, mas também suporta tarefas de turno único semelhantes ao que usamos com text-davinci-003. Isso significa que podemos usar o ChatGPT para realizar tarefas semelhantes às que demonstramos para os modelos GPT originais. Por exemplo, vamos tentar executar a seguinte tarefa de resposta a perguntas usando o ChatGPT:

Entrada:

USUÁRIO: Responda a pergunta com base no contexto abaixo. Mantenha a resposta curta e concisa. Responda "Não tenho certeza sobre a resposta" se não tiver certeza da resposta.

Contexto: Teplizumab tem suas raízes em uma empresa farmacêutica de Nova Jersey chamada Ortho Pharmaceutical. Lá, os cientistas geraram uma versão inicial do anticorpo, apelidada de OKT3. Originalmente proveniente de camundongos, a molécula foi capaz de se ligar à superfície das células T e limitar seu potencial de morte celular. Em 1986, foi aprovado para ajudar a prevenir a rejeição de órgãos após transplantes renais, tornando-se o primeiro anticorpo terapêutico permitido para uso humano.

Pergunta: De onde veio originalmente o OKT3?

Responder:

Saída:

ASSISTENTE: Ratos.

Lembre-se de que estou adicionando os rótulos USER e ASSISTANT para demonstrar melhor como a tarefa pode ser executada usando o ChatGPT. Aqui está o exemplo usando o Playground:

CHATGPTCLASSIC

Mais formalmente, esta é a chamada da API (incluí apenas o componente de mensagem da solicitação):

CONTENT = """Responda à pergunta com base no contexto abaixo. Mantenha a resposta curta e concisa. Responda \"Não tenho certeza sobre a resposta\" se não tiver certeza sobre a resposta.
 
Contexto: Teplizumab tem suas raízes em uma empresa farmacêutica de Nova Jersey chamada Ortho Pharmaceutical. Lá, os cientistas geraram uma versão inicial do anticorpo, apelidada de OKT3. Originalmente proveniente de camundongos, a molécula foi capaz de se ligar à superfície das células T e limitar seu potencial de morte celular. Em 1986, foi aprovado para ajudar a prevenir a rejeição de órgãos após transplantes renais, tornando-se o primeiro anticorpo terapêutico permitido para uso humano.
 
Pergunta: De onde veio originalmente o OKT3?
 
Responder:
"""
 
response = openai.ChatCompletion.create(
    model="gpt-3.5-turbo",
    messages=[
        {"role": "user", "content": CONTENT},
    ],
    temperature=0,
)

Instruindo Modelos de Chat

De acordo com os documentos oficiais da OpenAI, também serão disponibilizados instantâneos do modelo gpt-3.5-turbo. Por exemplo, podemos acessar o instantâneo de 1º de março gpt-3.5-turbo-0301. Isso permite que os desenvolvedores optem por versões de modelo específicas. Isso também significa que as melhores práticas para instruir modelos podem mudar de versão para versão.

A recomendação atual para gpt-3.5-turbo-0301 é adicionar instruções na mensagem user em oposição à mensagem system disponível.


Referências