Acessando a plataforma e abrindo o playground
Continuando, para que possamos explorar as questões que vimos discutindo sobre prompts pessoais, acessamos developers.openai.com, no site da OpenAI. A conta que usaremos como exemplo não precisa ser necessariamente criada por esse caminho, mas é por onde vamos nos guiar nestes exemplos. Quem quiser pode criar a conta e gerenciá-la pela API; o passo a passo é razoavelmente simples de seguir para criar a conta e fazer login, lembrando que será necessário adicionar créditos quando formos usar a API para poder utilizar os modelos da OpenAI.
Após fazer login, abrimos a opção Create chat (criar conversa) e vamos usar isso como se fosse um playground (ambiente de testes) para experimentarmos prompts (instruções). Para quem nunca usou, podemos salvar os prompts em rascunho; podemos escolher um modelo da OpenAI, por exemplo o GPT-4.1-mini. A interface informa que é um modelo que aceita texto, mostra limites de tokens de entrada e permite configurar parâmetros como top_p e temperature, entre outros. Podemos alterar esses parâmetros. Também há seções de variáveis e ferramentas; se quisermos, podemos criar um agente, habilitar intérprete de código, geração de imagens e busca na web. A parte de variáveis veremos adiante.
Testando um prompt genérico sem instruções do sistema
Como exemplo, vamos enviar uma mensagem genérica, sem especificar nada no sistema. O campo system é o system prompt (instrução do sistema): dependendo da ferramenta, ele pode aparecer como “system” ou “prompt”. É um texto que sempre é enviado junto com o nosso modelo de linguagem para dar contexto sobre o que ele deve fazer. Se não colocarmos nada ali, continuaremos usando o GPT-4.1-mini com as instruções padrão.
Para iniciar esse teste no playground, enviamos uma primeira mensagem genérica ao modelo:
Olá! Como você pode me ajudar?
Podemos perguntar, por exemplo: “Como você pode nos ajudar?”. Como não especificamos nada, esperamos uma resposta bastante genérica. Se demorar para carregar, podemos trocar o modelo e reenviar a mesma mensagem. A resposta típica é algo como: “Olá, posso ajudar com uma variedade de tarefas, como responder perguntas, fornecer informações, ajudar com redações, explicar conceitos e criar histórias”, ou seja, algo amplo, pois não fomos específicos.
Especializando o comportamento com o system prompt
A própria interface sugere: “Descreva o comportamento desejado do modelo: tom, ferramentas, estilo das respostas”. Podemos então definir uma instrução simples no campo System para começar a especializar o comportamento:
Você é um assistente de planejamento de viagens.
Em seguida, refinamos o objetivo desse assistente adicionando uma segunda linha, deixando o papel do modelo mais claro:
Você é um assistente de planejamento de viagens.
Seu objetivo é preparar um roteiro de viagem para o usuário.
Isso já altera o comportamento do nosso Language Model (modelo de linguagem).
Em seguida, iniciamos um novo chat (conversa) e perguntamos novamente. Repetimos a mesma mensagem do usuário para observar a mudança de comportamento após a configuração do System:
Olá! Como você pode me ajudar?
A resposta passa a ser: “Posso ajudar a planejar sua viagem, sugerir destinos, criar itinerários etc. Para começar, diga para onde deseja ir e por quanto tempo pretende viajar”. Essas são informações que o modelo precisa receber e que não especificamos no prompt; caberá à pessoa usuária fornecê-las ao modelo.
Fornecendo contexto do usuário para gerar o itinerário
Ao especificarmos instruções, mesmo que simples, já personalizamos o LM (modelo de linguagem) para o caso de uso que desejamos resolver. No nosso exemplo, trata-se de um assistente de viagens. Podemos, por exemplo, declarar: "Iremos a Ilhéus e ficaremos cinco dias. É uma cidade preciosa. Há alguma preferência ou interesse específico, como praias em particular?". Para representar essa entrada de contexto pelo usuário, podemos enviar algo como:
Vou para Ilhéus e ficarei 5 dias
E, se quisermos sinalizar um interesse específico, adicionamos uma mensagem curta:
Ao fazermos isso, o modelo já gera um itinerário: chegada e Praia do Sul, Praia da Avenida, Praia dos Milionários, passeio de barco. O itinerário é montado com base nos dados disponíveis no conjunto de dados de treinamento.
Utilizando variáveis no prompt para cidade e duração
Também podemos utilizar variáveis para compor esse contexto. Podemos inserir a cidade sugerida e o número de dias para o itinerário. Precisamos introduzir esses valores; por exemplo, colocar Ilhéus e 14 dias. Ao enviar o itinerário para verificar se o modelo entende o que queremos dizer, ainda podem aparecer cinco dias e Ilhéus, pois essas informações podem não estar sendo recuperadas no prompt (instrução) abaixo. Podemos então definir variáveis para a cidade e para o número de dias. Começamos nomeando as variáveis:
Na sequência, atribuirmos valores a elas, por exemplo:
city : Ilhéus
days: 14 dias
Vamos usar a sintaxe com duas chaves {{ }} para a cidade que foi completada e para o número de dias que foi preenchido. Primeiro, construímos o prompt com a cidade:
Seu objetivo é preparar um roteiro de viagem para o usuário para a cidade {{city}}
Depois, incrementamos esse prompt incluindo também a duração:
Seu objetivo é preparar um roteiro de viagem para o usuário para a cidade {{city}} por {{days}} dias.
Aplicando contexto dinâmico e validando o resultado
Em seguida, vamos iniciar um chat (conversa) novo, alterar a cidade para São Paulo e definir que ficaremos 14 dias. Para simular a troca da variável city, atualizamos seu valor:
O itinerário retorna com a indicação: "Itinerário sugerido para sua viagem de 14 dias em São Paulo".
O que acabamos de fazer é um exemplo de contexto dinâmico, como comentamos no vídeo anterior. A partir de variáveis que estão sendo preenchidas na nossa aplicação — aqui, no playground (ambiente de testes) da OpenAI —, no nosso prompt já informamos ao modelo: "Seu objetivo é preparar um itinerário para a cidade X por Y dias." O modelo, então, devolve itens como chegada e aclimatação, chegada ao aeroporto, Praça da Serra, Catedral da Serra, centro cultural, Parque Caimbu, cobrindo os 14 dias em que vamos permanecer na cidade de São Paulo.
Aprimorando a engenharia de prompts e introduzindo alternativa condicional
A engenharia de prompts consiste em experimentar e testar, verificar o que funcionou bem e o que não funcionou tão bem, e ir aprimorando ao longo da aplicação. Mantemos um prompt mais extenso do que apenas "o objetivo é preparar um itinerário de viagem", pois indicamos a cidade e a quantidade de dias, enriquecendo o prompt com esse contexto, que neste caso vem diretamente daqui. No playground usado para o chat da OpenAI, isso já está disponibilizado de forma simples de completar; porém, na prática, ao desenvolvermos nossos próprios sistemas, muitas vezes precisaremos integrar essas informações manualmente, o que dependerá do framework (estrutura de desenvolvimento) que estivermos utilizando.
Chamamos a atenção para o seguinte: isso que fizemos é um tipo de contexto dinâmico, e não precisaríamos deixá-lo fixo. Também poderíamos instruir o modelo a fazer algumas perguntas. Podemos simplesmente apagar e deixar algo como: "Se formos preparar um itinerário de viagem para a pessoa usuária e, caso a pessoa usuária não especifique, pergunte o destino e a duração da viagem; pode iniciar uma nova sessão." Vamos construir essa alternativa passo a passo. Primeiro, deixamos o objetivo do assistente:
Seu objetivo é preparar um roteiro de viagem para o usuário.
Configurando perguntas condicionais e testando o fluxo
Em seguida, adicionamos a instrução condicional para quando o usuário não fornece os dados:
Se o usuário não especificar, pergunte destino e duração da viagem.
Nesse caso, mesmo com as variáveis, como já não fazem parte do prompt e não entram como contexto, o modelo não sabe para onde queremos ir. Portanto, é importante que elas estejam vinculadas; caso contrário, não funcionará. Para verificar o comportamento quando nada é especificado, iniciamos a conversa com uma saudação mínima:
A resposta do modelo seria: "Poderia informar qual é o seu destino e a duração da sua viagem?".
Isso evidencia como conseguimos moldar o comportamento com pequenos detalhes nas instruções que fornecemos no prompt. Vamos continuar explorando várias dessas ferramentas ao longo do curso. Por ora, fica este exemplo de contexto sendo fornecido como variáveis para o nosso modelo.