AI Prompt Engineering · Aula

Criando padrões de preenchimento

Use marcadores {{variable}} e substituição de strings em Python.

Aula 2 de 413 etapas

Criando padrões de preenchimento é uma aula grátis de AI Prompt Engineering no CoddyKit. Esta é a aula 2 de 4. Você pode ler a aula completa abaixo gratuitamente — depois pratica ao vivo no navegador com um editor de código integrado e um tutor de IA 24/7. Faz parte do caminho de aprendizado de AI Prompt Engineering, e seu progresso é sincronizado entre a web e o app CoddyKit. O curso de AI Prompt Engineering inclui 4 aulas no total.

A convenção dos marcadores de posição

Um padrão de instrução com preenchimento de lacunas usa marcadores de posição para indicar as partes de uma instrução que serão substituídas por valores reais antes de serem enviadas ao modelo.

A convenção de marcadores de posição mais comum usa chaves duplas: {{variable_name}}. Essa convenção é fácil de ler, é improvável que apareça acidentalmente em um texto normal e é amplamente compatível com bibliotecas de modelos.

Outras convenções que você encontrará: chaves simples {variable}, sinais de menor e maior <variable> e variáveis ALL_CAPS. Escolha uma e seja consistente.

Substituição básica de marcadores

O padrão mais simples de preenchimento de lacunas é a substituição direta de cadeias de caracteres:

Modelo: "Escreva uma descrição de {{word_count}} palavras de {{product}} para {{audience}}."

Preenchido: "Escreva uma descrição de 150 palavras do TaskFlow Pro para proprietários de pequenas empresas."

A substituição ocorre antes de a cadeia de caracteres ser enviada ao modelo — o modelo vê um prompt limpo e completo, sem marcadores de posição. Os marcadores de posição são uma etapa de pré-processamento, não algo que o próprio modelo trata.

Categorias comuns de marcadores

Crie seus modelos usando categorias padrão de marcadores que abrangem a maioria dos casos de uso:

  • {{customer_name}} — nome do destinatário ou do assunto
  • {{product}} — o produto, serviço ou tópico sobre o qual se escreve
  • {{tone}} — por exemplo, profissional, casual, urgente ou entusiasmado
  • {{audience}} — para quem o conteúdo se destina
  • {{word_count}} — extensão desejada
  • {{format}} — marcadores, parágrafos ou lista numerada
  • {{context}} — informações de contexto específicas desta situação

A nomenclatura consistente entre os modelos torna sua biblioteca mais fácil de explorar e reduz erros.

Substituição com o formato de cadeias de caracteres do Python

O método integrado de cadeias de caracteres do Python, .format(), é uma forma simples de preencher marcadores usando a sintaxe {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)

Abordagem de strings f do Python

As strings f do Python fornecem uma sintaxe de substituição em linha que alguns desenvolvedores preferem pela legibilidade:

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'
))

Como lidar com caracteres especiais nos marcadores

Um erro comum: valores fornecidos pelo usuário que contêm chaves, aspas ou quebras de linha podem interromper a substituição de cadeias de caracteres.

Abordagens preventivas:

  • Higienize as entradas antes da substituição — remova ou converta em escape os caracteres especiais, se necessário
  • Use cadeias de caracteres entre aspas triplas para modelos com várias linhas, a fim de lidar com quebras de linha com segurança
  • Quando o próprio valor da variável contém chaves, por exemplo, código, use uma abordagem que trate o valor da variável como literal (o Jinja2 faz isso bem)

Sempre teste seu modelo com entradas de casos extremos: cadeias vazias, cadeias com aspas, cadeias com quebras de linha e cadeias muito longas.

Valores padrão em modelos

Nem todas as variáveis precisam ser obrigatórias. Os modelos ficam mais flexíveis com valores padrão para parâmetros opcionais:

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'))

Modelos com vários blocos

Prompts complexos podem ter vários blocos de variáveis — um bloco de prompt do sistema e um bloco de mensagem do usuário, cada um com seus próprios marcadores:

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

Validando marcadores antes da renderização

Sempre valide se todos os marcadores obrigatórios foram preenchidos antes de enviar o prompt. A ausência de um marcador significa que o modelo recebe texto literal como {{product}} e pode produzir uma saída absurda:

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'}}

Blocos condicionais de modelos

Às vezes, uma seção do modelo só deve aparecer se uma variável for fornecida. Você pode implementar isso em Python usando a construção condicional de cadeias de caracteres:

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'
))

Variáveis de escolha enumerada

Algumas variáveis de modelo devem ser limitadas a um conjunto fixo de opções válidas. Faça isso com uma validação no estilo de uma enumeração:

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

Verificação de conhecimentos: padrões de preenchimento de lacunas

Você tem este modelo: 'Write a {tone} email to {recipient} about {topic}. Length: {word_count} words.'

Você o chama com: tone='formal', recipient='the team', word_count=100 — mas se esquece do parâmetro topic.

O que acontece?

Recapitulação: criando padrões de preenchimento de lacunas

Os padrões de prompts de preenchimento de lacunas usam marcadores ({{variable}}, {variable} ou semelhantes) para indicar as partes variáveis de um modelo reutilizável. O .format() do Python e as strings f são os mecanismos de substituição mais comuns.

Boas práticas: valide todos os marcadores obrigatórios antes da renderização, use valores padrão para variáveis opcionais, limite as variáveis enumeradas e trate preventivamente as entradas de casos extremos, como cadeias vazias e caracteres especiais.

Na próxima lição, você explorará o Jinja2 e o string.Template do Python para necessidades mais avançadas de substituição de variáveis.

Grátis para começar

Aprenda AI Prompt Engineering com um tutor de IA — grátis

Escreva e execute código real no seu navegador, obtenha ajuda instantânea de um tutor de IA 24/7 e continue de onde parou na web ou no app.

Cursos
53
Aulas
199

Perguntas Frequentes

A aula “Criando padrões de preenchimento” é grátis?

Sim — o texto completo de “Criando padrões de preenchimento” é grátis para ler aqui na web. Para praticá-la interativamente (um editor de código integrado e um tutor de IA 24/7) e desbloquear o restante do curso de AI Prompt Engineering, atualize para CoddyKit PRO. O curso de AI Prompt Engineering inclui 4 aulas no total.

O que vou aprender em “Criando padrões de preenchimento”?

Use marcadores {{variable}} e substituição de strings em Python. Você pratica AI Prompt Engineering com código prático que executa diretamente no navegador, e um tutor de IA 24/7 responde suas dúvidas enquanto trabalha na aula.

Preciso ter experiência prévia para começar AI Prompt Engineering?

Nenhuma experiência prévia é necessária. AI Prompt Engineering no CoddyKit é estruturado para alunos iniciantes até avançados, então você pode começar aqui ou desde o início e aprender no seu ritmo. Esta é a aula 2 de 4.

Quanto tempo leva a aula “Criando padrões de preenchimento”?

A maioria das aulas CoddyKit leva cerca de 5–10 minutos. Cada uma é compacta e interativa, então você faz progresso constante e retoma exatamente de onde parou entre web e app.

Posso escrever e executar código nesta aula de AI Prompt Engineering?

Sim. Cada aula de AI Prompt Engineering inclui um editor de código integrado, então você escreve e executa código real direto no navegador e recebe feedback de IA instantaneamente — nenhuma configuração local necessária.

Todas as aulas deste curso

  1. O que é um modelo de solicitação?
  2. Criando padrões de preenchimento
  3. Técnicas de substituição de variáveis
  4. Reutilizando modelos em várias tarefas
← Voltar para AI Prompt Engineering