Files
llm-chatbot/README.md
2025-09-14 17:31:14 +00:00

130 lines
4.7 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 🤖 ChatBot Platform (FastAPI + React + Docker)
Проект представляет собой веб‑приложение для общения с LLM‑моделью.
Архитектура объединяет **FastAPI (backend)**, **React (frontend SPA)**,
**Nginx (reverse proxy)** и **Certbot (SSL)** для развёртывания под HTTPS.
---
## 📂 Структура проекта
```
├── Dockerfile # Сборка backend
├── docker-compose.yml # Контейнеризация сервисов
├── requirements.txt # Python зависимости
├── README.md
├── app/ # Backend (FastAPI)
│   ├── api.py # Роуты (REST + Bot API)
│   ├── crud.py # CRUD операции
│   ├── database.py # Подключение к БД (SQLAlchemy Async)
│   ├── main.py # Точка входа FastAPI
│   ├── models.py # SQLAlchemy модели
│   ├── openrouter_client.py # LLM клиент к OpenRouter API
│   └── schemas.py # Pydantic схемы
├── bot.py # Telegram‑бот (взаимодействие с backend)
├── frontend/ # Frontend (React + Vite)
│   ├── index.html
│   ├── src/
│   │   ├── App.jsx
│   │   ├── api.js # Работа с backend API
│   │   ├── components/ # UI компоненты (ChatList, ChatWindow и т.п.)
│   │   ├── pages/ # Страницы (Home, ChatPage, UserProfile)
│   │   └── styles/ # CSS стили
│   ├── package.json
│   └── vite.config.js
├── nginx/
│   ├── nginx.conf # Конфигурация reverse proxy
│   └── certbot/ # Webroot для Let's Encrypt challenge
# Скрипты управления
├── getcert.sh # Получение SSL сертификата (init cert)
├── install.sh # Установка и первый запуск
├── run.sh # Запуск сервиса
└── stop.sh # Остановка сервисов
```
---
## ⚙️ Основные возможности
- 👤 Ведение профиля пользователя
- 💬 Поддержка чат‑диалогов ( CRUD для чатов и сообщений )
- 🧠 Генерация ответов через **OpenRouter API** (LLM)
- 🌐 Веб‑интерфейс (React SPA) для работы с чатами
- 🤖 Поддержка **Telegram‑бота** (через `bot.py`)
- 🔐 HTTPS через Let's Encrypt + Certbot
---
## 🛠 Установка и запуск
### 1. Клонировать проект
```bash
git clone http://185.160.137.213:3030/drholy/llm-chatbot
cd llm-chatbot
```
### 2. Установить зависимости (при локальной разработке backend)
```bash
python3 -m venv venv
source venv/bin/activate
pip install -r requirements.txt
```
### 3. Запустить сервисы в Docker
```bash
docker compose up -d --build
```
### 4. Получить первый SSL сертификат
```bash
./getcert.sh
```
---
## 📡 API endpoints (backend)
- `GET /history/{telegram_id}` — История переписки пользователя
- `POST /chat/{telegram_id}` — Отправка сообщения, получение ответа от LLM
- `GET /profile` — Профиль пользователя
- `GET /chats` — Список чатов
- `GET /chats/{chat_id}/messages` — Сообщения конкретного чата
- `POST /chats/{chat_id}/messages` — Добавить сообщение в чат
---
## 🧑‍💻 Режим разработки
### Backend (FastAPI)
```bash
uvicorn app.main:app --reload
```
По умолчанию поднимается на `http://localhost:8000`.
### Frontend (React)
```bash
cd frontend
npm install
npm run dev
```
Фронт доступен на `http://localhost:5173`.
---
## 🔐 SSL и Certbot
- `getcert.sh` — скрипт для получения первого сертификата.
- Certbot внутри контейнера автоматически продлевает сертификаты.
- Пути к действующим ключам:
- `/etc/letsencrypt/live/<your-domain>/fullchain.pem`
- `/etc/letsencrypt/live/<your-domain>/privkey.pem`
---
## 📜 Лицензия
MIT © 2025 DrHoly