Solução de problemas de avaliação

Prévia

Este recurso está em Prévia pública.

Este artigo descreve problemas que você pode encontrar ao avaliar aplicações de IA generativa utilizando o Mosaic AI Agent Evaluation e como corrigi-los.

Erros de modelo

mlflow.evaluate(..., model=<model>, model_type="databricks-agent") Invoca o modelo entregue em cada linha do conjunto de avaliação. A invocação do modelo pode falhar, por exemplo, se o modelo generativo estiver temporariamente indisponível. Se isso ocorrer, a saída incluirá as seguintes linhas, onde n é o número total de linhas avaliadas e k é o número de linhas com um erro:

**Evaluation completed**
- k/n contain model errors

Esse erro aparece na interface do usuário do MLFlow quando o senhor acessa view os detalhes de uma determinada linha do conjunto de análise.

erro de modelo na interface do usuário

O senhor também pode view o erro nos resultados da avaliação DataFrame. Nesse caso, você vê linhas nos resultados da avaliação contendo model_error_message. Para view esses erros, o senhor deve usar o seguinte trecho de código:

result = mlflow.evaluate(..., model=<your model>, model_type="databricks-agent")
eval_results_df = result.tables['eval_results']
display(eval_results_df[eval_results_df['model_error_message'].notna()][['request', 'model_error_message']])
erro de modelo

Se o erro for recuperável, você poderá executar novamente a avaliação somente nas linhas com falha:

result = mlflow.evaluate(..., model_type="databricks-agent")
eval_results_df = result.tables['eval_results']
# Filter rows where 'model_error_message' is not null and select columns required for evaluation.
input_cols = ['request_id', 'request', 'expected_retrieved_context', 'expected_response']
retry_df = eval_results_df.loc[
    eval_results_df['model_error_message'].notna(),
    [col for col in input_cols if col in eval_results_df.columns]
]
retry_result = mlflow.evaluate(
    data=retry_df,
    model=<your model>,
    model_type="databricks-agent"
)
retry_result_df = retry_result.tables['eval_results']

merged_results_df = eval_results_df.set_index('request_id').combine_first(
    retry_result.tables['eval_results'].set_index('request_id')
).reset_index()

# Reorder the columns to match the original eval_results_df column order
merged_results_df = merged_results_df[eval_results_df.columns]
display(merged_results_df)

A nova execução de mlflow.evaluate loga resultados e agrega métricas a uma nova execução do MLflow. O DataFrame mesclado gerado acima pode ser visto no notebook.

Erros do juiz

mlflow.evaluate(..., model_type="databricks-agent") avalia os resultados do modelo utilizando juízes incorporados e, opcionalmente, seus juízes personalizados. Os juízes podem deixar de avaliar uma linha de dados de entrada, por exemplo, devido a TOKEN_RATE_LIMIT_EXCEEDED ou MISSING_INPUT_FIELDS.

Se um juiz não avaliar uma linha, a saída conterá as seguintes linhas, onde n é o número total de linhas avaliadas e k é o número de linhas com um erro:

**Evaluation completed**
- k/n contain judge errors

Esse erro será exibido na interface do usuário do MLflow. Ao clicar em uma avaliação específica, os erros dos juízes serão exibidos sob seus nomes de avaliação correspondentes.

juiz error ui

Nesse caso, você vê linhas nos resultados da avaliação contendo <judge_name>/error_message, por exemplo, response/llm_judged/faithfulness/error_message. Você pode ver esses erros utilizando o seguinte trecho de código:

result = mlflow.evaluate(..., model=<your model>, model_type="databricks-agent")
eval_results_df = result.tables['eval_results']
llm_judges_error_columns = [col for col in eval_results_df.columns if 'llm_judged' in col and 'error_message' in col]
columns_to_display = ['request_id', 'request'] + llm_judges_error_columns

# Display the filtered DataFrame
display(eval_results_df[eval_results_df[llm_judges_error_columns].notna().any(axis=1)][columns_to_display])
erro do juiz

Depois que o erro for resolvido ou se for recuperável, você poderá executar novamente a avaliação somente nas linhas com falhas seguindo este exemplo:

result = mlflow.evaluate(..., model_type="databricks-agent")
eval_results_df = result.tables['eval_results']
llm_judges_error_columns = [col for col in eval_results_df.columns if 'llm_judges' in col and 'error_message' in col]

input_cols = ['request_id', 'request', 'expected_retrieved_context', 'expected_response']
retry_df = eval_results_df.loc[
    eval_results_df[llm_judges_error_columns].notna().any(axis=1),
    [col for col in input_cols if col in eval_results_df.columns]
]
retry_result = mlflow.evaluate(
    data=retry_df,
    model=<your model>,
    model_type="databricks-agent"
)
retry_result_df = retry_result.tables['eval_results']

merged_results_df = eval_results_df.set_index('request_id').combine_first(
    retry_result_df.set_index('request_id')
).reset_index()

merged_results_df = merged_results_df[eval_results_df.columns]
display(merged_results_df)

A nova execução de mlflow.evaluate loga resultados e agrega métricas a uma nova execução do MLflow. O DataFrame mesclado gerado acima pode ser visto no notebook.

Erros comuns

Se você continuar a encontrar esses códigos de erro, entre em contato com a equipe da sua conta do Databricks. A lista a seguir contém definições de códigos de erro comuns e como resolvê-los

Código de erro

O que significa

Resolução

1001

Campos de entrada ausentes

Revise e atualize os campos de entrada obrigatórios.

1002

Campos ausentes em alguns prompts de disparo

Revise e atualize os campos de entrada obrigatórios dos exemplos de few-shot apresentados. Consulte Criar exemplos de few-shots.

1005

Campos inválidos em alguns prompts de disparo

Revise e atualize os campos de entrada obrigatórios dos exemplos de few-shot apresentados. Consulte Criar exemplos de few-shots.

3001

Tempo limite de dependência

Revise o log e tente executar novamente seu agente. Entre em contato com sua account Databricks se o problema com tempo limite persistir.

3003

Limite da taxa de dependência excedido

Entre em contato com a equipe da sua conta da Databricks.

3004

Limite de taxa de token excedido

Entre em contato com a equipe da sua conta da Databricks.

3006

Os parceiros-powered IA recurso estão desativados.

Habilitar o recurso de IA com parceiros. Veja informações sobre os modelos que alimentam os juízes do LLM .

3007

O espaço de trabalho está habilitado para HIPAA.

A Avaliação do agente não está disponível no espaço de trabalho habilitado para HIPAA.