Коротко
На Python вы создаёте клиента, отправляете сообщение и читаете текст из ответа. Ключ берётся из переменной окружения, а не пишется в коде.
Лучший способ понять API это собрать простой пример. Здесь мы покажем короткий код на Python, разберём ответ и обработку ошибок. Если вы ещё не читали основы запроса к API, начните с них, так будет понятнее.
Подготовка
Сначала установите официальную библиотеку и задайте ключ в переменной окружения. В коде ключ читается так:
import os
apikey = os.environ.get("OPENAIAPI_KEY")
Никогда не пишите настоящий ключ в файле. Подробнее про это в материале про безопасное хранение ключа.
- Установите официальную Python-библиотеку.
- Задайте переменную OPENAIAPIKEY.
- Импортируйте модуль os для чтения ключа.
Простой запрос
Идея простая. Вы создаёте клиента с ключом, затем отправляете сообщение и указываете модель. Условно это выглядит так:
from openai import OpenAI
client = OpenAI(apikey=os.environ.get("OPENAIAPI_KEY"))
# дальше вызов с вашим текстом и именем модели из docs
Реальные имена методов и моделей смотрите в официальной документации, они могут меняться. Длину текста проще оценить, если знать, как считаются токены.
Что такое модель
Модель это конкретная версия нейросети, которую вы вызываете. У каждой свои возможности и цена, поэтому имя модели берут из документации, а не из памяти.
Обработка ответа
Ответ приходит как объект с данными. Из него вы достаёте текст, например response.choices[0].message.content, и используете в своей программе.
Полезно проверять, что ответ вообще пришёл, и обрабатывать ошибки. О сбоях из-за частых запросов мы рассказали в материале про лимиты запросов.
- Достаньте текст из поля ответа.
- Проверьте, что ответ не пустой.
- Поймайте ошибки сети и лимитов.
Почему важна проверка
Если не проверить ответ, программа решит, что текст есть, и упадёт на пустом значении. Одна короткая проверка экономит много времени на отладке.
Совет. Всегда смотрите, что ответ не пустой, прежде чем что то с ним делать. Это самая дешёвая защита от сбоев.
Обработка ошибок по шагам
Сетевые сбои и лимиты это норма, а не редкость. Поэтому код стоит обернуть в проверку ошибок. Простой каркас как обычный текст:
try: ответ = вызов_модели(текст)
except Exception as e: print("Ошибка:", e)
Так программа не падает на первой же ошибке, а показывает понятное сообщение. При ошибке лимита добавьте паузу и повтор, как описано в материале про лимиты.
- Оберните вызов в try и except.
- Покажите понятное сообщение об ошибке.
- Для лимитов добавьте паузу и повтор.
- Ограничьте число повторов, чтобы не зациклиться.
Куда двигаться дальше
Когда простой запрос работает, можно собрать небольшое приложение. Пример на Flask-приложении с AI мы разобрали отдельно, там тот же запрос живёт внутри одного эндпоинта и принимает текст от пользователя.
Вернуться к общему обзору и другим материалам можно через раздел про API. Дальше полезно научиться считать расход и держать его под контролем, чтобы счёт не вырос неожиданно при росте числа запросов.
Соберите всё в один файл
Когда части понятны, объедините их в один маленький скрипт. Запустите его, проверьте ответ и только потом усложняйте код.
Чего избегать
Главная ошибка новичков это настоящий ключ прямо в коде. Вторая это код без проверки ответа: программа думает, что текст есть, а его нет, и падает.
Третья это копирование чужого примера без понимания, из за чего непонятно, что чинить при ошибке. Чтобы этого избежать, читайте ключ из окружения, всегда проверяйте ответ и разбирайте код по строчкам. Если что то не сходится с примером, сверьтесь с официальной документацией, потому что имена методов обновляются.
- Не вписывайте настоящий ключ в код.
- Не используйте ответ без проверки на пустоту.
- Не игнорируйте ошибки сети и лимитов.
- Не копируйте код, который не понимаете.
Шаги простого скрипта
| Шаг | Что делаем |
|---|---|
| Импорт | Подключаем библиотеку и os |
| Ключ | Читаем из переменной окружения |
| Запрос | Отправляем сообщение и модель |
| Ответ | Достаём текст из поля content |
Сколько времени на части примера (простая иллюстрация)
Логика простого скрипта
Читаем ключ
Берём его из переменной окружения.
Создаём клиента
Передаём ключ в клиент.
Шлём сообщение
Указываем модель и текст.
Берём текст
Достаём ответ из поля content.
Чеклист
- Установить официальную библиотеку.
- Задать ключ через переменную окружения.
- Указать модель из документации.
- Достать текст из ответа.
- Добавить обработку ошибок.
- Проверить ответ на пустоту.
- Ограничить число повторов при сбое.
Частые ошибки
- Вписать настоящий ключ прямо в код.
- Не проверять, что ответ пришёл.
- Игнорировать ошибки сети и лимитов.
- Копировать код без понимания.
- Брать имена методов из устаревших примеров.
Частые вопросы
Через переменную окружения, например api_key = os.environ.get("OPENAI_API_KEY"). Так настоящий ключ не попадёт в код.
В официальной документации OpenAI. Имена методов и моделей могут меняться, поэтому сверяйтесь с docs.
Ответ это объект с данными. Текст обычно лежит в поле content, например response.choices[0].message.content.
Проверяйте ответ перед использованием. Если текста нет, покажите сообщение и при необходимости повторите запрос.
Оберните вызов в try и except. При ошибке лимита сделайте паузу и повторите запрос, ограничив число попыток.
Это удобно. Отдельное виртуальное окружение для Python помогает не смешивать библиотеки разных проектов.
Источники
Мы опираемся на официальную документацию. Цены и состав моделей могут меняться, проверяйте важные факты по первоисточникам.