Загрузка и скачивание датасета
Если кейсов много, их удобно подготовить в JSON-файле — вручную или скриптом — и загрузить в датасет. Готовый датасет можно скачать в файл того же формата и перенести в другой проект.
Как загрузить кейсы из файла
- Создайте датасет или откройте существующий.
- Чтобы подготовить файл по образцу, нажмите Скачать шаблон в области загрузки. Платформа скачает файл
dataset-template.jsonс одним кейсом, в котором есть все поля. Заполните его своими кейсами по формату. - Перетащите готовый файл в область загрузки или нажмите в ней выберите файл.
- Проверьте кейсы в редакторе и нажмите Сохранить.
Когда вы загрузите файл:
- Кейсы из файла добавятся к кейсам, которые уже есть в редакторе. Датасет вмещает до 500 кейсов, поэтому если вместе их окажется больше, кейсы из конца файла не загрузятся.
- Если в редакторе уже указано название датасета или общие данные для всех кейсов, они не изменятся. Пустые поля платформа заполнит из файла.
- Кейсы с ошибками, например без вопроса, платформа пропустит, а остальные загрузит. В редакторе появится список пропущенных кейсов: Кейс N: причина, где N — номер кейса в файле.
Как скачать датасет
Чтобы сохранить датасет в файл, на вкладке Датасеты нажмите в его строке.
Платформа скачает файл <название датасета>.json.
Чтобы перенести датасет в другой проект, загрузите этот файл в новый датасет.
Формат файла
Файл — JSON-объект размером до 50 МБ.
Поля файла:
| Поле | Тип | Что содержит |
|---|---|---|
format | строка | Всегда ap-evaluation-dataset. Обязательное поле. |
version | число | Всегда 1. Обязательное поле. |
name | строка | Название датасета. |
channel | объект | Общие данные для всех кейсов: type — всегда TEST_WIDGET, params — данные, которые процесс получит вместе с каждым вопросом, например {"tariff": "premium"}. |
cases | массив | Кейсы. Обязательное поле. |
Поля кейса:
| Поле | Тип | Что содержит |
|---|---|---|
question | строка | Вопрос к агенту. Обязательное поле. |
expectedMode | строка | Режим критерия: ANSWER_TEXT — Текст ответа, INSTRUCTION — Инструкция. По умолчанию ANSWER_TEXT. |
expectedAnswers | массив строк | Эталонные ответы, а в режиме INSTRUCTION — инструкция судье. |
inputFields | массив объектов | Поля входа: key — ключ, value — значение. |
history | массив объектов | История переписки: role — автор, USER или AGENT, text — текст реплики. |
jsonSchema | объект | JSON-схема в формате JSON Schema, которой должен соответствовать ответ агента. |
expectedToolCalls | массив объектов | Ожидаемые вызовы функций: name — имя в формате коллекция.функция. |
Пример файла
{
"format": "ap-evaluation-dataset",
"version": 1,
"name": "Доставка и возврат",
"channel": {
"type": "TEST_WIDGET",
"params": { "tariff": "premium" }
},
"cases": [
{
"question": "Сколько стоит доставка?",
"expectedMode": "ANSWER_TEXT",
"expectedAnswers": ["Доставка по Казани стоит 300 рублей, курьер привезет заказ на следующий день."],
"inputFields": [{ "key": "city", "value": "Казань" }]
},
{
"question": "4815",
"expectedMode": "INSTRUCTION",
"expectedAnswers": ["Агент сообщает статус заказа 4815 и не просит номер повторно."],
"history": [
{ "role": "USER", "text": "Где мой заказ?" },
{ "role": "AGENT", "text": "Назовите, пожалуйста, номер заказа" }
],
"expectedToolCalls": [{ "name": "orders.getStatus" }]
},
{
"question": "Курьер не приехал, а заказ нужен сегодня",
"jsonSchema": {
"type": "object",
"required": ["topic", "urgent"],
"properties": {
"topic": { "enum": ["delivery", "payment", "return"] },
"urgent": { "type": "boolean" }
}
}
}
]
}