From ed9f0904a945bb1fee4ccd8ec1afd5840ada5e9b Mon Sep 17 00:00:00 2001 From: akuzakhemetov Date: Fri, 19 Dec 2025 01:00:20 +0300 Subject: [PATCH] =?UTF-8?q?=D0=98=D0=B7=D0=BC=D0=B5=D0=BD=D0=B5=D0=BD?= =?UTF-8?q?=D0=B8=D1=8F:=20-=D0=BD=D0=B0=D0=BF=D0=B8=D1=81=D0=B0=D0=BD=20?= =?UTF-8?q?=D0=B4=D0=BE=D0=BA=D0=B5=D1=80=20=D0=BA=D0=BE=D0=BC=D0=BF=D0=BE?= =?UTF-8?q?=D0=B7=20=D1=84=D0=B0=D0=B9=D0=BB=20=D0=B4=D0=BB=D1=8F=20=D0=BF?= =?UTF-8?q?=D0=BE=D0=B4=D0=BD=D1=8F=D1=82=D0=B8=D1=8F=20=D0=BA=D0=BE=D0=BD?= =?UTF-8?q?=D1=82=D0=B5=D0=B9=D0=BD=D0=B5=D1=80=D0=B0=20=D0=B8=D0=B8-?= =?UTF-8?q?=D0=B0=D0=B3=D0=B5=D0=BD=D1=82=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env | 4 +-- Dockerfile | 52 +++++++++++++++++++++++++++++++++++++ docker-compose.yml | 32 +++++++++++++++++++++++ prompts/chat_prompts.py | 1 + prompts/schedule_prompts.py | 31 +++++++++++++++++----- 5 files changed, 112 insertions(+), 8 deletions(-) create mode 100644 Dockerfile create mode 100644 docker-compose.yml diff --git a/.env b/.env index 98d6023..eee1bbc 100644 --- a/.env +++ b/.env @@ -1,5 +1,5 @@ -GIGACHAT_CLIENT_ID=your-client-id -GIGACHAT_CLIENT_SECRET=your-client-secret +GIGACHAT_CLIENT_ID=019966f4-1c5c-7382-9006-b84419fbe5d1 +GIGACHAT_CLIENT_SECRET="MDE5OTY2ZjQtMWM1Yy03MzgyLTkwMDYtYjg0NDE5ZmJlNWQxOmRjNTk2ZmFlLWMzY2UtNDRmNC05NDk3LWE2YWIxMDI5ZmE1OA==" GIGACHAT_AUTH_URL=https://ngw.devices.sberbank.ru:9443/api/v2/oauth GIGACHAT_BASE_URL=https://gigachat.devices.sberbank.ru/api/v1 diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..60974c5 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,52 @@ +# Многоступенчатая сборка для оптимизации размера образа +FROM python:3.11-slim as builder + +# Установка системных зависимостей для сборки +RUN apt-get update && apt-get install -y --no-install-recommends \ + build-essential \ + gcc \ + g++ \ + && rm -rf /var/lib/apt/lists/* + +# Создание виртуального окружения +RUN python -m venv /opt/venv +ENV PATH="/opt/venv/bin:$PATH" + +# Копирование файлов зависимостей +COPY requirements.txt pyproject.toml ./ + +# Установка зависимостей +RUN pip install --no-cache-dir --upgrade pip && \ + pip install --no-cache-dir -r requirements.txt + +# Финальный образ +FROM python:3.11-slim + +# Установка только runtime зависимостей +RUN apt-get update && apt-get install -y --no-install-recommends \ + curl \ + && rm -rf /var/lib/apt/lists/* + +# Копирование виртуального окружения из builder +COPY --from=builder /opt/venv /opt/venv +ENV PATH="/opt/venv/bin:$PATH" + +# Создание рабочей директории +WORKDIR /app + +# Копирование кода проекта +COPY agents/ ./agents/ +COPY models/ ./models/ +COPY services/ ./services/ +COPY prompts/ ./prompts/ +COPY scripts/ ./scripts/ + +# Установка переменных окружения +ENV PYTHONUNBUFFERED=1 \ + PYTHONDONTWRITEBYTECODE=1 \ + PYTHONPATH=/app + +# По умолчанию запускаем Python REPL для интерактивного использования +# В production это будет использоваться как библиотека, импортируемая в backend +CMD ["python"] + diff --git a/docker-compose.yml b/docker-compose.yml new file mode 100644 index 0000000..6dbc94b --- /dev/null +++ b/docker-compose.yml @@ -0,0 +1,32 @@ +version: '3.8' + +services: + + ai-agents: + build: + context: . + dockerfile: Dockerfile + container_name: new-planet-ai-agents + environment: + - REDIS_URL=redis://redis:6379/0 + - GIGACHAT_CLIENT_ID=${GIGACHAT_CLIENT_ID} + - GIGACHAT_CLIENT_SECRET=${GIGACHAT_CLIENT_SECRET} + - PYTHONUNBUFFERED=1 + - PYTHONDONTWRITEBYTECODE=1 + - PYTHONPATH=/app + volumes: + - ./agents:/app/agents + - ./models:/app/models + - ./services:/app/services + - ./prompts:/app/prompts + - ./scripts:/app/scripts + networks: + - new-planet-network + # По умолчанию запускается Python REPL для интерактивного использования + # Можно переопределить через docker-compose run или command + stdin_open: true + tty: true + +networks: + new-planet-network: + external: true diff --git a/prompts/chat_prompts.py b/prompts/chat_prompts.py index a6a22c3..4c334c8 100644 --- a/prompts/chat_prompts.py +++ b/prompts/chat_prompts.py @@ -7,6 +7,7 @@ CHAT_SYSTEM_PROMPT = """Ты планета Земля - помощник для - Помогать понять задания - Мотивировать и поддерживать - Объяснять простым языком +- Расписывать действия пошагово Правила общения: - Используй короткие предложения diff --git a/prompts/schedule_prompts.py b/prompts/schedule_prompts.py index cdae5b0..5450a86 100644 --- a/prompts/schedule_prompts.py +++ b/prompts/schedule_prompts.py @@ -37,18 +37,37 @@ SCHEDULE_GENERATION_PROMPT = """Ты планета Земля, друг дет Категории заданий: утренняя_рутина, обучение, игра, отдых, вечерняя_рутина """ -SCHEDULE_UPDATE_PROMPT = """Ты планета Земля. Обнови расписание с учетом следующих изменений: +SCHEDULE_UPDATE_PROMPT = """Ты планета Земля, друг детей с расстройством аутистического спектра (РАС). -Существующее расписание: +Текущее расписание: {existing_schedule} -Запрос пользователя: -{user_request} +Запрос пользователя: {user_request} -Верни ТОЛЬКО валидный JSON с обновленным расписанием: +Обнови расписание согласно запросу. Сохрани структуру и логику расписания, но внеси необходимые изменения. + +Важные правила при обновлении: +1. Сохраняй простоту и понятность заданий +2. Поддерживай четкие временные рамки +3. Избегай резких переходов между активностями +4. Включи время на отдых между заданиями +5. Учитывай особенности РАС + +Верни ТОЛЬКО валидный JSON формат без дополнительного текста: {{ "title": "Название расписания", - "tasks": [...] + "description": "Краткое описание", + "tasks": [ + {{ + "title": "Название задания", + "description": "Подробное описание", + "duration_minutes": 30, + "category": "утренняя_рутина", + "order": 0 + }} + ] }} + +Категории заданий: утренняя_рутина, обучение, игра, отдых, вечерняя_рутина """ -- 2.49.1