# 03. Os princípios de um bom prompt

Agora, vamos nos aprofundar no tema central deste curso: a criação de um bom prompt. Embora muitos de vocês já saibam o que é um prompt, é sempre útil reforçar o conceito.

## O que é um prompt?

Um prompt é a entrada que fornecemos a um modelo de linguagem. A ideia é que, ao receber essa entrada, o modelo a processe em sua rede neural e nos forneça uma resposta. A entrada é comumente chamada de prompt.

Nosso objetivo no curso é criar prompts eficientes que resolvam os problemas em questão. Muitas pessoas afirmam que o ChatGPT não é adequado para diversas aplicações, mas sou cético em relação a essas declarações. Em 95% dos casos, o problema está na formulação de um prompt inadequado. A criação de prompts é um campo em estudo intenso. Devido ao tamanho dos modelos, não podemos prever todas as suas respostas. Os estudos em engenharia de prompts são bastante empíricos e baseiam-se em tentativa e erro. No entanto, há melhorias comprovadas cientificamente ao seguir algumas diretrizes principais, que exploraremos no curso. Existem dois princípios fundamentais na criação de prompts, e vamos explorá-los em detalhes ao longo do curso.

## 1º Princípio - Escrever instruções claras e específicas

É importante entender que, apesar da aparente inteligência dos modelos de linguagem, eles ainda são scripts executados em computadores. Muitos aspectos da comunicação humana não são verbais. Por exemplo, quando faço uma pergunta ao meu filho, ele conhece minha identidade, meu estilo de comunicação, tem acesso ao nosso histórico de conversas, pode ler meu humor pelo meu rosto, sabe quais são meus interesses, etc. Todas essas informações contextualizam suas respostas. No entanto, quando interagimos com uma máquina por meio de um prompt, ela não tem acesso a essas nuances. Naturalmente, suas respostas tendem a ser mais genéricas e impessoais. Contudo, é possível criar prompts claros e específicos que adicionem contexto, história ou exemplos, permitindo que a máquina compreenda melhor o que está sendo solicitado e forneça respostas mais qualificadas.

Existem várias técnicas para adicionar clareza a um prompt, como definir o contexto, formatar a saída, determinar o público e a persona, além de utilizar técnicas de one-shot e few-shot prompting. Exploraremos essas técnicas com mais detalhes no decorrer do curso.

## 2º Princípio - Dar ao modelo tempo para pensar

Assim como os seres humanos, quanto mais tempo dermos ao modelo para "pensar", mais refinada será a resposta. Você pode se perguntar como dar mais tempo ao modelo. Existem várias técnicas desenvolvidas que instruem o modelo a realizar seu raciocínio passo a passo. Por exemplo, se apresentarmos uma questão matemática ao modelo e pedirmos apenas uma resposta de "Correto" ou "Errado", a probabilidade de erro é alta, pois o modelo não sabe que deve raciocinar antes de responder. Se pedirmos para ele realizar o cálculo e depois indicar se a solução está correta ou errada, a chance de acerto aumenta. Outra técnica importante é dividir um prompt maior em prompts menores e mais específicos sempre que possível.

## Limitações de um modelo

Devemos estar cientes de que, apesar de todos os nossos esforços, podemos nos deparar com limitações inerentes a um modelo LLM. As principais limitações estão relacionadas a alucinações e vieses.

### Alucinações

Alucinações ocorrem quando o modelo responde com confiança a uma informação incorreta. Ele pode criar detalhes e fatos, pois possui apenas um resumo das informações que foram passadas durante seu treinamento. Vejamos um exemplo no prompt a seguir:

```python
Fale sobre a as características das escovas de dente da marca "SorriDente"
```

A marca SorriDente é inventada e não existe e veja o que o modelo retornou:

```python
As escovas de dente da marca "SorriDente" são reconhecidas por suas características de alta qualidade e eficiência na limpeza bucal. Algumas características das escovas de dente da marca incluem:

1. Cerdas macias e resistentes: As cerdas das escovas "SorriDente" são feitas de materiais de alta qualidade, o que as torna suaves para a gengiva, mas ao mesmo tempo resistentes para uma limpeza eficaz dos dentes.

2. Design ergonômico: As escovas de dente da marca "SorriDente" possuem um design ergonômico que proporciona maior conforto e facilidade de uso durante a escovação.

3. Durabilidade: As escovas de dente "SorriDente" são conhecidas pela durabilidade de suas cerdas e materiais, garantindo uma maior vida útil do produto.

4. Diversidade de modelos: A marca oferece uma variedade de modelos de escovas de dente para atender às diferentes necessidades dos consumidores, como escovas com cerdas angul
```

Muitas alucinações também ocorrem quando submetemos o ChatGPT a testes reversos. Como o seguinte:

```python
Quem é a mãe do Ronaldinho Gaúcho?
```

E a resposta é a seguinte e está correta:

```python
A mãe do Ronaldinho Gaúcho é Dona Miguelina Elói Assis dos Santos, conhecida como Dona Miguelina. Ela faleceu em 2021 devido a complicações causadas pela COVID-19.
```

Agora se faço a pergunta reversa:

```python
Quem é o filho de Miguelina Elói Assis dos Santos?
```

O modelo alucina e responde que o Neymar é filho da Dona Miguelina:

```python
O filho de Miguelina Elói Assis dos Santos é o jogador de futebol Neymar Jr.
```

### Vieses

Outro problema comum é o modelo responder com vieses culturais, que são reflexos dos dados com os quais foi treinado. O modelo acaba se tornando um espelho da sociedade; se os dados coletados expressam preconceitos, sexismo, violência, entre outros aspectos negativos, há uma tendência de o modelo reproduzir esses comportamentos. Isso pode ser particularmente perigoso ao criar soluções comerciais destinadas a um uso amplo e diversificado.

## Prompting é sobre iteratividade

O processo de criação de um bom prompt exige iteratividade. Nunca se chega a uma boa resposta na primeira tentativa. É necessário sempre realizarmos um processo contínuo de melhora de nosso prompt, de forma a obtermos constantemente respostas melhores do modelo.


![[Pasted image 20240229113435.png]]
O processo é o seguinte: começamos com uma ideia inicial de prompt, que fornecemos ao modelo para obter uma resposta experimental. Analisamos essa resposta e, com base nela, geramos uma nova ideia, refinando o prompt anterior. Esse ciclo se repete até alcançarmos um estágio em que obtemos respostas consistentemente boas do modelo.
