Рабочий пайплайн: YouTube -> транскрипция -> выжимка -> Postgres
- новый api/: /pipeline/process (yt-dlp, субтитры или Vosk, LLM/экстрактивная суммаризация), /videos, /llm; старый код перенесён в api_legacy/ - web/: Flet UI (flet 0.28.3 + flet-web, порт 8550) - Dockerfile.api: ffmpeg слоем из mwader/static-ffmpeg, pip с кэш-маунтом - requirements/pyproject: убраны moviepy, imageio-ffmpeg, битый asyncio - README с инструкцией запуска и загрузкой Vosk-модели Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
This commit is contained in:
71
README.md
71
README.md
@@ -0,0 +1,71 @@
|
||||
# LLM-infa
|
||||
|
||||
Пайплайн: **YouTube → скачивание видео → текст речи → LLM-выжимка → Postgres**.
|
||||
|
||||
Скачивает видео (yt-dlp), достаёт текст из субтитров (или распознаёт речь через Vosk,
|
||||
если субтитров нет), сокращает текст до краткой выжимки (через любой
|
||||
OpenAI-совместимый LLM API или встроенный экстрактивный алгоритм) и складывает всё
|
||||
в базу: пути к видео, полному тексту и выжимке.
|
||||
|
||||
## Состав
|
||||
|
||||
| Сервис | Порт | Что делает |
|
||||
|--------|------|------------|
|
||||
| `api` | 8000 | FastAPI: пайплайн, каталог видео, проверка LLM |
|
||||
| `web` | 8550 | Flet UI: запуск пайплайна и библиотека результатов |
|
||||
| `db` | 5433→5432 | Postgres 15, таблица `videos` |
|
||||
|
||||
Файлы складываются в `data/videos/` (mp4) и `data/text/` (`<uuid>.txt` — полный
|
||||
текст, `<uuid>_summary.txt` — выжимка); в БД хранятся пути и метаданные.
|
||||
|
||||
## Запуск
|
||||
|
||||
```bash
|
||||
# 1. Модель Vosk для распознавания без субтитров (однократно, ~90 МБ)
|
||||
mkdir -p models && cd models
|
||||
curl -LO https://alphacephei.com/vosk/models/vosk-model-small-ru-0.22.zip
|
||||
unzip vosk-model-small-ru-0.22.zip && rm vosk-model-small-ru-0.22.zip && cd ..
|
||||
|
||||
# 2. Поднять стек
|
||||
docker compose up -d --build
|
||||
```
|
||||
|
||||
UI: http://localhost:8550 · API-доки: http://localhost:8000/docs
|
||||
|
||||
## LLM для выжимки
|
||||
|
||||
LLM не разворачивается в контейнере — указывается любой внешний
|
||||
OpenAI-совместимый эндпоинт. Два способа:
|
||||
|
||||
1. **В `.env`** (используется по умолчанию для всех запросов):
|
||||
```
|
||||
LLM_BASE_URL=https://openrouter.ai/api/v1
|
||||
LLM_API_KEY=sk-...
|
||||
LLM_MODEL=anthropic/claude-haiku-4.5
|
||||
```
|
||||
2. **Через UI / поле `llm` в запросе** — на каждый запрос отдельно.
|
||||
|
||||
Если LLM не настроена, работает встроенная экстрактивная суммаризация
|
||||
(выбор ключевых предложений, без нейросети).
|
||||
|
||||
## API
|
||||
|
||||
```bash
|
||||
# обработать видео целиком
|
||||
curl -X POST localhost:8000/pipeline/process \
|
||||
-H 'Content-Type: application/json' \
|
||||
-d '{"url": "https://youtu.be/...", "summary_max_sentences": 10}'
|
||||
|
||||
# каталог обработанных видео
|
||||
curl localhost:8000/videos/
|
||||
|
||||
# проверить связь с LLM
|
||||
curl -X POST localhost:8000/llm/test
|
||||
```
|
||||
|
||||
## Заметки
|
||||
|
||||
- Старый код (users/subscriptions/media-convert) лежит в `api_legacy/` и в
|
||||
сборку не входит.
|
||||
- Если Docker Desktop не тянет образы (TLS timeout к registry), использовать
|
||||
системный демон: `docker context use default`.
|
||||
|
||||
Reference in New Issue
Block a user