Схема входных данных оценки агента
Внимание
Эта функция предоставляется в режиме общедоступной предварительной версии.
В этой статье объясняется входная схема, необходимая для оценки качества, стоимости и задержки приложения.
- Во время разработки оценка выполняется в автономном режиме, а набор вычислений — это обязательный вход для оценки агента.
- Когда приложение находится в рабочей среде, все входные данные для оценки агента приходят из таблиц вывода или рабочих журналов.
Входная схема идентична как для онлайн-, так и для автономных вычислений.
Общие сведения об наборах вычислений см. в разделе "Наборы вычислений".
Схема входных данных оценки
В следующей таблице показана входная схема оценки агента. Последние два столбца таблицы ссылаются на способ предоставления входных данных вызову mlflow.evaluate()
. Дополнительные сведения см. в разделе "Как предоставить входные данные для выполнения оценки".
Column | Тип данных | Description | Приложение, переданное в качестве входного аргумента | Предоставленные ранее созданные выходные данные |
---|---|---|---|---|
request_id | строка | Уникальный идентификатор запроса. | Необязательно | Необязательно |
запрос | См . схему запроса. | Входные данные в приложение для оценки, вопроса или запроса пользователя. Например, {'messages': [{"role": "user", "content": "What is RAG"}]} или "Что такое RAG?". Когда request он предоставляется в виде строки, он будет преобразован в messages файл перед передачей агенту. |
Обязательное поле | Обязательное поле |
Отклик | строка | Ответ, созданный вычисляемым приложением. | Создано с помощью оценки агента | Необязательно. Если он не указан, производный от трассировки. trace Либо response требуется. |
expected_facts | Массив строк | Список фактов, ожидаемых в выходных данных модели. См . expected_facts рекомендации. | Необязательно | Необязательно |
expected_response | строка | Правильный ответ на входной запрос. Ознакомьтесь с рекомендациями expected_response. | Необязательно | Необязательно |
expected_retrieved_context | array | Массив объектов, содержащих ожидаемый контекст для запроса (если приложение включает шаг извлечения). Схема массива | Необязательно | Необязательно |
retrieved_context | array | Результаты извлечения, созданные извлекаемым в приложении. Если в приложении находятся несколько шагов извлечения, это результаты извлечения из последнего шага (хронологически в трассировке). Схема массива | Создано с помощью оценки агента | Необязательно. Если он не указан, производный от предоставленной трассировки. |
трассировка | Строка JSON трассировки MLflow | Трассировка MLflow для выполнения приложения в соответствующем запросе. | Создано с помощью оценки агента | Необязательно. trace Либо response требуется. |
expected_facts
Руководящие принципы
Поле expected_facts
указывает список фактов, которые должны отображаться в любом правильном ответе модели для конкретного входного запроса. То есть ответ модели считается правильным, если он содержит эти факты, независимо от того, как ответ выражен.
Включая только необходимые факты и оставляя факты, которые не являются строго обязательными в ответе, позволяют оценке агента обеспечить более надежный сигнал о качестве выходных данных.
Можно указать не более одного из expected_facts
них и expected_response
. Если указать оба, появится сообщение об ошибке. Databricks рекомендует использовать expected_facts
, так как это более конкретное руководство, которое помогает судье оценки агента более эффективно качество созданных ответов.
expected_response
Руководящие принципы
Поле expected_response
содержит полностью сформированный ответ, представляющий ссылку на правильные ответы модели. То есть, ответ модели считается правильным, если он соответствует содержимому информации в expected_response
. Напротив, expected_facts
перечисляет только факты, которые должны отображаться в правильном ответе и не являются полностью сформированным ответом на ссылку.
expected_facts
Аналогично , expected_response
должен содержать только минимальный набор фактов, необходимых для правильного ответа. В том числе только необходимые сведения и вывод сведений, которые не являются строго обязательными в ответе, позволяют оценке агента обеспечить более надежный сигнал о качестве выходных данных.
Можно указать не более одного из expected_facts
них и expected_response
. Если указать оба, появится сообщение об ошибке. Databricks рекомендует использовать expected_facts
, так как это более конкретное руководство, которое помогает судье оценки агента более эффективно качество созданных ответов.
Схема запроса
Схема запроса может быть одной из следующих:
- Схема завершения чата OpenAI. Схема завершения чата OpenAI должна иметь массив объектов в качестве
messages
параметра. Полеmessages
может закодировать всю беседу. - Если агент поддерживает схему завершения чата OpenAI, можно передать обычную строку. Этот формат поддерживает только одноключные беседы. Обычные строки преобразуются
messages
в формат перед"role": "user"
передачей агенту. Например, обычная строка"What is MLflow?"
преобразуется в{"messages": [{"role": "user", "content": "What is MLflow?"}]}
перед передачей агенту. SplitChatMessagesRequest
.query
Строковое поле для последнего запроса и необязательногоhistory
поля, которое кодирует предыдущие повороты беседы.
Для многоэтапных приложений чата используйте второй или третий вариант выше.
В следующем примере показаны все три параметра в одном request
столбце набора данных оценки:
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)
Схема массивов в входных данных оценки
Схема массивов expected_retrieved_context
и retrieved_context
показана в следующей таблице:
Column | Тип данных | Description | Приложение, переданное в качестве входного аргумента | Предоставленные ранее созданные выходные данные |
---|---|---|---|---|
content | строка | Содержимое извлеченного контекста. Строка в любом формате, например HTML, обычный текст или Markdown. | Необязательно | Необязательно |
doc_uri | строка | Уникальный идентификатор (URI) родительского документа, из которого поступил блок. | Обязательное поле | Обязательное поле |
Вычисляемая метрика
Столбцы в следующей таблице указывают данные, включенные в входные данные, и ✓
указывает, что метрика поддерживается при предоставлении данных.
Дополнительные сведения об измерении этих метрик см. в разделе о том, как оценивается качество, стоимость и задержка по оценке агента.
Вычисляемые метрики | request |
request и expected_response . |
request , expected_response и expected_retrieved_context |
request и 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 |
✓ | ✓ |