Учебник по 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. Смотрите пример асинхронного использования в руководстве выше.