Python SDK
Используйте пакеты anthropic или openai для Python с OneProvider, поменяв только base_url. Синхронный и async-клиенты, стриминг, tool use и ретраи.
Два Python-пути — anthropic для нативного кода под Claude, openai для миграций. Оба работают с одной заменой base_url.
Все модели, характеристики и цены Индекс документации для AI-агентов:https://oneprovider.dev/docs/llms.txt Операционная система Перед началом: ключ из кабинета Откройте кабинет: Telegram-бот @oneprovider_robot (Личный кабинет) или app.oneprovider.dev . Нажмите «Выпустить ключ», задайте имя (например, название этого клиента) и лимит трат, скопируйте ключ. Баланс пополняется там же. Подробнее о кабинете и ключах . Установка
bashpip3 install anthropic
# или, для OpenAI-стиля:
pip3 install openai
# В venv (рекомендуется):
# python3 -m venv .venv && source .venv/bin/activate
# pip install anthropic openai Anthropic SDK
pythonimport os
from anthropic import Anthropic
client = Anthropic(
api_key=os.environ["ONEPROVIDER_KEY"],
base_url="https://api.oneprovider.dev",
)
resp = client.messages.create(
model="claude-sonnet-5-5",
max_tokens=1024,
messages=[{"role": "user", "content": "Say hi."}],
)
print(resp.content[0].text) OpenAI-совместимый
pythonimport os
from openai import OpenAI
client = OpenAI(
api_key=os.environ["ONEPROVIDER_KEY"],
base_url="https://api.oneprovider.dev/v1",
)
resp = client.chat.completions.create(
model="claude-sonnet-5-5",
messages=[{"role": "user", "content": "Say hi."}],
)
print(resp.choices[0].message.content) Async-клиент
pythonimport asyncio
from anthropic import AsyncAnthropic
async def main():
client = AsyncAnthropic(base_url="https://api.oneprovider.dev")
resp = await client.messages.create(
model="claude-sonnet-5-5",
max_tokens=512,
messages=[{"role": "user", "content": "Hi async."}],
)
print(resp.content[0].text)
asyncio.run(main()) Стриминг
pythonwith client.messages.stream(
model="claude-sonnet-5-5",
max_tokens=512,
messages=[{"role": "user", "content": "Tell me a haiku."}],
) as stream:
for chunk in stream.text_stream:
print(chunk, end="", flush=True) Использование инструментов
pythontools = [{
"name": "get_weather",
"description": "Get current weather for a city.",
"input_schema": {
"type": "object",
"properties": {"city": {"type": "string"}},
"required": ["city"],
},
}]
resp = client.messages.create(
model="claude-sonnet-5-5",
max_tokens=1024,
tools=tools,
messages=[{"role": "user", "content": "What's the weather in Frankfurt?"}],
)
# resp.stop_reason == "tool_use"
# Смотрите resp.content на tool_use-блоки. Retry и обработка ошибок
pythonfrom anthropic import APIStatusError
from tenacity import retry, stop_after_attempt, wait_exponential
@retry(
stop=stop_after_attempt(3),
wait=wait_exponential(multiplier=0.5, min=0.5, max=4),
retry_error_cls=APIStatusError,
)
def call():
return client.messages.create(
model="claude-sonnet-5-5",
max_tokens=512,
messages=[{"role": "user", "content": "Hi."}],
) Не хардкодьте ключ Всегда читайте ключ из переменной окружения или из менеджера секретов. Захардкоженные ключи рано или поздно утекают в систему контроля версий. Какую модель выбрать
Передавайте id в model. claude-sonnet-5-5 подходит большинству задач, claude-haiku-5-5 для быстрых массовых вызовов, claude-opus-5-5 для сложных рассуждений. OpenAI-совместимая форма принимает и id GPT, например gpt-5.6-terra. Для формы Anthropic используйте https://api.oneprovider.dev, для формы OpenAI https://api.oneprovider.dev/v1. Id на странице моделей .
Частые ошибки и решения
404 NotFoundError
SDK Anthropic: base_url="https://api.oneprovider.dev" без /v1. SDK OpenAI: base_url="https://api.oneprovider.dev/v1" с /v1.
401 AuthenticationError
Переменная окружения пуста или с переводом строки на конце. Выведите len(os.environ["ONEPROVIDER_KEY"]) перед вызовом.
429 RateLimitError
Смотрите текст: «Insufficient balance» значит пополнить баланс (не повторять), любой другой 429 это лимит частоты: сделайте паузу и учтите Retry-After.
APIConnectionError или таймаут чтения
Отключите VPN или прокси-переменные (HTTPS_PROXY) и используйте стриминг для длинных ответов: не-стриминговый запрос должен начать отвечать за 6 минут.
400 про max_tokens
SDK Anthropic требует max_tokens в каждом запросе.
Вопросы и ответы
Можно ли оставить официальные SDK?
Да. Меняются только ключ и base_url, см. миграция с Anthropic и миграция с OpenAI .
Работает ли стриминг?
Да, в обоих SDK; см. Streaming .
Где хранить ключ?
В переменной окружения, а не в репозитории.
Быстрые ответы
Какой base URL использовать?
Claude Code и Anthropic SDK работают с https://api.oneprovider.dev. OpenAI SDK и OpenAI-совместимые клиенты работают с https://api.oneprovider.dev/v1. За обоими адресами один ключ; список моделей: странице моделей , ставки на странице тарифов .
Как авторизоваться?
Передайте сырой ключ sk-… в заголовке x-api-key или Authorization: Bearer: один из двух, не оба. Храните ключ в переменной окружения, а не в файле, который попадает в репозиторий. Подробнее об аутентификации .
Где взять ключ?
Откройте кабинет в Telegram-боте @oneprovider_robot или на app.oneprovider.dev, пополните баланс и нажмите «Выпустить ключ». У каждого ключа может быть свой лимит расхода. Кабинет и ключи .
Что значат ошибки 401, 404 и 429?
401: ключ не задан, написан с ошибкой или передан не в том заголовке; вставьте ключ целиком, без кавычек и пробелов. 404: обычно неверный base URL, например лишний или двойной /v1. 429 с текстом «Insufficient balance»: баланс кабинета или лимит ключа исчерпан, пополните его вместо повторов; любой другой 429 это лимит частоты, подождите Retry-After. Разбор: коды ошибок и решение проблем .
Почему обрывается стрим или сбрасывается соединение?
VPN и VLESS-прокси часто буферизуют SSE или ломают согласование HTTP/2. У OneProvider нет региональных ограничений, и стримы на нашей стороне не буферизуются: отключите прокси и повторите запрос.
Куда писать, если не помогло?
Напишите в Telegram @Oneproviderhelpbot или откройте «Поддержку» в веб-кабинете: приложите код статуса и точный текст ошибки. Как работает поддержка .
Последнее обновление: 2026-10-05 Нашли ошибку? @Oneproviderhelpbot