Compartilhar via


Ajustar prompts usando variantes

Criar um bom prompt é uma tarefa desafiadora que requer muita criatividade, clareza e relevância. Um bom prompt pode provocar o resultado desejado de um modelo de linguagem pré-treinado, enquanto um prompt incorreto pode levar a resultados imprecisos, irrelevantes ou sem sentido. Portanto, é necessário ajustar prompts para otimizar seu desempenho e robustez para diferentes tarefas e domínios.

Portanto, apresentamos o conceito de variantes que pode ajudar você a testar o comportamento do modelo em diferentes condições, como textos diferentes, formatação, contexto, temperatura ou top-k, comparar e encontrar o melhor prompt e configuração que maximizam a precisão, a diversidade ou a coerência do modelo.

Neste artigo, mostraremos como usar variantes para ajustar prompts e avaliar o desempenho de diferentes variantes.

Pré-requisitos

Antes de ler esse artigo, é melhor revisar os seguintes itens:

Como ajustar prompts por meio de variantes?

Nesse artigo, usaremos o fluxo de amostra de Classificação da Web como exemplo.

  1. Abra o fluxode amostra e remova o nó prepare_examples como início.

    Captura de tela do fluxo de exemplo de classificação da Web para demonstrar variantes.

  2. Use o prompt a seguir como um prompt de linha de base no nó classify_with_llm .

Your task is to classify a given url into one of the following types:
Movie, App, Academic, Channel, Profile, PDF or None based on the text content information.
The classification will be based on the url, the webpage text content summary, or both.

For a given URL : {{url}}, and text content: {{text_content}}.
Classify above url to complete the category and indicate evidence.

The output shoule be in this format: {"category": "App", "evidence": "Both"} 
OUTPUT:

Para otimizar esse fluxo, pode haver várias maneiras. E você encontra duas direções a seguir:

  • Para o nó classify_with_llm: aprendi com a comunidade e com artigos que uma temperatura mais baixa dá maior precisão, mas menos criatividade e surpresa, de modo que a temperatura mais baixa é adequada para tarefas de classificação e também que poucos prompts disparados podem aumentar o desempenho da LLM. Então, eu gostaria de testar como meu fluxo se comporta quando a temperatura é alterada de 1 para 0, e quando o prompt é com poucos exemplos disparo.

  • Para o nó summarize_text_content: também quero testar o comportamento do meu fluxo quando altero o resumo de 100 palavras para 300, para ver se mais conteúdo de texto pode ajudar a melhorar o desempenho.

Como criar variantes

  1. Selecione o botãoMostrar variantes no canto superior direito do nó LLM. O nó LLM existente é variant_0 e é a variante padrão.
  2. Selecione o botão Clonar na variant_0 para gerar a variant_1 e, em seguida, você pode configurar parâmetros para valores diferentes ou atualizar o prompt na variant_1.
  3. Repita a etapa para criar mais variantes.
  4. Selecione Ocultar variantes para parar de adicionar mais variantes. Todas as variantes são dobradas. A variante padrão é mostrada para o nó.

Para o nó classify_with_llm, com base na variant_0:

  • Crie a variant_1 em que a temperatura é alterada de 1 para 0.
  • Crie a variant_2 em que a temperatura é 0 e você pode usar o prompt a seguir, incluindo alguns exemplos simples.
Your task is to classify a given url into one of the following types:
Movie, App, Academic, Channel, Profile, PDF or None based on the text content information.
The classification will be based on the url, the webpage text content summary, or both.

Here are a few examples:

URL: https://play.google.com/store/apps/details?id=com.spotify.music 
Text content: Spotify is a free music and podcast streaming app with millions of songs, albums, and original podcasts. It also offers audiobooks, so users can enjoy thousands of stories. It has a variety of features such as creating and sharing music playlists, discovering new music, and listening to popular and exclusive podcasts. It also has a Premium subscription option which allows users to download and listen offline, and access ad-free music. It is available on all devices and has a variety of genres and artists to choose from. 
OUTPUT: {"category": "App", "evidence": "Both"} 
		
URL: https://www.youtube.com/channel/UC_x5XG1OV2P6uZZ5FSM9Ttw 
Text content: NFL Sunday Ticket is a service offered by Google LLC that allows users to watch NFL games on YouTube. It is available in 2023 and is subject to the terms and privacy policy of Google LLC. It is also subject to YouTube's terms of use and any applicable laws. 
OUTPUT: {"category": "Channel", "evidence": "URL"} 
		
URL: https://arxiv.org/abs/2303.04671 
Text content: Visual ChatGPT is a system that enables users to interact with ChatGPT by sending and receiving not only languages but also images, providing complex visual questions or visual editing instructions, and providing feedback and asking for corrected results. It incorporates different Visual Foundation Models and is publicly available. Experiments show that Visual ChatGPT opens the door to investigating the visual roles of ChatGPT with the help of Visual Foundation Models. 
OUTPUT: {"category": "Academic", "evidence": "Text content"} 
		
URL: https://ab.politiaromana.ro/ 
Text content: There is no content available for this text. 
OUTPUT: {"category": "None", "evidence": "None"}
		
For a given URL : {{url}}, and text content: {{text_content}}.
Classify above url to complete the category and indicate evidence.
OUTPUT:    

Para o nó summarize_text_content, com base na variant_0, você pode criar a variant_1 em que 100 words é alterado para 300 palavras no prompt.

Agora, o fluxo tem a seguinte aparência: duas variantes para o nó summarize_text_content e três para o nóclassify_with_llm.

Captura de tela da página de criação de fluxo quando você tem variantes no fluxo.

Como executar todas as variantes com uma única linha de dados e verificar os resultados

Para garantir que todas as variantes possam ser executadas com êxito e funcionar conforme o esperado, você pode executar o fluxo com uma única linha de dados para testar.

Observação

A cada vez, você pode selecionar apenas um nó LLM com variantes a serem executadas, enquanto outros nós LLM usarão a variante padrão.

Neste exemplo, configuramos variantes para o nó summarize_text_content e o nóclassify_with_llm, portanto, você precisa executar duas vezes para testar todas as variantes.

  1. Selecione o botão Executar na barra superior.
  2. Selecione um nó LLM com variantes. Os outros nós LLM usarão a variante padrão. Captura de tela do envio de uma execução de fluxo quando você tem variantes no fluxo.
  3. Envie a execução do fluxo.
  4. Depois que a execução do fluxo for concluída, você poderá marcar o resultado correspondente para cada variante.
  5. Envie outra execução de fluxo com o outro nó LLM com variantes e marcar as saídas.
  6. Você pode alterar outros dados de entrada (por exemplo, usar uma URL de página da Wikipédia) e repetir as etapas acima para testar variantes para dados diferentes.

Como avaliar variantes

Quando você executa as variantes com algumas partes simples de dados e verifica os resultados a olho nu, ele pode não refletir a complexidade e a diversidade de dados do mundo real, enquanto o resultado não é mensurável, portanto, é difícil comparar a eficácia de diferentes variantes e, em seguida, escolher o melhor.

Você pode enviar uma execução em lote, que permite testar as variantes com uma grande quantidade de dados e avaliá-las com métricas, para ajudá-lo a encontrar o melhor ajuste.

  1. Primeiro, você precisa preparar um conjunto de dados, que é representativo o suficiente do problema do mundo real que você deseja resolver com o prompt flow. Neste exemplo, é uma lista de URLs e sua verdade de base de classificação. Usaremos a precisão para avaliar o desempenho das variantes.

  2. Selecione Avaliar no canto superior direito da página.

  3. Ocorre um assistente para Execução do Lote e Avaliar. A primeira etapa é selecionar um nó para executar todas as suas variantes.

    Para testar o funcionamento de variantes diferentes para cada nó em um fluxo, você precisa executar uma execução em lote para cada nó com variantes um a um. Isso ajuda você a evitar a influência das variantes de outros nós e se concentrar nos resultados das variantes desse nó. Isso segue a regra do experimento controlado, o que significa que você só muda uma coisa de cada vez e mantém todo o restante igual.

    Por exemplo, você pode selecionar o nó classify_with_llm para executar todas as variantes. O nó summarize_text_content usará a variante padrão para esse teste em massa.

  4. Em seguida, nas Configurações de teste em massa, você pode definir o nome do teste em massa, escolher um runtime e carregar os dados preparados.

  5. Em seguida, em Configurações de avaliação, selecione um método de avaliação.

    Como esse fluxo é para classificação, você pode selecionar o método de Avaliação de Precisão de Classificação para avaliar a precisão.

    A precisão é calculada comparando os rótulos previstos atribuídos pelo fluxo (previsão) com os rótulos reais de dados (verdade base) e contando quantos deles correspondem.

    Na seção Mapeamento de entrada de avaliação , você precisa especificar a verdade base proveniente da coluna de categoria do conjunto de dados de entrada e a previsão vem de um dos resultados de fluxo: categoria.

  6. Depois de examinar todas as configurações, você pode enviar a execução em lote.

  7. Depois que a execução for enviada, selecione o link e vá para a página de detalhes da execução.

Observação

A execução pode demorar várias minutos para ser concluída.

Visualizar saídas

  1. Depois que a execução e a avaliação do lote forem concluídas, na página de detalhes da execução, selecione várias execuções do lote para cada variante e selecione Visualizar saídas. Você verá as métricas de três variantes para o nó classify_with_llm e as saídas previstas para LLM para cada registro de dados. Captura de tela de execuções mostrando resultados de visualização.
  2. Depois de identificar qual variante é a melhor, você pode voltar para a página de criação de fluxo e definir essa variante como variante padrão do nó
  3. Você também pode repetir as etapas acima para avaliar as variantes do nó summarize_text_content.

Agora, você concluiu o processo de ajuste de prompts usando variantes. Você pode aplicar essa técnica ao seu prompt flow para encontrar a melhor variante para o nó LLM.

Próximas etapas