Last updated on August 7, 2024
ChatGPT vem ganhando bastante popularidade, com milhares de usuários novos a cada semana. Surpreendentemente, o modelo sob o qual é construido, chamado GPT-3, foi lançado em 2020 e aberto ao público
há um ano atrás!Para aqueles que não estão familiarizados com o assunto, o ChatGPT é um novo modelo de linguage da OpenAI baseado no GPT-3. que foi otimizado para conversas. Ele possui uma interface amigável e simples, ara que você possa fazer uma pergunta e receba uma resposta de uma inteligência artificial assistiva. Experimente você mesmo no link chat.openai.com.
While the early versions of GPT-3 weren't as advanced as the current GPT-3.5 series, they were still impressive. These models have been available through an API and a
playground web UI interface that lets you tune certain configuration hyperparameters and test prompts. GPT-3 gained significant traction, but it did not approach the virality of ChatGPT.
O que torna o ChatGPT tão bem-sucedido, em comparação ao GPT-3, é sua acessibilidade como um assistente de inteligência artificial direto para a pessoa comum, independentemente de seu conhecimento em ciência de dados, modelos de linguagem ou inteligência artificial.
Neste artigo, eu dou uma visão geral de como chatbots como o ChatGPT podem ser implementados usando um grande modelo de linguagem como o GPT-3.
Esse artigo foi escrito em partes como uma reação ao tweet da
Riley Goodside, explicando como o ChatGPT poderia ter sido implementado This article was written in part because of a tweet by , noting how ChatGPT could have been implemented.
How to make your own knock-off ChatGPT using GPT‑3 (text‑davinci‑003) — where you can customize the rules to your needs, and access the resulting chatbot over an API. pic.twitter.com/9jHrs91VHW
— Riley Goodside
December 26, 2022
Da mesma forma como outro modelos da série GPT-3.5, ChatGPT foi treinado usando RLHF, mas ele é eficaz quando usamos prompts eficazes.
Conversa com Skippy no ChatGPT.
Prompting é o processo de passar instruções para uma AI fazer algo.
Como você provavelmente viu em exemplos online do ChatGPT, você pode dar instruções para ele fazer praticamente qualquer coisa. Os casos de uso comuns incluem resumir textos, escrever conteúdo com base em uma descrição ou criar coisas como poemas, receitas e muito mais.
O ChatGPT é tanto um modelo de linguagem quanto uma interface de usuário. A entrada de instruções fornecida pelo usuário à interface é inserida em uma instrução maior que contém toda a conversa entre o usuário e o ChatGPT. Isso permite que o modelo de linguagem subjacente compreenda o contexto da conversa e responda adequadamente.Inserção de exemplo de prompt do usuário antes de enviar para o modelo
O modelo de linguagem completa a prompt descobrindo quais palavras vêm a seguir com base nas probabilidades que ele aprendeu durante o pré-treinamento.
O GPT-3 é capaz de 'aprender' a partir de uma instrução simples ou alguns exemplos no prompt. Este último é chamado de aprendizado few-shot ou aprendizado contextual. No prompt do chatbot acima, crio um chatbot fictício chamado Skippy e o instruo a fornecer respostas aos usuários. O GPT-3 entende o formato de ida e volta, USUÁRIO: {entrada do usuário}
e SKIPPY: {resposta do skippy}
. O GPT-3 entende que Skippy é um chatbot e as trocas anteriores são uma conversa, de modo que quando fornecemos a próxima entrada do usuário, "Skippy" responderá.
As trocas anteriores entre Skippy e o usuário são adicionadas ao próximo prompt. Cada vez que fornecemos mais entrada do usuário e obtemos mais saída do chatbot, o prompt se expande para incorporar essa nova troca. É assim que chatbots como Skippy e ChatGPT podem lembrar entradas anteriores. No entanto, há um limite para o quanto um chatbot GPT-3 pode lembrar.
Os prompts podem ficar enormes após várias trocas, especialmente se estamos usando o chatbot para gerar respostas longas, como postagens em blog. Os prompts enviados ao GPT-3 são convertidos em tokens, que são palavras individuais ou partes delas. Há um limite de
4097 tokens (cerca de 3000 palavras)
para o prompt + resposta gerada para modelos GPT-3, incluindo o ChatGPT.
Existem muitos casos de uso diferentes de prompts de chatbot que armazenam conversas anteriores. O ChatGPT pretende ser um assistente geral para todas as finalidades e, em minha experiência, raramente faz perguntas de acompanhamento.
Pode ser útil ter um chatbot que faça perguntas e obtenha feedback do usuário. Abaixo está um exemplo de prompt de chatbot de terapia que fará perguntas e seguirá para ajudar o usuário a pensar sobre seu dia.
Therapy chatbot prompt
Michelle Huang usou o GPT-3 para conversar com o seu eu mais jovem. O prompt usa um pouco de contexto, neste caso, antigas entradas de diário, emparelhado com um formato de conversa de estilo de chatbot. GPT-3 é capaz de imitar uma personalidade com base nessas entradas.
i trained an ai chatbot on my childhood journal entries - so that i could engage in real-time dialogue with my "inner child"
some reflections below:
— michelle huang
November 27, 2022
Prompt do Tweet:
O texto seguinte é uma conversa entre a Michelle atual (idade [redigido]) e a Michelle jovem (idade 14).
A Michelle jovem escreveu os seguintes registros em seu diário:
[registros do diário aqui]
Michelle atual: [digite suas perguntas aqui]
A autora observa que os registros do diário podem atingir o limite de tokens. Nesse caso, você pode escolher algumas entradas selecionadas ou tentar resumir várias entradas.
Nessa seção eu vou guiar a codificação de um chatbot simples alimentado por GPT-3 em Python. Incluir o GPT-3 em um aplicativo que você está construindo é incrivelmente fácil usando a API da OpenAI. Você precisará criar uma conta na OpenAI e obter uma chave de API. Confira a documentação deles
aqui.
Visão geral do que precisamos fazer:
Aqui está a prompt que usarei. Podemos usar o Python para substituir
<conversation history>e
<user input>pelos seus valores reais.
chatbot_prompt = """
Considere que você é um chatbot avançado chamado SKIPPY, e seu objetivo principal é ajudar usuários da melhor maneira possível. Isso pode envolver responder perguntas, providenciar informações úteis, ou completar tarefas de acordo com o input do usuário. Para que você possa ajudar os usuários de maneira eficiente, é importante que você seja detalhado e explique suas respostas. Use exemplos e evidências para justificar sua respostas, recomendações ou soluções. Lembre-se que você sempre deve priorizar as necessidades e satisfação do usuário. Seu objetivo principal é providenciar uma experiência útil e agradável para o usuário.
<conversation history>
User:
<user input>
Chatbot:"""
Eu mantenho o controle tanto da próxima entrada do usuário quanto da conversa anterior. Uma nova entrada/saída entre o chatbot e o usuário é anexada a cada iteração.
import openai
openai.api_key = "SUA API KEY DEVE SER INCLUIDA AQUI"
model_engine = "text-davinci-003"
chatbot_prompt = """
Considere que você é um chatbot avançado chamado SKIPPY, e seu objetivo principal é ajudar usuários da melhor maneira possível. Isso pode envolver responder perguntas, providenciar informações úteis, ou completar tarefas de acordo com o input do usuário. Para que você possa ajudar os usuários de maneira eficiente, é importante que você seja detalhado e explique suas respostas. Use exemplos e evidências para justificar sua respostas, recomendações ou soluções. Lembre-se que você sempre deve priorizar as necessidades e satisfação do usuário. Seu objetivo principal é providenciar uma experiência útil e agradável para o usuário.
<conversation history>
User:
<user input>
Chatbot:"""
def get_response(conversation_history, user_input):
prompt = chatbot_prompt.replace("<conversation history>", conversation_history).replace("<user input>", user_input)
# Pega a resposta do GPT-3
response = openai.Completion.create(
engine=model_engine, prompt=prompt, max_tokens=2048, n=1, stop=None, temperature=0.5)
# Extrai a resposta do objeto response_text
response_text = response["choices"][0]["text"]
chatbot_response = response_text.strip()
return chatbot_response
def main():
conversation_history = ""
while True:
user_input = input(">")
if user_input == "exit":
break
chatbot_response = get_response(conversation_history, user_input)
print(f"Chatbot: {chatbot_response}")
conversation_history += f"User: {user_input}\nChatbot: {chatbot_response}\n"
main()
Aqui está o link
para o código complete de um chatbox simples.
Agora tudo que você precisa fazer é construir uma página bonita no front-end para que os usuários possam interagir com o seu chatbot!
Escrito por jayo78. Traduzido por gabi fonseca
OpenAI. (2022). ChatGPT: Optimizing Language Models for Dialogue. https://openai.com/blog/chatgpt/. https://openai.com/blog/chatgpt/ ↩
Jurafsky, D., & Martin, J. H. (2009). Speech and Language Processing: An Introduction to Natural Language Processing, Computational Linguistics and Speech Recognition. Prentice Hall. ↩
Brown, T. B. (2020). Language models are few-shot learners. arXiv Preprint arXiv:2005.14165. ↩