Skip to content

Task selection

The task type is the first thing you choose and the hardest to change later. It decides the shape of your training rows, which metric your model is scored on, and which student and teacher models you’re allowed to use.

The value goes in base.task in your config.yaml:

base:
  task: classification
If you need to Choose base.task
Assign text to one of a fixed set of categories Classification classification
Extract or generate an answer from text Question answering question-answering
Answer from a passage you supply at inference time Open book QA (RAG) question-answering-open-book
Answer from knowledge baked into the model Closed book QA question-answering-closed-book
Produce a tool call from a single request Tool calling tool-calling-closed-book
Produce tool calls across a conversation Multi-turn tool calling multi-turn-tool-calling-closed-book
Chat in free text, with optional tool calls Chat completion chat-completion
Run an agentic loop: call tools, read results, answer Agentic chat completion chat-completion-agentic

Three of those values end in -closed-book. That means the knowledge lives in the model’s weights rather than in context you pass at inference time. Open book is the opposite: you supply the passage with every request, which is what a RAG pipeline does. Tool calling counts as closed book because the model learns your tool schemas during training instead of being handed them at inference. The chat completion tasks are closed book in the same sense, just without the suffix.

Tool calling, multi-turn tool calling and any chat completion task that declares tools work with only some students and some teachers, so check Supported models before you commit. Switching task type later means rebuilding your data.

Every task type can be trained from production traces instead of a hand-built dataset. See Trace inputs.

classification

The model reads input text and assigns it one category from a fixed set you define. Pick it when you need a deterministic label rather than free text.

Your job_description.json needs a classes_description naming every class, and the label sets in train.jsonl, test.jsonl and classes_description have to match exactly. Scored on accuracy, plus per-class precision and recall.

Use cases. Intent detection for customer service, content moderation, sentiment analysis, topic categorization for a knowledge base, triaging support tickets by department.

Classification data preparation →

question-answering

The model locates the relevant information and returns a targeted answer, rather than summarising or paraphrasing a whole document. The input carries everything needed to answer.

Scored by an LLM judge, so llm_as_a_judge_instructions in your job description does real work here.

Use cases. Pulling the termination clause out of a contract, the total due off an invoice, the decisions from meeting minutes, the root cause from an incident report.

Question answering data preparation →

question-answering-open-book

The model answers using a passage you supply alongside the question, staying grounded in that text rather than in general knowledge. This is the shape a retrieval-augmented pipeline needs: your retriever supplies chunks, the model answers strictly from them.

Rows carry a context field next to the messages, and unstructured.jsonl is required, so the teacher can draw on realistic passages when generating examples.

Pick it when you already have, or can retrieve, the passages the model answers from.

Use cases. Support answering from product documentation, legal document analysis, technical documentation assistants, FAQ automation over a knowledge base.

Open book QA data preparation →

question-answering-closed-book

The model learns facts from your unstructured data during training, so questions get answered from its own weights with nothing passed in at inference.

unstructured.jsonl is required and does the heavy lifting: it’s the knowledge being moved into the model, and what it covers bounds what the model can answer.

Pick it when you have a lot of unstructured material and you’d rather not build and run a retrieval system.

Use cases. Answering product and service questions without a retriever, domain assistants over a fixed corpus.

Closed book QA data preparation →

tool-calling-closed-book

The model maps a request to a structured tool call with the right arguments, using only the request itself. It learns your tool schemas during training rather than being given them at inference.

Your job description carries a tools array in OpenAI function-calling format, and every call in your data validates against those schemas. Assistant rows carry empty content and a tool_calls array.

Pick it when you have a fixed set of tools and want schema-compliant dispatch.

Use cases. Mapping spoken commands to smart-home APIs, converting user intents to CRM operations, routing requests to microservices, parsing input into system commands.

Tool calling data preparation →

multi-turn-tool-calling-closed-book

The same, inside a conversation. The model takes a history of alternating user and assistant messages and produces the next call, so users can issue follow-ups that build on earlier turns.

Each assistant turn produces exactly one call. Note that evaluation expands each conversation into one line per tool call, so your reported test-set size won’t match the number of rows you uploaded.

Pick it when commands depend on what came before.

Use cases. File system assistants, building database queries by refinement, running infrastructure commands conversationally, multi-step service requests.

Multi-turn tool calling data preparation →

chat-completion

A multi-turn conversation where assistant turns are free text, tool calls, or both at once. The model chats with the user and reaches for a tool when one helps, rather than being forced to call on every turn. Tools are optional: leave them out of the job description and you get a pure conversational model.

The model never sees tool results in this task; an assistant turn is always followed by the next user turn. If your conversations feed tool outputs back to the model, that’s agentic chat completion below.

Scored with both the tool-call metrics and an LLM judge, since a turn can carry either kind of output.

Use cases. Customer support chat that occasionally looks something up, assistants that mix conversation with actions, replacing a general chat model that has a handful of functions.

Chat completion data preparation →

chat-completion-agentic

Chat completion plus the agentic loop: the model calls tools, reads the results fed back as tool messages, and continues — another call or a final text answer. Parallel calls in one turn are supported, and the model learns every assistant turn in the chain, not just the last.

tools is required in the job description, and your data carries the full loop: assistant tool calls, tool results, and the closing answer.

Pick it when the model’s next step depends on what a tool returned.

Use cases. Research assistants that search then synthesise, support agents that look up an order before answering, any tool-using agent whose answer is grounded in tool output.

Agentic chat completion data preparation →

Prepare your data: from a seed dataset if you have labelled examples, or from traces if you have production logs.