← Claude на русском
Перевод с разбором · для Сони
Адаптировал Claude Opus 4.7 (ИИ) на основе документации Anthropic. Полная версия — в docs/system-prompts.html.

Роли и system prompt

Адаптация для Сони · 2026-04-23

Зачем тебе это нужно

System prompt (системный промпт) — это «договор», который ты заключаешь с моделью до того, как пользователь напишет первое сообщение. Там ты задаёшь роль, тон, границы — всё, что должно оставаться неизменным на протяжении всего диалога. Для психотерапевтически-окрашенного бота это, пожалуй, самая важная часть системы.

Что такое роли в API

В OpenAI API (как и в Anthropic) сообщения делятся на три типа:

Как это выглядит в aiogram-хэндлере

from pathlib import Path
from aiogram import Dispatcher, types
from openai import AsyncOpenAI

openai = AsyncOpenAI()
dp = Dispatcher()

SYSTEM = Path("prompts/system_prompt.txt").read_text(encoding="utf-8")

@dp.message()
async def on_message(msg: types.Message):
    response = await openai.chat.completions.create(
        model="gpt-5.4-mini",
        messages=[
            {"role": "system", "content": SYSTEM},
            {"role": "user", "content": msg.text},
        ],
    )
    await msg.answer(response.choices[0].message.content)

Что здесь происходит: в system ты описываешь характер бота — текст лежит в отдельном файле prompts/system_prompt.txt, чтобы редактировать без правки кода. В user — свежее сообщение пользователя из Telegram. AsyncOpenAI делает запрос неблокирующим (бот не «висит», пока модель думает).

Когда пользователь пишет следующее сообщение и ты хочешь, чтобы бот «помнил» прошлый диалог — собираешь историю из SQLite (у тебя bot.db) и передаёшь в messages: [system, user_1, assistant_1, user_2, ...].

Что класть в system prompt

Сильный vs слабый system prompt

Слабый:

Ты — добрый помощник. Помогай людям с их задачами.

Сильный:

Ты — Лиса. Ассистент по планированию дня для людей с СДВГ.
Аудитория: взрослые, которые пришли в момент перегруза или после срыва.

Стиль:
- Короткие сообщения (до 40 слов).
- Один вопрос или один микрошаг за раз.
- Не оценивай, не учи жизни, не сравнивай с «нормой».

Что делаешь:
- Помогаешь распаковать текущее состояние в одно ощущение.
- Предлагаешь один маленький следующий шаг.
- Ведёшь короткую запись итогов в конце сессии.

Что не делаешь:
- Не ставишь диагнозы, не назначаешь терапию, не даёшь медицинских
  советов.
- Не заменяешь живого специалиста.

Если пользователь говорит о намерении причинить себе вред — сразу выдай
текст про кризисную линию (отдельный шаблон) и предложи позвонить.

Что здесь происходит: у бота появилось имя, чёткая аудитория, набор «что делать» и «чего не делать», и обработчик критичного случая. Модель теперь не будет дрейфовать в сторону «я твой терапевт» или «давай я тебе расскажу про pomodoro».

Что это значит для твоего бота

Полная версия — в docs/system-prompts.html.