Превращаем сайт в ИИ-ассистента: ChatGPT API на JavaScript

Онлайн-тренажер Python для начинающих

Изучайте Python легко и без перегрузки теорией. Решайте практические задачи с автоматической проверкой, получайте подсказки на русском языке и пишите код прямо в браузере — без необходимости что-либо устанавливать.

Начать курс

Зачем вашему сайту мозги? ChatGPT API + JavaScript

Представьте: пользователь заходит на ваш сайт, а там не просто статичная страница, а живой ассистент. Он пишет код, переводит текст, генерирует идеи или просто поддерживает диалог. Звучит как научная фантастика? А на самом деле это пара десятков строк на JavaScript и один API-запрос к ChatGPT.

В этой статье мы разберем, как подключить ChatGPT API на JavaScript — от регистрации ключа до полноценного чат-бота. Вы узнаете, как отправлять запросы, обрабатывать ошибки и выжимать максимум из нейросети. Поехали!

Что такое ChatGPT API и зачем он вам

OpenAI API — это мост между вашим кодом и гигантской языковой моделью (GPT-4, GPT-3.5). Вы отправляете текст (промпт), а модель возвращает сгенерированный ответ. Всё просто, но возможности — безграничны.

На JavaScript интеграция особенно удобна: вы можете использовать fetch в браузере или axios / node-fetch на сервере (Node.js). Никаких сложных библиотек — только HTTP и JSON.

Где это пригодится на образовательном сайте вроде PythonLib:

  • Интерактивный помощник — отвечает на вопросы по Python.
  • Генератор кода — пишет примеры по запросу пользователя.
  • Проверка домашних заданий — анализирует код ученика.
  • Чат-бот для техподдержки — отвечает 24/7.

Шаг 1. Получаем API-ключ OpenAI

Без ключа никуда. Зайдите на platform.openai.com, зарегистрируйтесь и перейдите в раздел API Keys. Нажмите Create new secret key — скопируйте его сразу. Храните ключ в секрете, не вставляйте в клиентский код!

Для тестов хватит бесплатного баланса (обычно $5-18). Но помните: запросы к модели стоят денег, хоть и копейки.

Шаг 2. Простейший запрос на JavaScript (Node.js)

Самый быстрый способ попробовать — написать скрипт на Node.js. Установите node-fetch (или используйте встроенный fetch в Node 18+).

// chatgpt.js
import fetch from 'node-fetch';

const API_KEY = 'ваш_секретный_ключ';
const API_URL = 'https://api.openai.com/v1/chat/completions';

async function askChatGPT(prompt) {
  const response = await fetch(API_URL, {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
      'Authorization': `Bearer ${API_KEY}`
    },
    body: JSON.stringify({
      model: 'gpt-3.5-turbo', // или gpt-4
      messages: [
        { role: 'user', content: prompt }
      ],
      temperature: 0.7,
      max_tokens: 500
    })
  });

  const data = await response.json();
  return data.choices[0].message.content;
}

// Использование
const answer = await askChatGPT('Напиши функцию на Python для сортировки списка');
console.log(answer);

Запустите node chatgpt.js — и нейросеть ответит вам кодом. Магия!

Разбираем структуру запроса

В теле запроса мы передаём:

  • model — какая версия GPT (gpt-3.5-turbo быстрее и дешевле, gpt-4 умнее).
  • messages — массив сообщений. Можно добавить system (инструкция модели), assistant (контекст) и user.
  • temperature — креативность ответа (0 — строго факты, 1 — творчество).
  • max_tokens — максимальная длина ответа в токенах (1 токен ≈ 0.75 слова).

Шаг 3. Интеграция ChatGPT API на JavaScript в браузере

Тут есть нюанс: никогда не отправляйте API-ключ из клиентского кода — его украдут. Используйте серверный прокси (Node.js, Python) или Edge Functions.

Но для демонстрации предположим, что у вас есть сервер, который принимает запросы и добавляет ключ. Вот как выглядит клиентская часть:

// frontend.js
async function sendMessage(userMessage) {
  const response = await fetch('/api/chat', {
    method: 'POST',
    headers: { 'Content-Type': 'application/json' },
    body: JSON.stringify({ message: userMessage })
  });

  const data = await response.json();
  document.getElementById('answer').textContent = data.reply;
}

// HTML-кнопка
document.getElementById('send-btn').addEventListener('click', () => {
  const msg = document.getElementById('user-input').value;
  sendMessage(msg);
});

На сервере (например, Express.js) вызовете тот же код, что в шаге 2, только добавив заголовок с ключом.

Шаг 4. Добавляем контекст: system-сообщение

Чтобы ChatGPT вёл себя как эксперт по Python, а не просто болтал, задайте ему роль через system message:

messages: [
  { 
    role: 'system', 
    content: 'Ты — опытный Python-разработчик. Отвечай кратко, с примерами кода. Если вопрос не по теме — вежливо отказывай.' 
  },
  { 
    role: 'user', 
    content: 'Как написать декоратор для логирования?' 
  }
]

Теперь ответы будут строже и полезнее. Это основа промпт-инжиниринга — искусства задавать правильные вопросы нейросети.

Шаг 5. Обработка ошибок и лимитов

API не идеален. Будьте готовы к:

  • 429 Too Many Requests — превышен лимит запросов. Вставьте задержку или очередь.
  • 401 Unauthorized — неверный ключ.
  • 500 Server Error — временные проблемы OpenAI.

Пример обработки ошибок:

async function safeAsk(prompt) {
  try {
    const answer = await askChatGPT(prompt);
    return { success: true, data: answer };
  } catch (error) {
    if (error.status === 429) {
      console.error('Слишком много запросов. Подождите.');
      return { success: false, error: 'rate_limit' };
    }
    console.error('Ошибка API:', error.message);
    return { success: false, error: 'api_error' };
  }
}

Шаг 6. Стриминг ответов (режим реального времени)

Пользователи не любят ждать. Включите stream: true, чтобы ответ появлялся по словам, как в настоящем чате:

const response = await fetch(API_URL, {
  method: 'POST',
  headers: { /* ... */ },
  body: JSON.stringify({
    model: 'gpt-3.5-turbo',
    messages: [{ role:                

Блоги

Рекомендаций по книгам