Instruction/Response Template
A pre-built SurveyJS template and step-by-step guide for setting up a Crowd Platform job that produces AI Platform-ready training data.
If you don't already have a labeled Data Platform dataset or a Crowd Platform job whose answers make sense as training data, the AI Platform ships a pre-built SurveyJS template purpose-built to capture instruction/response pairs — the exact shape Training Data expects from a crowd job source.
What it produces
The template shows each worker a single instruction and collects one free-text response. Combined with the input data you supply, a job built from it produces crowdAnswers shaped as:
{ "response": "The worker's free-text answer" }paired at finetune-dataset-build time with the task's input snapshot into:
{ "input": { "prompt": "The instruction the worker saw" }, "output": { "response": "The worker's free-text answer" } }— a clean, single-key-on-both-sides training row, ready for POST /v2/ai-platform/finetune-datasets.
The finetune-worker always trains on the whole input/output object as JSON text, never a bare unwrapped string — so {"response": "..."} becomes the literal training text, not just "...". This is a property of the finetune-worker, not the template; there's no way to avoid the wrapper today.
1. Create the template
POST /v2/ai-platform/finetune-dataset-sources/instruction-response-template{ "projectId": "project_abc123", "name": "My Instruction Capture Template" }name is optional — it defaults to "AI Platform: Instruction/Response Capture". The response is a normal survey_templates row (same shape as Task Templates) with its latestVersion already containing the fixed SurveyJS JSON — no need to hand-craft it or the ###prompt### placeholder syntax yourself.
In platform-v2, the AI Platform page has a "Don't have training data yet?" card that does this same call for you — pick a project, optionally name the template, and click Create template.
2. Add your instructions as input data
The template's placeholder is filled in from an input-data-set list named exactly prompt — one value per instruction you want a worker to respond to:
POST /v2/projects/:projectId/input-data{
"name": "Instructions batch 1",
"language": "en",
"lists": [
{ "name": "prompt", "values": ["Summarize this article in one sentence: ...", "Translate to German: ..."] }
]
}The list name must be exactly prompt, or the template's ###prompt### placeholder is never substituted — workers will see the literal text ###prompt### instead of an instruction. One list value becomes one task/variant, so the number of values you provide is the number of tasks the job creates. See Input Data for the full reference on lists, groups, and variant generation.
3. Create the crowd job
POST /v2/projects/:projectId/crowd-jobs{
"name": "AI Platform training data",
"title": "Respond to the instruction",
"description": "Write the ideal response to the instruction shown.",
"category": "survey",
"language": "en",
"surveyTemplateVersionId": "<the version id from step 1>",
"inputDataSetId": "<the data set id from step 2>",
"maxWorkTimeMinutes": 5,
"rewardCredits": 100,
"maxRepetitionsPerVariant": 1
}See Jobs for the full field reference — notably rewardCredits must be at least maxWorkTimeMinutes × 20, and maxRepetitionsPerVariant controls how many independent worker responses you collect per instruction (useful if you want to pick the best of several responses before accepting).
4. Review and accept answers
Once workers respond, review and accept the answers you want to keep as training data — see Answers. Only accepted answers are ever pulled into a finetune dataset.
5. Build the finetune dataset
POST /v2/ai-platform/finetune-datasets{ "sourceType": "crowd_job", "jobId": "<the job id from step 3>" }From here, pick a base model and start a finetuning run as usual.
How is this guide?