sail.tinker helpers let you drive Sail inference from a
Tinker RL or training loop. They
bridge Tinker’s token-level sampling interface to Sail’s raw-token Responses
path, so rollouts run against Sail-hosted models (optionally with a LoRA
adapter) while logprobs flow back into your training code.
These helpers require
tinker-cookbook installed alongside sail.
Constructing a SailTokenCompleter without tinker-cookbook available raises
sail.InferenceError.sail.SailTokenCompleter
A TinkerTokenCompleter backed by Sail’s raw-token Responses API: each call
sends the prompt token ids via the raw_prompt_tokens request parameter, which
skips server-side chat templating and tokenization and forwards the ids
verbatim to the model. Construct one with a model and sampling settings, then
await it on tokenized prompts to get sampled tokens and their logprobs.
Constructor
| Parameter | Description |
|---|---|
model | Required. Model id to sample from. Raises ValueError if empty. |
max_tokens | Required. Max tokens to generate; must be > 0 (ValueError otherwise). |
temperature | Sampling temperature. Default 1.0. |
top_p | Nucleus sampling cutoff. Default 1.0. |
completion_window | Completion window for each request. Default "priority". LoRA requests cannot use "asap"; the selected window must be supported by the model. |
lora | Name of a Sail-registered LoRA adapter to apply. Mutually exclusive with tinker_lora_signed_url. |
tinker_lora_signed_url | Signed URL to a Tinker checkpoint archive (see get_tinker_checkpoint_signed_url_async). Requires adapter_config. Mutually exclusive with lora. |
adapter_config | LoRA adapter config as a mapping or JSON string. Required when tinker_lora_signed_url is set. |
tinker_lora_name | Optional human-readable name attached to the Tinker LoRA. |
metadata | Extra string metadata forwarded on each request. |
timeout | Per-request timeout in seconds. |
poll_timeout | Seconds to wait for a sampled result before giving up. Default 1200 (20 minutes); None waits indefinitely. |
voyage | A sail.Voyage to attribute requests to a voyage. |
request_logprobs | Whether to request logprobs from the server. Default True. |
lora and tinker_lora_signed_url, or setting
tinker_lora_signed_url without adapter_config, raises ValueError.
async __call__(model_input, stop=None)
model_input: must expose a callable.to_ints()returning the prompt token ids (this is Tinker’sModelInput). A non-callableto_ints, a non-integer token, or an empty prompt raisesTypeError/ValueError.stop: optional stop condition. Anintis wrapped as a single-element list; a tuple is converted to a list; other values pass through unchanged.
TokensWithLogprobs:
| Field | Description |
|---|---|
tokens | list[int]: the sampled token ids. |
maybe_logprobs | list[float] or None: per-token logprobs, or None when the response carried none. |
stop_reason | The model’s stop reason (e.g. "stop", "length"), falling back to the response status or "unknown". |
sail.InferenceError is raised with the offending
response attached as exc.response.
get_tinker_checkpoint_signed_url_async
tinker_lora_signed_url to SailTokenCompleter. It resolves the path against
the Tinker service client and returns the signed URL.
This helper is async-only and requires a Tinker service client with async
checkpoint-URL support.
| Parameter | Description |
|---|---|
service_client | A Tinker ServiceClient (exposes create_rest_client()). |
tinker_path | The Tinker checkpoint path to resolve. |
ttl_seconds | Optional checkpoint TTL to set or extend before resolving the signed URL. |
sail.InferenceError if the Tinker client does
not provide async checkpoint URL methods, or if the response does not contain a
URL.