Juízes de IA integrados
Importante
Esta funcionalidade está em Pré-visualização Pública.
Este artigo aborda os detalhes de cada um dos juízes de IA que são incorporados no Mosaic AI Agent Evaluation, incluindo as métricas de entrada e saída necessárias.
Ver também:
- Como a qualidade, o custo e a latência são avaliados pelo Agent Evaluation
- Personalizar avaliadores LLM
- Juízes chamáveis de referência do SDK do Python
Visão geral dos avaliadores de IA
Observação
Nem todos os juízes exigem rótulos de verdade fundamental. Juízes que não exigem rótulos são úteis quando você tem apenas uma set de solicitações para avaliar seu agente.
Nome do juiz | Aspeto de qualidade que o juiz avalia | Entradas necessárias | Requer verdade fundamentada |
---|---|---|---|
relevance_to_query |
O endereço de resposta (é relevante para) o pedido do utilizador? |
response , request |
Não |
groundedness |
A resposta gerada está fundamentada no contexto recuperado (não alucinante)? |
response , trace[retrieved_context] |
Não |
safety |
Existe conteúdo nocivo ou tóxico na resposta? | response |
Não |
correctness |
A resposta gerada é precisa (em comparação com a verdade básica)? |
response , expected_response |
Sim |
guideline_adherence |
A resposta gerada segue as diretrizes fornecidas por pergunta? |
request , response , guidelines |
Sim |
global_guideline_adherence |
A resposta gerada segue as diretrizes globais? |
request , response , global_guidelines (do evaluator_config ) |
Não (mas requer global_guidelines ) |
chunk_relevance |
O recuperador encontrou partes que são úteis (relevantes) para responder ao pedido do utilizador? Nota: Esta avaliação é aplicada separadamente a cada fragmento recuperado, produzindo uma pontuação e uma fundamentação & para cada fragmento. Essas pontuações são agregadas numa pontuação chunk_relevance/precision para cada linha que representa a % de blocos relevantes. |
retrieved_context , request |
Não |
document_recall |
Quantos dos documentos relevantes conhecidos o recuperador encontrou? |
retrieved_context , expected_retrieved_context[].doc_uri |
Sim |
context_sufficiency |
O recuperador encontrou documentos com informações suficientes para produzir a resposta esperada? |
retrieved_context , expected_response |
Sim |
Observação
Para conversas em turnos múltiplos, os juízes de IA avaliam apenas a última entrada da conversa.
AI julga saídas
Cada juiz usou na avaliação o seguinte columns:
Campo de dados | Tipo | Description |
---|---|---|
response/llm_judged/{judge_name}/rating |
string |
yes se o juiz passar, no se o juiz falhar. |
response/llm_judged/{judge_name}/rationale |
string |
Raciocínio escrito de LLM para yes ou no . |
response/llm_judged/{judge_name}/error_message |
string |
Se houve um erro ao calcular esta avaliação, os detalhes do erro estão aqui. Se nenhum erro, isso é NULL. |
Cada jurado também produzirá uma métrica agregada para toda a corrida:
Nome da métrica | Tipo | Description |
---|---|---|
response/llm_judged/safety/rating/average |
float, [0, 1] |
Percentagem de todas as avaliações que foram consideradas yes . |
Correção
Definição: O agente respondeu com uma resposta factualmente precisa?
Requer verificação de verdade: Sim, expected_facts
ou expected_response
.
A correção compara a resposta efetiva do agente a um rótulo de verdade fundamental e é uma boa maneira de detetar erros factuais.
Entradas necessárias
A avaliação de entrada set deve ter o seguinte columns:
request
-
response
se você não tiver especificado o parâmetromodel
paramlflow.evaluate()
. - expected_facts ou expected_response
Importante
Databricks recomenda o uso de expected_facts
em vez de expected_response
.
expected_facts
representam a set mínima de fatos exigidos numa resposta correta e são mais fáceis de serem elaborados por especialistas no assunto.
Se tiver de utilizar expected_response
, deve incluir apenas a set mínima de factos necessária para uma resposta correta. Se você copiar uma resposta de outra fonte, edite-a para remove 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 informações que não são estritamente exigidas na resposta, permite que a Avaliação do Agente forneça um sinal mais robusto sobre a qualidade da saída.
Exemplos
Use a correção de uma avaliação set:
import mlflow
eval_set = [{
"request": "What is the difference between reduceByKey and groupByKey in Spark?",
"response": "reduceByKey aggregates data before shuffling, whereas groupByKey shuffles all data, making reduceByKey more efficient.",
"expected_facts": [
"reduceByKey aggregates data before shuffling",
"groupByKey shuffles all data",
]
}]
mlflow.evaluate(
data=eval_set,
model_type="databricks-agent",
evaluator_config={
"databricks-agent": {
"metrics": ["correctness"]
}
}
)
Utilize a correção com o SDK do juiz invocável :
from databricks.agents.evals import judges
assessment = judges.correctness(
request="What is the difference between reduceByKey and groupByKey in Spark?",
response="reduceByKey aggregates data before shuffling, whereas groupByKey shuffles all data, making reduceByKey more efficient.",
expected_facts=[
"reduceByKey aggregates data before shuffling",
"groupByKey shuffles all data",
]
)
print(assessment)
O que fazer quando uma resposta está incorreta?
Quando um agente responde com uma resposta factualmente imprecisa, você deve:
- Compreenda se algum contexto recuperado pelo agente é irrelevante ou impreciso. Para aplicações RAG, poderá usar o Juiz de suficiência de contexto para determinar se o contexto é suficiente para generate o
expected_facts
ouexpected_response
. - Se houver contexto suficiente, ajuste o prompt para incluir informações relevantes.
Relevância para a consulta
Definição: A resposta é relevante para o pedido de entrada?
Requer fundamento-verdade: Não.
A relevância garante que a resposta do agente aborde diretamente a entrada do usuário sem se desviar em tópicos não relacionados.
Entradas necessárias
A avaliação de entrada set deve ter o seguinte columns:
request
-
response
se você não tiver especificado o parâmetromodel
paramlflow.evaluate()
.
Exemplos
Utilize a relevância de uma avaliação set:
import mlflow
eval_set = [{
"request": "What is the capital of France?",
"response": "The capital of France is Paris."
}]
mlflow.evaluate(
data=eval_set,
model_type="databricks-agent",
evaluator_config={
"databricks-agent": {
"metrics": ["relevance_to_query"]
}
}
)
Utilize a relevância com o SDK de julgamento chamável :
from databricks.agents.evals import judges
assessment = judges.relevance_to_query(
request="What is the capital of France?",
response="The capital of France is Paris."
)
print(assessment)
O que fazer quando uma resposta não é relevante?
Quando o agente fornecer uma resposta irrelevante, considere as seguintes etapas:
- Avalie a compreensão do modelo sobre a solicitação e ajuste seu elemento de recuperação, dados de treinamento ou instruções de prompt de forma adequada.
Fundamentação
Definição: A resposta é factualmente consistente com o contexto recuperado?
Requer verdade fundamental: Não.
A fundamentação avalia se a resposta do agente está alinhada com as informações fornecidas no contexto recuperado.
Entradas necessárias
A avaliação de entrada set deve ter o seguinte columns:
request
-
response
se você não tiver especificado o parâmetromodel
paramlflow.evaluate()
. -
retrieved_context[].content
se não usares o argumentomodel
na chamada paramlflow.evaluate()
.
Exemplos
Use um embasamento baseado numa avaliação set:
import mlflow
eval_set = [{
"request": "What is the capital of France?",
"response": "The capital of France is Paris.",
"retrieved_context": [
{"content": "Paris is the capital city of France."}
]
}]
mlflow.evaluate(
data=eval_set,
model_type="databricks-agent",
evaluator_config={
"databricks-agent": {
"metrics": ["groundedness"]
}
}
)
Use a base sólida com o SDK do juiz chamável :
from databricks.agents.evals import judges
assessment = judges.groundedness(
request="What is the capital of France?",
response="The capital of France is Paris.",
retrieved_context=[
{"content": "Paris is the capital city of France."}
]
)
print(assessment)
O que fazer quando a resposta carece de fundamento?
Quando a resposta não é fundamentada:
- Analise o contexto recuperado para garantir que ele inclua as informações necessárias para generate a resposta esperada.
- Se o contexto for insuficiente, melhorar o mecanismo de recuperação ou o conjunto de dados para incluir documentos relevantes.
- Modifique o prompt para instruir o modelo a priorizar usando o contexto recuperado ao gerar respostas.
Adesão às diretrizes
Definição: A resposta segue as orientações fornecidas?
Requer dados de referência: Não quando se usa global_guidelines
. Sim ao usar guidelines
por linha.
A adesão às diretrizes avalia se a resposta do agente segue restrições específicas ou instruções fornecidas nas diretrizes.
As orientações podem ser definidas:
- por linha: A resposta de uma solicitação específica deve seguir as diretrizes definidas nessa linha de avaliação.
- globalmente: Todas as respostas a qualquer solicitação devem seguir as diretrizes globais.
Entradas necessárias
A avaliação de entrada set deve ter o seguinte columns:
request
-
response
se você não tiver especificado o parâmetromodel
paramlflow.evaluate()
. -
guidelines
ouglobal_guidelines
por linha, definido na configuração.
Exemplos
Utilize a adesão à diretriz por linha proveniente de uma avaliação set.
import mlflow
eval_set = [{
"request": "What is the capital of France?",
"response": "The capital of France is Paris.",
"guidelines": ["The response must be in English", "The response must be concise"]
}]
mlflow.evaluate(
data=eval_set,
model_type="databricks-agent",
evaluator_config={
"databricks-agent": {
"metrics": ["guideline_adherence"]
}
}
)
Use a conformidade com a diretriz global para a avaliação set.
import mlflow
eval_set = [{
"request": "What is the capital of France?",
"response": "The capital of France is Paris.",
}]
mlflow.evaluate(
data=eval_set,
model_type="databricks-agent",
evaluator_config={
"databricks-agent": {
"metrics": ["guideline_adherence"],
"global_guidelines": ["The response must be in English", "The response must be concise"]
}
}
)
Use a adesão à diretriz com o SDK do juiz chamável:
from databricks.agents.evals import judges
assessment = judges.guideline_adherence(
request="What is the capital of France?",
response="The capital of France is Paris.",
guidelines=["The response must be in English", "The response must be concise"]
)
print(assessment)
O que fazer quando a resposta não segue as diretrizes?
Quando a resposta viola as diretrizes:
- Identifique qual diretriz foi violada e analise por que o agente não a cumpriu.
- Ajuste o prompt para enfatizar a adesão a diretrizes específicas ou treine novamente o modelo com exemplos adicionais que se alinham com o comportamento desejado.
- Para orientações globais, certifique-se de que estão especificadas corretamente na configuração do avaliador.
Segurança
Definição: A resposta evita conteúdos nocivos ou tóxicos?
Requer verdade base: Não.
A segurança garante que as respostas do agente não contenham conteúdo prejudicial, ofensivo ou tóxico.
Entradas necessárias
A avaliação de entrada set deve ter o seguinte columns:
request
-
response
se você não tiver especificado o parâmetromodel
paramlflow.evaluate()
.
Exemplos
Utilizar segurança com base numa avaliação set:
import mlflow
eval_set = [{
"request": "What is the capital of France?",
"response": "The capital of France is Paris."
}]
mlflow.evaluate(
data=eval_set,
model_type="databricks-agent",
evaluator_config={
"databricks-agent": {
"metrics": ["safety"]
}
}
)
Use com segurança o SDK chamável do juiz .
from databricks.agents.evals import judges
assessment = judges.safety(
request="What is the capital of France?",
response="The capital of France is Paris."
)
print(assessment)
O que fazer quando a resposta não é segura?
Quando a resposta inclui conteúdo nocivo:
- Analise a solicitação para identificar se ela pode inadvertidamente levar a respostas inseguras. Modifique a entrada, se necessário.
- Refine o modelo ou o comando para evitar explicitamente a geração de conteúdo nocivo ou tóxico.
- Utilize mecanismos de segurança adicionais, como filtros de conteúdo, para intercetar respostas inseguras antes que elas cheguem ao usuário.
Suficiência do contexto
Definição: Os documentos recuperados são suficientes para produzir a resposta esperada?
Requer verdade básica: Sim, expected_facts
ou expected_response
.
A suficiência de contexto avalia se os documentos recuperados fornecem todas as informações necessárias para generate a resposta esperada.
Entradas necessárias
A avaliação de entrada set deve ter o seguinte columns:
request
-
response
se você não tiver especificado o parâmetromodel
paramlflow.evaluate()
. -
retrieved_context[].content
se você não tiver especificado o parâmetromodel
paramlflow.evaluate()
.
Exemplos
Use a suficiência do contexto a partir de uma avaliação set:
import mlflow
eval_set = [{
"request": "What is the capital of France?",
"response": "The capital of France is Paris.",
"retrieved_context": [
{"content": "Paris is the capital city of France."}
],
"expected_facts": [
"Paris"
]
}]
mlflow.evaluate(
data=eval_set,
model_type="databricks-agent",
evaluator_config={
"databricks-agent": {
"metrics": ["context_sufficiency"]
}
}
)
Use a suficiência de contexto com o SDK invocável do juiz :
from databricks.agents.evals import judges
assessment = judges.context_sufficiency(
request="What is the capital of France?",
retrieved_context=[
{"content": "Paris is the capital city of France."}
]
)
print(assessment)
O que fazer quando o contexto é insuficiente?
Quando o contexto é insuficiente:
- Melhorar o mecanismo de recuperação para garantir que todos os documentos necessários sejam incluídos.
- Modifique o prompt do modelo para fazer referência explícita a informações ausentes ou priorizar o contexto relevante.
Relevância do bloco
Definição: As partes recuperadas são relevantes para a solicitação de entrada?
Requer verdade de base: Não.
A relevância do bloco mede se cada parte é relevante para a solicitação de entrada.
Entradas necessárias
A avaliação de entrada set deve ter o seguinte columns:
request
-
retrieved_context[].content
se você não tiver especificado o parâmetromodel
paramlflow.evaluate()
.
Se você não usar o argumento model
na chamada para mlflow.evaluate()
, você também deve fornecer retrieved_context[].content
ou trace
.
Exemplos
Use a precisão de relevância de segmento a partir de uma avaliação set.
import mlflow
eval_set = [{
"request": "What is the capital of France?",
"retrieved_context": [
{"content": "Paris is the capital of France."},
{"content": "France is a country in Europe."}
]
}]
mlflow.evaluate(
data=eval_set,
model_type="databricks-agent",
evaluator_config={
"databricks-agent": {
"metrics": ["chunk_relevance_precision"]
}
}
)
O que fazer quando os pedaços recuperados são irrelevantes?
Quando partes irrelevantes são recuperadas:
- Avalie a configuração do retriever e ajuste parameters para priorizar a relevância.
- Refine os dados de treinamento do recuperador para incluir exemplos mais diversos ou precisos.
Retirada de documentos
Definição: Quantos dos documentos relevantes conhecidos o sistema de recuperação encontrou?
Requer confirmação verdadeira: Sim, expected_retrieved_context[].doc_uri
.
A recuperação de documentos mede a proporção de documentos relevantes de verdade fundamentada que foram recuperados em comparação com o número total de documentos relevantes em verdade fundamentada.
Entradas necessárias
A avaliação de entrada set deve ter o seguinte column:
expected_retrieved_context[].doc_uri
Além disso, se você não usar o model
argumento na chamada para mlflow.evaluate()
, você também deve fornecer um retrieved_context[].doc_uri
ou trace
.
Exemplos
Use recuperação de documentos a partir de uma avaliação set:
import mlflow
eval_set = [{
"request": "What is the capital of France?",
"expected_retrieved_context": [
{"doc_uri": "doc_123"},
{"doc_uri": "doc_456"}
],
"retrieved_context": [
{"doc_uri": "doc_123"}
]
}]
mlflow.evaluate(
data=eval_set,
model_type="databricks-agent",
evaluator_config={
"databricks-agent": {
"metrics": ["document_recall"]
}
}
)
Não existe um SDK de juiz acessível para esta métrica, pois não utiliza um juiz AI.
O que fazer quando o recall de documentos é baixo?
Quando a lembrança é baixa:
- Verifique se os dados da verdade básica refletem com precisão os documentos relevantes.
- Melhore o retriever ou ajuste o parâmetro de pesquisa parameters para aumentar a cobertura.
Juízes 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 aduaneiro depende do seu assessment_type
, ANSWER
ou RETRIEVAL
.
Juiz LLM personalizado para avaliação ANSWER
Um juiz LLM personalizado para avaliação ANSWER avalia a resposta para cada pergunta.
Resultados fornecidos para cada avaliação:
Campo de dados | Tipo | Description |
---|---|---|
response/llm_judged/{assessment_name}/rating |
string |
yes ou no . |
response/llm_judged/{assessment_name}/rationale |
string |
Raciocínio escrito de LLM para yes ou no . |
response/llm_judged/{assessment_name}/error_message |
string |
Se houve um erro ao calcular essa métrica, os detalhes do erro estão aqui. Se nenhum erro, isso é NULL. |
A seguinte métrica é calculada para toda a avaliação set:
Nome da métrica | Tipo | Description |
---|---|---|
response/llm_judged/{assessment_name}/rating/percentage |
float, [0, 1] |
Em todas as perguntas, a porcentagem where {assessment_name} é julgada como yes . |
Juiz LLM personalizado para avaliação de RECUPERAÇÃO
Um juiz LLM personalizado para avaliação RETRIEVAL avalia cada parte recuperada em todas as perguntas.
Resultados fornecidos para cada avaliação:
Campo de dados | Tipo | Description |
---|---|---|
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 pedaço, o raciocínio escrito de LLM para yes ou no . |
retrieval/llm_judged/{assessment_name}/error_messages |
array[string] |
Para cada segmento, se houve um erro ao calcular esta métrica, os detalhes do erro estão aqui, e os outros values estão NULL. Se nenhum erro, isso é 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 reportadas para toda a avaliação set:
Nome da métrica | Tipo | Description |
---|---|---|
retrieval/llm_judged/{assessment_name}/precision/average |
float, [0, 1] |
Valor médio de {assessment_name}_precision todas as perguntas. |