pp003/README.md
2026-05-27 15:55:36 +03:00

104 lines
2.9 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.

# 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"
}
```