Creare schemi da completare
Utilizzi segnaposto {{variable}} e la sostituzione di stringhe in Python
Creare schemi da completare è una lezione AI Prompt Engineering gratuita su CoddyKit. Questa è la lezione 2 di 4. Puoi leggere la lezione completa qui gratuitamente — poi esercitati direttamente nel browser con un editor di codice integrato e un tutor IA disponibile 24/7. Fa parte del percorso di apprendimento AI Prompt Engineering, e i tuoi progressi si sincronizzano tra il web e l'app CoddyKit. Il corso AI Prompt Engineering include 4 lezioni in totale.
La convenzione dei segnaposto
Un modello di prompt da completare utilizza i segnaposto per contrassegnare le parti del prompt che verranno sostituite con valori reali prima dell'invio al modello.
La convenzione più comune per i segnaposto utilizza le doppie parentesi graffe: {{variable_name}}. Questa convenzione è facile da leggere, è improbabile che compaia accidentalmente nel testo normale ed è ampiamente supportata dalle librerie di templating.
Altre convenzioni che si possono incontrare: parentesi graffe singole {variable}, parentesi angolari <variable> e variabili in MAIUSCOLO. Ne scelga una e la utilizzi in modo coerente.
Sostituzione di base dei segnaposto
Il pattern più semplice per il riempimento degli spazi vuoti è la sostituzione diretta delle stringhe:
Modello: "Scriva una descrizione di {{product}} di {{word_count}} parole per {{audience}}."
La sostituzione avviene prima che la stringa venga inviata al modello: il modello riceve un prompt completo e pulito, senza indicatori di segnaposto. I segnaposto sono una fase di pre-elaborazione, non qualcosa che il modello gestisce direttamente.
Categorie comuni di segnaposto
Costruisca i template utilizzando categorie standard di segnaposto che coprono la maggior parte dei casi d'uso:
{{customer_name}}— nome del destinatario o del soggetto{{product}}— prodotto, servizio o argomento trattato{{tone}}— ad es. professionale, informale, urgente, entusiasta{{audience}}— destinatari del contenuto{{word_count}}— lunghezza desiderata{{format}}— punti elenco, paragrafi, elenco numerato{{context}}— informazioni di contesto specifiche per questa istanza
Usare nomi coerenti in tutti i template rende la libreria più facile da consultare e riduce gli errori.
Sostituzione con il formato delle stringhe Python
Il metodo .format() integrato nelle stringhe Python è un modo semplice per riempire i segnaposto usando la sintassi {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)Approccio con le f-string Python
Le f-string Python offrono una sintassi di sostituzione inline che alcuni sviluppatori preferiscono per la sua leggibilità:
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'
))Gestione dei caratteri speciali nei segnaposto
Un bug comune si verifica quando i valori forniti dall'utente contengono parentesi graffe, virgolette o ritorni a capo, che possono compromettere la sostituzione delle stringhe.
Approcci difensivi:
- Sanifichi gli input prima della sostituzione: rimuova o esegua l'escape dei caratteri speciali quando necessario
- Utilizzi stringhe racchiuse tra tre virgolette per i template su più righe, così da gestire i ritorni a capo in modo sicuro
- Quando il valore della variabile contiene a sua volta parentesi graffe, ad esempio del codice, utilizzi un approccio che tratti il valore come testo letterale (Jinja2 gestisce bene questo caso)
Verifichi sempre il template con input rappresentativi dei casi limite: stringhe vuote, stringhe con virgolette, stringhe con ritorni a capo e stringhe molto lunghe.
Valori predefiniti nei template
Non tutte le variabili devono essere obbligatorie. I template diventano più flessibili quando si definiscono valori predefiniti per i parametri facoltativi:
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'))Template con più blocchi
I prompt complessi possono contenere più blocchi di variabili: un blocco per il prompt di sistema e uno per il messaggio dell'utente, ciascuno con i propri segnaposto:
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.contentConvalida dei segnaposto prima del rendering
Convalidi sempre che tutti i segnaposto obbligatori siano compilati prima di inviare il prompt. Un segnaposto mancante fa sì che il modello riceva testo letterale come {{product}} e potrebbe produrre un output bizzarro:
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'}}Blocchi condizionali nei template
A volte una sezione del template deve comparire solo se viene fornita una variabile. In Python è possibile implementare questo comportamento costruendo condizionalmente la stringa:
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'
))Variabili di scelta enumerata
Alcune variabili dei template devono essere limitate a un insieme fisso di opzioni valide. Imponga questo vincolo con una convalida in stile enum:
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 promptVerifica delle conoscenze: pattern con campi da compilare
Ha a disposizione questo template: 'Write a {tone} email to {recipient} about {topic}. Length: {word_count} words.'
Lo richiama con: tone='formal', recipient='the team', word_count=100, ma dimentica il parametro topic.
Che cosa succede?
Riepilogo: creazione di pattern con campi da compilare
I pattern di prompt con campi da compilare utilizzano segnaposto ({{variable}}, {variable} o sintassi simili) per contrassegnare le parti variabili di un template riutilizzabile. .format() e le f-string di Python sono i meccanismi di sostituzione più comuni.
Buone pratiche: convalidare tutti i segnaposto obbligatori prima del rendering, utilizzare valori predefiniti per le variabili facoltative, limitare le variabili enumerate e gestire in modo difensivo gli input ai casi limite (stringhe vuote, caratteri speciali).
Nella prossima lezione esplorerà Jinja2 e string.Template di Python per esigenze di sostituzione delle variabili più avanzate.
Impara AI Prompt Engineering con un tutor IA — gratis
Scrivi ed esegui vero codice nel tuo browser, ricevi aiuto istantaneo da un tutor IA disponibile 24/7, e riprendi da dove hai lasciato sul web o nell'app.
- Corsi
- 53
- Lezioni
- 199
Domande Frequenti
La lezione «Creare schemi da completare» è gratuita?
Sì — il testo completo di «Creare schemi da completare» è gratuito qui sul web. Per esercitarvi in modo interattivo (un editor di codice integrato e un tutor IA 24/7) e sbloccare il resto del corso AI Prompt Engineering, passa a CoddyKit PRO. Il corso AI Prompt Engineering include 4 lezioni in totale.
Cosa imparerò in «Creare schemi da completare»?
Utilizzi segnaposto {{variable}} e la sostituzione di stringhe in Python Eserciti AI Prompt Engineering con codice pratico che esegui direttamente nel browser, e un tutor IA 24/7 risponde alle tue domande mentre lavori sulla lezione.
Ho bisogno di esperienza per iniziare AI Prompt Engineering?
Non è richiesta alcuna esperienza precedente. AI Prompt Engineering su CoddyKit è strutturato per principianti e studenti avanzati, quindi puoi iniziare da qui o dall'inizio e procedere al tuo ritmo. Questa è la lezione 2 di 4.
Quanto tempo richiede la lezione «Creare schemi da completare»?
La maggior parte delle lezioni CoddyKit richiede circa 5–10 minuti. Ogni lezione è breve e interattiva, quindi fai progressi costanti e riprendi esattamente da dove hai lasciato su web e app.
Posso scrivere ed eseguire codice in questa lezione AI Prompt Engineering?
Sì. Ogni lezione AI Prompt Engineering include un editor di codice integrato, quindi scrivi ed esegui codice reale direttamente nel tuo browser e ricevi feedback istantaneo dall'IA — nessuna configurazione locale necessaria.
Tutte le lezioni di questo corso
- Che cos'è un template di prompt?
- Creare schemi da completare
- Tecniche di sostituzione delle variabili
- Riutilizzare i template tra le attività