OneProvider
AI-клиенты и SDK

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 . Нажмите «Выпустить ключ», задайте имя (например, название этого клиента) и лимит трат, скопируйте ключ. Баланс пополняется там же. Подробнее о кабинете и ключах .

Установка

bash
pip3 install anthropic
# или, для OpenAI-стиля:
pip3 install openai
# В venv (рекомендуется):
# python3 -m venv .venv && source .venv/bin/activate
# pip install anthropic openai

Anthropic SDK

python
import 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-совместимый

python
import 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-клиент

python
import 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())

Стриминг

python
with 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)

Использование инструментов

python
tools = [{
"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 и обработка ошибок

python
from 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