Твой бот сейчас — workflow (рабочий процесс): пользователь пишет → промпт → модель отвечает → ты показываешь ответ. Это хорошо для простых сценариев. Но если ты хочешь, чтобы бот сам решал: «тут надо глянуть в базу задач», «тут надо позвать второго промпта для диагностики», «тут надо дать короткий ответ, а не длинный» — это уже в сторону агента. Эта статья — карта того, как устроены такие системы. Не всё пригодится сразу.
Это модель + доступ к инструментам + память. «Память» в твоём боте —
таблица user_notes в SQLite (bot.db).
«Инструменты» — функции из статьи про
tool use (add_task, get_notes
и т.д.), вызываются из aiogram-хэндлера. Один вызов модели с этим
набором уже может многое.
Один запрос → результат → другой запрос, который использует результат первого. В твоём боте: первый промпт — определить состояние («перегруз»), второй — под это состояние подобрать стиль ответа.
Короткий классификатор: «это сообщение про долгосрочные цели или про плохой день?». В зависимости от ответа — разная ветка: «цели-ветка» использует один промпт, «поддержка-ветка» — другой.
# Простой router на OpenAI
def classify(user_msg):
response = client.chat.completions.create(
model="gpt-5.4-mini",
messages=[{"role": "user", "content": f"""
Определи категорию сообщения пользователя из одного варианта:
- goals (про долгосрочные цели, планирование)
- day (про текущий день, конкретную задачу)
- support (про состояние, чувства, срыв)
Сообщение: {user_msg}
Ответь одним словом: goals / day / support."""}]
)
return response.choices[0].message.content.strip()
category = classify(user_msg)
if category == "support":
system_prompt = SUPPORT_PROMPT
elif category == "goals":
system_prompt = GOALS_PROMPT
else:
system_prompt = DAY_PROMPT
Что здесь происходит: дешёвая mini-модель за 100 мс определяет тип сообщения. Основной ответ генерирует уже тот system prompt, который подходит под этот тип. Специализированные промпты всегда лучше одного универсального.
Если задача распадается на независимые части — запускаешь их одновременно. В боте: параллельно считать «формальный ответ» и «эмоциональный ответ», потом выбирать из двух. Полезно редко, но знать стоит.
Центральная модель разбивает задачу и делегирует её специализированным «воркерам». Для бота по СДВГ пока overkill.
Один промпт пишет ответ, второй критикует, третий правит. Полезно для качественных текстов — например, если бот составляет недельный план, критик может проверить его на «реалистично ли с точки зрения СДВГ».