paint-brush
Uma introdução ao Prompting e à Engenharia de Promptspor@aibites
5,495 leituras
5,495 leituras

Uma introdução ao Prompting e à Engenharia de Prompts

por Shrinivasan Sankar8m2023/06/27
Read on Terminal Reader

Muito longo; Para ler

Prompting e prompt engineering são facilmente as habilidades mais procuradas em 2023. O rápido crescimento de [Large Language Models] viu apenas o surgimento dessa nova disciplina de IA chamada prompt engineering. Neste artigo, vamos dar uma breve olhada no que é prompting, o que os engenheiros de prompt fazem e também os diferentes elementos de um prompt com os quais um engenheiro de prompt trabalha.
featured image - Uma introdução ao Prompting e à Engenharia de Prompts
Shrinivasan Sankar HackerNoon profile picture
0-item
1-item

Prompting e prompt engineering são facilmente as habilidades mais procuradas em 2023. O rápido crescimento dos LLMs de modelos de linguagem grandes viu apenas o surgimento dessa nova disciplina de IA chamada engenharia de prompt. Neste artigo, vamos dar uma breve olhada no que é prompting, o que os engenheiros de prompt fazem e também os diferentes elementos de um prompt com os quais um engenheiro de prompt trabalha.

O que exatamente é um prompt?

Prompt é simplesmente a entrada que você fornece a um modelo “treinado”. Quando digo modelo treinado, os pesos do modelo são fixos ou congelados e não serão alterados durante o processo de solicitação. Agora você pode perguntar como isso é diferente da inferência porque treinamos modelos, implantamos e executamos inferência em modelos de aprendizado de máquina. O ponto é que, com inferência, a entrada é fixa. Nós nunca mudamos isso e o que quer que o modelo dê como resultado, nós o aceitamos como resultado. Pense na classificação de imagens como uma tarefa de exemplo.


No entanto, com a solicitação, você não fica restrito a uma única entrada. Você pode ajustar a entrada de acordo com suas necessidades para melhorar o comportamento do modelo. Você está mais instruindo o modelo com a intenção de orientá-lo para a resposta certa. Enquanto você aceita o modelo dado quando se trata de inferência, com prompts, você está estudando as capacidades e limitações do modelo.


A arte de projetar ou projetar essas entradas para atender o problema em mãos, de modo a atendê-lo melhor, dá origem a uma disciplina relativamente nova chamada engenharia imediata .


Engenharia de Prompt

Antes de mergulhar na engenharia de prompts, vamos entender a motivação ou a necessidade de projetar prompts com exemplos. Digamos que eu queira resumir uma determinada passagem. Então, dou uma grande passagem da wikipedia como entrada e, no final, digo: “ resuma o parágrafo acima ”. Essa forma de fornecer instruções simples no prompt para obter uma resposta do LLM é conhecida como prompt de instrução .


Vamos passar para um caso um pouco mais complicado de matemática e pedir ao LLM para multiplicar dois números. Vamos tentar o prompt, “ what is 2343*1232”. A resposta que obtemos é “ 23431232 ”, que obviamente não é a multiplicação dos dois números, mas ambos juntos.


Agora deixe-me modificar o prompt e adicionar uma linha extra no prompt para ser mais específico, “ o que é 2343 multiplicado por 1232. Dê-me a resposta exata após a multiplicação ”. Agora obtemos “ 2886576 ” a resposta certa do LLM.


Portanto, claramente a qualidade da saída do modelo é determinada pela qualidade do prompt. É aqui que a engenharia imediata entra em ação. O objetivo de um engenheiro de prompt é avaliar a qualidade da saída de um modelo e identificar áreas de melhoria no prompt para obter melhores resultados. Portanto, a engenharia de prompt é uma disciplina altamente experimental de estudar as capacidades e limitações do LLM por tentativa e erro com a intenção de entender o LLM e também projetar bons prompts.

Elementos de prompt

Para projetar ou projetar os prompts, precisamos entender os diferentes elementos de um prompt. Um prompt pode conter um ou mais dos seguintes elementos.


Prompts podem ser instruções onde você pede ao modelo para fazer algo. Em nosso exemplo, fornecemos um grande corpo de texto e pedimos ao modelo para resumi-lo.


Os prompts podem, opcionalmente, incluir um contexto para que o modelo o atenda melhor. Por exemplo, se eu tiver dúvidas sobre, digamos, sítios históricos ingleses, posso primeiro fornecer um contexto como: “O patrimônio inglês cuida de mais de 400 monumentos, edifícios e lugares históricos - de locais pré-históricos mundialmente famosos a grandes castelos medievais, de fortes romanos … “e então faça minha pergunta como,“ qual é o maior patrimônio inglês?


Como parte do prompt, você também pode instruir sobre o formato no qual deseja ver a saída. E assim, um prompt pode opcionalmente ter um indicador de saída . Por exemplo, você pode perguntar “ Eu quero uma lista de todos os patrimônios ingleses na Inglaterra, sua localização e especialidade . Quero os resultados em formato tabular .”


Ou, se você quiser uma resposta ainda melhor, pode inserir o formato desejado com esta sintaxe para indicar que deseja ver colunas e linhas na saída:


Desired format:

Company names: <comma_separated_list_of_sites>

Sites: -||-Location: -||-Speciality: -||-


Um prompt pode incluir um ou mais dados de entrada onde fornecemos entradas de exemplo para o que é esperado do modelo. No caso de classificação de sentimento, dê uma olhada neste prompt onde começamos fornecendo exemplos para mostrar nossas intenções e também especificamos que não queremos nenhuma explicação na resposta:


Text: Today I saw a movie. It was amazing.

sentiment: Positive

Text: I don't very good after seeing that incident.

sentiment:

Tipos de prompts - tiros

Essa forma de dar exemplos no prompt é semelhante à forma como explicamos aos humanos mostrando exemplos. No mundo do prompt, é chamado de prompt de poucos tiros . Fornecemos exemplos de alta qualidade com a entrada e a saída da tarefa. Dessa forma, o modelo entende o que você procura e responde muito melhor.


Expandindo nosso exemplo, se eu quiser saber o sentimento de uma passagem, em vez de apenas perguntar “qual é o sentimento da passagem”, posso fornecer alguns exemplos cobrindo as classes possíveis na saída. Neste caso positivo e negativo:


Text: Today I saw a movie. It was amazing.

sentiment: Positive

Text: I don't very good after seeing that incident.

sentiment: Negative

Text: Lets party this weekend to celebrate your anniversary.

sentiment: Positive

Text: Walking in that neighbourhood is quite dangerous.sentiment: Negative

Text: I love watching tennis all day long

sentiment:


E posso então deixar o modelo responder ao último texto que inseri. Normalmente, 5 a 8 exemplos devem ser bons o suficiente para a solicitação de poucos tiros. Como você pode imaginar agora, a desvantagem dessa abordagem é que haverá muitos tokens em seu prompt. Se você deseja começar simples, não precisa fornecer nenhum exemplo, mas vá direto para o problema como este prompt:


Text: I love watching tennis all day long

sentimet:


Este é um prompt zero-shot onde você não fornece nenhum exemplo, mas ainda espera que o modelo responda adequadamente. Normalmente, durante a engenharia de prompt, você começa com zero-shots, pois é mais simples e, com base na resposta, passa para poucos-shots, fornecendo exemplos para obter uma melhor resposta.

Tipos de prompts — funções

Se você deseja pular para um tópico especializado com o LLM, pode direcioná-lo imediatamente para ser um especialista em um campo, atribuindo-lhe uma função e isso é chamado de solicitação de função .


Normalmente, você iniciaria o prompt com a função de especialista que o LLM deve desempenhar. Em seguida, siga as instruções para o que ele precisa fazer. Como um exemplo simples, a função pode ser pedir ao LLM para ser um poeta e a instrução pode ser apenas escrever um poema sobre AI Bites.


Ou pode ser um pouco mais complicado pedir ao LLM para atuar como um terminal Linux . E fornecer instruções específicas para copiar as primeiras 10 linhas de um arquivo em um arquivo diferente e salvá-lo. Você pode até impedir que ele inclua qualquer outro texto na saída, mencionando explicitamente para não dar nenhuma explicação.


You are a poet.

Write a poem about AI Bites


Act as a linux terminalI want you to provide the shell command to read the contents of a file named "input.txt".Copy the first 10 lines to a different file with the name "new.txt" and save it.Do not give any explanations.

Uma estrutura Prompt formal


Diferentes elementos possíveis de um prompt que podemos inserir em um LLM

Com tudo isso dito, se você quiser que eu formalize a estrutura de um prompt, eu faria assim. Um prompt geralmente começa com uma função que o modelo deve desempenhar se o seu prompt for sobre um tópico especializado. Em seguida, ele pode ter todas as instruções que você gostaria de dar ao LLM. Além disso, se você deseja fornecer informações adicionais ao LLM, ele também pode ir após a instrução.


Logo depois disso, você pode fornecer exemplos de alta qualidade se estiver fazendo prompts de poucos tiros. Esses exemplos podem ser seguidos por qualquer contexto que você deseja fornecer ao modelo. Se você deseja fazer uma pergunta e fazer uma tarefa q e A, você pode incluir suas perguntas no final

Formatação de prompt

Agora que vimos o que constitui um prompt, é ainda melhor se soubermos como formatá-los. Por exemplo, é melhor mencionar explicitamente o formato desejado e então fornecer o formato.


Extract locations from the below textDesired format:Cities: <comma_separated_list_of_cities>Countries: <comma_separated_list_of_countries>Input: Although the exact age of Aleppo in Syria is unknown,an ancient temple discovered in the city dates to around 3,000 BC Excavations in the1990s unearthed evidence of 5,000 years of civilization,dating Beirut, which is now Lebanon's capital, to around 3,000 BC


Da mesma forma, para entrada ou contexto, é melhor dizer entrada seguido de dois pontos e, em seguida, fornecer sua entrada.


Ao fornecer exemplos, é melhor separá-los com alguns hashes, como neste exemplo.

Text: Today I saw a movie. It was amazing.sentiment: Positive

Text: I don't very good after seeing that incident.sentiment: Negative


Text: Lets party this weekend to celebrate your anniversary.sentiment: PositiveText: Walking in that neighbourhood is quite dangerous.sentiment: Negative


Se você estiver fornecendo entrada, pode colocá-la entre aspas, como neste exemplo:

Text: """{text input here}"""


Depois, há algo chamado de sequência de parada , que sugere ao modelo que pare de produzir texto porque terminou com a saída. Você pode escolher uma sequência de parada com qualquer símbolo de sua escolha. Mas nova linha parece ser a opção usual aqui.


Text: "Banana",

Output: "yellow \\n"

Text: "Tomato",

Output: "red \\n"

Text: "Apple",

Output: "red \\n"


Se você estiver trabalhando com, digamos, geração de código, é melhor fornecer comentários de acordo com o idioma em que deseja ver o código de saída a ser gerado.


/*

Get the name of the use as input and print it

*/


# get the name of the user as input and print it

Assista o vídeo

Se você leu até aqui, presumo que tenha gostado do artigo ou esteja curioso sobre a IA. De qualquer forma, por que você não assiste ao nosso vídeo sobre Prompt Engineering . Este é o primeiro vídeo da série de vídeos sobre Prompting. Então porque não se inscrever e ficar ligado!

Conclusão

Com toda essa introdução sobre prompts, engenharia de prompts e seus tipos, apenas arranhamos a superfície aqui. Por exemplo, como podemos pedir ao LLM que raciocine sobre uma determinada situação? Existem maneiras mais avançadas de solicitar, como cadeia de pensamento, autoconsistência, conhecimento geral, etc. Vamos dar uma olhada nas próximas postagens e vídeos. Por favor fique atento!