0Pricing
AI Prompt Engineering · Урок

Создание шаблонов с пропусками

Используйте заполнители {{variable}} и подстановку строк в Python

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

Соглашение об обозначении мест для подстановки

Шаблон запроса с заполнением пропусков использует места для подстановки, чтобы обозначить части запроса, которые перед отправкой модели будут заменены реальными значениями.

Самое распространённое соглашение для мест подстановки — двойные фигурные скобки: {{variable_name}}. Это соглашение легко читать, оно вряд ли случайно встретится в обычном тексте и широко поддерживается библиотеками шаблонов.

Вам встретятся и другие соглашения: одинарные фигурные скобки {variable}, угловые скобки <variable> и переменные В ВЕРХНЕМ РЕГИСТРЕ. Выберите одно и придерживайтесь его.

Базовая подстановка заполнителей

Самый простой шаблон с пропусками — это прямая подстановка строк:

Шаблон: "Напишите описание объемом в {{word_count}} слов о {{product}} для {{audience}}."

Заполненный вариант: "Напишите описание TaskFlow Pro объемом в 150 слов для владельцев малого бизнеса."

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

Распространённые категории заполнителей

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

  • {{customer_name}} — имя получателя или название темы
  • {{product}} — продукт, услуга или тема, о которых идёт речь
  • {{tone}} — например, официальный, неформальный, срочный или воодушевляющий стиль
  • {{audience}} — для кого предназначено содержание
  • {{word_count}} — целевой объём
  • {{format}} — маркированные пункты, абзацы или нумерованный список
  • {{context}} — фоновая информация, относящаяся к данному случаю

Единообразные имена во всех шаблонах упрощают навигацию по библиотеке и уменьшают количество ошибок.

Подстановка с форматированием строк в Python

Встроенный метод форматирования строк Python .format() — это простой способ заполнить заполнители с помощью синтаксиса {variable}:

import openai

client = openai.OpenAI(api_key='sk-...')

EMAIL_TEMPLATE = '''Write a follow-up email from {sender_name} to {recipient_name}.
Context: {context}
Tone: {tone}
Length: {word_count} words.
Include a clear call to action: {cta}.
Do not mention competitors. Active voice. No bullet points.'''

def generate_email(sender, recipient, context, tone, word_count, cta):
    prompt = EMAIL_TEMPLATE.format(
        sender_name=sender,
        recipient_name=recipient,
        context=context,
        tone=tone,
        word_count=word_count,
        cta=cta
    )

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

result = generate_email(
    sender='Sarah Chen',
    recipient='Mr. Patel',
    context='We met at the DevConf conference last week and discussed API integration.',
    tone='warm and professional',
    word_count=120,
    cta='Schedule a 20-minute demo call'
)
print(result)

Подход с f-строками в Python

F-строки Python предоставляют синтаксис встроенной подстановки, который некоторые разработчики предпочитают за его наглядность:

import openai

client = openai.OpenAI(api_key='sk-...')

def generate_product_description(product, audience, tone, word_count, key_benefit):
    prompt = (
        f'Write a product description for {product}, designed for {audience}. '
        f'Tone: {tone}. '
        f'Length: {word_count} words. '
        f'Lead with this key benefit: {key_benefit}. '
        'Active voice. No bullet points. No pricing mentions.'
    )

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

print(generate_product_description(
    product='FocusFlow, a time-blocking productivity app',
    audience='freelancers and independent consultants',
    tone='energetic and practical',
    word_count=150,
    key_benefit='Reclaim two hours every day by blocking distractions automatically'
))

Обработка специальных символов в заполнителях

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

Защитные меры:

  • Очищайте входные данные перед подстановкой — при необходимости удаляйте специальные символы или экранируйте их
  • Используйте строки в тройных кавычках для многострочных шаблонов, чтобы безопасно обрабатывать переводы строк
  • Если само значение переменной содержит фигурные скобки (например, код), используйте подход, который воспринимает значение переменной как обычный текст (Jinja2 хорошо с этим справляется)

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

Значения по умолчанию в шаблонах

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

def build_prompt(product, audience, tone='professional and friendly', word_count=200, format_style='prose'):
    format_instruction = {
        'prose': 'Write in continuous paragraphs. No bullet points.',
        'bullets': 'Use bullet points. Each point is one sentence.',
        'numbered': 'Use a numbered list. Each item is one sentence.'
    }.get(format_style, 'Write in continuous paragraphs.')

    return (
        f'Write a description of {product} for {audience}. '
        f'Tone: {tone}. '
        f'Length: {word_count} words. '
        f'{format_instruction} '
        'Active voice. No competitor mentions.'
    )

# Minimal call — uses all defaults
print(build_prompt('Notion', 'students'))

# Full call — overrides defaults
print(build_prompt('Notion', 'students', tone='casual', word_count=100, format_style='bullets'))

Шаблоны из нескольких блоков

Сложные запросы могут состоять из нескольких блоков переменных — блока системного запроса и блока сообщения пользователя, в каждом из которых есть свои заполнители:

SYSTEM_TEMPLATE = 'You are a {role} writing for {company}. Your audience is {audience}. Style: {style}.'

USER_TEMPLATE = 'Write a {content_type} about {topic}. Length: {word_count} words. Deadline tone: {urgency}.'

import openai

client = openai.OpenAI(api_key='sk-...')

def generate(role, company, audience, style, content_type, topic, word_count, urgency):
    system_msg = SYSTEM_TEMPLATE.format(
        role=role, company=company, audience=audience, style=style
    )
    user_msg = USER_TEMPLATE.format(
        content_type=content_type, topic=topic,
        word_count=word_count, urgency=urgency
    )

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

Проверка заполнителей перед формированием

Всегда проверяйте, что все обязательные заполнители заполнены до отправки запроса. Если заполнитель отсутствует, модель получает буквальный текст вроде {{product}} и может выдать абсурдный результат:

import re

def validate_template(template_str, provided_vars):
    required = set(re.findall(r'\{\{(\w+)\}\}', template_str))
    missing = required - set(provided_vars.keys())

    if missing:
        raise ValueError(f'Missing required template variables: {missing}')

    return True

template = 'Write a {{word_count}}-word {{tone}} description of {{product}} for {{audience}}.'
vars_provided = {'word_count': 150, 'tone': 'friendly', 'product': 'TaskFlow'}

try:
    validate_template(template, vars_provided)
except ValueError as e:
    print(f'Template error: {e}')
    # Output: Template error: Missing required template variables: {{'audience'}}

Условные блоки шаблона

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

def build_report_prompt(topic, audience, word_count, include_recommendations=False, cta=None):
    prompt = f'Write a report on {topic} for {audience}. Length: {word_count} words. Active voice.'

    if include_recommendations:
        prompt += ' End with a numbered list of 3 specific recommendations.'

    if cta:
        prompt += f' Close with this call to action: {cta}'

    return prompt

# Without optional sections
print(build_report_prompt('cloud cost optimization', 'engineering managers', 400))

# With optional sections
print(build_report_prompt(
    topic='cloud cost optimization',
    audience='engineering managers',
    word_count=600,
    include_recommendations=True,
    cta='Book a cost audit with our team at cloudcost.io'
))

Переменные с перечисляемыми вариантами

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

VALID_TONES = ['professional', 'casual', 'urgent', 'empathetic', 'enthusiastic']
VALID_FORMATS = ['prose', 'bullets', 'numbered', 'table']

def generate_content(topic, tone, format_style, word_count):
    if tone not in VALID_TONES:
        raise ValueError(f'Invalid tone: {tone}. Choose from: {VALID_TONES}')
    if format_style not in VALID_FORMATS:
        raise ValueError(f'Invalid format: {format_style}. Choose from: {VALID_FORMATS}')

    format_map = {
        'prose': 'continuous paragraphs, no lists',
        'bullets': 'bullet points',
        'numbered': 'numbered list',
        'table': 'a markdown table'
    }

    prompt = (f'Write about {topic} in {tone} tone. '
              f'Format: {format_map[format_style]}. '
              f'Length: {word_count} words. Active voice.')

    return prompt

Проверка знаний: шаблоны с заполнителями

У вас есть такой шаблон: 'Write a {tone} email to {recipient} about {topic}. Length: {word_count} words.'

Вы вызываете его с параметрами: tone='formal', recipient='the team', word_count=100 — но забываете параметр topic.

Что произойдёт?

Повторение: создание шаблонов с заполнителями

Шаблоны запросов с заполнителями используют заполнители ({{variable}}, {variable} или похожие конструкции), чтобы обозначить изменяемые части повторно используемого шаблона. .format() Python и f-строки — наиболее распространённые механизмы подстановки.

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

На следующем уроке Вы изучите Jinja2 и string.Template Python для более мощной подстановки переменных.

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

Урок «Создание шаблонов с пропусками» бесплатный?

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

Чему я научусь в уроке «Создание шаблонов с пропусками»?

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

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

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

Сколько времени занимает урок «Создание шаблонов с пропусками»?

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

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

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

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

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