К содержимому
Интеграции · обновлено 29.09.2026

AI-модели в JavaScript и TypeScript через AI Gateway

SDK OpenAI

пакет
openai
базовый адрес
https://ai-gatewey.ru/v1
ключ
sk-aigate-…

AI Gateway полностью совместим с официальным JavaScript-SDK OpenAI: меняются только baseURL и ключ, весь остальной код — как в документации OpenAI. Один клиент даёт доступ ко всем моделям каталога — Claude, GPT, Gemini, DeepSeek — сменой параметра model. Пакет работает и в Node.js, и в Deno, и в Bun, а типы TypeScript идут из коробки.

Установка

bashbash
npm install openai

Первый запрос

chat.tstypescript
import OpenAI from "openai";​const client = new OpenAI({baseURL: "https://ai-gatewey.ru/v1",apiKey: process.env.OPENAI_API_KEY, // sk-aigate-ваш_ключ});​const resp = await client.chat.completions.create({model: "deepseek/deepseek-v4-flash",messages: [{ role: "user", content: "Привет!" }],});​console.log(resp.choices[0].message.content);
на заметку
Ключ храните в переменной окружения (OPENAI_API_KEY подхватывается SDK автоматически), а не в коде — тогда apiKey можно не передавать вовсе. В браузере ключ не размещайте: SDK кинет ошибку без явного разрешения, потому что клиентский код видят все.

Стриминг

Ответ частями через Server-Sent Events — параметр stream: true превращает вызов в асинхронный итератор, который перебирают через for await:

stream.tstypescript
const stream = await client.chat.completions.create({model: "deepseek/deepseek-v4-flash",messages: [{ role: "user", content: "Расскажи о токенах" }],stream: true,});​for await (const chunk of stream) {const delta = chunk.choices[0]?.delta?.content;if (delta) process.stdout.write(delta);}

Function calling

Вызов инструментов работает прозрачно — выбирайте модель с поддержкой function calling (бейдж «инструменты» в каталоге). Модель возвращает tool_calls, которые нужно исполнить и отправить результат обратно:

tools.tstypescript
const tools = [{type: "function" as const,function: {name: "get_weather",description: "Погода в городе",parameters: {type: "object",properties: { city: { type: "string" } },required: ["city"],},},},];​const resp = await client.chat.completions.create({model: "anthropic/claude-sonnet-5.5",messages: [{ role: "user", content: "Какая погода в Москве?" }],tools,});​console.log(resp.choices[0].message.tool_calls);

Обработка ошибок

  • 401 — неверный или отозванный ключ: проверьте значение и что ключ активен в кабинете.
  • 402 — нужна оплата: пуст баланс, исчерпана месячная квота, модель не входит в тариф, либо сработал лимит самого ключа (список моделей, потолок расхода, срок действия). Пополните баланс, смените тариф либо проверьте настройки ключа.
  • 429 — превышен лимит запросов в минуту: снизьте темп и повторите с экспоненциальной паузой.
  • 5xx — сбой апстрима: шлюз сам повторяет запрос, резервные провайдеры модели подставляет апстрим, но свой retry с экспоненциальной паузой в проде не помешает.
errors.tstypescript
import OpenAI from "openai";​try {const resp = await client.chat.completions.create({model: "deepseek/deepseek-v4-flash",messages: [{ role: "user", content: "Привет!" }],});} catch (err) {if (err instanceof OpenAI.RateLimitError) {// превышен RPM: подождать и повторить} else if (err instanceof OpenAI.APIError) {console.error(err.status, err.message);} else {throw err;}}

Какую модель выбрать

Актуальные цены каталога AI Gateway за 1 млн токенов. Все модели →

Частые вопросы

Работает ли SDK в браузере или только на сервере?

SDK предназначен для сервера (Node.js, Deno, Bun): ключ не должен попадать в клиентский бандл. Для браузерных приложений проксируйте запросы через свой бэкенд.

Поддерживаются ли Vercel AI SDK и LangChain.js?

Да — оба принимают кастомный baseURL и ключ AI Gateway. Для LangChain готовая инструкция: LangChain.

Есть ли типы для ответов и стриминга?

Да, пакет openai написан на TypeScript и поставляет полные типы — автодополнение работает для параметров запроса, чанков стрима и tool_calls.

AI Gateway

Node.js-приложение с AI — за пять минут