1. Конструирование API-запросов

1.1 Отправка запросов с помощью CURL

CURL - это инструмент командной строки, который поддерживает отправку и получение данных с использованием различных протоколов, таких как HTTP и HTTPS. Чтобы отправить запрос в API OpenAI с помощью CURL, сначала вам нужно иметь действующий API-ключ, а затем добавить его в заголовок запроса.

Вот пример команды CURL, используемой для отправки запроса в API OpenAI:

curl https://api.openai.com/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $OPENAI_API_KEY" \
  -d '{
     "model": "gpt-3.5-turbo",
     "messages": [{"role": "user", "content": "Напиши, что это тест!"}],
     "temperature": 0.7
   }'

Вам нужно заменить $OPENAI_API_KEY на свой API-ключ. В целях безопасности избегайте разглашения вашего API-ключа в любом общедоступном месте.

1.2 Анализ заголовков запроса

В вышеприведенной команде CURL мы использовали два важных заголовка запроса: Content-Type и Authorization.

  • Content-Type: Это уведомляет сервер о том, что мы отправляем данные в формате JSON. Его значение обычно application/json.
  • Authorization: Это учетные данные, используемые для аутентификации запроса API, и его формат всегда Bearer (ваш API-ключ).

Обеспечение правильности этих двух заголовков критически важно для успешного запроса.

1.3 Создание тела запроса

Тело запроса представляет собой строку в формате JSON, которая информирует OpenAI о наших намерениях. В этом запросе мы используем model для указания используемой модели, передаем массив messages, определяющий ввод пользователя, и устанавливаем temperature для настройки изменчивости ответа.

JSON выглядит так:

{
  "model": "gpt-3.5-turbo",
  "messages": [{"role": "user", "content": "Напиши, что это тест!"}],
  "temperature": 0.7
}

В этом примере мы запрашиваем модель сгенерировать тестовый ответ на основе входного сообщения.

1.4 Подробное объяснение параметров запроса

В теле запроса есть несколько важных параметров, о которых стоит упомянуть:

  • model: Указывает AI-модель, которую мы собираемся использовать. OpenAI предоставляет несколько моделей, каждая со своими различными функциональностями и эффектами.
  • messages: Это массив, содержащий один или несколько объектов сообщений, при этом каждое сообщение состоит из role, обозначающего роль сообщения, и content, представляющего содержание сообщения.
  • temperature: Управляет уверенностью ответа. Низкое значение temperature генерирует более уверенные ответы, в то время как более высокое значение приводит к большей случайности.

2. Анализ ответов API

2.1 Понимание ответа

Когда вы отправляете запрос, сервер вернет HTTP-код состояния и, возможно, тело ответа. Обычно успешный запрос получит код состояния из серии 200. Возвращаемые данные JSON содержат результат запроса, и пример ответа выглядит следующим образом:

{
    "id": "chatcmpl-abc123",
    "object": "chat.completion",
    "created": 1677858242,
    "model": "gpt-3.5-turbo-1106",
    "usage": {
        "prompt_tokens": 13,
        "completion_tokens": 7,
        "total_tokens": 20
    },
    "choices": [
        {
            "message": {
                "role": "assistant",
                "content": "\n\nЭто тест!"
            },
            "logprobs": null,
            "finish_reason": "stop",
            "index": 0
        }
    ]
}

В этом ответе мы видим идентификатор завершения, временную метку создания, используемую модель, использование токенов и фактическое содержание ответа (в поле choices).

2.2 Полнота и обработка ошибок

Поле finish_reason указывает, почему API прекратил вывод дополнительного контента. Распространенные причины завершения включают stop, length и idle. Если произошла ошибка, такая как превышение лимитов токенов или неправильный API-ключ, вы получите соответствующее сообщение об ошибке и код состояния. Важно правильно обрабатывать эти ошибки, чтобы обеспечить непрерывность пользовательского опыта и стабильность вашего приложения. Для обработки ошибок вы можете решить, какую подходящую стратегию обработки ошибок использовать на основе возвращенного кода состояния и сообщения об ошибке, например, повторить запрос или предоставить обратную связь пользователю, объясняющую причину ошибки.

2.3 Отправка API-запросов с использованием Python SDK

Ниже приведен пример использования официального Python SDK от OpenAI для выполнения API-запросов.

Сначала вам необходимо установить библиотеку openai, что можно сделать с помощью pip:

pip install --upgrade openai

Затем вы можете использовать следующий код на Python для выполнения аналогичного API-запроса, как показано в примере выше. Не забудьте заменить YOUR_OPENAI_API_KEY на свой API-ключ.

from openai import OpenAI

client = OpenAI(
   api_key="YOUR_OPENAI_API_KEY",
)

completion = client.chat.completions.create(
  model="gpt-3.5-turbo",
  messages=[
    {"role": "system", "content": "Вы – профессиональный помощник в разработке, искусный в решении различных проблем программирования."},
    {"role": "user", "content": "Напишите функцию для быстрой сортировки на Go."}
  ]
)

print(completion.choices[0].message)