Интеграция ChatGPT в веб-приложение
Узнайте, как добавить AI-функционал в ваше приложение с помощью OpenAI API
Интеграция ChatGPT в веб-приложение
Искусственный интеллект больше не futология. Сегодня мы разберём, как интегрировать ChatGPT в реальное веб-приложение.
ChatGPT API открывает возможности для создания умных чат-ботов,_автоматической генерации контента,_анализа данных и многого другого.
Зачем нужен ChatGPT в вашем приложении?
Использования
- Чат-боты поддержки → 24/7 ответы на вопросы
- Генерация контента → Статьи, описания, маркетинг
- Анализ текста → Sentiment analysis, классификация
- Помощник в коде → Code review, генерация boilerplate
- Персонализация → Рекомендации на основе поведения
Шаг 1: Получение API ключа OpenAI
API ключ OpenAI показывается только один раз при создании! Сохраните его надёжно, иначе придётся создавать новый.
- Перейдите на platform.openai.com
- Зарегистрируйтесь или войдите
- Создайте API ключ в Settings → API Keys
- Сохраните ключ (показывается только один раз!)
Шаг 2: Базовая интеграция
Python пример
import openai
from dotenv import load_dotenv
import os
load_dotenv()
openai.api_key = os.getenv('OPENAI_API_KEY')
async def chat_completion(message: str) -> str:
response = await openai.ChatCompletion.acreate(
model="gpt-4",
messages=[
{"role": "system", "content": "Вы полезный ассистент."},
{"role": "user", "content": message}
],
temperature=0.7,
max_tokens=500
)
return response.choices[0].message.content
JavaScript пример
import OpenAI from 'openai';
const openai = new OpenAI({
apiKey: process.env.OPENAI_API_KEY
});
async function chatCompletion(message) {
const completion = await openai.chat.completions.create({
model: "gpt-4",
messages: [
{ role: "system", content: "Вы полезный ассистент." },
{ role: "user", content: message }
],
temperature: 0.7,
max_tokens: 500
});
return completion.choices[0].message.content;
}
Шаг 3: Создание API endpoint
FastAPI backend
from fastapi import FastAPI, HTTPException
from pydantic import BaseModel
app = FastAPI()
class ChatRequest(BaseModel):
message: str
history: list = []
@app.post("/api/chat")
async def chat(request: ChatRequest):
try:
messages = [
{"role": "system", "content": "Вы helpful assistant."}
] + request.history + [
{"role": "user", "content": request.message}
]
response = await openai.ChatCompletion.acreate(
model="gpt-4",
messages=messages
)
return {"reply": response.choices[0].message.content}
except Exception as e:
raise HTTPException(status_code=500, detail=str(e))
Шаг 4: Фронтенд интеграция
React компонент
import { useState } from 'react';
function ChatBot() {
const [messages, setMessages] = useState([]);
const [input, setInput] = useState('');
const [loading, setLoading] = useState(false);
const sendMessage = async () => {
if (!input.trim()) return;
setLoading(true);
try {
const response = await fetch('/api/chat', {
method: 'POST',
headers: { 'Content-Type': 'application/json' },
body: JSON.stringify({
message: input,
history: messages
})
});
const data = await response.json();
setMessages([
...messages,
{ role: 'user', content: input },
{ role: 'assistant', content: data.reply }
]);
setInput('');
} catch (error) {
console.error('Error:', error);
}
setLoading(false);
};
return (
<div className="chat-container">
<div className="messages">
{messages.map((msg, i) => (
<div key={i} className={msg.role}>
{msg.content}
</div>
))}
</div>
<input
value={input}
onChange={(e) => setInput(e.target.value)}
onKeyPress={(e) => e.key === 'Enter' && sendMessage()}
disabled={loading}
/>
<button onClick={sendMessage} disabled={loading}>
{loading ? 'Sending...' : 'Send'}
</button>
</div>
);
}
Шаг 5: Оптимизация стоимости
1. Контроль токенов
def count_tokens(text: str) -> int:
return len(text.split()) * 1.3 # Примерная оценка
# Лимит на запрос
MAX_TOKENS_PER_REQUEST = 2000
2. Кэширование
from functools import lru_cache
@lru_cache(maxsize=100)
async def cached_response(query: str):
# Кэшируем частые запросы
return await chat_completion(query)
3. Использование более дешёвых моделей
# Для простых задач
model = "gpt-3.5-turbo" # В 10x дешевле gpt-4
# Только для сложных
model = "gpt-4" # Когда нужна высокая точность
Шаг 6: Безопасность
1. Rate limiting
from slowapi import Limiter
limiter = Limiter(key_func=get_remote_address)
@app.post("/api/chat")
@limiter.limit("10/minute")
async def chat(request: ChatRequest):
pass
2. Валидация входа
import re
def validate_input(text: str) -> bool:
if len(text) > 4000: # OpenAI limit
return False
if not text.strip():
return False
return True
3. Скрытие API ключа
# ❌ НИКОГДА так
api_key = "sk-proj-abc123..."
# ✅ Всегда через .env
api_key = os.getenv('OPENAI_API_KEY')
Лучшие практики
- System prompts — чётко определяйте роль AI
- Few-shot learning — давайте примеры
- Temperature tuning — 0.0 для фактов, 1.0 для креатива
- Streaming — для быстрого UI
- Fallback — что делать при ошибке API
Заключение
Интеграция ChatGPT открывает огромные возможности. Начните с простого:
- ✅ Прототип за 1 день
- ✅ Тестируйте на реальных пользователях
- ✅ Мониторьте расход токенов
- ✅ Постепенно улучшайте промпты
Хотите интегрировать AI в свой проект? Свяжитесь с нами!
Возможности интеграции ChatGPT
Чат-боты поддержки
24/7 ответы на вопросы клиентов
Генерация контента
Автоматическое создание статей, описаний, маркетинговых текстов
Анализ текста
Sentiment analysis, классификация, извлечение инсайтов
Помощник в коде
Code review, генерация boilerplate, оптимизация
Этапы интеграции ChatGPT
Получение API ключа
Регистрация на OpenAI Platform и создание ключа
Базовая интеграция
Примеры кода для Python и JavaScript
API endpoint
Создание серверного обработчика
Фронтенд
React компонент для чата
Оптимизация
Контроль токенов, кэширование, выбор моделей
Безопасность
Rate limiting, валидация, защита ключей
Выбор модели ChatGPT
GPT-3.5 Turbo
В 10x дешевле
- Для простых задач
- Быстрый ответ
- Экономично
GPT-4
Максимальная точность
- Для сложных задач
- Лучшее качество
- Контекст 128K
Хотите интегрировать AI?
Поможем добавить AI-функционал в ваше приложение
Похожие статьи
Выбор стека технологий в 2024 году
Разбираем популярные технологии, их плюсы и минусы, и помогаем выбрать оптимальный стек для вашего проекта.
React Native против Flutter в 2024
Детальное сравнение React Native и Flutter: производительность, экосистема, кривая обучения
Создание Telegram бота на Python: полное руководство
Пошаговое руководство по разработке Telegram бота на Python с использованием Aiogram 3.x