Mosaic AI Agent Evaluation LLM judges reference

Prévia

Esse recurso está em Pré-lançamento público.

Este artigo aborda os detalhes de cada um dos juízes do LLM que estão integrados ao Mosaic AI Agent Evaluation, incluindo as métricas de entrada e saída necessárias. Também abrange a produção produzida por juízes personalizados.

Para obter uma introdução aos juízes do LLM, consulte Como a qualidade, o custo e a latência são avaliados pela Avaliação de agentes.

Juízes de resposta

As métricas de qualidade de resposta avaliam a qualidade da resposta do aplicativo à solicitação do usuário. Essas métricas avaliam fatores como a precisão da resposta em comparação com a verdade básica, se a resposta é bem fundamentada, considerando o contexto recuperado (ou se o LLM está alucinando), e se a resposta é segura e livre de linguagem tóxica.

No geral, o LLM deu uma resposta precisa?

O juiz do correctness LLM fornece uma avaliação binária e uma justificativa por escrito sobre se a resposta gerada pelo agente é factualmente precisa e semanticamente semelhante à resposta da verdade fundamental fornecida.

Entrada necessária para correctness

A verdade fundamental expected_response é necessária.

O conjunto de avaliação de entrada deve ter as seguintes colunas:

  • request

  • expected_response

Além disso, se você não usar o argumento model na chamada para mlflow.evaluate(), também deverá fornecer response ou trace.

Importante

A verdade básica expected_response deve incluir apenas o conjunto mínimo de fatos necessários para uma resposta correta. Se você copiar uma resposta de outra fonte, edite a resposta para remover qualquer texto que não seja necessário para que uma resposta seja considerada correta.

Incluir apenas as informações necessárias e deixar de fora as informações que não são estritamente necessárias na resposta permite que a Avaliação de agentes forneça um sinal mais robusto sobre a qualidade do resultado.

Saída para correctness

As métricas a seguir são calculadas para cada pergunta:

Campo de dados

Tipo

Descrição

response/llm_judged/correctness/rating

string

yes ou no. yes indica que a resposta gerada é altamente precisa e semanticamente semelhante à verdade básica. Pequenas omissões ou imprecisões que ainda capturam a intenção da verdade fundamental são aceitáveis. no indica que a resposta não atende aos critérios.

response/llm_judged/correctness/rationale

string

A justificativa por escrito do LLM para yes ou no.

response/llm_judged/correctness/error_message

string

Se houve um erro ao computar essas métricas, os detalhes do erro estão aqui. Se não houver erro, isso é NULL.

As seguintes métricas são calculadas para todo o conjunto de avaliação:

Nome da métrica

Tipo

Descrição

response/llm_judged/correctness/rating/percentage

float, [0, 1]

Em todas as perguntas, a porcentagem em que a correção é avaliada como yes.

A resposta é relevante para a solicitação?

O juiz do relevance_to_query LLM determina se a resposta é relevante para a solicitação de entrada.

Entrada necessária para relevance_to_query

A verdade fundamental não é necessária.

O conjunto de avaliação de entrada deve ter a seguinte coluna:

  • request

Além disso, se você não usar o argumento model na chamada para mlflow.evaluate(), também deverá fornecer response ou trace.

Saída para relevance_to_query

As métricas a seguir são calculadas para cada pergunta:

Campo de dados

Tipo

Descrição

response/llm_judged/relevance_to_query/rating

string

yes se a resposta for considerada relevante para a solicitação, no caso contrário.

response/llm_judged/relevance_to_query/rationale

string

A justificativa por escrito do LLM para yes ou no.

response/llm_judged/relevance_to_query/error_message

string

Se houve um erro ao computar essas métricas, os detalhes do erro estão aqui. Se não houver erro, isso é NULL.

As seguintes métricas são calculadas para todo o conjunto de avaliação:

Nome da métrica

Tipo

Descrição

response/llm_judged/relevance_to_query/rating/percentage

float, [0, 1]

Em todas as perguntas, a porcentagem em que relevance_to_query/rating é considerada yes.

A resposta é uma alucinação ou está baseada no contexto recuperado?

O juiz do groundedness LLM retorna uma avaliação binária e uma justificativa por escrito sobre se a resposta gerada é de fato consistente com o contexto recuperado.

Entrada necessária para groundedness

A verdade fundamental não é necessária.

O conjunto de avaliação de entrada deve ter a seguinte coluna:

  • request

Além disso, se você não usar o argumento model na chamada para mlflow.evaluate(), também deverá fornecer trace ou response e retrieved_context[].content.

Saída para groundedness

As métricas a seguir são calculadas para cada pergunta:

Campo de dados

Tipo

Descrição

response/llm_judged/groundedness/rating

string

yes se o contexto recuperado suportar todas ou quase todas as respostas geradas, no caso contrário.

response/llm_judged/groundedness/rationale

string

A justificativa por escrito do LLM para yes ou no.

response/llm_judged/groundedness/error_message

string

Se houve um erro ao computar essas métricas, os detalhes do erro estão aqui. Se não houver erro, isso é NULL.

As seguintes métricas são calculadas para todo o conjunto de avaliação:

Nome da métrica

Tipo

Descrição

response/llm_judged/groundedness/rating/percentage

float, [0, 1]

Em todas as perguntas, qual é a porcentagem em que groundedness/rating é julgado como yes.

Há conteúdo prejudicial na resposta do agente?

O juiz do safety LLM retorna uma classificação binária e uma justificativa por escrito sobre se a resposta gerada tem conteúdo prejudicial ou tóxico.

Entrada necessária para safety

A verdade fundamental não é necessária.

O conjunto de avaliação de entrada deve ter a seguinte coluna:

  • request

Além disso, se você não usar o argumento model na chamada para mlflow.evaluate(), também deverá fornecer response ou trace.

Saída para safety

As métricas a seguir são calculadas para cada pergunta:

Campo de dados

Tipo

Descrição

response/llm_judged/safety/rating

string

yes se a resposta não tiver conteúdo prejudicial nem tóxico, no caso contrário.

response/llm_judged/safety/rationale

string

A justificativa por escrito do LLM para yes ou no.

response/llm_judged/safety/error_message

string

Se houve um erro ao computar essas métricas, os detalhes do erro estão aqui. Se não houver erro, isso é NULL.

As seguintes métricas são calculadas para todo o conjunto de avaliação:

Nome da métrica

Tipo

Descrição

response/llm_judged/safety/rating/average

float, [0, 1]

Porcentagem de todas as perguntas que foram consideradas yes.

Juízes de recuperação

As métricas de qualidade de recuperação avaliam o desempenho do recuperador em encontrar os documentos relevantes para a solicitação de entrada. Essas métricas avaliam fatores como: O recuperador encontrou os blocos relevantes? Quantos dos documentos relevantes conhecidos ele encontrou? Os documentos encontrados foram suficientes para produzir a resposta esperada?

O carregador encontrou trechos relevantes?

O juiz do chunk-relevance-precision LLM determina se os blocos retornados pelo recuperador são relevantes para a solicitação de entrada. A precisão é calculada como o número de partes relevantes retornadas dividido pelo número total de partes retornadas. Por exemplo, se o recuperador retornar quatro blocos e o juiz do LLM determinar que três dos quatro documentos retornados são relevantes para a solicitação, então llm_judged/chunk_relevance/precision é 0,75.

Entrada necessária para llm_judged/chunk_relevance

A verdade fundamental não é necessária.

O conjunto de avaliação de entrada deve ter a seguinte coluna:

  • request

Além disso, se você não usar o argumento model na chamada para mlflow.evaluate(), também deverá fornecer retrieved_context[].content ou trace.

Saída para llm_judged/chunk_relevance

As métricas a seguir são calculadas para cada pergunta:

Campo de dados

Tipo

Descrição

retrieval/llm_judged/chunk_relevance/ratings

array[string]

Para cada bloco, yes ou no, indicando se o pedaço recuperado é relevante para a solicitação de entrada.

retrieval/llm_judged/chunk_relevance/rationales

array[string]

Para cada bloco, o raciocínio do LLM para a classificação correspondente.

retrieval/llm_judged/chunk_relevance/error_messages

array[string]

Para cada pedaço, se houve um erro no cálculo da classificação, os detalhes do erro estão aqui e os outros valores de saída serão NULL. Se não houver erro, será NULL.

retrieval/llm_judged/chunk_relevance/precision

float, [0, 1]

Calcula a porcentagem de blocos relevantes entre todos os blocos recuperados.

As seguintes métricas são relatadas para todo o conjunto de avaliação:

Nome da métrica

Tipo

Descrição

retrieval/llm_judged/chunk_relevance/precision/average

float, [0, 1]

Valor médio de chunk_relevance/precision em todas as perguntas.

Quantos dos documentos relevantes conhecidos o recuperador encontrou?

document_recall é calculado como o número de documentos relevantes devolvidos dividido pelo número total de documentos relevantes com base na verdade. Por exemplo, suponha que dois documentos sejam relevantes com base na verdade fundamental. Se o recuperador retornar um desses documentos, document_recall será 0,5. Essa métrica não é afetada pelo número total de documentos devolvidos.

Essa métrica é determinística e não usa um juiz LLM.

Entrada necessária para document_recall

A verdade fundamental é necessária.

O conjunto de avaliação de entrada deve ter a seguinte coluna:

  • expected_retrieved_context[].doc_uri

Além disso, se você não usar o argumento model na chamada para mlflow.evaluate(), também deverá fornecer retrieved_context[].doc_uri ou trace.

Saída para document_recall

As seguintes métricas são calculadas para cada pergunta:

Campo de dados

Tipo

Descrição

retrieval/ground_truth/document_recall

float, [0, 1]

A porcentagem da verdade fundamental doc_uris presente nos trechos recuperados.

As seguintes métricas são calculadas para todo o conjunto de avaliação:

Nome da métrica

Tipo

Descrição

retrieval/ground_truth/document_recall/average

float, [0, 1]

Valor médio de document_recall em todas as perguntas.

O recuperador encontrou documentos suficientes para produzir a resposta esperada?

O juiz do context_sufficiency LLM determina se o recuperador recuperou documentos que são suficientes para produzir a resposta esperada.

Entrada necessária para context_sufficiency

A verdade fundamental expected_response é necessária.

O conjunto de avaliação de entrada deve ter as seguintes colunas:

  • request

    • expected_response

Além disso, se você não usar o argumento model na chamada para mlflow.evaluate(), também deverá fornecer retrieved_context[].content ou trace.

Saída para context_sufficiency

As métricas a seguir são calculadas para cada pergunta:

Campo de dados

Tipo

Descrição

retrieval/llm_judged/context_sufficiency/rating

string

yes ou no. yes indica que o contexto recuperado é suficiente para produzir a resposta esperada. no indica que a recuperação precisa ser ajustada para essa pergunta, de modo que ela traga de volta a informação que falta. A justificativa do resultado deve mencionar quais informações estão faltando.

retrieval/llm_judged/context_sufficiency/rationale

string

A justificativa por escrito do LLM para yes ou no.

retrieval/llm_judged/context_sufficiency/error_message

string

Se houve um erro ao computar essas métricas, os detalhes do erro estão aqui. Se não houver erro, isso é NULL.

As seguintes métricas são calculadas para todo o conjunto de avaliação:

Nome da métrica

Tipo

Descrição

retrieval/llm_judged/context_sufficiency/rating/percentage

float, [0, 1]

Porcentagem em que a suficiência do contexto é avaliada como yes.

Juízes métricos personalizados

Você pode criar um juiz personalizado para realizar avaliações específicas para seu caso de uso. Para obter detalhes, consulte Criar juízes LLM personalizados.

A saída produzida por um juiz personalizado depende de assessment_type, ANSWER ou RETRIEVAL.

Juiz LLM personalizado para avaliação da ANSWER

Um juiz LLM personalizado para avaliação de RESPOSTAS avalia a resposta de cada pergunta.

Resultados apresentados para cada avaliação:

Campo de dados

Tipo

Descrição

response/llm_judged/{assessment_name}/rating

string

yes ou no.

response/llm_judged/{assessment_name}/rationale

string

A justificativa por escrito do LLM para yes ou no.

response/llm_judged/{assessment_name}/error_message

string

Se houve um erro ao computar essas métricas, os detalhes do erro estão aqui. Se não houver erro, isso é NULL.

As seguintes métricas são calculadas para todo o conjunto de avaliação:

Nome da métrica

Tipo

Descrição

response/llm_judged/{assessment_name}/rating/percentage

float, [0, 1]

Em todas as perguntas, a porcentagem em que {assessment_name} é julgada como yes.

Juiz LLM personalizado para avaliação de RETRIEVAL

Um juiz LLM personalizado para avaliação de RETRIEVAL avalia cada trecho recuperado em todas as perguntas.

Resultados apresentados para cada avaliação:

Campo de dados

Tipo

Descrição

retrieval/llm_judged/{assessment_name}/ratings

array[string]

Avaliação do juiz personalizado para cada parte,yes ou no.

retrieval/llm_judged/{assessment_name}/rationales

array[string]

Para cada parte, o raciocínio escrito do LLM para yes ou no.

retrieval/llm_judged/{assessment_name}/error_messages

array[string]

Para cada bloco, se houve um erro no cálculo dessa métrica, os detalhes do erro estão aqui e os outros valores são NULL. Se não houver erro, será NULL.

retrieval/llm_judged/{assessment_name}/precision

float, [0, 1]

Porcentagem de todos os pedaços recuperados que o juiz personalizado avaliou como yes.

Métricas relatadas de todo o conjunto de avaliação:

Nome da métrica

Tipo

Descrição

retrieval/llm_judged/{assessment_name}/precision/average

float, [0, 1]

Valor médio de {assessment_name}_precision em todas as perguntas.