Desenvolver um fluxo de avaliação no Azure AI Studio
Importante
Os itens marcados (visualização) neste artigo estão atualmente em visualização pública. Essa visualização é fornecida sem um contrato de nível de serviço e não a recomendamos para cargas de trabalho de produção. Algumas funcionalidades poderão não ser suportadas ou poderão ter capacidades limitadas. Para obter mais informações, veja Termos Suplementares de Utilização para Pré-visualizações do Microsoft Azure.
Os fluxos de avaliação são tipos especiais de fluxos que avaliam até que ponto os resultados de uma corrida estão alinhados com critérios e objetivos específicos.
No fluxo de prompt, você pode personalizar ou criar seu próprio fluxo de avaliação adaptado às suas tarefas e objetivos e, em seguida, usá-lo para avaliar outros fluxos. Neste documento você aprende:
- Como desenvolver um método de avaliação.
- Compreenda as métricas de entradas, saídas e registro em log para avaliações de fluxo imediatas.
Começar a desenvolver um método de avaliação
Existem duas formas de desenvolver os seus próprios métodos de avaliação:
Personalizar um fluxo de avaliação incorporado: modifique um fluxo de avaliação incorporado.
- Em Ferramentas, selecione Fluxo de prompt.
- Selecione Criar para abrir o assistente de criação de fluxo.
- Na galeria de fluxos, em Explorar galeria , selecione Fluxo de avaliação para filtrar por esse tipo. Escolha uma amostra e selecione Clonar para fazer personalização.
Crie um novo fluxo de avaliação a partir do zero: desenvolva um novo método de avaliação a partir do zero.
- Em Ferramentas, selecione Fluxo de prompt.
- Selecione Criar para abrir o assistente de criação de fluxo.
- Na galeria de fluxos, em Criar por tipo , na caixa "Fluxo de avaliação", selecione Criar , então você pode ver um modelo de fluxo de avaliação.
Compreender a avaliação no fluxo de prompt
Em Fluxo de prompt, um fluxo é uma sequência de nós que processam uma entrada e geram uma saída. Os fluxos de avaliação também tomam as entradas necessárias e produzem as saídas correspondentes.
Algumas características especiais dos métodos de avaliação são:
- Eles geralmente são executados após a execução a ser testada e recebem saídas dessa execução.
- Além das saídas da execução a ser testada, opcionalmente eles podem receber outro conjunto de dados que pode conter verdades de base correspondentes.
- Eles podem ter um nó de agregação que calcula o desempenho geral do fluxo que está sendo testado com base nas pontuações individuais.
- Eles podem registrar métricas usando a
log_metric()
função.
Introduzimos como os inputs e outputs devem ser definidos no desenvolvimento de métodos de avaliação.
Entradas
Uma avaliação é executada após outra execução para avaliar até que ponto os resultados dessa execução estão alinhados com critérios e objetivos específicos. Portanto, a avaliação recebe os resultados gerados a partir dessa execução.
Outras entradas também podem ser necessárias, como a verdade básica, que pode vir de um conjunto de dados. Por padrão, a avaliação usa o mesmo conjunto de dados que o conjunto de dados de teste fornecido para a execução testada. No entanto, se os rótulos correspondentes ou os valores de verdade do terreno de destino estiverem em um conjunto de dados diferente, você poderá alternar facilmente para esse conjunto.
Portanto, para executar uma avaliação, você precisa indicar as fontes desses insumos necessários. Para fazer isso, ao enviar uma avaliação, você verá uma seção "mapeamento de entrada".
- Se a fonte de dados for da sua saída de execução, a fonte será indicada como
${run.output.[OutputName]}
- Se a fonte de dados for do seu conjunto de dados de teste, a fonte será indicada como
${data.[ColumnName]}
Nota
Se sua avaliação não exigir dados do conjunto de dados, você não precisará fazer referência a nenhuma coluna do conjunto de dados na seção de mapeamento de entrada, indicando que a seleção do conjunto de dados é uma configuração opcional. A seleção do conjunto de dados não afetará o resultado da avaliação.
Descrição de entrada
Para lembrar quais entradas são necessárias para calcular métricas, você pode adicionar uma descrição para cada entrada necessária. As descrições são exibidas ao mapear as fontes no envio de execução em lote.
Para adicionar descrições para cada entrada, selecione Mostrar descrição na seção de entrada ao desenvolver seu método de avaliação. E você pode selecionar "Ocultar descrição" para ocultar a descrição.
Em seguida, esta descrição é exibida ao usar esse método de avaliação no envio de execução em lote.
Saídas e métricas
Os outputs de uma avaliação são os resultados que medem o desempenho do fluxo que está a ser testado. A saída geralmente contém métricas, como pontuações, e também pode incluir texto para raciocínio e sugestões.
Saídas de pontuações no nível da instância
No fluxo de prompt, o fluxo processa cada conjunto de dados de amostra, um de cada vez, e gera um registro de saída. Da mesma forma, na maioria dos casos de avaliação, há uma métrica para cada saída, permitindo que você verifique como o fluxo se comporta em cada dado individual.
Para registrar a pontuação para cada amostra de dados, calcule a pontuação para cada saída e registre a pontuação como uma saída de fluxo definindo-a na seção de saída. Essa experiência de criação é o mesmo que definir uma saída de fluxo padrão.
Calculamos essa pontuação no line_process
nó, que você pode criar e editar do zero ao criar por tipo. Você também pode substituir esse nó python por um nó LLM para usar LLM para calcular a pontuação.
Quando esse método de avaliação é usado para avaliar outro fluxo, a pontuação no nível da instância pode ser visualizada na guia Visão geral>de saída.
Registro de métricas e nó de agregação
Além disso, também é importante fornecer uma pontuação geral para a corrida. Você pode verificar o "conjunto como agregação" de um nó Python em um fluxo de avaliação para transformá-lo em um nó "reduzir", permitindo que o nó receba as entradas como uma lista e as processe em lote.
Desta forma, você pode calcular e processar todas as pontuações de cada saída de fluxo e calcular um resultado geral para cada variante.
Você pode registrar métricas em um nó de agregação usando Prompt flow_sdk.log_metrics(). As métricas devem ser numéricas (float/int). Não há suporte para o registro de métricas de tipo de cadeia de caracteres.
Calculamos essa pontuação no aggregate
nó, que você pode criar e editar do zero ao criar por tipo. Você também pode substituir esse nó Python por um nó LLM para usar o LLM para calcular a pontuação. Veja o exemplo a seguir para usar a log_metric
API em um fluxo de avaliação:
from typing import List
from promptflow import tool, log_metric
@tool
def calculate_accuracy(grades: List[str], variant_ids: List[str]):
aggregate_grades = {}
for index in range(len(grades)):
grade = grades[index]
variant_id = variant_ids[index]
if variant_id not in aggregate_grades.keys():
aggregate_grades[variant_id] = []
aggregate_grades[variant_id].append(grade)
# calculate accuracy for each variant
for name, values in aggregate_grades.items():
accuracy = round((values.count("Correct") / len(values)), 2)
log_metric("accuracy", accuracy, variant_id=name)
return aggregate_grades
Como você chamou essa função no nó Python, você não precisa atribuí-la em nenhum outro lugar e pode visualizar as métricas mais tarde. Quando esse método de avaliação é usado em uma execução em lote, a pontuação no nível da instância pode ser visualizada na guia Visão geral-Métricas>.