HTTP-запрос к OpenAI
Продолжим строить сценарий Ask AI. Первым узлом у нас уже есть Webhook. Теперь добавим второй узел — HTTP Request, который будет отправлять запрос к OpenAI и получать ответ.
Примечание. Интерфейс n8n обновляется регулярно. Названия полей и расположение опций могут со временем меняться. Если вы не нашли упомянутый параметр там, где он указан в книге — поищите по смыслу: основные принципы остаются прежними.
Что должен делать запрос
OpenAI принимает обычные HTTP-запросы. Чтобы получить ответ от модели, нужно отправить:
- метод
POST - на адрес
https://api.openai.com/v1/chat/completions - с заголовком авторизации
Authorization: Bearer <ваш_API_ключ> - с заголовком
Content-Type: application/json - с телом запроса в формате JSON, в котором указаны модель и сообщения
Минимальное тело запроса выглядит так:
{
"model": "gpt-4o-mini",
"messages": [
{ "role": "user", "content": "Расскажи анекдот про программистов." }
]
}Поле model — какую модель использовать. Поле messages — массив сообщений диалога. У каждого сообщения есть role (user, assistant или system) и content (сам текст).
Настройка узла HTTP Request
Добавьте в сценарий узел HTTP Request после Webhook и заполните его параметры:
- Method:
POST - URL:
https://api.openai.com/v1/chat/completions - Authentication: выберите вариант с заголовком
Bearer Tokenили используйте предустановленный тип учётных данных для OpenAI, если он доступен в вашей версии n8n. - Headers: добавьте заголовок
Content-Typeсо значениемapplication/json(если он не выставляется автоматически при отправке JSON-тела). - Body Content Type:
JSON - Body: вставьте JSON, как показано выше, и подставьте текст вопроса из webhook через выражение.
Передача вопроса из webhook в запрос
Webhook уже принимает JSON вида { "question": "..." }. Чтобы передать этот вопрос в OpenAI, замените жёстко прописанную строку на выражение:
{
"model": "gpt-4o-mini",
"messages": [
{ "role": "user", "content": "{{ $json.body.question }}" }
]
}Запись {{ $json.body.question }} — это выражение n8n. Оно подставит значение поля question из тела webhook-запроса. Подробнее об выражениях — в следующей главе.
Хранение API-ключа
API-ключ OpenAI — это секрет. Не вписывайте его прямо в URL или в тело запроса. Создайте в n8n запись Credentials для OpenAI (или общий тип HTTP Bearer Auth) и выберите её в поле Authentication узла. Тогда ключ будет храниться отдельно от сценария.
Тестирование
Запустите сценарий вручную или отправьте тестовый POST-запрос на webhook из Postman. После выполнения узла HTTP Request посмотрите, что вернула OpenAI. В выходных данных должен появиться объект с полем choices — там и лежит ответ модели. Как извлечь из него текст и вернуть пользователю — в следующем уроке.