Compartilhar via


Desenvolver um fluxo de avaliação no Estúdio de IA do Azure

Importante

Alguns dos recursos descritos nesse artigo podem estar disponíveis apenas na versão prévia. Essa versão prévia é fornecida sem um contrato de nível de serviço e não recomendamos isso para cargas de trabalho de produção. Alguns recursos podem não ter suporte ou podem ter restrição de recursos. Para obter mais informações, consulte Termos de Uso Complementares de Versões Prévias do Microsoft Azure.

Os fluxos de avaliação são tipos especiais de fluxos que avaliam o grau de alinhamento dos resultados de uma execução com critérios e metas específicos.

No prompt flow, você pode personalizar ou criar seu fluxo de avaliação adaptado às suas tarefas e objetivos, e usar 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 rápidas de fluxo.

Começar a desenvolver um método de avaliação

Há duas maneiras de desenvolver seus próprios métodos de avaliação:

  • Personalizar um Fluxo de Avaliação Interno: modifica um fluxo de avaliação interno.

    1. Em Ferramentas, selecione Prompt flow.
    2. Selecione Criar para abrir o assistente de criação de fluxo.
    3. Na galeria de fluxos, em Explorar galeria, selecione Fluxo de avaliação para filtrar por esse tipo. Escolha um exemplo e selecione Clonar para fazer a personalização.
  • Crie um novo fluxo de avaliação do zero: Desenvolva um novo método de avaliação desde o início.

    1. Em Ferramentas, selecione Prompt flow.
    2. Selecione Criar para abrir o assistente de criação de fluxo.
    3. Na galeria de fluxos em Criar por tipo, na caixa "Fluxo de avaliação", selecione Criar e, em seguida, você pode ver um modelo de fluxo de avaliação.

Entender a avaliação no fluxo de prompt

No 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 recebem os inputs necessários e produzem os outputs correspondentes.

Alguns recursos 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 serem testadas, opcionalmente elas 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 função log_metric().

Apresentamos como as entradas e saídas devem ser definidas no desenvolvimento de métodos de avaliação.

Entradas

Uma avaliação é executada após outra execução para avaliar o quão bem as saídas dessa execução se alinham com critérios e metas específicos. Portanto, a avaliação recebe as saídas geradas a partir dessa execução.

Outras entradas também podem ser requeridas, como a verdade fundamental, que pode vir de um conjunto de dados. Por padrão, a avaliação usa o mesmo conjunto de dados do conjunto de dados de teste fornecido para a execução testada. No entanto, se os rótulos correspondentes ou os valores de verdade de base de destino estiverem em um conjunto de dados diferente, você poderá alternar facilmente para esse.

Portanto, para executar uma avaliação, você precisa indicar as fontes desses inputs 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 saída da sua 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]}

Observação

Se sua avaliação não exigir dados do conjunto de dados, você não precisará fazer referência a nenhuma coluna de 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 da entrada

Para lembrar quais entradas são necessárias para calcular as 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, essa descrição é exibida quando você usa esse método de avaliação no envio de execução em lote.

Saídas e métricas

As saídas de uma avaliação são os resultados que medem o desempenho do fluxo que está sendo testado. A saída geralmente contém métricas, como pontuações, e também pode incluir texto para motivos e sugestões.

Saídas de pontuações em nível de instância

No prompt flow, o fluxo processa cada conjunto de dados de exemplo 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 de cada exemplo de dados, calcule a pontuação de 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ó do 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 em nível de instância pode ser exibida na guia Visão geral>Saída.

Nó de registro em log e agregação de métricas

Além disso, também é importante fornecer uma pontuação geral para a execução. Você pode marcar a opção "definir 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.

Dessa 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 em log de métricas de tipo de cadeia de caracteres.

Calculamos essa pontuação no nó aggregate, 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. Consulte o exemplo a seguir para usar a API log_metric 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ó do Python, você não precisa atribuí-la em nenhum outro lugar e pode exibir as métricas mais tarde. Quando esse método de avaliação é usado em uma execução em lote, a pontuação em nível de instância pode ser visualizada na guia Visão geral - >Métricas.

Próximas etapas