AI-персоналізація медитацій: підбір вправ під стан

Стандартні застосунки для медитації не враховують ваш поточний стан і доступний час, що знижує ефективність практик. Ми розробляємо AI-рішення, які аналізують контекст і підбирають вправи під ваш запит. Наша команда реалізує проєкт під ключ — від аудиту до підтримки, забезпечуючи надійне та персоналізоване рішення.
Часті запитання

Стандартні застосунки для медитації — Calm, Headspace — пропонують фіксовані плейлисти. Вони ігнорують контекст користувача. Користувач із високим стресом і 5 хвилинами до зустрічі отримує 30-хвилинну візуалізацію. Результат — completion rate 35-45%. Ми розробили гібридну рекомендаційну систему на основі NLP та евристик. Вона аналізує стан користувача, історію сесій та доступний час, підбираючи практику, яку користувач дійсно виконає. Маючи досвід впровадження десятків AI-рішень, ми гарантуємо надійне рішення під ключ. Для холодного старту застосовуємо кластеризацію за embeddings 1536-dim.

Як AI персоналізує медитації?

Система враховує чотири параметри: настрій (mood), рівень стресу (stress), доступний час (available_minutes) та час доби. Додатково аналізується історія сесій: які типи практик користувач завершував. Якщо stress >= 4, обирається дихальна вправа — швидко знижує стрес; якщо mood <= 2 — body scan; вранці — energizing, ввечері — sleep preparation. Тривалість підрізається під доступний час: 3, 10 або до 20 хвилин. LLM генерує персоналізоване введення українською, пояснюючи, чому саме ця практика допоможе зараз. Ми використовуємо few-shot промпти для налаштування поведінки LLM, що знижує ймовірність галюцинацій.

from anthropic import Anthropic
import json
from datetime import datetime


def recommend_meditation_session(user_state: dict, user_history: list[dict]) -> dict:
    """ Контекстна рекомендація медитації.
    user_state: mood (1-5), stress_level (1-5), available_minutes, time_of_day
    """
    llm = Anthropic()

    # Аналіз історії: які практики користувач завершує
    if user_history:
        completed = [s for s in user_history if s.get('completed')]
        preferred_types = {}
        for session in completed:
            t = session.get('type', 'breathing')
            preferred_types[t] = preferred_types.get(t, 0) + 1
        top_type = max(preferred_types, key=preferred_types.get) if preferred_types else 'breathing'
        completion_rate = len(completed) / max(len(user_history), 1)
    else:
        top_type = 'breathing'
        completion_rate = 0.5

    # Правила вибору практики
    mood = user_state.get('mood', 3)
    stress = user_state.get('stress_level', 3)
    available_min = user_state.get('available_minutes', 10)
    time_of_day = user_state.get('time_of_day', 'afternoon')

    if stress >= 4:
        session_type = 'breathing'  # Найшвидше знижує стрес
    elif mood <= 2:
        session_type = 'body_scan'  # Для втоми
    elif time_of_day == 'morning':
        session_type = 'energizing'
    elif time_of_day == 'evening':
        session_type = 'sleep_preparation'
    else:
        session_type = top_type

    # Тривалість за доступним часом
    if available_min <= 5:
        duration = 3
    elif available_min <= 15:
        duration = 10
    else:
        duration = min(available_min, 20)

    # LLM для персоналізованого введення
    response = llm.messages.create(
        model="claude-3-5-sonnet",
        max_tokens=150,
        messages=[{
            "role": "user",
            "content": f"""Write a personalized intro for a meditation session in Russian.
User state: mood {mood}/5, stress {stress}/5, available time {available_min} min
Time of day: {time_of_day}
Session type: {session_type}, duration: {duration} min
Completion rate: {completion_rate:.0%}
Write 2-3 sentences:
1. Acknowledge their current state
2. Explain why this specific practice will help right now
Be warm, non-judgmental, concise."""
        }]
    )

    return {
        'session_type': session_type,
        'duration_minutes': duration,
        'personalized_intro': response.content[0].text,
        'completion_prediction': min(0.95, completion_rate + 0.1) if session_type == top_type else completion_rate,
    }
Технічні деталі: оптимізація продуктивності

Для зниження latency на мобільних пристроях використовується квантизація моделі до INT8. Це скорочує розмір моделі в 4 рази без суттєвої втрати якості. P99 latency підтримується на рівні нижче 200 мс.

Чому персоналізація підвищує completion rate в 1.5-2 рази?

Статичний плейлист дає 35-45% завершених сесій. AI-підбір підвищує до 60-75%. Ключовий фактор — коротка виконана сесія ефективніша за довгу, покинуту на півдорозі. Система не пропонує ідеальну практику, а підбирає реалістичну, що відповідає поточному контексту. Додатково LLM генерує введення, яке валідує стан користувача і пояснює вибір — це знижує когнітивне навантаження та збільшує залученість. За даними дослідження Headspace, контекстна персоналізація збільшує retention на 40%. Система стійка до галюцинацій завдяки постобробці та фільтрації.

Ключові проблеми, що вирішуються персоналізацією

Низький completion rate — основна біль. Статичні плейлисти дають близько 40% завершених сесій. Наша гібридна система піднімає цей показник до 75% за рахунок врахування контексту: користувач із високим стресом отримує дихальну практику, а не довгу візуалізацію. Відсутність адаптації також усувається — система запам'ятовує вподобання та коригує рекомендації з часом. Евристики медитації визначають базовий тип практики, а LLM адаптує контент під конкретного користувача.

Порівняння підходів до рекомендацій

Критерій Статичний плейлист AI-персоналізація (гібрид)
Completion rate 35-45% 60-75%
Врахування часу Ні Так (доступний час)
Адаптація під стрес Сегментовано Індивідуально
Використання LLM Ні Генерація введення
Збір історії Ні Так (preferred_types)
Компонент Технологія Призначення
Евристичне ядро Python, правила Швидкий вибір типу сесії
LLM Claude 3.5 Sonnet Персоналізоване введення
Векторизація (опц.) OpenAI embeddings 1536-dim Кластеризація користувачів
API FastAPI, Docker Мікросервіс

Як ми це робимо: гібридний пайплайн

Евристичне ядро працює без навчання — правила на основі порогів (stress >= 4 => breathing). LLM (Claude 3.5 Sonnet або GPT-4o) використовується лише для генерації персоналізованого тексту, fine-tuning не потрібен. Для врахування історії застосовується проста частотна модель preferred_types. За необхідності додаємо embeddings (1536-dim) для кластеризації користувачів — це покращує рекомендації для холодного старту. Всі компоненти контейнеризовані в Docker, latency p99 < 200 мс. Ми використовуємо сертифіковані API та забезпечуємо конфіденційність даних.

Процес роботи

  1. Аналітика та збір даних — визначаємо джерела: опитування, сенсори, історія сесій.
  2. Проєктування правил та ML-пайплайну — налаштування евристик, вибір LLM, опціональна векторизація.
  3. Реалізація мікросервісу — REST API на Python (FastAPI), інтеграція з Anthropic або OpenAI.
  4. Тестування — A/B-тест на контрольній групі (не менше 500 сесій), вимірювання completion rate та p99 latency.
  5. Деплой та моніторинг — контейнеризація в Docker, дашборд метрик: GPU utilization, розподіл сесій за типами.

Що входить в роботу (deliverables)

  • Мікросервіс з REST API на Python (FastAPI), документація Swagger.
  • Модуль евристик та інтеграція з LLM.
  • Дашборд метрик: completion rate, p99 latency, розподіл сесій за типами.
  • Docker-контейнер для деплою, інструкція з розгортання.
  • Рекомендації щодо A/B-тестування та моніторингу.
  • Навчання команди (2 години онлайн) та підтримка протягом 2 тижнів після запуску.

Строки та вартість

Строки: від 2 до 6 тижнів залежно від складності інтеграції. Вартість розраховується індивідуально — залежить від обсягу даних, кількості моделей та вимог до latency. Персоналізація окупається за рахунок підвищення retention та зниження відтоку користувачів: кожен додатковий відсоток completion rate збільшує LTV користувача на 2-3%. Зв'яжіться з нами для оцінки вашого проєкту. Отримайте консультацію — розглянемо ваш проєкт.

Напрямки AI-розробки

Останні роботи

  • Розробка сайту компанії B2B ADVANCE
    Розробка сайту компанії B2B ADVANCE
    1543
  • Розробка веб-додатків для компанії FEEDME
    Розробка веб-додатків для компанії FEEDME
    1394
  • Розробка веб-сайту для компанії БЕЛФІНГРУП
    Розробка веб-сайту для компанії БЕЛФІНГРУП
    1081
  • Розробка інтернет магазину для компанії FURNORO
    Розробка інтернет магазину для компанії FURNORO
    1374
  • Розробка логотипу компанії B2B Advance
    Розробка логотипу компанії B2B Advance
    816
  • Розробка веб-додатків для компанії Enviok
    Розробка веб-додатків для компанії Enviok
    1142