Files
LLM-infa/README.md
jze9 2697e01714 Рабочий пайплайн: 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>
2026-07-14 11:12:46 +05:00

72 lines
3.1 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.
# 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`.