104 lines
2.9 KiB
Markdown
104 lines
2.9 KiB
Markdown
# SUNT — бекенд
|
||
|
||
Серверная часть системы мета-мониторинга качества ответов больших языковых моделей.
|
||
|
||
## Структура проекта
|
||
|
||
```
|
||
sunt-backend/
|
||
├── server.py # Точка входа, FastAPI-приложение
|
||
├── services/
|
||
│ ├── yandex.py # Обёртка над Яндекс Cloud API
|
||
│ └── meta_prompt.py # Промпты для модели
|
||
├── frontend/ # Сюда кладёшь файлы фронтенда
|
||
│ ├── index.html
|
||
│ ├── styles.css
|
||
│ └── app.js
|
||
├── .env # API-ключ (не коммитить в git!)
|
||
├── .env.example # Шаблон для .env
|
||
├── requirements.txt
|
||
└── README.md
|
||
```
|
||
|
||
## Установка и запуск
|
||
|
||
### 1. Создать виртуальное окружение
|
||
|
||
```bash
|
||
python -m venv venv
|
||
|
||
# Windows
|
||
venv\Scripts\activate
|
||
|
||
# Linux / macOS
|
||
source venv/bin/activate
|
||
```
|
||
|
||
### 2. Установить зависимости
|
||
|
||
```bash
|
||
pip install -r requirements.txt
|
||
```
|
||
|
||
### 3. Создать файл .env
|
||
|
||
```bash
|
||
cp .env.example .env
|
||
```
|
||
|
||
Открыть `.env` и вписать свой API-ключ:
|
||
|
||
```
|
||
YANDEX_API_KEY=ваш_апи_ключ
|
||
YANDEX_FOLDER_ID=b1g86m7ujd7bebiuah91
|
||
```
|
||
|
||
### 4. Положить файлы фронтенда
|
||
|
||
Скопировать `index.html`, `styles.css`, `app.js` в папку `frontend/`.
|
||
|
||
### 5. Запустить сервер
|
||
|
||
```bash
|
||
uvicorn server:app --host 0.0.0.0 --port 3000 --reload
|
||
```
|
||
|
||
После этого открыть в браузере: [http://localhost:3000](http://localhost:3000)
|
||
|
||
Флаг `--reload` позволяет серверу автоматически перезапускаться при изменении кода — удобно при разработке. На продакшен-сервере его убрать.
|
||
|
||
## Деплой на сервер
|
||
|
||
Команда для запуска на сервере (без автоперезагрузки, с несколькими воркерами):
|
||
|
||
```bash
|
||
uvicorn server:app --host 0.0.0.0 --port 3000 --workers 2
|
||
```
|
||
|
||
Если используется nginx как reverse proxy, проксировать на `localhost:3000`.
|
||
|
||
## API
|
||
|
||
### POST /api/message
|
||
|
||
Единственный эндпоинт. Принимает JSON двух видов.
|
||
|
||
**Стандартный запрос:**
|
||
```json
|
||
{
|
||
"type": "standard_request",
|
||
"user_request": "Текст запроса пользователя",
|
||
"mode": "standard"
|
||
}
|
||
```
|
||
|
||
**Запрос мета-мониторинга:**
|
||
```json
|
||
{
|
||
"type": "meta_monitoring_request",
|
||
"user_request": "Текст исходного запроса пользователя",
|
||
"model_answer": "Текст ответа стандартной модели",
|
||
"mode": "meta_monitoring"
|
||
}
|
||
```
|