0Pricing
AI Prompt Engineering · Урок

Сравнение расплывчатых и конкретных запросов

Примеры рядом, показывающие, насколько сильно конкретика меняет результат

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

Метод сопоставления

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

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

Пара 1: запись в блоге

Расплывчатый вариант: «Напишите запись в блоге об удалённой работе».

Конкретный вариант: «Напишите запись в блоге объёмом 600 слов под названием “3 привычки при удалённой работе, которые уничтожили мою продуктивность (и что я делаю теперь)” для аудитории разработчиков программного обеспечения среднего уровня. Повествование от первого лица, разговорный тон. Структура: 1 вводный абзац, 3 раздела с заголовками H2, 1 завершающий CTA для скачивания бесплатного шаблона».

Почему это работает: добавлены объём, заголовок (а значит, и ракурс), аудитория, голос, тон, структура и конкретный элемент в конце. Ничего не оставлено на волю случая.

import anthropic

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

response = client.messages.create(
    model='claude-opus-4-5',
    max_tokens=800,
    messages=[{
        'role': 'user',
        'content': (
            'Write a 600-word blog post titled '
            '"The 3 Remote Work Habits That Killed My Productivity (And What I Do Now)" '
            'for an audience of mid-level software developers. '
            'First-person voice, conversational tone. '
            'Structure: 1-paragraph intro, 3 H2 sections (one per habit), '
            '1 closing paragraph with a CTA to download a free productivity template.'
        )
    }]
)
print(response.content[0].text[:400], '...')

Пара 2: проверка кода

Расплывчатый вариант: «Проверьте мой код».

Конкретный вариант: «Проверьте следующую функцию на Python. Сосредоточьтесь только на: 1) ошибках, нарушающих корректность, 2) неучтённых крайних случаях. NOT комментируйте стиль, имена или форматирование. Формат результата: нумерованный список проблем, для каждой укажите: описание проблемы (1 предложение), затронутые строки, предлагаемое исправление (фрагмент кода)».

Почему это работает: задаётся область проверки (корректность и крайние случаи), явно исключаются другие аспекты (стиль и имена), а также указывается точная структура результата с тремя полями для каждой найденной проблемы.

import openai

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

code = (
    'def get_user(users, user_id):\n'
    '    for user in users:\n'
    '        if user["id"] == user_id:\n'
    '            return user["name"]\n'
    '    return users[0]["name"]\n'
)

response = client.chat.completions.create(
    model='gpt-4o',
    messages=[{
        'role': 'user',
        'content': (
            'Review the following Python function.\n'
            'Focus ONLY on: 1) correctness bugs, 2) unhandled edge cases.\n'
            'Do NOT comment on style, naming conventions, or formatting.\n'
            'Output format: numbered list. Each item: issue (1 sentence), '
            'affected line, suggested fix as a code snippet.\n\n'
            + code
        )
    }]
)
print(response.choices[0].message.content)

Пара 3: тема письма

Расплывчатый вариант: «Напишите темы писем для моей рассылки».

Конкретный вариант: «Напишите 10 тем писем для еженедельной рассылки о Python для специалистов по анализу данных. Каждая тема должна содержать менее 50 символов, включать зацепку для повышения открываемости (интрига, нумерованный список или неожиданное утверждение) и избегать слов, запускающих спам-фильтры, таких как FREE или URGENT. Представьте результат в виде нумерованного списка, указав тип зацепки в квадратных скобках».

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

import anthropic

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

response = client.messages.create(
    model='claude-opus-4-5',
    max_tokens=400,
    messages=[{
        'role': 'user',
        'content': (
            'Write 10 email subject lines for a weekly newsletter '
            'about Python tips for data scientists. '
            'Requirements:\n'
            '- Each under 50 characters\n'
            '- Must use one of these hooks: [CURIOSITY GAP], [NUMBER], or [SURPRISING CLAIM]\n'
            '- No spam words: FREE, URGENT, ACT NOW, LIMITED TIME\n'
            '- Output as numbered list with hook type in brackets at the end of each line'
        )
    }]
)
print(response.content[0].text)

Пара 4: резюме встречи

Расплывчатый вариант: «Составьте резюме этой расшифровки встречи».

Конкретный вариант: «Составьте резюме этой расшифровки встречи в следующем формате: 1) Цель встречи (1 предложение), 2) Принятые ключевые решения (маркированный список, не более 5), 3) Задачи к выполнению (таблица со столбцами: Задача, Ответственный, Срок), 4) Открытые вопросы (нумерованный список). Если для какого-либо поля не хватает информации, напишите “Н/Д”. Не включайте мнения — только факты и договорённости».

Почему это работает: задаётся точный шаблон, указываются ограничения для каждого раздела, определяется схема таблицы, задаётся вариант на случай отсутствия данных и добавляется ограничение тона (только факты).

import openai

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

transcript = (
    'John: We need to decide on the launch date. '
    'Sarah: I think Q3 works. We need the API done first. '
    'John: Agreed. Sarah, can you own the API? '
    'Sarah: Yes, I can have it by July 15th. '
    'John: Great. Who handles marketing? '
    'Mike: I will, but I need the feature list first. '
    'John: We still need to confirm pricing — tabled for next week.'
)

response = client.chat.completions.create(
    model='gpt-4o',
    messages=[{
        'role': 'user',
        'content': (
            'Summarize this meeting transcript in this exact format:\n'
            '1. Meeting Purpose: (1 sentence)\n'
            '2. Key Decisions: (bullet list, max 5)\n'
            '3. Action Items: (markdown table: Task | Owner | Deadline)\n'
            '4. Open Questions: (numbered list)\n'
            'Missing info: write N/A. Facts only, no opinions.\n\n'
            'Transcript:\n' + transcript
        )
    }]
)
print(response.choices[0].message.content)

Пара 5: объяснение

Расплывчатый вариант: «Объясните машинное обучение».

Конкретный вариант: «Объясните машинное обучение в 3 абзацах для менеджера продукта в медицинской компании, который понимает статистику, но никогда не писал код. Абзац 1: что это такое и чем оно отличается от традиционного программирования. Абзац 2: реальный пример из медицины (диагностика или разработка лекарств). Абзац 3: одно распространённое заблуждение, которого следует избегать. Всего не более 200 слов».

Почему это работает: задаются структура (3 абзаца с определёнными темами), аудитория (конкретная должность, область и уровень подготовки), требования к содержанию каждого абзаца и общий лимит слов.

import anthropic

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

response = client.messages.create(
    model='claude-opus-4-5',
    max_tokens=350,
    messages=[{
        'role': 'user',
        'content': (
            'Explain machine learning in exactly 3 paragraphs. '
            'Audience: a product manager at a healthcare company who understands statistics '
            'but has never written code.\n'
            'Paragraph 1: what ML is and how it differs from traditional programming.\n'
            'Paragraph 2: a specific real-world healthcare example (diagnosis or drug discovery).\n'
            'Paragraph 3: one common misconception non-technical people have about ML.\n'
            'Max 200 words total. No bullet points — flowing prose only.'
        )
    }]
)
print(response.content[0].text)

Анатомия хорошей переработки

Если рассмотреть все пять пар, то каждая эффективная переработка делает одно и то же:

  1. Заменяет расплывчатый глагол («написать», «проверить», «объяснить») структурированной задачей
  2. Называет формат результата (список, таблица, абзацы с заданным содержанием)
  3. Добавляет измеримые ограничения (количество слов, число элементов, ограничения на количество символов)
  4. Определяет аудиторию (должность, уровень подготовки и контекст)
  5. Добавляет хотя бы одно правило исключения (что не следует включать)
# Pattern extractor: identify improvements between two prompts
def analyze_improvement(vague, specific):
    improvements = []
    words = specific.lower()
    if any(str(n) in words for n in range(10, 10000)):
        improvements.append('Quantitative constraint added')
    if 'do not' in words or 'exclude' in words or 'avoid' in words or 'no ' in words:
        improvements.append('Negative constraint added')
    if 'audience' in words or 'for a' in words or 'targeting' in words:
        improvements.append('Audience specified')
    if 'format:' in words or 'table' in words or 'list' in words or 'paragraph' in words:
        improvements.append('Output format defined')
    if 'example' in words or 'such as' in words or 'like:' in words:
        improvements.append('Example provided')
    print('Improvements detected:')
    for i in improvements:
        print(f'  + {i}')

vague = 'Write a blog post about remote work.'
specific = 'Write a 600-word blog post for mid-level developers with 3 H2 sections and a closing CTA. No bullet points. Avoid generic productivity advice.'
analyze_improvement(vague, specific)

Что происходит, когда добавлено только одно измерение

Даже одно улучшение помогает, но частичная конкретика всё ещё оставляет большие пробелы. Сравните:

  • «Напишите запись в блоге об удалённой работе» — никаких ограничений
  • «Напишите запись в блоге об удалённой работе объёмом 600 слов» — указана только длина; ракурс, аудитория и структура по-прежнему расплывчаты
  • «Напишите запись в блоге об удалённой работе объёмом 600 слов для разработчиков в разговорном тоне» — указаны длина, аудитория и тон; структура, CTA и стиль заголовков по-прежнему расплывчаты

Каждое неуказанное измерение превращается в лотерею. Добавляйте столько деталей, сколько Вам известно.

import openai

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

# Progressively more specific prompts
prompts = [
    'Write about Python.',
    'Write a 200-word article about Python.',
    'Write a 200-word article about Python for beginners who know no programming.',
    (
        'Write a 200-word article about Python for beginners who know no programming. '
        'Start with a real-world analogy. Use 3 short paragraphs. '
        'End with one actionable first step they can take today.'
    )
]

for i, p in enumerate(prompts, 1):
    print(f'Prompt {i} ({len(p)} chars): {p[:80]}...' if len(p) > 80 else f'Prompt {i}: {p}')
    print()

Практическое применение метода сравнительных пар

Метод сравнительных пар — мощный инструмент отладки. Если результат оказался плохим:

  1. Сохраните расплывчатый запрос, который привёл к плохому результату
  2. Определите одно измерение, вызвавшее проблему
  3. Напишите конкретную переработанную версию, нацеленную только на это измерение
  4. Запустите оба запроса и сравните результаты
  5. Определите, что ещё нужно исправить, а затем добавьте следующее ограничение

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

import anthropic

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

def compare_prompts(prompt_a, prompt_b, label_a='A', label_b='B'):
    client_ref = anthropic.Anthropic(api_key='sk-ant-your-key-here')
    for label, prompt in [(label_a, prompt_a), (label_b, prompt_b)]:
        response = client_ref.messages.create(
            model='claude-opus-4-5',
            max_tokens=150,
            messages=[{'role': 'user', 'content': prompt}]
        )
        print(f'=== {label} ===')
        print(prompt)
        print('--- OUTPUT ---')
        print(response.content[0].text)
        print()

compare_prompts(
    prompt_a='Explain APIs.',
    prompt_b='Explain APIs in 3 sentences for a non-technical startup founder. Analogy required.',
    label_a='VAGUE',
    label_b='SPECIFIC'
)

Двухминутная проверка запроса

Перед отправкой любого важного запроса проведите эту двухминутную проверку. Для каждого вопроса, если ответ отрицательный, добавьте недостающую деталь:

  • Указан ли формат? (список / таблица / абзац / JSON)
  • Указана ли длина? (количество слов / число элементов)
  • Описана ли аудитория? (должность и уровень подготовки)
  • Понятна ли цель? (для чего нужен результат)
  • Есть ли хотя бы одно исключение? (что не следует включать)
  • Есть ли пример или шаблон? (если важен стиль)
def two_minute_audit(prompt):
    score = 0
    checks = {
        'Format specified': any(w in prompt.lower() for w in
            ['list', 'table', 'paragraph', 'json', 'bullet', 'sentence', 'word']),
        'Length given': any(c.isdigit() for c in prompt),
        'Audience named': any(w in prompt.lower() for w in
            ['for a', 'audience', 'targeting', 'developer', 'manager', 'beginner']),
        'Exclusion added': any(w in prompt.lower() for w in
            ['do not', 'avoid', 'exclude', 'no ', 'without', 'never']),
        'Goal stated': any(w in prompt.lower() for w in
            ['goal', 'purpose', 'so that', 'in order to', 'will be used']),
    }
    print('Prompt Audit:')
    for check, passed in checks.items():
        icon = 'PASS' if passed else 'FAIL'
        print(f'  [{icon}] {check}')
        if passed: score += 1
    print(f'Score: {score}/{len(checks)}')

two_minute_audit(
    'Write 5 bullet-point suggestions for improving user onboarding '
    'for a B2B SaaS app targeting first-time non-technical users. '
    'Avoid suggestions that require engineering work. Each bullet: max 25 words.'
)

Создание библиотеки запросов

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

Хорошая запись в библиотеке запросов включает:

  • Шаблон запроса с заполнителями, такими как [AUDIENCE], [WORD_COUNT]
  • Сценарий использования, для которого он был создан
  • Использованные модель и параметры
  • Примечание о том, что делает его эффективным

Со временем библиотека станет Вашим самым ценным ресурсом для повышения продуктивности с помощью ИИ.

# Example prompt library entry
prompt_library = {
    'meeting_summary': {
        'template': (
            'Summarize the following meeting transcript in this format:\n'
            '1. Purpose: (1 sentence)\n'
            '2. Decisions: (bullet list, max 5)\n'
            '3. Action Items: (table: Task | Owner | Deadline)\n'
            '4. Open Questions: (numbered list)\n'
            'Missing info: N/A. Facts only.\n\nTranscript:\n[TRANSCRIPT]'
        ),
        'use_case': 'Post-meeting automation for Slack or Notion',
        'model': 'claude-opus-4-5',
        'temperature': 0,
        'notes': 'Works best with verbatim transcripts, not paraphrased notes'
    }
}

# Use the template
def run_meeting_summary(transcript):
    template = prompt_library['meeting_summary']['template']
    return template.replace('[TRANSCRIPT]', transcript)

print(run_meeting_summary('Alice: We decided to ship v2 next Friday...')[:200])

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

Рассматривая пять сравнительных пар из этого урока, какое единственное изменение наиболее последовательно повышало качество запроса во всех пяти примерах?

Расплывчатый и конкретный варианты — итоги

Пять сравнительных пар показывают закономерность, объясняющую эффективность переработки запросов:

  • Структура результата даёт наибольший ROI — всегда определяйте её
  • Количество слов или элементов полностью устраняет необходимость договариваться о длине
  • Описание аудитории автоматически настраивает лексику и глубину
  • Правила исключения предотвращают предсказуемое generic-содержание
  • Частичная конкретика всё ещё оставляет пробелы — каждое неуказанное измерение превращается в догадку
  • Библиотеки запросов сохраняют удачные шаблоны для повторного использования

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

Урок «Сравнение расплывчатых и конкретных запросов» бесплатный?

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

Чему я научусь в уроке «Сравнение расплывчатых и конкретных запросов»?

Примеры рядом, показывающие, насколько сильно конкретика меняет результат Ты практикуешь AI Prompt Engineering с помощью реального кода, который запускаешь прямо в браузере, и ИИ-репетитор 24/7 отвечает на твои вопросы во время урока.

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

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

Сколько времени занимает урок «Сравнение расплывчатых и конкретных запросов»?

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

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

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

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

  1. Почему важна конкретика
  2. Устранение неоднозначности в запросах
  3. Добавление конкретных деталей
  4. Сравнение расплывчатых и конкретных запросов
← Назад к AI Prompt Engineering