Используйте Claude API через LiteLLM
Подключение Claude API через LiteLLM к apiToken.sale сводится к одному параметру: LiteLLM нативно говорит протокол Anthropic Messages, поэтому вы оставляете префикс anthropic/ у модели и переопределяете только api_base. Тот же формат запросов и ответов, но на 50% дешевле за токен — и при вызове litellm.completion() из скрипта, и когда LiteLLM-прокси стоит перед всем вашим стеком.
·
Направьте litellm.completion() на эндпоинт со скидкой
LiteLLM уже реализует Anthropic Messages API, поэтому маршрутизация Claude через apiToken.sale — это один дополнительный аргумент: оставьте префикс anthropic/ у модели, задайте api_base на шлюз и передайте предоплаченный ключ. Запросы и ответы сохраняют стандартный формат Anthropic — меняются только эндпоинт и цена за токен: расходы на Claude фиксированно на 50% ниже прайса.
import litellm
response = litellm.completion(
model="anthropic/claude-opus-4-8",
api_base="https://router.apitoken.sale",
api_key="sk-pool-•••",
max_tokens=1024,
messages=[{"role": "user", "content": "Hello"}],
stream=True,
)
for chunk in response:
print(chunk.choices[0].delta.content or "", end="")Здесь работают три вещи. Префикс anthropic/ выбирает Anthropic-провайдера LiteLLM, поэтому max_tokens, temperature, tools и стриминг мапятся на Messages API ровно так же, как в апстриме, — а max_tokens в этом API обязателен, так что задавайте его явно, а не полагайтесь на дефолты. api_base переопределяет, куда уходят запросы, для каждого вызова. А api_key — это ваш ключ шлюза: один и тот же sk-pool-… работает со всеми поддерживаемыми моделями Claude, поэтому переход между claude-opus-4-8, claude-sonnet-5 и claude-haiku-4-5 — это смена строки, а не новая интеграция.
На практике кусаются две ловушки. Никогда не убирайте префикс anthropic/: голый claude-opus-4-8 заставляет LiteLLM угадывать провайдера, и при неверной догадке уйдёт не тот протокол или отклонится ключ. И читайте ключ из окружения (api_key=os.environ["APITOKEN_KEY"]), а не вставляйте его в ноутбуки и конфиги, которые окажутся в git.
Читайте также: Используйте Claude API с LangChain
Один LiteLLM-прокси для всех сервисов, которым нужен Claude
Прямые вызовы нормальны для одиночного скрипта. Когда Claude нужен нескольким сервисам, ноутбукам и кодинг-агентам, запустите LiteLLM как прокси: один YAML-файл хранит эндпоинт и ключ, каждый клиент общается с прокси через OpenAI-совместимый интерфейс LiteLLM, а апстрим-трафик остаётся на протоколе Anthropic.
# config.yaml
model_list:
- model_name: claude-opus-4-8
litellm_params:
model: anthropic/claude-opus-4-8
api_base: https://router.apitoken.sale
api_key: sk-pool-•••
- model_name: claude-haiku-4-5
litellm_params:
model: anthropic/claude-haiku-4-5
api_base: https://router.apitoken.sale
api_key: sk-pool-•••
router_settings:
fallbacks:
- claude-opus-4-8:
- claude-haiku-4-5- 01Установите proxy-экстра и сохраните YAML выше как config.yaml: pip install "litellm[proxy]".
- 02Запустите шлюз: litellm --config config.yaml --port 4000.
- 03Направьте любой OpenAI-совместимый клиент на http://localhost:4000 с model="claude-opus-4-8" — прокси превратит вызов в запрос Anthropic Messages на https://router.apitoken.sale.
- 04Следите за расходом в панели apiToken.sale: использование записывается по каждому ключу с детализацией до токенов, так что один ключ прокси даёт единую строку расходов по всем сервисам за ним.
Блок router_settings оправдывает свои две строки: если claude-opus-4-8 падает с ошибкой или недоступен, LiteLLM повторяет запрос на claude-haiku-4-5, а не отдаёт сбой клиенту. Для долгоживущих агентов, которые держат сессию часами, этот фолбэк — разница между тихим ретраем и мёртвым процессом.
Стриминг, вызов инструментов и промпт-кеширование переживают переход
Возможности, которые обычно ломаются за транслирующим слоем, здесь продолжают работать: шлюз отдаёт нативный Anthropic Messages API, а не перекодирует ваш трафик в другой протокол. Всё, что LiteLLM умеет выразить в терминах Anthropic, доезжает до модели без изменений.
- Стриминг: stream=True отдаёт те же инкрементальные server-sent events, так что потокенные UI и агенты ведут себя идентично.
- Вызов инструментов: tools, tool_choice и round-trip с tool_result мапятся на стандартные блоки Messages — агентам с function calling не нужны доработки.
- Промпт-кеширование: брейкпоинты cache_control работают, как описано в апстрим-документации, а чтения из кеша тарифицируются по кеш-ставкам со страниц моделей.
Это важнее всего для инструментов, построенных поверх LiteLLM, а не для самого LiteLLM: многие кодинг-агенты и фреймворки гоняют свой Anthropic-трафик через него и наследуют эндпоинт со скидкой из той же конфигурации — без правок собственного кода.
Добавьте GPT, Gemini и Kimi в тот же model_list
Ключ шлюза мультипровайдерный, поэтому настроенный вами прокси — не только для Claude. Добавьте по записи на каждую полосу провайдера — и все модели будут тратить один и тот же предоплаченный баланс: ни второго аккаунта, ни второго ключа для ротации.
# additional model_list entries
- model_name: gpt-5.6-terra
litellm_params:
model: openai/gpt-5.6-terra # OpenAI-compatible lane
api_base: https://router.apitoken.sale/v1
api_key: sk-pool-•••
- model_name: gemini-3.6-flash
litellm_params:
model: gemini/gemini-3.6-flash # native Gemini lane
api_base: https://router.apitoken.sale
api_key: sk-pool-•••Модели Kimi ездят по тем же двум полосам — Anthropic Messages или универсальный OpenAI-совместимый эндпоинт, — так что одно развёртывание LiteLLM может обслуживать поддерживаемые модели Claude, GPT, Gemini и Kimi одновременно. Каждый провайдер сохраняет протокол, который LiteLLM для него уже говорит; новым здесь оказываются только base URL и ключ.
Что меняется при переходе — и что остаётся идентичным
Смена эндпоинта намеренно скучна, и стоит точно обозначить, какие части стека это замечают, а какие — нет.
| Слой | Что вы задаёте | Что происходит |
|---|---|---|
| ID моделей | anthropic/claude-opus-4-8, anthropic/claude-sonnet-5, anthropic/claude-haiku-4-5 | Те же ID, что в апстриме; префикс выбирает протокол Anthropic |
| Эндпоинт | https://router.apitoken.sale | Нативный Anthropic Messages API, а не трансляция в формат OpenAI |
| Возможности | Стриминг, вызов инструментов, промпт-кеширование | Ведут себя так же, как с официальным эндпоинтом |
| Цена | На 50% ниже прайса за токен | Действует для каждой поддерживаемой модели Claude на том же предоплаченном балансе |
| Учёт | Один ключ sk-pool-… | Расход по ключу с детализацией до токенов в панели |
Спланируйте бюджет трафика до масштабирования
Биллинг предоплаченный: вы пополняете баланс, и каждый запрос списывает свою точную стоимость в токенах — модели Claude по ставке со скидкой. Никакого месячного обязательства, которое нужно оценивать заранее, поэтому помодельный трекинг расходов в LiteLLM — приятное дополнение, а не инструмент выживания: авторитетные цифры живут в панели apiToken.sale с разбивкой по ключам и детализацией до токенов.
Прежде чем направлять весь флот на прокси, прогоните через один ключ репрезентативный день трафика и считайте реальное потребление с панели; экстраполируйте от реальных токенов, а не от арифметики прайс-листа. Калькулятор стоимости по ссылке ниже делает ту же математику заранее, если вы знаете примерный состав запросов.
Цены по моделям, включая кеш-ставки →
Оцените стоимость вашего LiteLLM-трафика в бесплатном калькуляторе →
Частые вопросы
Как задать кастомный base URL для Anthropic в LiteLLM?
Передайте api_base напрямую в litellm.completion() или задайте его в litellm_params в model_list прокси. LiteLLM будет отправлять запросы в формате Anthropic Messages на этот эндпоинт — для apiToken.sale это https://router.apitoken.sale.
Нужно ли сохранять префикс anthropic/ у модели при маршрутизации Claude через шлюз?
Да. Используйте anthropic/claude-opus-4-8 (или любую поддерживаемую модель), чтобы LiteLLM применил протокол Anthropic; меняются только эндпоинт и ключ, а без префикса LiteLLM начнёт угадывать провайдера.
Работает ли стриминг LiteLLM с кастомным api_base?
Да. stream=True возвращает те же инкрементальные события Anthropic через шлюз, так что потокенный рендеринг и агентские циклы ведут себя ровно как с официальным эндпоинтом.
Может ли один LiteLLM-прокси обслуживать Claude, GPT и Gemini одновременно?
Да. Один ключ apiToken.sale покрывает поддерживаемые модели Claude, GPT, Gemini и Kimi; добавьте каждого провайдера отдельной записью в model_list — модели anthropic/ и gemini/ на https://router.apitoken.sale, модели openai/ на https://router.apitoken.sale/v1.
Как настроить фолбэк между моделями Claude в LiteLLM?
Используйте router_settings.fallbacks в конфиге прокси, связав основное развёртывание с резервным — например, claude-opus-4-8 с claude-haiku-4-5. Обе записи указывают на тот же шлюз и ключ, так что ретрай остаётся на балансе со скидкой.
Проверьте до оплаты: новые аккаунты через Google/GitHub получают бонус $5 на баланс платформы.