Что нужно для начала
Для интеграции ChatGPT (или любой другой LLM) в приложение вам понадобится:
- API-ключ от провайдера, работающего в России (например, PlusVibe API).
- OpenAI SDK —
pip install openai(Python) илиnpm install openai(Node.js). - Немного кода — базовый вызов занимает около 10 строк.
В этом руководстве используем PlusVibe API как провайдер — российский OpenAI-совместимый сервис, доступный без VPN с оплатой в рублях.
Шаг 1: Получите API-ключ
- Зарегистрируйтесь на plusvibeapi.ru/register.
- Перейдите в личный кабинет → раздел «API-ключи».
- Создайте новый ключ — он выглядит как
sk-pv-XXXXXXXXXXXXXXXXX. - Сохраните ключ: он показывается только один раз.
- Пополните баланс в рублях через карту или СБП.
Храните ключ в переменной среды, а не в коде:
# .env (не добавляйте в git!)
PLUSVIBE_API_KEY=sk-pv-ВАШ_КЛЮЧ
Шаг 2: Базовый вызов API
Python
import os
from openai import OpenAI
client = OpenAI(
base_url="https://plusvibeapi.ru/v1",
api_key=os.environ["PLUSVIBE_API_KEY"],
)
def ask_gpt(user_message: str, system_prompt: str = "Ты полезный ассистент.") -> str:
response = client.chat.completions.create(
model="gpt-5.5", # или claude-opus-4.8, gemini-3.5-flash и т.д.
messages=[
{"role": "system", "content": system_prompt},
{"role": "user", "content": user_message},
],
max_tokens=1000,
temperature=0.7,
)
return response.choices[0].message.content
# Использование
answer = ask_gpt("Объясни концепцию REST API простыми словами.")
print(answer)
JavaScript / TypeScript
import OpenAI from "openai";
const client = new OpenAI({
baseURL: "https://plusvibeapi.ru/v1",
apiKey: process.env.PLUSVIBE_API_KEY,
});
async function askGPT(userMessage: string, systemPrompt = "Ты полезный ассистент."): Promise {
const response = await client.chat.completions.create({
model: "gpt-5.5",
messages: [
{ role: "system", content: systemPrompt },
{ role: "user", content: userMessage },
],
max_tokens: 1000,
});
return response.choices[0].message.content ?? "";
}
// Использование
const answer = await askGPT("Что такое TypeScript и зачем он нужен?");
console.log(answer);
Шаг 3: Streaming — ответ по мере генерации
Для улучшения UX в чат-приложениях используйте streaming — пользователь видит ответ по мере его генерации, а не ждёт несколько секунд целиком.
Python + FastAPI
from fastapi import FastAPI
from fastapi.responses import StreamingResponse
from openai import OpenAI
import os
app = FastAPI()
client = OpenAI(
base_url="https://plusvibeapi.ru/v1",
api_key=os.environ["PLUSVIBE_API_KEY"],
)
@app.get("/chat")
async def chat(message: str):
def generate():
stream = client.chat.completions.create(
model="gpt-5.5",
messages=[{"role": "user", "content": message}],
stream=True,
)
for chunk in stream:
content = chunk.choices[0].delta.content
if content:
yield f"data: {content}\n\n"
yield "data: [DONE]\n\n"
return StreamingResponse(generate(), media_type="text/event-stream")
Node.js + Express
import express from "express";
import OpenAI from "openai";
const app = express();
const client = new OpenAI({
baseURL: "https://plusvibeapi.ru/v1",
apiKey: process.env.PLUSVIBE_API_KEY,
});
app.get("/chat", async (req, res) => {
const message = req.query.message as string;
res.setHeader("Content-Type", "text/event-stream");
res.setHeader("Cache-Control", "no-cache");
const stream = await client.chat.completions.create({
model: "gpt-5.5",
messages: [{ role: "user", content: message }],
stream: true,
});
for await (const chunk of stream) {
const content = chunk.choices[0]?.delta?.content || "";
if (content) res.write(`data: ${content}\n\n`);
}
res.write("data: [DONE]\n\n");
res.end();
});
Шаг 4: Обработка ошибок
from openai import OpenAI, APIError, RateLimitError, APITimeoutError
import time
client = OpenAI(
base_url="https://plusvibeapi.ru/v1",
api_key=os.environ["PLUSVIBE_API_KEY"],
)
def ask_with_retry(message: str, max_retries: int = 3) -> str:
for attempt in range(max_retries):
try:
response = client.chat.completions.create(
model="gpt-5.5",
messages=[{"role": "user", "content": message}],
timeout=30,
)
return response.choices[0].message.content
except RateLimitError:
# Превышен лимит запросов — ждём и повторяем
wait = 2 ** attempt
print(f"Rate limit, ждём {wait}с...")
time.sleep(wait)
except APITimeoutError:
print(f"Timeout на попытке {attempt + 1}")
if attempt == max_retries - 1:
raise
except APIError as e:
print(f"API ошибка: {e.status_code} {e.message}")
raise
raise RuntimeError("Исчерпаны попытки")
Шаг 5: Выбор модели под задачу
Не каждая задача требует самой мощной модели. Правильный выбор снижает затраты в 5–10 раз:
- Простые ответы, классификация, форматирование —
gpt-5.4-miniилиgemini-3.5-flash. Быстро и дёшево. - Код, анализ, сложные вопросы —
claude-sonnet-4.6илиgpt-5.5. Отличное соотношение цена/качество. - Очень сложные задачи, расширенное мышление —
claude-opus-4.8. Максимальное качество. - Генерация изображений —
gpt-image-2. - Генерация видео —
veo-3.1илиkling-v2.6.
Шаг 6: Деплой
Несколько практических рекомендаций для production:
- Храните API-ключ в переменных среды или секрет-менеджере (Vault, AWS Secrets Manager, Railway env vars).
- Логируйте входящие запросы и стоимость токенов — это поможет контролировать расходы.
- Настройте rate limiting на уровне вашего сервера, чтобы защититься от злоупотреблений.
- Используйте кэширование для повторяющихся запросов (Redis, Memcached).
- Мониторьте статус провайдера и настройте алерты на ошибки.
Итог
Интеграция ChatGPT или любой другой LLM в приложение — это буквально 10 строк кода. Сложнее — правильно выбрать модель, обработать ошибки и не переплатить за токены.
Зарегистрируйтесь на PlusVibe API бесплатно и начните с тестового баланса. Документация с примерами на всех популярных языках — на plusvibeapi.ru/docs.