Esquema de entrada de evaluación del agente
Importante
Esta característica está en versión preliminar pública.
En este artículo se explica el esquema de entrada requerido por la evaluación del agente para evaluar la calidad, el costo y la latencia de la aplicación.
- Durante el desarrollo, la evaluación tiene lugar sin conexión y un conjunto de evaluación es una entrada necesaria para la evaluación del agente.
- Cuando una aplicación está en producción, todas las entradas a la evaluación del agente proceden de las tablas de inferencia o los registros de producción.
El esquema de entrada es idéntico para las evaluaciones en línea y sin conexión.
Para obtener información general sobre los conjuntos de evaluación, vea Conjuntos de evaluación.
Esquema de entrada de evaluación
En la tabla siguiente se muestra el esquema de entrada de Agent Evaluation. Las dos últimas columnas de la tabla hacen referencia a cómo se proporciona la entrada a la mlflow.evaluate()
llamada. Consulte How to provide input to an evaluation run (Cómo proporcionar una entrada a una ejecución de evaluación) para obtener más información.
Columna | Tipo de datos | Descripción | Aplicación pasada como argumento de entrada | Salidas generadas anteriormente proporcionadas |
---|---|---|---|---|
request_id | string | Identificador único de la solicitud. | Opcionales | Opcionales |
solicitud | Consulte Esquema para la solicitud. | Entrada a la aplicación para evaluar, pregunta o consulta del usuario. Por ejemplo, {'messages': [{"role": "user", "content": "What is RAG"}]} o "¿Qué es RAG?". Cuando request se proporciona como una cadena, se transformará en messages antes de pasarlo al agente. |
Obligatorio | Obligatorio |
response | string | Respuesta generada por la aplicación que se está evaluando. | Generada por la evaluación del agente | Opcional. Si no se proporciona, se deriva del seguimiento. Es obligatorio especificar response o trace . |
expected_facts | matriz de cadena | Lista de hechos que se esperan en la salida del modelo. Consulte expected_facts directrices. | Opcionales | Opcionales |
expected_response | string | Respuesta verdadera (correcta) para la solicitud de entrada. Consulte instrucciones de expected_response. | Opcionales | Opcionales |
expected_retrieved_context | array | Matriz de objetos que contienen el contexto recuperado esperado para la solicitud (si la aplicación incluye un paso de recuperación). Esquema de matriz | Opcionales | Opcionales |
retrieved_context | array | Resultados de recuperación generados por el recuperador en la aplicación que se está evaluando. Si hay varios pasos de recuperación en la aplicación, estos son los resultados de la recuperación del último paso (cronológicamente en el seguimiento). Esquema de matriz | Generada por la evaluación del agente | Opcional. Si no se proporciona, se deriva del seguimiento proporcionado. |
seguimiento | Cadena JSON de seguimiento de MLflow | Seguimiento de MLflow de la ejecución de la aplicación en la solicitud correspondiente. | Generada por la evaluación del agente | Opcional. Es obligatorio especificar response o trace . |
expected_facts
Instrucciones
El expected_facts
campo especifica la lista de hechos que se espera que aparezcan en cualquier respuesta de modelo correcta para la solicitud de entrada específica. Es decir, una respuesta del modelo se considera correcta si contiene estos hechos, independientemente de cómo se frase la respuesta.
Incluir solo los hechos necesarios y dejar fuera los hechos que no son estrictamente necesarios en la respuesta, permite a la evaluación del agente proporcionar una señal más sólida sobre la calidad de la salida.
Puede especificar como máximo uno de expected_facts
y expected_response
. Si especifica ambos, se notificará un error. Databricks recomienda usar expected_facts
, ya que es una guía más específica que ayuda a la evaluación del agente a juzgar de forma más eficaz la calidad de las respuestas generadas.
expected_response
Instrucciones
El expected_response
campo contiene una respuesta totalmente formada que representa una referencia para las respuestas del modelo correctas. Es decir, una respuesta del modelo se considera correcta si coincide con el contenido de la información de expected_response
. En cambio, expected_facts
enumera solo los hechos necesarios para aparecer en una respuesta correcta y no es una respuesta de referencia totalmente formada.
De forma similar a expected_facts
, expected_response
solo debe contener el conjunto mínimo de hechos necesarios para una respuesta correcta. Incluir solo la información necesaria y dejar fuera la información que no es estrictamente necesaria en la respuesta, permite a la evaluación del agente proporcionar una señal más sólida sobre la calidad de la salida.
Puede especificar como máximo uno de expected_facts
y expected_response
. Si especifica ambos, se notificará un error. Databricks recomienda usar expected_facts
, ya que es una guía más específica que ayuda a la evaluación del agente a juzgar de forma más eficaz la calidad de las respuestas generadas.
Esquema de solicitud
El esquema de solicitud puede ser uno de los siguientes:
- Esquema de finalización del chat de OpenAI. El esquema de finalización del chat de OpenAI debe tener una matriz de objetos como parámetro
messages
. Elmessages
campo puede codificar la conversación completa. - Si el agente admite el esquema de finalización del chat de OpenAI, puede pasar una cadena sin formato. Este formato solo admite conversaciones de un solo turno. Las cadenas sin formato se convierten en el
messages
formato con"role": "user"
antes de pasarse al agente. Por ejemplo, una cadena"What is MLflow?"
sin formato se convierte en{"messages": [{"role": "user", "content": "What is MLflow?"}]}
antes de pasarse al agente. SplitChatMessagesRequest
. Un campo de cadenaquery
para la solicitud más reciente y un campo opcionalhistory
que codifica giros anteriores de la conversación.
En el caso de las aplicaciones de chat multiturno, use la segunda o tercera opción anterior.
En el ejemplo siguiente se muestran las tres opciones de la misma columna request
del conjunto de datos de evaluación:
import pandas as pd
data = {
"request": [
# Plain string. Plain strings are transformed to the `messages` format before being passed to your agent.
"What is the difference between reduceByKey and groupByKey in Spark?",
# OpenAI chat completion schema. Use the `messages` field for a single- or multi-turn chat.
{
"messages": [
{
"role": "user",
"content": "How can you minimize data shuffling in Spark?"
}
]
},
# SplitChatMessagesRequest. Use the `query` and `history` fields for a single- or multi-turn chat.
{
"query": "Explain broadcast variables in Spark. How do they enhance performance?",
"history": [
{
"role": "user",
"content": "What are broadcast variables?"
},
{
"role": "assistant",
"content": "Broadcast variables allow the programmer to keep a read-only variable cached on each machine."
}
]
}
],
"expected_response": [
"expected response for first question",
"expected response for second question",
"expected response for third question"
]
}
eval_dataset = pd.DataFrame(data)
Esquema para matrices en la entrada de evaluación
El esquema de las matrices expected_retrieved_context
y retrieved_context
se muestra en la tabla siguiente:
Columna | Tipo de datos | Descripción | Aplicación pasada como argumento de entrada | Salidas generadas anteriormente proporcionadas |
---|---|---|---|---|
content | string | Contenido del contexto recuperado. Cadena en cualquier formato, como HTML, texto sin formato o Markdown. | Opcionales | Opcionales |
doc_uri | string | Identificador único (URI) del documento primario del que procede el fragmento. | Obligatorio | Obligatorio |
Métricas calculadas
Las columnas de la tabla siguiente indican los datos incluidos en la entrada e ✓
indican que la métrica se admite cuando se proporcionan esos datos.
Para obtener más información sobre lo que miden estas métricas, consulte Cómo la evaluación del agente evalúa la calidad, el costo y la latencia.
Métricas calculadas | request |
request y expected_response |
request , expected_response y expected_retrieved_context |
request y expected_retrieved_context |
---|---|---|---|---|
response/llm_judged/relevance_to_query/rating |
✓ | ✓ | ✓ | |
response/llm_judged/safety/rating |
✓ | ✓ | ✓ | |
response/llm_judged/groundedness/rating |
✓ | ✓ | ✓ | |
retrieval/llm_judged/chunk_relevance_precision |
✓ | ✓ | ✓ | |
agent/total_token_count |
✓ | ✓ | ✓ | |
agent/input_token_count |
✓ | ✓ | ✓ | |
agent/output_token_count |
✓ | ✓ | ✓ | |
response/llm_judged/correctness/rating |
✓ | ✓ | ||
retrieval/llm_judged/context_sufficiency/rating |
✓ | ✓ | ||
retrieval/ground_truth/document_recall |
✓ | ✓ |