litellm/tests/unit/llms/sail
devin-ai-integration[bot] 3a6744cd02
feat(sail): add Sail as a provider with service_tier mapped to its completion window (#42840)
Register Sail (providers.json, LlmProviders.SAIL, OpenAI-compatible lists,
ProviderConfigManager) for chat, Responses and /v1/messages, and add its 12
models to both cost maps with asap, balanced and flex price columns.

Sail picks speed and price with metadata.completion_window and rejects
service_tier, so the Sail chat and Responses configs translate the tier:
default and priority to asap, flex to flex, balanced to balanced, auto to no
window. Billing prices the window that was sent. A tier Sail has no window
for, or a window or tier set where billing cannot see it (request metadata,
extra_body), is a 400 unless drop_params is set.

Add balanced to ServiceTier and its _balanced price columns to the model
info types, the Rust catalog and the dashboard schema. A transform_extra_body
hook on the chat and Responses base configs, which returns extra_body
unchanged by default, lets Sail keep the window when a caller also sends
extra_body.metadata. Sail is listed in the Add Model form and model picker.

Co-authored-by: shrey kharbanda <shrey@berri.ai>
2026-09-26 12:57:48 -07:00
..
chat feat(sail): add Sail as a provider with service_tier mapped to its completion window (#42840) 2026-09-26 12:57:48 -07:00
messages feat(sail): add Sail as a provider with service_tier mapped to its completion window (#42840) 2026-09-26 12:57:48 -07:00
responses feat(sail): add Sail as a provider with service_tier mapped to its completion window (#42840) 2026-09-26 12:57:48 -07:00
__init__.py feat(sail): add Sail as a provider with service_tier mapped to its completion window (#42840) 2026-09-26 12:57:48 -07:00
conftest.py feat(sail): add Sail as a provider with service_tier mapped to its completion window (#42840) 2026-09-26 12:57:48 -07:00
helpers.py feat(sail): add Sail as a provider with service_tier mapped to its completion window (#42840) 2026-09-26 12:57:48 -07:00