APIMaster.ai

Учебник по OpenAI API на Python 2026 | APIMaster.ai

Полный учебник по OpenAI API на Python — установка SDK, создание чат-завершений, потоковая передача ответов, использование вызова функций и создание асинхронных приложений. Работает с APIMaster.ai для доступа со скидкой.

Учебник по OpenAI API на Python

Этот учебник охватывает использование OpenAI API с Python от установки до продвинутых сценариев. Все примеры работают с APIMaster.ai — просто измените api_key и base_url.

Установка

pip install openai

Требуется Python 3.8+. Пакет openai — это официальный Python SDK от OpenAI (версия 1.x).

Начальная настройка

from openai import OpenAI

client = OpenAI(
    api_key="ВАШ_КЛЮЧ_APIMASTER",
    base_url="https://apimaster.ai/v1",
)

Или используйте переменные окружения (рекомендуется):

export OPENAI_API_KEY="ВАШ_КЛЮЧ_APIMASTER"
export OPENAI_BASE_URL="https://apimaster.ai/v1"
from openai import OpenAI
client = OpenAI()  # автоматически читает переменные окружения

Базовые чат-завершения

response = client.chat.completions.create(
    model="gpt-5.4",
    messages=[
        {"role": "system", "content": "Вы эксперт по Python."},
        {"role": "user", "content": "Что такое генератор в Python?"},
    ],
)

print(response.choices[0].message.content)
print(f"Использовано токенов: {response.usage.total_tokens}")

Потоковая передача ответов

stream = client.chat.completions.create(
    model="gpt-5.4",
    messages=[{"role": "user", "content": "Напиши бинарный поиск на Python."}],
    stream=True,
)

for chunk in stream:
    delta = chunk.choices[0].delta.content
    if delta:
        print(delta, end="", flush=True)
print()

Многошаговые диалоги

messages = [
    {"role": "system", "content": "Вы полезный помощник по программированию."}
]

def send(user_text):
    messages.append({"role": "user", "content": user_text})
    resp = client.chat.completions.create(model="gpt-5.4", messages=messages)
    reply = resp.choices[0].message.content
    messages.append({"role": "assistant", "content": reply})
    return reply

print(send("Объясни списковые включения."))
print(send("Дай более сложный пример."))

Структурированный вывод (JSON-режим)

Заставьте модель возвращать валидный JSON:

import json

response = client.chat.completions.create(
    model="gpt-5.4",
    messages=[
        {
            "role": "user",
            "content": "Извлеки имя, email и компанию из: 'Свяжитесь с Джейн Смит (jane@acme.com) из Acme Corp.'",
        }
    ],
    response_format={"type": "json_object"},
)

data = json.loads(response.choices[0].message.content)
print(data)  # {"name": "Джейн Смит", "email": "jane@acme.com", "company": "Acme Corp"}

Вызов функций (использование инструментов)

import json

tools = [
    {
        "type": "function",
        "function": {
            "name": "get_stock_price",
            "description": "Получить текущую цену акции по тикеру",
            "parameters": {
                "type": "object",
                "properties": {
                    "ticker": {"type": "string", "description": "Тикер акции, например AAPL"},
                },
                "required": ["ticker"],
            },
        },
    }
]

messages = [{"role": "user", "content": "Какая текущая цена акций Apple?"}]

response = client.chat.completions.create(
    model="gpt-5.4",
    messages=messages,
    tools=tools,
    tool_choice="auto",
)

# Обработка вызова инструмента
if response.choices[0].finish_reason == "tool_calls":
    tool_call = response.choices[0].message.tool_calls[0]
    args = json.loads(tool_call.function.arguments)
    print(f"Вызов {tool_call.function.name} с {args}")
    
    # Имитация результата функции
    result = {"ticker": args["ticker"], "price": 189.50}
    
    # Отправка результата обратно
    messages.append(response.choices[0].message)
    messages.append({
        "role": "tool",
        "tool_call_id": tool_call.id,
        "content": json.dumps(result),
    })
    
    final = client.chat.completions.create(model="gpt-5.4", messages=messages)
    print(final.choices[0].message.content)

Эмбеддинги

response = client.embeddings.create(
    model="text-embedding-3-small",
    input=["Учебник по OpenAI API на Python", "Основы машинного обучения"],
)

embeddings = [item.embedding for item in response.data]
print(f"Размерность эмбеддинга: {len(embeddings[0])}")

Асинхронное использование

import asyncio
from openai import AsyncOpenAI

client = AsyncOpenAI(
    api_key="ВАШ_КЛЮЧ_APIMASTER",
    base_url="https://apimaster.ai/v1",
)

async def generate(prompt: str) -> str:
    resp = await client.chat.completions.create(
        model="gpt-5.4",
        messages=[{"role": "user", "content": prompt}],
    )
    return resp.choices[0].message.content

async def main():
    # Запуск 5 запросов одновременно
    prompts = [f"Объясни концепцию #{i}" for i in range(5)]
    results = await asyncio.gather(*[generate(p) for p in prompts])
    for r in results:
        print(r[:100])

asyncio.run(main())

Обработка ошибок

from openai import OpenAI, AuthenticationError, RateLimitError, APIError
import time

def safe_call(client, **kwargs):
    for attempt in range(3):
        try:
            return client.chat.completions.create(**kwargs)
        except AuthenticationError:
            raise  # Не повторять ошибки аутентификации
        except RateLimitError:
            time.sleep(2 ** attempt)
        except APIError as e:
            if e.status_code >= 500:
                time.sleep(1)
            else:
                raise
    raise RuntimeError("Превышено максимальное количество попыток")

Руководство по выбору модели

Задача Модель Почему
Суммаризация, классификация gpt-4o-mini Низкая стоимость
Общее программирование, написание текстов gpt-5.4 Лучший баланс
Сложные рассуждения gpt-5.5 или o3 Высокая производительность
Пакетная обработка gpt-4o-mini или gpt-5.4 Выбор по качеству и бюджету

Часто задаваемые вопросы

Как установить библиотеку OpenAI для Python? Выполните pip install openai. Для доступа через APIMaster не требуется дополнительных пакетов — просто укажите base_url и api_key при инициализации клиента.

Какая версия Python требуется для библиотеки OpenAI? Python 3.8 или новее. Асинхронный клиент требует Python 3.10+ для наилучшей совместимости.

Как обрабатывать ограничения скорости OpenAI API в Python? Используйте экспоненциальную задержку — перехватывайте RateLimitError и повторяйте запрос с увеличивающимися задержками. Библиотека tenacity упрощает это. Маршрутизация APIMaster обеспечивает дополнительную стабильность.

Можно ли использовать библиотеку OpenAI для Python с моделями Claude? Да — через APIMaster. Установите base_url="https://apimaster.ai/v1" и используйте идентификаторы моделей, такие как claude-sonnet-4-6. Формат ответа идентичен ответам GPT.

Как использовать асинхронные вызовы OpenAI в Python? Используйте AsyncOpenAI вместо OpenAI и await для вызовов API. Смотрите пример асинхронного использования в руководстве выше.

Получить доступ к OpenAI API через APIMaster →