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

Nesse caso, você verá linhas nos resultados da avaliação contendo model_error_message. Você pode visualizar 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']
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

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.