System prompt

Чему научитесь

Видео 6:20 и текст урока

К концу урока вы сможете:

Видео и текст урока.

Смотреть урок на Skilljar System prompts · 6:20

System prompt — мощный способ настроить, как Claude отвечает на ввод пользователя. Вместо общих ответов вы задаёте тон, стиль и подход Claude под свою задачу.

Math Tutor Specialist: каким должен и не должен быть ответ, рядом окно чата с вопросом про 5x + 2 = 3.
Требования к «репетитору по математике» и чат, где ученик спрашивает, как решить 5x + 2 = 3.

Зачем нужен system prompt

Представьте чат-бот — репетитор по математике. Ученик спрашивает: «How do I solve 5x + 2 = 3 for x?» Вы хотите, чтобы Claude вёл себя как настоящий репетитор, а не просто выдавал ответ. Хороший репетитор должен:

И точно не должен:

Как работает system prompt

Три пользы system prompt и код репетитора по математике.
System prompt настраивает тон и стиль ответа: три его пользы и код с промптом репетитора.

System prompt подсказывает Claude, как отвечать. Это обычная строка, которую передают в вызов create. Что он даёт:

Базовая структура:

system_prompt = """
You are a patient math tutor.
Do not directly answer a student's questions.
Guide them to a solution step by step.
"""

client.messages.create(
    model=model,
    messages=messages,
    max_tokens=1000,
    system=system_prompt
)

Видим разницу

Без system prompt Claude сразу выдаёт полное пошаговое решение. Это может быть полезно, но не заставляет ученика думать самому.

С промптом репетитора ответ меняется кардинально. Вместо полного решения Claude задаёт наводящие вопросы вроде: «What do you think would be a good first step to isolate x? Consider what operation we might need to perform on both sides to start moving terms around.»

Гибкая функция chat

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

def chat(messages, system=None):
    params = {
        "model": model,
        "max_tokens": 1000,
        "messages": messages,
    }

    if system:
        params["system"] = system

    message = client.messages.create(**params)
    return message.content[0].text

Здесь учтена важная деталь: API Claude не принимает system=None, поэтому параметр system добавляют в запрос, только если он передан.

Теперь chat можно вызывать и с system prompt, и без него:

# Without system prompt
answer = chat(messages)

# With system prompt
system = """
You are a patient math tutor.
Do not directly answer a student's questions.
Guide them to a solution step by step.
"""
answer = chat(messages, system=system)

System prompt незаменим, когда нужно, чтобы ИИ-приложение вело себя стабильно и уместно для своей задачи. Он превращает общие ответы ИИ в специализированные, соответствующие роли.

Дальше

Короткое упражнение: с помощью system prompt заставить Claude писать более лаконичный код.

Оригинал урока: System prompts.