All checks were successful
Deploy / deploy (push) Successful in 3m43s
- lib/agent-local.ts + route.ts: команды-действия исполняет локальная intent-служба (под AGENT_URL, с fallback на LLM); инфо-запросы остаются у LLM - lib/tools/lights.ts: голосовое управление светом через HA (control_light) - app/globals.css + page.tsx: космическая indigo/aurora тема (токены, kiosk-safe) - agent/: sidecar-служба (Dockerfile, predict.py), веса монтируются томом - RUNBOOK.md: вывод в продакшен на мини-ПК
30 lines
1.5 KiB
Docker
30 lines
1.5 KiB
Docker
# Sidecar-служба локального агента (intent+slots) для планшета.
|
||
# route.ts зовёт её по HTTP (AGENT_URL) и исполняет команды-действия офлайн.
|
||
#
|
||
# Веса дообученной модели (joint_model/, ~115 МБ) в git НЕ идут и в образ НЕ
|
||
# пекутся — они МОНТИРУЮТСЯ томом в /app/joint_model при запуске (см. RUNBOOK).
|
||
# Базовая ruBERT-tiny2 запекается в образ при сборке, чтобы на старте не ходить
|
||
# в интернет.
|
||
FROM python:3.12-slim
|
||
|
||
WORKDIR /app
|
||
ENV HF_HUB_DISABLE_XET=1
|
||
|
||
# CPU-torch из cpu-индекса (без CUDA — образ легче).
|
||
RUN pip install --no-cache-dir --index-url https://download.pytorch.org/whl/cpu torch \
|
||
&& pip install --no-cache-dir transformers sentencepiece
|
||
|
||
# Запекаем базовую модель в кэш образа (runtime без сети).
|
||
RUN python -c "from transformers import AutoModel, AutoTokenizer; \
|
||
AutoModel.from_pretrained('cointegrated/rubert-tiny2'); \
|
||
AutoTokenizer.from_pretrained('cointegrated/rubert-tiny2')"
|
||
|
||
COPY joint_model_def.py tablet_map.py predict.py ./
|
||
|
||
ENV THRESHOLD=0.7
|
||
EXPOSE 8091
|
||
|
||
# Модель ждём в /app/joint_model (том). predict.py --serve поднимает HTTP:
|
||
# POST /predict {"text": "..."} -> {intent, slots, score, tool}
|
||
CMD ["python", "predict.py", "--serve", "--port", "8091"]
|