Solução de problemas de avaliação (MLflow 2)
Este artigo descreve problemas que você pode encontrar ao avaliar aplicações de IA utilizando a Agent Evaluation e como corrigi-los.
Erros do 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
Este erro aparece na IU do MLflow quando você view os detalhes de uma linha específica do conjunto de avaliação.

Você também pode visualizar o erro no DataFrame de resultados da avaliação. Nesse caso, você verá linhas nos resultados da avaliação contendo model_error_message. Para view esses erros, usando 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']])

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
Este erro será exibido na interface do usuário do MLFlow. Ao clicar em uma avaliação específica, os erros do juiz serão exibidos sob os nomes de avaliação correspondentes.

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 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']
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])

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 | Recursos de AI fornecidos por parceiros estão desabilitados. | Ativar recursos de AI oferecidos por parceiros. Consulte Informações sobre os modelos que capacitam os juízes do LLM. |