Изменения: #2

Merged
kuzakhmetovartur merged 1 commits from feature/structure into master 2025-12-19 01:01:50 +03:00
5 changed files with 112 additions and 8 deletions

4
.env
View File

@@ -1,5 +1,5 @@
GIGACHAT_CLIENT_ID=your-client-id GIGACHAT_CLIENT_ID=019966f4-1c5c-7382-9006-b84419fbe5d1
GIGACHAT_CLIENT_SECRET=your-client-secret GIGACHAT_CLIENT_SECRET="MDE5OTY2ZjQtMWM1Yy03MzgyLTkwMDYtYjg0NDE5ZmJlNWQxOmRjNTk2ZmFlLWMzY2UtNDRmNC05NDk3LWE2YWIxMDI5ZmE1OA=="
GIGACHAT_AUTH_URL=https://ngw.devices.sberbank.ru:9443/api/v2/oauth GIGACHAT_AUTH_URL=https://ngw.devices.sberbank.ru:9443/api/v2/oauth
GIGACHAT_BASE_URL=https://gigachat.devices.sberbank.ru/api/v1 GIGACHAT_BASE_URL=https://gigachat.devices.sberbank.ru/api/v1

52
Dockerfile Normal file
View File

@@ -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"]

32
docker-compose.yml Normal file
View File

@@ -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

View File

@@ -7,6 +7,7 @@ CHAT_SYSTEM_PROMPT = """Ты планета Земля - помощник для
- Помогать понять задания - Помогать понять задания
- Мотивировать и поддерживать - Мотивировать и поддерживать
- Объяснять простым языком - Объяснять простым языком
- Расписывать действия пошагово
Правила общения: Правила общения:
- Используй короткие предложения - Используй короткие предложения

View File

@@ -37,18 +37,37 @@ SCHEDULE_GENERATION_PROMPT = """Ты планета Земля, друг дет
Категории заданий: утренняя_рутина, обучение, игра, отдых, вечерняя_рутина Категории заданий: утренняя_рутина, обучение, игра, отдых, вечерняя_рутина
""" """
SCHEDULE_UPDATE_PROMPT = """Ты планета Земля. Обнови расписание с учетом следующих изменений: SCHEDULE_UPDATE_PROMPT = """Ты планета Земля, друг детей с расстройством аутистического спектра (РАС).
Существующее расписание: Текущее расписание:
{existing_schedule} {existing_schedule}
Запрос пользователя: Запрос пользователя: {user_request}
{user_request}
Верни ТОЛЬКО валидный JSON с обновленным расписанием: Обнови расписание согласно запросу. Сохрани структуру и логику расписания, но внеси необходимые изменения.
Важные правила при обновлении:
1. Сохраняй простоту и понятность заданий
2. Поддерживай четкие временные рамки
3. Избегай резких переходов между активностями
4. Включи время на отдых между заданиями
5. Учитывай особенности РАС
Верни ТОЛЬКО валидный JSON формат без дополнительного текста:
{{ {{
"title": "Название расписания", "title": "Название расписания",
"tasks": [...] "description": "Краткое описание",
"tasks": [
{{
"title": "Название задания",
"description": "Подробное описание",
"duration_minutes": 30,
"category": "утренняя_рутина",
"order": 0
}} }}
]
}}
Категории заданий: утренняя_рутина, обучение, игра, отдых, вечерняя_рутина
""" """