/
Вопросы и ответы
/
Промт-инжиниринг
/

Работает ли роль-промптинг?

Работает ли роль-промптинг?

11 часов назад

Никита Вихров

Ответы

0

Работает ли роль-промптинг

«Ты — опытный senior-разработчик с 20 годами опыта» — такие промпты встречаются везде. Иногда это работает, иногда нет. Разберём когда роль-промптинг реально помогает, а когда это просто ритуал.


Что такое роль-промптинг

Роль-промптинг — это когда в начале промпта указываешь, кем должна «быть» модель:

from anthropic import Anthropic

client = Anthropic()

# Без роли
response_no_role = client.messages.create(
    model="claude-opus-4-5",
    max_tokens=512,
    messages=[{"role": "user", "content": "Проверь эту SQL-схему на проблемы с производительностью"}]
)

# С ролью
response_with_role = client.messages.create(
    model="claude-opus-4-5",
    max_tokens=512,
    system="Ты — senior DBA с 15 годами опыта оптимизации PostgreSQL в высоконагруженных системах.",
    messages=[{"role": "user", "content": "Проверь эту SQL-схему на проблемы с производительностью"}]
)

Второй ответ будет глубже: больше деталей про индексы, партиционирование, типичные узкие места.


Когда роль-промптинг работает

Роль задаёт угол зрения и активирует нужный пласт знаний. Это реально полезно:

# Разные роли — разные полезные перспективы на один код

roles = {
    "security": "Ты — специалист по информационной безопасности веб-приложений.",
    "performance": "Ты — инженер по производительности, оптимизировавший системы до 1M RPS.",
    "junior": "Ты — джун-разработчик, которому нужно понять этот код. Объясняй простыми словами.",
    "reviewer": "Ты — строгий code reviewer, который не пропускает даже мелкие проблемы.",
}

code = """
def get_user(user_id):
    query = f"SELECT * FROM users WHERE id = {user_id}"
    return db.execute(query).fetchone()
"""

for role_name, role_prompt in roles.items():
    response = client.messages.create(
        model="claude-opus-4-5",
        max_tokens=256,
        system=role_prompt,
        messages=[{"role": "user", "content": f"Посмотри на этот код:\n{code}"}]
    )
    print(f"\n[{role_name}]: {response.content[0].text[:200]}...")

# security найдёт SQL injection
# performance заметит SELECT *
# junior попросит объяснений
# reviewer найдёт всё сразу

Когда роль-промптинг не работает

Роль без конкретики — просто слова. Модель и так старается отвечать хорошо.

# Это почти ничего не меняет
system_weak = "Ты — эксперт мирового класса с огромным опытом."

# Это работает — конкретная специализация и контекст
system_strong = """Ты — backend-разработчик, специализирующийся на Node.js и PostgreSQL.
Работаешь в финтех-компании с требованиями к надёжности 99.99%.
Твои ревью строгие: ты не пропускаешь код без обработки ошибок и транзакций."""

Разница между слабым и сильным роль-промптом — конкретность. Опыт в годах, «мирового класса», «лучший в мире» — не работает. Специализация, контекст, конкретные требования — работает.


Роль + задача — лучше чем только роль

# Только роль — слабо
system = "Ты — эксперт по безопасности."

# Роль + что именно делать + как отвечать — сильно
system = """Ты — специалист по безопасности веб-приложений.

При ревью кода ищи:
- Инъекции (SQL, NoSQL, команды)
- Небезопасная работа с данными пользователя
- Отсутствие валидации и санитизации
- Проблемы с аутентификацией и авторизацией

Для каждой проблемы указывай: уровень критичности (HIGH/MEDIUM/LOW), строку, объяснение и исправление."""

Практический вывод

Роль-промптинг работает когда: роль конкретная, задача подходит под эту роль, нужен определённый угол зрения.

Роль-промптинг не работает когда: роль размытая («эксперт», «профессионал»), задача не связана с ролью, рассчитываешь что роль заменит конкретные инструкции.

Хорошая роль — это специализация + контекст + ожидаемое поведение. Плохая роль — просто звание.


Как составлять системные промпты для реальных продакшн-задач — на курсе «ИИ для разработчиков» на Хекслете.

11 часов назад

Никита Вихров

+7 800 100 22 47

бесплатно по РФ

+7 495 085 21 62

бесплатно по Москве

108813 г. Москва, вн.тер.г. поселение Московский,
г. Московский, ул. Солнечная, д. 3А, стр. 1, помещ. 20Б/3
ОГРН 1217300010476
ИНН 7325174845