Skip to main content

Agentic workloads

Agent systems often make several short model calls before they can continue: routing, scoring, extraction, and query rewriting. The latency of those calls accumulates across a workflow.

celeris-1 fits these steps well. Use it throughout your agent loop, and substitute a slower, more intelligent model for the occasional step where extended generation or maximum reasoning depth matters more than speed.

Patterns

Classification and routing

Assign an input to a fixed set of labels, such as intent categories, moderation states, or tools. Specify the allowed output values:

{
"model": "celeris-1",
"messages": [
{"role": "system", "content": "Choose exactly one tool: search, calculator, email, or none. Reply with that tool name only, without reasoning."},
{"role": "user", "content": "what is 2 + 2?"},
{"role": "assistant", "content": "calculator"},
{"role": "user", "content": "what is 14% of 2,300,000?"}
],
"max_tokens": 256,
"temperature": 0
}

Structured extraction

Extract typed fields from unstructured text. Request JSON, define the fields, and set a token limit that fits the expected object:

{
"model": "celeris-1",
"messages": [
{"role": "system", "content": "Extract {name, company, intent}. Reply with one JSON object only, without commentary or fences. Example: 'Sam from Acme wants a demo' -> {\"name\":\"Sam\",\"company\":\"Acme\",\"intent\":\"demo\"}."},
{"role": "user", "content": "Hi, Priya Nair here from Meridian Logistics — keen to trial the enterprise plan."}
],
"max_tokens": 256,
"temperature": 0,
"seed": 7
}

Judging and scoring

Relevance grading, answer verification, and reranking generally use small inputs and outputs, which makes them suitable for celeris-1.

{
"model": "celeris-1",
"messages": [
{"role": "system", "content": "Score how well the passage answers the question. Output one integer from 0 through 10 and nothing else. If the passage directly answers the question, output 10."},
{"role": "user", "content": "Question: When did the Golden Gate Bridge open?\nPassage: The Golden Gate Bridge opened to pedestrians on May 27, 1937."}
],
"max_tokens": 256,
"temperature": 0
}

Query rewriting

Turn conversational input into retrieval queries, SQL, or filter expressions:

{
"model": "celeris-1",
"messages": [
{"role": "system", "content": "Rewrite the message as a concise search query. Query only."},
{"role": "user", "content": "hey do you have anything like the blue runners I bought last month but waterproof"}
],
"max_tokens": 256,
"temperature": 0,
"seed": 7
}

Implementation guidance

  • Use temperature: 0 and an explicit max_tokens limit for structured calls. This reduces output variation and bounds latency and cost. Any positive integer that fits the context window is accepted.
  • Budget enough tokens for a complete tool call. When max_tokens runs out mid-call, the request still succeeds with 200, and what you get back depends on the mode. A buffered reply carries finish_reason: "length", an empty tool_calls list, and the unfinished <|tool_call> marker as ordinary text. A streamed reply can instead carry finish_reason: "tool_calls" with a structured call whose arguments are empty ({}), the same shape as a real call, and one that a schema of all-optional fields accepts. Never execute a tool whose arguments are empty or fail your schema, treat finish_reason: "length" as incomplete output rather than a missing call, and size the budget for the whole call.
  • Ask for machine-readable output ("Reply with the tool name only", "JSON only") and validate it before use. On a non-streaming request, set response_format rather than relying on the prompt for a JSON contract, and tool_choice: "required" (or a named function) to direct a call. A directed call is not guaranteed, so still confirm the reply carries tool_calls. Streaming rejects both with a 400.
  • Parallelize independent calls within a concurrency limit. This provides per-item failure handling without overwhelming the workspace rate limit. See Rate limits.
  • Monitor 429 responses in your application. They are not counted on the usage page. If the rate increases, reduce concurrency or contact support about a higher sustained limit.