task: a stable label for the piece of work the call belongs
to, like invoice_extraction or ticket_triage.
Protégé is a managed API. Every model runs on our capacity, so there are no
provider accounts to connect and no upstream keys to pass through: one key, one
bill.
Why the label matters
Most inference bills are not one workload, they are dozens of them sharing an API key. A single agent turn might classify an intent, pull three fields out of a document, draft a reply and check it. Billed together, those look like one expensive line item. Billed by task, most of them turn out to be small, bounded and repetitive, and priced for reasoning they no longer need.task is what separates them. Once calls arrive labelled:
Routing
Each task gets sent to the cheapest model that clears its eval, not to
whatever model the codebase happens to name.
Measurement
Cost, latency and quality are reported per task, so you can see which
workloads are worth optimizing before anyone touches a model.
Failures
The calls that went wrong are tracked per task and scored by a judge, so you
learn what to fix rather than just that the average moved.
Task-specific models
Traces and failures accumulate per task, so a task that stays expensive
becomes a candidate for a specialist model trained on its own work.
Drop-in by design
The request and response bodies are the OpenAI chat completions shapes. If your code already speaks to OpenAI, Anthropic through a compatible layer, or any gateway, the change is a base URL, a key, andtask.
The OpenAI SDKs strip fields they do not recognise. Use
extra_body in Python
and cast the object in TypeScript, as shown above. See
Migrating for the details per SDK.Next
Quickstart
First labelled call in about five minutes.
Chat completions
Full parameter reference, including
task.