作为一名长期从事AI应用开发的程序员,我发现很多初学者在学习Python时最大的痛点就是无法将基础语法与实际应用场景结合。今天我要分享的是如何用Python中最基础的条件判断语句(if/elif/else)来打造一个智能提示词生成器——这个工具能根据用户的不同输入需求,自动调整AI生成内容的风格、长度和语气。
在实际工作中,我经常需要为不同场景生成差异化的内容:有时客户想要专业严谨的技术文档,有时又需要轻松幽默的社交媒体文案。传统做法是手动修改提示词模板,效率极低。通过将Python的条件判断与提示词工程结合,我成功将工作效率提升了3倍以上。
在AI内容生成领域,提示词(prompt)的质量直接决定输出结果的好坏。但用户需求往往多变:
手动为每个需求编写特定提示词不仅耗时,而且难以保证一致性。这就是我们需要用Python实现动态提示词生成的原因。
为什么选择Python的if/elif/else结构来实现这个功能?
让我们从最简单的例子开始——根据字数要求生成不同的约束条件:
python复制length = int(input("你希望生成的内容字数大约是多少?(例如 200/500/1000):"))
if length <= 200:
constraint = "字数严格控制在200字以内,语言极简有力"
elif length <= 500:
constraint = "字数控制在500字左右,内容完整但不冗长"
else:
constraint = "字数约1000字,详细展开,包含多个段落和例子"
prompt = "你是一个专业的内容创作者。" + \
"请写一篇关于「AI 如何改变日常写作」的文章。" + \
constraint + "。"
print("\n生成的提示词:")
print(prompt)
注意:这里使用了类型转换int()来确保输入被正确处理为数字,这是实际开发中常见的防御性编程技巧。
更复杂的需求是同时处理风格和情感等多个维度:
python复制style = input("你想要的输出风格是?(温柔/硬核/幽默/专业):").strip().lower()
if style == "温柔":
role = "你是一个温暖治愈的生活导师"
tone = "语气温柔、体贴,像在和朋友聊天"
elif style == "硬核":
role = "你是一个直言不讳的技术硬核博主"
tone = "语气冷峻、直接,数据说话,不讲情面"
elif style == "幽默":
role = "你是一个段子手级别的搞笑创作者"
tone = "全程幽默风趣,适当自黑和玩梗"
else:
role = "你是一个专业严谨的编辑"
tone = "语气客观、专业,使用正式语言"
prompt = f"{role}。\n请围绕「如何用 Python 快速生成高质量 Prompt」写一篇指南。\n{tone}。"
实际应用中,我们往往需要组合多个条件:
python复制theme = input("主题是?(例如:未来城市、失恋日记):")
mood = input("情绪基调(积极/治愈/黑暗/搞笑):").strip().lower()
if mood in ["积极", "治愈"]:
prefix = "故事要温暖向上,充满希望"
elif mood == "黑暗":
prefix = "氛围阴郁、压抑,带点哲学思辨"
elif mood == "搞笑":
prefix = "全程沙雕搞笑,适当夸张和反转"
else:
prefix = "保持中性,真实自然"
length_input = int(input("大约字数(200/500/800):"))
if length_input <= 300:
length_str = "短篇,控制在300字内"
elif length_input <= 600:
length_str = "中篇,约500-600字"
else:
length_str = "长篇,800字以上,细节丰富"
prompt = f"你是一个小说创作者。\n请写一个关于「{theme}」的原创故事。\n{prefix}。\n{length_str}。"
在实际应用中,必须考虑用户输入不规范的情况:
python复制while True:
try:
length = int(input("请输入字数(200/500/1000): "))
if length <= 0:
raise ValueError
break
except ValueError:
print("请输入有效的正整数!")
当条件分支较多时,可以用字典替代多重if/elif:
python复制style_mapping = {
"温柔": {"role": "温暖治愈的生活导师", "tone": "温柔体贴"},
"硬核": {"role": "技术硬核博主", "tone": "冷峻直接"},
"幽默": {"role": "搞笑创作者", "tone": "幽默风趣"},
"专业": {"role": "专业编辑", "tone": "客观正式"}
}
style = input("选择风格: ").strip().lower()
config = style_mapping.get(style, style_mapping["专业"])
prompt = f"你是一个{config['role']}。\n语气{config['tone']}..."
将不同功能拆分为独立函数,提高代码复用性:
python复制def get_length_constraint(length):
if length <= 200:
return "200字以内,极简有力"
elif length <= 500:
return "500字左右,完整不冗长"
else:
return "1000字以上,详细展开"
def generate_prompt(topic, length):
constraint = get_length_constraint(length)
return f"写一篇关于「{topic}」的文章。{constraint}"
任务:实现一个创意生成器,根据用户输入的数量要求调整输出格式:
python复制count = int(input("需要多少个创意点子?(3/5/10): "))
if count <= 3:
format = "精炼,每条不超过30字"
elif count <= 7:
format = "中等长度,50字左右"
else:
format = "详细展开,100字以上"
prompt = f"脑暴{count}个产品slogan。要求:{format}。"
print(prompt)
任务:创建一个支持多维度输入的提示词生成器:
python复制content_type = input("内容类型(朋友圈/小红书/邮件): ")
emotion = input("情绪(开心/emo/励志/吐槽): ").lower()
emotion_map = {
"开心": "轻松愉快,使用表情符号",
"emo": "深沉感性,略带忧郁",
"励志": "积极向上,鼓舞人心",
"吐槽": "幽默犀利,带点讽刺"
}
type_map = {
"朋友圈": "简短随意,生活化",
"小红书": "图文并茂,实用性强",
"邮件": "正式礼貌,结构清晰"
}
prompt = f"作为{content_type}内容创作者,创作一篇{emotion_map.get(emotion, '中性')}的内容。\n风格要求:{type_map.get(content_type, '通用')}。"
问题:用户输入大小写不一致导致判断失效
解决:统一转换为小写/大写
python复制style = input("输入风格: ").strip().lower()
问题:数字输入的边界值处理不当
解决:明确边界条件
python复制if length < 200: # 而不是 <= 200
# 处理逻辑
问题:用户输入未匹配任何条件
解决:设置合理的默认值
python复制tone = tone_map.get(user_input, "中立客观")
python复制if mood in {"积极", "治愈"}:
# 处理逻辑
在我的一个内容生成项目中,这个技术实现了:
一个典型的业务场景是为电商客户生成产品描述:
python复制product = input("产品名称: ")
audience = input("目标人群(年轻人/专业人士/家长): ").lower()
if audience == "年轻人":
style = "潮流时尚,使用网络流行语"
elif audience == "专业人士":
style = "专业术语,强调技术参数"
else:
style = "突出实用性和性价比"
prompt = f"为{product}撰写电商描述。目标人群:{audience}。\n语言风格:{style}。\n突出3个核心卖点。"
这种条件判断的思路可以应用于更多场景:
例如,实现一个简单的多语言切换:
python复制lang = input("Language(en/zh): ")
prompt_templates = {
"en": "Write a blog post about {topic}...",
"zh": "撰写一篇关于{topic}的文章..."
}
template = prompt_templates.get(lang, prompt_templates["zh"])
prompt = template.format(topic="Python编程")
在实际开发中,我总结了以下几点经验:
一个典型的错误处理改进示例:
python复制try:
length = int(input("字数: "))
if not (100 <= length <= 2000):
raise ValueError("字数应在100-2000之间")
except ValueError as e:
print(f"输入错误: {e}")
# 设置默认值或重新提示输入
通过这个项目,我深刻体会到即使是Python最基础的条件判断,只要结合具体业务场景,也能创造出实实在在的价值。关键在于理解用户需求,并将技术实现与业务逻辑紧密结合。