Создание спецификации
В Яндекс Толоке в настройках проекта должна быть указана спецификация входных и выходных данных. Если вы используете конструктор шаблонов в интерфейсе Толоки, то спецификация создается автоматически.
Заполнение входных данных
Поля входных данных создаются из кода на вкладке Пример входных данных. Указывайте максимально подробный пример, чтобы получить готовую спецификацию. Например, если есть необязательные поля, укажите и их.
В этом примере в спецификации будет создано поле question
с типом строка.
{
"question": "Do you like dogs?"
}
В этом примере в спецификации будет создано поле verdict
с типом логический.
{
"verdict": true
}
В этом примере в спецификации будет создано поле age
с типом число.
{
"age": 42
}
В этом примере в спецификации будет создано поле registration_аddress
с типом JSON.
{
...
"registration_аddress": {
"country": "Russia",
"city": "Moscow",
"address": "Tverskaya str, 3-53"
}
}
В этом примере в спецификации будет создано поле images
с типом массив.
{
"images": [
"https://cdn.stocksnap.io/img-thumbs/960w/surfer-wave_3DBOYBPB3X.jpg",
"https://cdn.stocksnap.io/img-thumbs/960w/fisherman-silhouette_UADULRRHEK.jpg",
"https://cdn.stocksnap.io/img-thumbs/960w/old-photo_GEQ27OWZVV.jpg"
]
}
default
.Заполнение выходных данных
Поля выходных данных создаются на основе того, в каких компонентах используется data.output
, а также какие значения в нем разрешены.
Примеры:
В этом примере в спецификации будет поле verdict
с типом логический.
{
"type": "field.radio-group",
"options": [
{
"label": "Да",
"value": true
},
{
"label": "Нет",
"value": false
}
],
"data": {
"type": "data.output",
"path": "verdict"
}
}
В этом примере в спецификации будет поле verdict
с типом строка и допустимыми значениями "true", "false".
{
"type": "field.radio-group",
"options": [
{
"label": "Да",
"value": "true"
},
{
"label": "Нет",
"value": "false"
}
],
"data": {
"type": "data.output",
"path": "verdict"
}
}
В этом примере в спецификации будет поле verdict
с типом число и допустимыми значениями 0
и 1
.
{
"type": "field.radio-group",
"options": [
{
"label": "Да",
"value": 1
},
{
"label": "Нет",
"value": 0
}
],
"data": {
"type": "data.output",
"path": "verdict"
}
}
В этом примере в спецификации будет поле results
с типом JSON. В поле results
будет записан JSON-объект { "verdict": true }
или { "verdict": false }
.
{
"type": "field.radio-group",
"options": [
{
"label": "Да",
"value": true
},
{
"label": "Нет",
"value": false
}
],
"data": {
"type": "data.output",
"path": "results.verdict"
}
}
В этом примере в спецификации будет поле verdicts
с типом массив.
{
"type": "field.radio-group",
"options": [
{
"label": "Да",
"value": 1
},
{
"label": "Нет",
"value": 0
}
],
"data": {
"type": "data.output",
"path": "verdicts.0"
}
}
Как редактировать спецификацию
Вы можете изменить спецификацию в настройках проекта Яндекс Толоки двумя способами: в обычном режиме или в режиме JSON. Режим JSON дает больше возможностей: вы можете делать скрытыми входные данные и использовать регулярные выражения для валидации выходных данных.
Чтобы добавить поле в обычном режиме, нажмите кнопку Добавить поле.
Чтобы редактировать существующее поле, наведите курсор на поле и нажмите кнопку .
Для переключения режима нажмите кнопку . Примеры полей:
- Примеры полей:
-
Строка определенной длины
"my_string": { "type": "string", "required": true, "min_length": 10, "max_length": 100 }
Скопировано- Только русские буквы и цифры
"my_ru_string": { "type": "string", "required": true, "min_length": 10, "max_length": 100, "pattern": "[а-яА-Я0-9]+" }
Скопировано - Только латинские буквы и цифры
"my_en_string": { "type": "string", "required": true, "min_length": 10, "max_length": 100, "pattern": "[a-zA-Z0-9]+" }
Скопировано - Буквы и символы без цифр
"my_number_string": { "type": "string", "required": true, "min_length": 10, "max_length": 100, "pattern": "[^0-9]+" }
Скопировано - Номер телефона с символами
+
,-
и пробелом"my_phone_string": { "type": "string", "required": true, "pattern": "\\+?[0-9\\s-]{4,}" }
Скопировано - Электронная почта с символами
@
,-
и.
"my_mail_string": { "type": "string", "required": true, "pattern": "[a-zA-Z]{1}[a-zA-Z0-9\\.\\-_]+@[a-zA-Z0-9\\.\\-_]+\\.[a-zA-Z]{2,}" }
Скопировано - Месяц
"my_month_string": { "type": "string", "required": true, "allowed_values": ["январь", "февраль", "март", "апрель", "май", "июнь", "июль", "август", "сентябрь", "октябрь" "ноябрь", "декабрь"] }
Скопировано - Целое число из указанного диапазона:
"my_integer": { "type": "integer", "required": true, "min_value": 1, "max_value": 100 }
Скопировано - Целое число со списком допустимых значений:
"my_integer": { "type": "integer", "required": true, "allowed_values": [10, 20, 30] }
Скопировано Число с 0, 1 или 2 знаками после запятой.
Для этого надо выбрать тип строка и проверять с помощью регулярного выражения. Обратите внимание, что разделитель дробной части — запятая:"my_mail_string": { "type": "string", "required": true, "pattern": "^([0-9]+)(,([0-9]){1,2})?$" }
Скопировано
Текст в разных форматахЛогический тип данных"my_boolean": { "type": "boolean", "required": true }
СкопированоЧислаМассив файлов"my_file_array": { "type": "array_file", "required": true, "max_size": 5 }
СкопированоГеографические координаты"my_coordinates": { "type": "coordinates", "required": true }
Скопировано
строка —
string
;ссылка —
url
;логический —
boolean
;число —
number
;дробное число —
float
;- файл —
file
; географические координаты —
coordinates
;объект JSON —
json
.строка —
string
;ссылка —
url
;логический —
boolean
;число —
number
;дробное число —
float
;- файл —
file
; географические координаты —
coordinates
;объект JSON —
json
.
Параметр | Параметр в JSON | Описание |
---|---|---|
Название | id | Идентификатор поля. Допустимы латинские буквы, цифры, дефис и нижнее подчеркивание. |
Тип | type | Тип данных: Для массивов в режиме JSON к типу добавляется префикс |
Обязательное поле | required | Обязательность объекта при загрузке заданий для входных данных. Обязательность ответа исполнителя для выходных данных. По умолчанию поле необязательное — |
Скрытое поле | hidden | Позволяет скрыть данные от исполнителя. Если этого не сделать, исполнители могут получить значение поля программно. Параметр можно настроить в режиме JSON. Например, вы можете скрыть идентификатор По умолчанию поле открытое — Внимание. Скрытые поля недоступны в интерфейсе задания, даже через JS или код шаблона в конструкторе. |
Массив | array_<тип> | Массив объектов одного типа. Используется, например, для загрузки нескольких фотографий исполнителем. В режиме JSON массив — это отдельный тип данных. Например: |
Мин. элементов | min_size | Минимальное число элементов в массиве. |
Макс. элементов | max_size | Максимальное число элементов в массиве. |
Допустимые значения | allowed_values | Допустимые значения для строк, дробных и целых чисел, логического типа данных. |
Мин. длина | min_length | Минимальная длина строки. |
Макс. длина | max_length | Максимальная длина строки |
Мин. значение | min_value | Минимальное значений для дробных и целых чисел. |
Макс. значение | max_value | Максимальное значений для дробных и целых чисел. |
Текущее положение |
| Сохранение текущих координат исполнителя ( По умолчанию |
Шаблон | pattern | Регулярное выражение, которому должна соответствовать строка. Параметр можно настроить в режиме JSON. |
Параметр | Параметр в JSON | Описание |
---|---|---|
Название | id | Идентификатор поля. Допустимы латинские буквы, цифры, дефис и нижнее подчеркивание. |
Тип | type | Тип данных: Для массивов в режиме JSON к типу добавляется префикс |
Обязательное поле | required | Обязательность объекта при загрузке заданий для входных данных. Обязательность ответа исполнителя для выходных данных. По умолчанию поле необязательное — |
Скрытое поле | hidden | Позволяет скрыть данные от исполнителя. Если этого не сделать, исполнители могут получить значение поля программно. Параметр можно настроить в режиме JSON. Например, вы можете скрыть идентификатор По умолчанию поле открытое — Внимание. Скрытые поля недоступны в интерфейсе задания, даже через JS или код шаблона в конструкторе. |
Массив | array_<тип> | Массив объектов одного типа. Используется, например, для загрузки нескольких фотографий исполнителем. В режиме JSON массив — это отдельный тип данных. Например: |
Мин. элементов | min_size | Минимальное число элементов в массиве. |
Макс. элементов | max_size | Максимальное число элементов в массиве. |
Допустимые значения | allowed_values | Допустимые значения для строк, дробных и целых чисел, логического типа данных. |
Мин. длина | min_length | Минимальная длина строки. |
Макс. длина | max_length | Максимальная длина строки |
Мин. значение | min_value | Минимальное значений для дробных и целых чисел. |
Макс. значение | max_value | Максимальное значений для дробных и целых чисел. |
Текущее положение |
| Сохранение текущих координат исполнителя ( По умолчанию |
Шаблон | pattern | Регулярное выражение, которому должна соответствовать строка. Параметр можно настроить в режиме JSON. |
Рекомендации
Если вы редактируете обязательные поля, изменения применятся только к новым пулам заданий. Например, если вам пришлось исправить ошибку в проекте, клонируйте пул или создайте новый. Существующие пулы заданий будут работать в соответствии со старой версией проекта.
- В выходных данных используйте проверку значений и не забывайте помечать поле обязательным, если исполнитель всегда должен заполнить его.
Скрытые поля нужны только заказчикам и недоступны в интерфейсе задания. Значения скрытых полей невозможно использовать ни в JS-коде, ни в конструкторе шаблонов.
Например, вы передаете в задании служебные данные товара, которые не нужны исполнителям: артикул или номер партии. Или вы модерируете комментарии и вам нужны в результатах персональные данные авторов для последующей обработки данных, но исполнители не должны иметь к ним доступ.
Чтобы создать скрытое поле, добавьте его в спецификацию самостоятельно, затем в режиме JSON добавьте к этому полю параметр
"hidden": true
. Эти действия надо выполнять в Толоке при настройке проекта. Скрытое поле сохранится при повторной генерации спецификации с помощью Конструктора шаблонов.