Enginner prompt - Noção Básicas
Tags: enginner, prompt, inteligenciartificial, ai
Published: 2023-09-11 15:28:39

## Prompts Básicos
Introdução:

Ao trabalhar com prompts, a interação com o Modelo de Linguagem de Grande Escala (LLM) pode ocorrer diretamente ou por meio de uma API. É possível configurar diversos parâmetros para obter resultados distintos ao formular prompts.

Temperatura - Em resumo, a temperatura influencia a aleatoriedade das respostas geradas. Quanto menor a temperatura, mais determinísticos são os resultados, o que significa que o modelo tende a escolher o token mais provável em cada passo. Aumentar a temperatura introduz mais aleatoriedade, permitindo respostas mais diversas e criativas. Por exemplo, é aconselhável utilizar uma temperatura mais baixa para tarefas que exigem respostas factuais e concisas, como controle de qualidade, e aumentar a temperatura para tarefas criativas, como a geração de poemas.

Top_p - O top_p é outra ferramenta para controlar o grau de determinismo do modelo na geração de respostas. Por meio da amostragem de núcleo, você pode ajustar esse valor. Se você busca respostas precisas e exatas, mantenha o top_p baixo. Por outro lado, se deseja respostas mais variadas e diversificadas, aumente o valor do top_p.

A recomendação geral é ajustar um desses parâmetros de cada vez, não ambos simultaneamente.

É importante lembrar que os resultados obtidos podem variar dependendo da versão específica do LLM que você está utilizando. Portanto, é aconselhável experimentar e ajustar esses parâmetros de acordo com a natureza da tarefa e os resultados desejados.

Um prompt bem elaborado deve conter informações claras, instruções precisas e, se possível, contexto adicional, exemplos ou dados relevantes. Quanto mais detalhes e orientações você fornecer, melhor será a resposta que poderei gerar. Portanto, ao criar prompts, é importante considerar a quantidade e a qualidade das informações que você inclui, pois isso influenciará diretamente na qualidade das respostas que obtém.
**
Vamos começar analisando um exemplo básico de um prompt simples:**

_Prompt_
```
O céu é
```
_Saída _

```
O céu é azul em um dia claro. Em um dia nublado, o céu pode ser cinza ou branco.
```
Conforme observado, o modelo de linguagem é capaz de criar extensões de texto que se encaixam logicamente no contexto fornecido, como exemplificado na frase "O céu é". É importante estar ciente de que essas extensões podem às vezes surpreender ou divergir significativamente do resultado desejado para a tarefa em questão.

**Vamos tentar melhorar um pouco:**

_Prompt_
```
Complete a sentença:

O céu é
```
_Saída_

```
tão lindo hoje.
```
Essa é uma abordagem mais eficaz. Explicamos ao modelo que ele deve concluir a frase, o que leva a um resultado mais preciso e alinhado com nossas intenções. Essa técnica de criar prompts bem elaborados para direcionar o modelo em uma tarefa específica é conhecida como engenharia de prompt.

O exemplo mencionado anteriormente é uma ilustração simplificada do potencial dos Modelos de Linguagem de Grande Escala (LLMs) hoje em dia. Esses LLMs são capazes de lidar com uma ampla gama de tarefas avançadas, incluindo resumos de texto, raciocínio matemático e até mesmo geração de código.

## 
Formatação de prompt

Tentamos um prompt muito simples acima. Um prompt padrão tem o seguinte formato.

```
<Pergunta>?
```

ou

```
<Instrução>
```
Essa informação pode ser reestruturada para se adequar ao formato comum de resposta a perguntas (QA), amplamente utilizado em conjuntos de dados de QA, como demonstrado abaixo:

```
Q: <Pergunta>?
A:
```
Quando você solicita informações da maneira descrita acima, isso é conhecido como "prompt de tiro zero". Nesse caso, você está requisitando uma resposta diretamente do modelo, sem fornecer qualquer exemplo ou orientação sobre a tarefa desejada. É importante mencionar que alguns modelos de linguagem avançados têm a capacidade de lidar com prompts zero-shot, mas isso depende da complexidade e do conhecimento da tarefa em questão.

No entanto, uma abordagem popular e eficaz para obter respostas é a utilização do "prompt de poucos tiros". Nesse caso, você fornece exemplos ou demonstrações para orientar o modelo. Os prompts de poucos tiros podem ser formatados da seguinte maneira:

```
<Pergunta>?
<Resposta>

<Pergunta>?
<Resposta>

<Pergunta>?
<Resposta>

<Pergunta>?
```

A versão do formato QA ficaria assim:

```
Q: <Pergunta>?
A: <Resposta>

Q: <Pergunta>?
A: <Resposta>

Q: <Pergunta>?
A: <Resposta>

Q: <Pergunta>?
A:
```

É importante destacar que não existe um formato de prompt universalmente aplicável. O formato do prompt deve ser adaptado à tarefa específica em questão. Por exemplo, ao realizar uma tarefa de classificação simples, é possível orientar o modelo fornecendo exemplos que demonstrem a tarefa da seguinte maneira:

Prompt:

```
Isso é incrível! // Positivo
Isto é mau! // Negativo
Uau, esse filme foi radical! // Positivo
Que espetáculo horrível! //
```

Saída:

```
Negativo
```

Os prompts de poucos tiros permitem o aprendizado no contexto, que é a capacidade dos modelos de linguagem de aprender tarefas dadas algumas demonstrações.

## Elementos do Prompt
Conforme exploramos um maior número de exemplos e aplicações da engenharia de prompts, fica evidente que um prompt pode ser composto por diferentes elementos. Estes são os principais componentes que podem estar presentes em um prompt:

**Instrução** - Uma instrução específica que descreve a tarefa que você deseja que o modelo execute. Essa instrução orienta o modelo sobre o que você espera como resultado.

**Contexto** - Informações externas ou contexto adicional que podem ser fornecidos para auxiliar o modelo na geração de respostas mais apropriadas e relevantes.
**
Dados de Entrada **- A pergunta, problema ou entrada para o qual você deseja obter uma resposta ou solução do modelo. É a parte central do prompt que direciona a ação do modelo.

**Indicador de Saída** - Este componente indica o tipo ou formato que você espera que a resposta tenha. Pode ser útil para especificar a estrutura ou o estilo da resposta desejada.

É importante observar que nem todos esses componentes são necessários em todos os prompts, e o formato do prompt depende da natureza da tarefa que você está realizando. Nos próximos guias, abordaremos exemplos mais concretos para ilustrar como esses componentes podem ser combinados de maneiras eficazes para alcançar resultados específicos.

## 
Dicas gerais para prompts


Aqui estão algumas orientações a serem lembradas ao criar seus prompts:

Comece Simples

Ao começar a criar seus prompts, saiba que esse é um processo iterativo que requer experimentação para obter os melhores resultados. Começar com prompts simples em plataformas como OpenAI ou Cohere é um bom ponto de partida. À medida que avança, você pode adicionar mais elementos e contexto para aprimorar seus resultados. Manter um registro das versões do prompt é crucial durante esse processo. Em geral, simplicidade e concisão costumam render melhores resultados.
**
A Instrução**

Para tarefas simples, você pode criar prompts eficazes usando comandos que instruam o modelo, como "Escreva", "Classifique", "Resuma", "Traduza", "Ordene" etc. Experimentar diferentes instruções com palavras-chave, contextos e dados variados é importante para descobrir o que funciona melhor para sua tarefa específica. Colocar a instrução no início do prompt e usar um separador claro, como "###", pode ser recomendado.

_Prompt:_

``**`
### Instrução ###**
Traduza o texto abaixo para o espanhol:

Texto: "olá!"
Especificidade
```
_Saída_

```
¡Hola!
```

Seja extremamente específico em sua instrução e na tarefa que deseja que o modelo execute. Quanto mais detalhado e descritivo o prompt, melhor será o resultado. Isso é particularmente importante quando você deseja um resultado específico ou um estilo de geração particular. Exemplos no prompt também podem ser eficazes para obter resultados em formatos específicos.
**
**Evite Imprecisões****

Evite ser excessivamente complexo ou tentar ser muito inteligente em seus prompts. Seja direto e específico em sua comunicação com o modelo. Isso resultará em respostas mais claras e precisas. Em vez de dizer o que não fazer, concentre-se em orientar o modelo sobre o que fazer.
**
Fazer ou Não Fazer?**

Ao criar prompts, é preferível dizer ao modelo o que fazer em vez de o que não fazer. Isso promove especificidade e foco nos detalhes que levam a respostas melhores.

Prompt:

```
O agente a seguir recomenda filmes para um cliente. NÃO PEÇA INTERESSES. NÃO PEÇA INFORMAÇÕES PESSOAIS.
```

Cliente: Por favor, recomende um filme baseado nos meus interesses.
Agente:

Saída:

```
Claro, posso recomendar um filme baseado em seus interesses. Que tipo de filme você gostaria de assistir? Você prefere ação, comédia, romance ou outra coisa?
```

Lembre-se de que a estrutura do seu prompt pode variar dependendo da tarefa que você está executando. Experimente, itere e ajuste seus prompts para otimizar seus resultados de acordo com sua necessidade específica.

Referência
https://www.promptingguide.ai/pt/introduction/basics