ДокументацияPython

Python

Справочник API

Zukko работает с официальными SDK — менять код не нужно, только base_url и ключ.

SDKBase URLKey
OpenAI (openai)https://api.zukko.pro/v1fetch_...
Anthropic (anthropic)https://api.zukko.profetch_...

1OpenAI SDK

bash
pip install openai
python
from openai import OpenAI

client = OpenAI(base_url="https://api.zukko.pro/v1", api_key="fetch_...")

r = client.chat.completions.create(
    model="claude-sonnet-5",
    messages=[{"role": "user", "content": "Привет!"}],
)
print(r.choices[0].message.content)

В model можно передать и модель OpenAI, например gpt-5.6-sol, и дешёвую glm-5.3-flash.

Потоковый ответ

python
stream = client.chat.completions.create(
    model="claude-sonnet-5",
    messages=[{"role": "user", "content": "Напиши хайку про код"}],
    stream=True,
)
for chunk in stream:
    if chunk.choices:
        print(chunk.choices[0].delta.content or "", end="", flush=True)
    elif chunk.usage:
        print(f"\n[токены: {chunk.usage.prompt_tokens} вход, {chunk.usage.completion_tokens} выход]")

Проверка if chunk.choices обязательна. Zukko включает stream_options.include_usage, и в конце потока приходит отдельный фрагмент с usage и пустым choices — без проверки chunk.choices[0] упадёт с IndexError.

Стоимость запроса

Заголовок X-Zukko-Cost-Micros (в микродолларах) доступен через with_raw_response:

python
raw = client.chat.completions.with_raw_response.create(
    model="glm-5.3-flash",
    messages=[{"role": "user", "content": "Привет!"}],
)
print(raw.headers.get("x-zukko-cost-micros"))
r = raw.parse()

Заголовок есть только у обычных (не потоковых) ответов.

2Anthropic SDK

bash
pip install anthropic
python
from anthropic import Anthropic

client = Anthropic(base_url="https://api.zukko.pro", api_key="fetch_...")

msg = client.messages.create(
    model="claude-sonnet-5",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Привет!"}],
)
print(msg.content[0].text)

Потоковый ответ

python
with client.messages.stream(
    model="claude-sonnet-5",
    max_tokens=1024,
    messages=[{"role": "user", "content": "Напиши хайку про код"}],
) as stream:
    for text in stream.text_stream:
        print(text, end="", flush=True)

3Ключ из переменных окружения

Не храните ключ в коде:

bash
export OPENAI_BASE_URL="https://api.zukko.pro/v1"
export OPENAI_API_KEY="fetch_..."
python
from openai import OpenAI

client = OpenAI()  # возьмёт OPENAI_BASE_URL и OPENAI_API_KEY

Любую модель из каталога можно подставить в model — список: GET /v1/models. Коды ошибок — в разделе Ошибки API.

Python · Документация Zukko