🔌

OpenAI API для начинающих: первый запрос за 10 минут

Ключи, модели, цены, лимиты. От регистрации до рабочего кода. Python + OpenAI SDK. Сравнение моделей GPT-4o, o3-mini, GPT-4. Цены и лимиты.

beginner⏱ 12 мин
Архитектура взаимодействия с OpenAI API 🐍 Python Ваш код 📦 OpenAI SDK openai Python 🌐 REST API api.openai.com 🧠 Модель GPT-4o/o3 Сравнение моделей (цены за 1M токенов) GPT-4o Input: $2.50 Output: $10.00 Контекст: 128K o3-mini Input: $1.10 Output: $4.40 Контекст: 200K GPT-4.1 Input: $2.00 Output: $8.00 Контекст: 1M GPT-4o-mini Input: $0.15 Output: $0.60 Контекст: 128K

# 1. Регистрация и получение API-ключа

Первым делом нужно зарегистрироваться на platform.openai.com. После регистрации перейдите в раздел API Keys и создайте новый ключ. Важно: скопируйте ключ сразу — OpenAI показывает его только один раз. Храните ключ в переменной окружения, никогда не коммитьте в репозиторий.

# Установите переменную окружения с ключом
export OPENAI_API_KEY="sk-proj-ваш-ключ-здесь"

# Или создайте .env файл в корне проекта
echo 'OPENAI_API_KEY=sk-proj-ваш-ключ-здесь' > .env

Новые аккаунты получают бесплатные кредиты ($5–$18). Этого хватит на тысячи запросов к GPT-4o-mini. Для production-использования пополните баланс — минимальный платёж $5.

# 2. Установка и первый запрос

Установите официальный Python SDK. Он автоматически читает ключ из переменной окружения OPENAI_API_KEY. Вот минимальный рабочий код для первого запроса:

# Установка SDK
pip install openai

# Первый запрос — файл hello_openai.py
from openai import OpenAI

client = OpenAI()  # Ключ читается из OPENAI_API_KEY

response = client.chat.completions.create(
    model="gpt-4o-mini",
    messages=[
        {"role": "system", "content": "Ты полезный ассистент."},
        {"role": "user", "content": "Объясни, что такое API, в одном предложении."}
    ],
    temperature=0.7,
    max_tokens=100
)

print(response.choices[0].message.content)

Запустите: python hello_openai.py. Через пару секунд вы получите ответ модели. Параметр temperature (0–2) управляет креативностью: 0 — строгие ответы, 1.5+ — творческие.

# 3. Модели: какую выбрать и сколько это стоит

OpenAI предлагает несколько линеек моделей. Выбор зависит от задачи и бюджета. Разберём ключевые варианты на июнь 2026:

# GPT-4o — флагман, универсальный интеллект
# $2.50/1M входных, $10.00/1M выходных токенов
# Мультимодальный: текст + изображения на входе
# Контекст: 128K токенов (~300 страниц текста)

# o3-mini — reasoning-модель, логика и математика
# $1.10/1M входных, $4.40/1M выходных
# Думает дольше, но решает сложные задачи точнее
# Контекст: 200K токенов

# GPT-4o-mini — быстрый и дешёвый
# $0.15/1M входных, $0.60/1M выходных
# Идеален для классификации, чат-ботов, суммаризации

# GPT-4.1 — новейшая модель, огромный контекст
# $2.00/1M входных, $8.00/1M выходных
# Контекст: 1M токенов — целые кодовые базы

Совет: всегда начинайте с GPT-4o-mini для прототипирования — тысяча запросов обойдётся в копейки. Переключайтесь на GPT-4o или o3-mini, когда нужна максимальная точность.

# 4. Стриминг: потоковая генерация ответа

По умолчанию API возвращает ответ целиком. Это неудобно для длинных генераций — пользователь ждёт. Включите стриминг: модель отдаёт токены по мере генерации, как ChatGPT в браузере.

from openai import OpenAI

client = OpenAI()

stream = client.chat.completions.create(
    model="gpt-4o-mini",
    messages=[
        {"role": "user", "content": "Напиши стихотворение о программировании."}
    ],
    stream=True,  # ← ключевой параметр
)

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

Параметр stream=True меняет поведение: вместо одного объекта Response вы получаете итератор чанков. Каждый чанк — небольшой фрагмент текста. flush=True гарантирует мгновенный вывод в терминал.

# 5. Function Calling: пусть модель вызывает ваши функции

Function Calling (вызов функций) — одна из мощнейших возможностей API. Вы описываете функции, а модель решает, когда и с какими аргументами их вызвать. Это основа AI-агентов.

from openai import OpenAI
import json

client = OpenAI()

# 1. Описываем доступные функции (tools)
tools = [{
    "type": "function",
    "function": {
        "name": "get_weather",
        "description": "Получить погоду для города",
        "parameters": {
            "type": "object",
            "properties": {
                "city": {"type": "string"}
            },
            "required": ["city"]
        }
    }
}]

# 2. Отправляем запрос с tools
response = client.chat.completions.create(
    model="gpt-4o-mini",
    messages=[{"role": "user", "content": "Какая погода в Токио?"}],
    tools=tools
)

# 3. Модель возвращает вызов функции
tool_call = response.choices[0].message.tool_calls[0]
print(f"Функция: {tool_call.function.name}")
print(f"Аргументы: {tool_call.function.arguments}")
# → Функция: get_weather, Аргументы: {"city":"Токио"}

Модель не выполняет функцию — она только говорит, какую функцию вызвать и с какими аргументами. Выполнение — ваша задача. Результат отправляется обратно в модель для финального ответа.

# 6. Обработка ошибок и лимиты

API может вернуть ошибку: превышен rate limit, кончились кредиты, модель перегружена. Всегда добавляйте обработку ошибок и повторные попытки (retry).

from openai import OpenAI, RateLimitError, APIError
import time

client = OpenAI(max_retries=3)  # Авто-retry для сетевых ошибок

def safe_completion(messages, model="gpt-4o-mini"):
    try:
        return client.chat.completions.create(
            model=model, messages=messages
        )
    except RateLimitError:
        print("⏳ Лимит запросов, ждём 10 секунд...")
        time.sleep(10)
        return safe_completion(messages, model)  # Повтор
    except APIError as e:
        print(f"❌ Ошибка API: {e}")
        return None

# Лимиты для новых аккаунтов (Tier 1):
# - 500 RPM (запросов в минуту) для GPT-4o-mini
# - 10K TPM (токенов в минуту) для GPT-4o-mini
# - 500 RPM / 30K TPM для GPT-4o
# Повышаются после первых успешных платежей (Tier 2-5)

# 7. Считаем токены: контроль расходов

Токен — единица текста для модели (~0.75 слова на английском, ~0.5 слова на русском). Знать количество токенов важно для оценки стоимости. OpenAI предоставляет библиотеку tiktoken.

# Установка tiktoken
pip install tiktoken

import tiktoken

# Кодировщик для GPT-4o / GPT-4o-mini
enc = tiktoken.encoding_for_model("gpt-4o")

text = "Привет! Как дела? OpenAI API — это мощно."
tokens = enc.encode(text)
print(f"Токенов: {len(tokens)}")         # → Токенов: 19
print(f"Токены: {tokens}")               # → [123, 456, ...]
print(f"Декодировано: {enc.decode(tokens)}") # → Привет! Как дела?...

# Оценка стоимости для GPT-4o-mini
cost_per_1k_input = 0.00015   # $0.15 за 1M = $0.00015 за 1K
estimated_cost = (len(tokens) / 1000) * cost_per_1k_input
print(f"Стоимость запроса: ${estimated_cost:.6f}")
# → Стоимость запроса: $0.000003
✅ Итог

Вы прошли путь от регистрации до продвинутых техник: стриминг, function calling, обработка ошибок, подсчёт токенов. OpenAI API — это не магия, а хорошо спроектированный REST-интерфейс с удобным Python SDK. Начните с GPT-4o-mini для экспериментов, переходите на GPT-4o для сложных задач, используйте o3-mini для логических рассуждений. Помните: всегда считайте токены, обрабатывайте ошибки, и никогда не коммитьте API-ключи. Для следующего шага изучите Assistants API — готовых агентов с сохранением контекста и автоматическим вызовом инструментов.

📖 Документация OpenAI ⚡ Rate Limits 🔢 Tokenizer 🔧 Function Calling 📚 OpenAI Cookbook