0Pricing
AI Prompt Engineering · Урок

Эффективная постановка контекста

Приёмы формулировки: «Вы…», «Учитывая, что…», «Цель —…»

«Эффективная постановка контекста» — бесплатный урок AI Prompt Engineering на CoddyKit. Это урок 3 из 4. Ты можешь прочитать весь урок бесплатно ниже — а потом практиковать его прямо в браузере с встроенным редактором кода и ИИ-репетитором 24/7. Это часть пути обучения AI Prompt Engineering, и твой прогресс синхронизируется между веб-версией и приложением CoddyKit. Курс AI Prompt Engineering содержит 4 уроков всего.

Эффективные начальные формулировки

Первое предложение Вашего запроса — самое важное. Оно задаёт рабочий контекст модели — способ, через который она будет интерпретировать всё последующее.

К эффективным начальным формулировкам относятся: «Вы…», «Контекст…», «Учитывая, что…» и «Цель заключается в том, что…». Каждая из них активирует отдельное измерение контекста ещё до начала самой задачи.

Формулировка «Вы…»

Формулировка «Вы…» задаёт модели определённую роль. Она активирует лексику, стиль рассуждений и приоритеты, связанные с этой ролью.

Главное — быть конкретным. Формулировка «Вы — эксперт» неубедительна. Формулировка «Вы — опытный инженер Python с 10-летним стажем, который ставит удобство чтения кода выше изобретательности» гораздо сильнее.

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

import anthropic

client = anthropic.Anthropic(api_key='sk-ant-your-key-here')

persona_prompts = [
    'You are a Socratic philosophy professor. Ask 3 probing questions about this claim: AI will replace programmers.',
    'You are a skeptical venture capitalist who has seen 500 pitches. Give brutal feedback on this pitch: We are building an AI writing assistant.',
    'You are a patient kindergarten teacher. Explain what a computer does in 3 sentences for 5-year-olds.'
]

for prompt in persona_prompts:
    response = client.messages.create(
        model='claude-opus-4-5',
        max_tokens=150,
        messages=[{'role': 'user', 'content': prompt}]
    )
    print(f'--- Persona ---')
    print(prompt[:80] + '...')
    print(response.content[0].text.strip())
    print()

Рамка «Вы…» в системных сообщениях

Наиболее эффективное место для рамки персоны — системное сообщение, а не реплика пользователя. Персона в системном сообщении остаётся активной на протяжении всего диалога — повторять её не нужно.

Хорошо составленная системная персона может полностью изменить ответы ИИ-помощника на десятки последующих вопросов.

import openai

client = openai.OpenAI(api_key='sk-your-key-here')

# Persona set once in system; stays active for all turns
system_persona = (
    'You are Marcus, a senior software architect at a Fortune 500 company. '
    'You have 20 years of experience with distributed systems. '
    'Your communication style: direct, pragmatic, no buzzwords. '
    'You always ask about scale and failure modes before giving architecture advice. '
    'If a question lacks context, ask one clarifying question before answering.'
)

response = client.chat.completions.create(
    model='gpt-4o',
    messages=[
        {'role': 'system', 'content': system_persona},
        {'role': 'user', 'content': 'Should we use microservices for our new product?'}
    ]
)
print(response.choices[0].message.content)

Рамка «Контекст…»

Рамка «Контекст таков…» задаёт ситуационный фон, не назначая персону. Используйте её, когда нужно, чтобы модель рассуждала о вашей конкретной ситуации, а не принимала определённый образ.

Она особенно эффективна для технических и аналитических задач, когда вы хотите, чтобы модель рассуждала от своего имени, но полностью учитывала ваши ограничения.

import anthropic

client = anthropic.Anthropic(api_key='sk-ant-your-key-here')

response = client.messages.create(
    model='claude-opus-4-5',
    max_tokens=300,
    messages=[{
        'role': 'user',
        'content': (
            'The context is: we are a 5-person startup with $2M in seed funding. '
            'Our Python monolith handles 10,000 users and is starting to show performance issues. '
            'We have one backend engineer and cannot hire more for 6 months. '
            'We need to choose between refactoring the monolith vs migrating to microservices.\n\n'
            'Give a recommendation with 3 supporting reasons. Be direct.'
        )
    }]
)
print(response.content[0].text)

Рамка «При условии, что…»

Рамка «При условии, что…» задаёт предпосылку или допущение, которое определяет весь ответ. Используйте её, чтобы установить факты, которые модель должна считать истинными в рамках задачи.

Это особенно полезно для гипотетического анализа, планирования при определённых условиях и написания текстов на основе сценариев, когда нужно, чтобы модель рассуждала, исходя из конкретной отправной точки.

import openai

client = openai.OpenAI(api_key='sk-your-key-here')

scenarios = [
    'Given that our user base will grow 10x in 6 months, what architecture changes should we make today?',
    'Given that we must launch in 2 weeks with the current team, which features should we cut from the MVP?',
    'Given that our API key was exposed publicly for 3 hours, what steps should we take in the next 24 hours?'
]

for scenario in scenarios:
    response = client.chat.completions.create(
        model='gpt-4o',
        max_tokens=120,
        messages=[{
            'role': 'user',
            'content': scenario + ' (Answer in 3 bullet points.)'
        }]
    )
    print(f'Scenario: {scenario[:60]}...')
    print(response.choices[0].message.content.strip())
    print()

Рамка «Цель — …»

Рамка «Цель — …» описывает конечное назначение результата. Она отличается от инструкции к задаче: рамка объясняет, зачем вам нужен этот результат и чего он должен достичь.

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

import anthropic

client = anthropic.Anthropic(api_key='sk-ant-your-key-here')

goal_frames = [
    (
        'The goal is to get the reader to schedule a 30-minute demo call. '
        'Write a 100-word cold outreach email for our AI data pipeline tool '
        'targeting data engineers at e-commerce companies.'
    ),
    (
        'The goal is to help the reader pass a senior Python interview at a FAANG company. '
        'Explain Python decorators with one conceptual explanation and one practical code example.'
    )
]

for prompt in goal_frames:
    response = client.messages.create(
        model='claude-opus-4-5',
        max_tokens=200,
        messages=[{'role': 'user', 'content': prompt}]
    )
    print('--- Goal Frame ---')
    print(prompt[:80] + '...')
    print(response.content[0].text.strip())
    print()

Сочетание начальных рамок

Наиболее эффективные запросы объединяют несколько начальных рамок перед инструкцией к задаче. Типичная высокоэффективная структура:

  1. Вы… [персона]
  2. Контекст таков… [ситуация]
  3. Цель — … [конечное назначение]
  4. При условии, что… [ключевая предпосылка или ограничение]
  5. [Инструкция к задаче]

Каждая рамка добавляет ещё один ориентир. Вместе они оставляют модели совсем мало места для догадок.

import openai

client = openai.OpenAI(api_key='sk-your-key-here')

combined_frame_prompt = (
    'You are a senior product manager with 10 years of B2B SaaS experience.\n'
    'The context is: our team is debating whether to build a native mobile app '
    'or keep investing in our responsive web app.\n'
    'The goal is: to help our leadership team make a clear go/no-go decision at '
    'next week\'s board meeting.\n'
    'Given that: we have 3 engineers, $300k runway, and 85% of current users are on desktop.\n\n'
    'Write a 250-word recommendation memo with a clear position (build or wait) '
    'and 3 supporting arguments. End with one risk to monitor.'
)

response = client.chat.completions.create(
    model='gpt-4o',
    messages=[{'role': 'user', 'content': combined_frame_prompt}]
)
print(response.choices[0].message.content)

Задание тона и манеры речи с помощью рамок

Начальные рамки также могут задавать тон и манеру речи, даже если слово «тон» вообще не используется. Описание персоны и ситуации неявно задаёт речевой регистр:

  • «Вы — доброжелательный терпеливый наставник, который разговаривает с испытывающим трудности учеником» → речь автоматически будет тёплой и ободряющей
  • «Вы — прямолинейный офицер военной логистики» → речь автоматически будет прямой и точной
  • «Вы — остроумный технический журналист, пишущий для Wired» → речь автоматически будет умной и доступной
import anthropic

client = anthropic.Anthropic(api_key='sk-ant-your-key-here')

frames = [
    'You are a warm, patient mentor. Explain why learning to code is hard but worth it.',
    'You are a no-nonsense military logistics officer. Explain why learning to code is hard but worth it.',
    'You are a witty tech journalist writing for Wired. Explain why learning to code is hard but worth it.'
]

for frame in frames:
    response = client.messages.create(
        model='claude-opus-4-5',
        max_tokens=80,
        messages=[{'role': 'user', 'content': frame + ' (2 sentences only)'}]
    )
    print(f'Frame: {frame[:55]}...')
    print(response.content[0].text.strip())
    print()

Рамки для аналитической строгости

Когда вам нужен строгий критический анализ, а не восторженное согласие, начните с рамки, которая явно включает скептический или аналитический настрой:

  • «Вы — критический рецензент, чья задача — находить недостатки…»
  • «Выступите в роли адвоката дьявола и оспорьте следующее…»
  • «Предположите обратное общепринятому мнению и обоснуйте…»
  • «Представьте максимально сильную версию самого слабого аргумента против…»
import openai

client = openai.OpenAI(api_key='sk-your-key-here')

analytical_frames = [
    'You are a critical reviewer whose job is to find fatal flaws. Review this startup idea: a subscription box for AI prompt templates.',
    'Play devil\'s advocate. Challenge this claim: AI will make every knowledge worker 10x more productive.',
    'Steelman the weakest argument against remote work, then give the strongest counter-argument.'
]

for frame in analytical_frames:
    response = client.chat.completions.create(
        model='gpt-4o',
        max_tokens=120,
        messages=[{'role': 'user', 'content': frame + ' (3 sentences max)'}]
    )
    print(f'Frame type: analytical/critical')
    print(f'Prompt: {frame[:60]}...')
    print(response.choices[0].message.content.strip())
    print()

Когда NOT использовать рамку персоны

Рамка персоны подходит не всегда. Избегайте её, когда:

  • вам нужно извлечь объективные данные — персона добавит предвзятость
  • вы обрабатываете структурированные данные — персона будет отвлекать
  • задача носит чисто механический характер — рассуждения не требуются
  • вы хотите получить непредвзятую оценку модели — персона влияет на мнение

Для задач вроде «преобразовать этот CSV в структурированный формат данных» или «посчитать количество предложений в этом абзаце» рамка не нужна — достаточно одной инструкции.

import anthropic

client = anthropic.Anthropic(api_key='sk-ant-your-key-here')

# Persona frame is unhelpful here — just adds tokens
prompt_with_unnecessary_frame = (
    'You are an expert data processing specialist with years of experience. '
    'Convert the following to JSON: Name: Alice, Age: 30, City: London'
)

# Clean, direct instruction
prompt_direct = (
    'Convert to a JSON object with keys name, age, city:\n'
    'Name: Alice, Age: 30, City: London'
)

for label, prompt in [('WITH UNNECESSARY FRAME', prompt_with_unnecessary_frame), ('DIRECT', prompt_direct)]:
    response = client.messages.create(
        model='claude-opus-4-5',
        max_tokens=50,
        messages=[{'role': 'user', 'content': prompt}]
    )
    print(f'[{label}]')
    print(response.content[0].text.strip())
    print()

Проверка ваших рамок

Лучший способ понять, какие рамки подходят для вашего случая, — провести сравнение A/B: использовать одну и ту же задачу с разными начальными рамками и сравнить результаты.

Проверьте следующие варианты:

  • без рамки и с рамкой персоны
  • расплывчатая персона и конкретная персона
  • только рамка контекста и рамка контекста вместе с рамкой цели
  • одна рамка и сочетание рамок

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

import openai

client = openai.OpenAI(api_key='sk-your-key-here')

task = 'Explain the pros and cons of using TypeScript over JavaScript.'

frames = {
    'No frame':       task,
    'Persona frame':  f'You are a TypeScript advocate who also knows JavaScript deeply. {task}',
    'Goal frame':     f'The goal is to help a JavaScript developer decide if switching to TypeScript is worth it. {task}',
    'Combined frame': f'You are a pragmatic senior engineer. The goal is to help a JavaScript developer decide. {task} Give a balanced view in 3 bullet points.'
}

for label, prompt in frames.items():
    response = client.chat.completions.create(
        model='gpt-4o', max_tokens=80,
        messages=[{'role': 'user', 'content': prompt}]
    )
    print(f'[{label}]: {response.choices[0].message.content.strip()[:120]}...')
    print()

Проверка знаний

Разработчик хочет получить от ИИ критическую, жёсткую оценку презентации своего стартапа — без ободрения, без стремления к балансу, исключительно в форме враждебной критики. Какая начальная рамка лучше всего подходит для этого?

Задание контекста — повторение

Начальные рамки ориентируют модель перед тем, как она прочитает вашу инструкцию к задаче. Четыре наиболее эффективные рамки:

  • «Вы…»: назначает персону с определёнными знаниями, стилем общения и приоритетами
  • «Контекст таков…»: задаёт ситуационный фон без персоны
  • «При условии, что…»: устанавливает предпосылки или ограничения, которые модель должна считать истинными
  • «Цель — …»: определяет конечное назначение результата

Сочетайте рамки для сложных задач. Не используйте рамку для чисто механических задач. Проверяйте разные варианты рамок, чтобы найти лучший для вашего случая.

Часто задаваемые вопросы

Урок «Эффективная постановка контекста» бесплатный?

Да — полный текст урока «Эффективная постановка контекста» бесплатно доступен здесь в веб-версии. Чтобы практиковать его интерактивно (встроенный редактор кода и ИИ-репетитор 24/7) и разблокировать остальной курс AI Prompt Engineering, подпишись на CoddyKit PRO. Курс AI Prompt Engineering содержит 4 уроков всего.

Чему я научусь в уроке «Эффективная постановка контекста»?

Приёмы формулировки: «Вы…», «Учитывая, что…», «Цель —…» Ты практикуешь AI Prompt Engineering с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

Нужен ли мне опыт, чтобы начать AI Prompt Engineering?

Предыдущий опыт не требуется. AI Prompt Engineering на CoddyKit структурирован для всех уровней — от новичков до продвинутых, поэтому ты можешь начать отсюда или с самого начала и учиться в своем темпе. Это урок 3 из 4.

Сколько времени занимает урок «Эффективная постановка контекста»?

Большинство уроков CoddyKit занимают около 5–10 минут. Каждый из них компактный и интерактивный, поэтому ты постоянно делаешь прогресс и продолжаешь с того же места в веб-версии и приложении.

Можно ли писать и запускать код в этом уроке AI Prompt Engineering?

Да. Каждый урок AI Prompt Engineering включает встроенный редактор кода, поэтому ты пишешь и запускаешь реальный код прямо в браузере и получаешь моментальную обратную связь от AI — локальная установка не требуется.

Все уроки этого курса

  1. Что означает контекст при составлении запросов к искусственному интеллекту
  2. Предоставление исходной информации
  3. Эффективная постановка контекста
  4. Объём и релевантность контекста
← Назад к AI Prompt Engineering