mirror of
https://github.com/dair-ai/Prompt-Engineering-Guide
synced 2024-11-18 03:25:39 +00:00
216 lines
18 KiB
Plaintext
216 lines
18 KiB
Plaintext
# ChatGPT Engenharia de Prompt
|
|
|
|
import { Callout, FileTree } from 'nextra-theme-docs'
|
|
import {Screenshot} from 'components/screenshot'
|
|
import CHATGPT1 from '../../img/chatgpt-1.png'
|
|
import CHATGPTCLASSIC from '../../img/chatgpt-classic.png'
|
|
|
|
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.
|
|
|
|
<Callout emoji="⚠️">
|
|
Esta seção está em intenso desenvolvimento.
|
|
</Callout>
|
|
|
|
Tofotos:
|
|
- [Introdução do ChatGPT](#chatgpt-introduction)
|
|
- [Revisando a tarefa de conversa](#reviewing-the-conversation-task)
|
|
- [Conversas com ChatGPT](#conversations-with-chatgpt)
|
|
|
|
---
|
|
## Introdução ao ChatGPT
|
|
|
|
O ChatGPT é um novo modelo [treinado pela OpenAI](https://openai.com/blog/chatgpt) 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](chat.openai.com), 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](https://openai.com/blog/introducing-chatgpt-and-whisper-apis), 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:
|
|
|
|
<Screenshot src={CHATGPT1} alt="CHATGPT1" />
|
|
|
|
A chamada de API mais formal para nosso exemplo seria algo como o exemplo abaixo:
|
|
|
|
```python
|
|
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](https://github.com/openai/openai-python/blob/main/chatml.md) (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:
|
|
|
|
<Screenshot src={CHATGPTCLASSIC} alt="CHATGPTCLASSIC" />
|
|
|
|
Mais formalmente, esta é a chamada da API (incluí apenas o componente de mensagem da solicitação):
|
|
|
|
```python
|
|
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
|
|
|
|
- [HuggingGPT: Solving AI Tasks with ChatGPT and its Friends in HuggingFace](https://arxiv.org/abs/2303.17580) (March 2023)
|
|
- [WavCaps: A ChatGPT-Assisted Weakly-Labelled Audio Captioning Dataset for Audio-Language Multimodal Research](https://arxiv.org/abs/2303.17395) (March 2023)
|
|
- [Assessing Cross-Cultural Alignment between ChatGPT and Human Societies: An Empirical Study](https://arxiv.org/abs/2303.17466) (March 2023)
|
|
- [Yes but.. Can ChatGPT Identify Entities in Historical Documents?](https://arxiv.org/abs/2303.17322) (March 2023)
|
|
- [Evaluation of ChatGPT for NLP-based Mental Health Applications](https://arxiv.org/abs/2303.15727) (March 2023)
|
|
- [A Perspectival Mirror of the Elephant: Investigating Language Bias on Google, ChatGPT, Wikipedia, and YouTube](https://arxiv.org/abs/2303.16281) (March 2023)
|
|
- [ChatGPT or academic scientist? Distinguishing authorship with over 99% accuracy using off-the-shelf machine learning tools](https://arxiv.org/abs/2303.16352) (March 2023)
|
|
- [Zero-shot Clinical Entity Recognition using ChatGPT](https://arxiv.org/abs/2303.16416) (March 2023)
|
|
- [ChatGPT is a Knowledgeable but Inexperienced Solver: An Investigation of Commonsense Problem in Large Language Models](https://arxiv.org/abs/2303.16421) (March 2023)
|
|
- [ChatGPT4PCG Competition: Character-like Level Generation for Science Birds](https://arxiv.org/abs/2303.15662) (March 2023)
|
|
- [ChatGPT as a Factual Inconsistency Evaluator for Abstractive Text Summarization](https://arxiv.org/abs/2303.15621) (March 2023)
|
|
- [Chat-REC: Towards Interactive and Explainable LLMs-Augmented Recommender System](https://arxiv.org/abs/2303.14524) (March 2023)
|
|
- [A comprehensive evaluation of ChatGPT's zero-shot Text-to-SQL capability](https://arxiv.org/abs/2303.13547) (March 2023)
|
|
- [Towards Making the Most of ChatGPT for Machine Translation](https://arxiv.org/abs/2303.13780) (March 2023)
|
|
- [Error Analysis Prompting Enables Human-Like Translation Evaluation in Large Language Models: A Case Study on ChatGPT](https://arxiv.org/abs/2303.13809) (March 2023)
|
|
- [ChatGPT Outperforms Crowd-Workers for Text-Annotation Tasks](https://arxiv.org/pdf/2303.15056v1.pdf) (March 2023)
|
|
- [ChatGPT or Grammarly? Evaluating ChatGPT on Grammatical Error Correction Benchmark](https://arxiv.org/abs/2303.13648) (March 2023)
|
|
- [ChatGPT and a New Academic Reality: AI-Written Research Papers and the Ethics of the Large Language Models in Scholarly Publishing](https://arxiv.org/abs/2303.13367) (March 2023)
|
|
- [Are LLMs the Master of All Trades? : Exploring Domain-Agnostic Reasoning Skills of LLMs](https://arxiv.org/abs/2303.12810) (March 2023)
|
|
- [Is ChatGPT A Good Keyphrase Generator? A Preliminary Study](https://arxiv.org/abs/2303.13001) (March 2023)
|
|
- [MM-REACT: Prompting ChatGPT for Multimodal Reasoning and Action](https://arxiv.org/abs/2303.11381) (March 2023)
|
|
- [Large Language Models Can Be Used to Estimate the Ideologies of Politicians in a Zero-Shot Learning Setting](https://arxiv.org/abs/2303.12057) (March 2023)
|
|
- [Chinese Intermediate English Learners outdid ChatGPT in deep cohesion: Evidence from English narrative writing](https://arxiv.org/abs/2303.11812) (March 2023)
|
|
- [A Comprehensive Capability Analysis of GPT-3 and GPT-3.5 Series Models](https://arxiv.org/abs/2303.10420) (March 2023)
|
|
- [ChatGPT as the Transportation Equity Information Source for Scientific Writing](https://arxiv.org/abs/2303.11158) (March 2023)
|
|
- [Translating Radiology Reports into Plain Language using ChatGPT and GPT-4 with Prompt Learning: Promising Results, Limitations, and Potential](https://arxiv.org/abs/2303.09038) (March 2023)
|
|
- [ChatGPT Participates in a Computer Science Exam](https://arxiv.org/abs/2303.09461) (March 2023)
|
|
- [Consistency Analysis of ChatGPT](https://arxiv.org/abs/2303.06273) (Mar 2023)
|
|
- [Algorithmic Ghost in the Research Shell: Large Language Models and Academic Knowledge Creation in Management Research](https://arxiv.org/abs/2303.07304) (Mar 2023)
|
|
- [Large Language Models in the Workplace: A Case Study on Prompt Engineering for Job Type Classification](https://arxiv.org/abs/2303.07142) (March 2023)
|
|
- [Seeing ChatGPT Through Students' Eyes: An Analysis of TikTok Data](https://arxiv.org/abs/2303.05349) (March 2023)
|
|
- [Extracting Accurate Materials Data from Research Papers with Conversational Language Models and Prompt Engineering -- Example of ChatGPT](https://arxiv.org/abs/2303.05352) (Mar 2023)
|
|
- [ChatGPT is on the horizon: Could a large language model be all we need for Intelligent Transportation?](https://arxiv.org/abs/2303.05382) (Mar 2023)
|
|
- [Making a Computational Attorney](https://arxiv.org/abs/2303.05383) (Mar 2023)
|
|
- [Does Synthetic Data Generation of LLMs Help Clinical Text Mining?](https://arxiv.org/abs/2303.04360) (Mar 2023)
|
|
- [MenuCraft: Interactive Menu System Design with Large Language Models](https://arxiv.org/abs/2303.04496) (Mar 2023)
|
|
- [A Comprehensive Survey of AI-Generated Content (AIGC): A History of Generative AI from GAN to ChatGPT](https://arxiv.org/abs/2303.04226) (Mar 2023)
|
|
- [Exploring the Feasibility of ChatGPT for Event Extraction](https://arxiv.org/abs/2303.03836)
|
|
- [ChatGPT: Beginning of an End of Manual Annotation? Use Case of Automatic Genre Identification](https://arxiv.org/abs/2303.03953) (Mar 2023)
|
|
- [Is ChatGPT a Good NLG Evaluator? A Preliminary Study](https://arxiv.org/abs/2303.04048) (Mar 2023)
|
|
- [Will Affective Computing Emerge from Foundation Models and General AI? A First Evaluation on ChatGPT](https://arxiv.org/abs/2303.03186) (Mar 2023)
|
|
- [UZH_CLyp at SemEval-2023 Task 9: Head-First Fine-Tuning and ChatGPT Data Generation for Cross-Lingual Learning in Tweet Intimacy Prediction](https://arxiv.org/abs/2303.01194) (Mar 2023)
|
|
- [How to format inputs to ChatGPT models](https://github.com/openai/openai-cookbook/blob/main/examples/How_to_format_inputs_to_ChatGPT_models.ipynb) (Mar 2023)
|
|
- [Can ChatGPT Assess Human Personalities? A General Evaluation Framework](https://arxiv.org/abs/2303.01248) (Mar 2023)
|
|
- [Cross-Lingual Summarization via ChatGPT](https://arxiv.org/abs/2302.14229) (Feb 2023)
|
|
- [ChatAug: Leveraging ChatGPT for Text Data Augmentation](https://arxiv.org/abs/2302.13007) (Feb 2023)
|
|
- [Dr ChatGPT, tell me what I want to hear: How prompt knowledge impacts health answer correctness](https://arxiv.org/abs/2302.13793) (Feb 2023)
|
|
- [An Independent Evaluation of ChatGPT on Mathematical Word Problems (MWP)](https://arxiv.org/abs/2302.13814) (Feb 2023)
|
|
- [ChatGPT: A Meta-Analysis after 2.5 Months](https://arxiv.org/abs/2302.13795) (Feb 2023)
|
|
- [Let's have a chat! A Conversation with ChatGPT: Technology, Applications, and Limitations](https://arxiv.org/abs/2302.13817) (Feb 2023)
|
|
- [Check Your Facts and Try Again: Improving Large Language Models with External Knowledge and Automated Feedback](https://arxiv.org/abs/2302.12813) (Feb 2023)
|
|
- [On the Robustness of ChatGPT: An Adversarial and Out-of-distribution Perspective](https://arxiv.org/abs/2302.12095) (Feb 2023)
|
|
- [How Generative AI models such as ChatGPT can be (Mis)Used in SPC Practice, Education, and Research? An Exploratory Study](https://arxiv.org/abs/2302.10916) (Feb 2023)
|
|
- [Can ChatGPT Understand Too? A Comparative Study on ChatGPT and Fine-tuned BERT](https://arxiv.org/abs/2302.10198) (Feb 2023)
|
|
- [A Prompt Pattern Catalog to Enhance Prompt Engineering with ChatGPT](https://arxiv.org/abs/2302.11382) (Feb 2023)
|
|
- [Zero-Shot Information Extraction via Chatting with ChatGPT](https://arxiv.org/abs/2302.10205) (Feb 2023)
|
|
- [ChatGPT: Jack of all trades, master of none](https://arxiv.org/abs/2302.10724) (Feb 2023)
|
|
- [A Pilot Evaluation of ChatGPT and DALL-E 2 on Decision Making and Spatial Reasoning](https://arxiv.org/abs/2302.09068) (Feb 2023)
|
|
- [Netizens, Academicians, and Information Professionals' Opinions About AI With Special Reference To ChatGPT](https://arxiv.org/abs/2302.07136) (Feb 2023)
|
|
- [Linguistic ambiguity analysis in ChatGPT](https://arxiv.org/abs/2302.06426) (Feb 2023)
|
|
- [ChatGPT versus Traditional Question Answering for Knowledge Graphs: Current Status and Future Directions Towards Knowledge Graph Chatbots](https://arxiv.org/abs/2302.06466) (Feb 2023)
|
|
- [What ChatGPT and generative AI mean for science](https://www.nature.com/articles/d41586-023-00340-6) (Feb 2023)
|
|
- [Applying BERT and ChatGPT for Sentiment Analysis of Lyme Disease in Scientific Literature](https://arxiv.org/abs/2302.06474) (Feb 2023)
|
|
- [Exploring AI Ethics of ChatGPT: A Diagnostic Analysis](https://arxiv.org/abs/2301.12867) (Jan 2023)
|
|
- [ChatGPT for Good? On Opportunities and Challenges of Large Language Models for Education](https://www.edu.sot.tum.de/fileadmin/w00bed/hctl/_my_direct_uploads/ChatGPT_for_Good_.pdf) (Jan 2023)
|
|
- [The political ideology of conversational AI: Converging evidence on ChatGPT's pro-environmental, left-libertarian orientation](https://arxiv.org/abs/2301.01768) (Jan 2023)
|
|
- [Techniques to improve reliability - OpenAI Cookbook](https://github.com/openai/openai-cookbook/blob/main/techniques_to_improve_reliability.md)
|
|
- [Awesome ChatGPT Prompts](https://github.com/f/awesome-chatgpt-prompts)
|
|
- [Introducing ChatGPT](https://openai.com/blog/chatgpt) (Nov 2022) |