【高级应用】Day5:Prompt工程–5种核心框架让AI更懂你
章节导语
同样问AI”帮我写代码”,有人写出来能用,有人写出来报错。为啥?Prompt不一样。
Prompt工程不是玄学,是有章可循的技术。好的Prompt能让AI准确理解意图,输出你需要的内容。
本文系统讲解5种核心Prompt框架,每种都有完整代码和案例。
一,前置说明
1.1 学习路径
| 阶段 | 内容 |
|---|---|
| 基础 | Prompt基础 |
| 进阶 | 5种核心框架 |
1.2 读者需要的基础
- 大模型调用:知道怎么用OpenAI API
- Python基础:会写函数
1.3 学习目标
学完本文,你将能够:
- 掌握5种核心Prompt框架
- 写出清晰、准确、稳定的Prompt
- 针对不同场景优化Prompt
二、Prompt的本质
2.1 什么是Prompt
Prompt是你给AI的指令。AI根据这个指令生成输出。
类比:
- 传统编程:代码 → 编译器 → 输出
- Prompt编程:自然语言指令 → LLM → 输出
2.2 影响效果的因素
- 清晰度:指令是否明确、无歧义
- 完整性:是否提供必要的上下文
- 具体性:约束条件是否具体
- 格式:输出格式是否明确
三、ICIO框架:最基础的框架
3.1 框架结构
ICIO = Instruction + Context + Input + Output。
- Instruction(指令):告诉AI要做什么
- Context(上下文):提供背景信息
- Input(输入):具体的数据或问题
- Output(输出):期望的输出格式
3.2 代码实现
from openai import OpenAI
client = OpenAI()
def icio_prompt(instruction, context, input_text, output_format):
"""ICIO框架 Prompt构建
参数:
instruction: 指令(做什么)
context: 上下文(背景信息)
input_text: 输入内容
output_format: 输出格式要求
返回:
完整的Prompt
"""
prompt = f"""{instruction}
【背景】
{context}
【输入】
{input_text}
【输出格式】
{output_format}"""
return prompt
def ask(prompt):
"""发送请求"""
response = client.chat.completions.create(
model="gpt-3.5-turbo",
messages=[{"role": "user", "content": prompt}]
)
return response.choices[0].message.content
# 示例:翻译任务
if __name__ == "__main__":
prompt = icio_prompt(
instruction="你是一个翻译专家,负责将英文翻译成中文",
context="这是硅谷科技公司的产品介绍",
input_text="Our AI platform helps businesses automate workflows",
output_format="中文翻译,保持专业语气"
)
print("Prompt:\n", prompt)
print("\n" + "=" * 50)
print("AI回复:\n", ask(prompt))
3.3 运行结果
$ python icio_example.py
Prompt:
你是一个翻译专家,负责将英文翻译成中文
【背景】
这是硅谷科技公司的产品介绍
【输入】
Our AI platform helps businesses automate workflows
【输出格式】
中文翻译,保持专业语气
AI回复:
我们的AI平台帮助企业自动化工作流程。
3.4 适用场景
- 简单翻译、摘要、改写
- 格式化输出
- 一次性任务
3.5 小结
ICIO是最基础的框架,适合简单任务。
3.6 练习题
基础题:用ICIO框架写一个”代码审查”的Prompt。
四、CRISPE框架:复杂任务利器
4.1 框架结构
CRISPE = Capacity + Role + Insight + Statement + Predicate + Experiment。
- Capacity/Role:设定AI的角色
- Insight:提供背景和洞察
- Statement:明确任务声明
- Predicate:指定输出格式
- Experiment:可选的实验/示例
4.2 代码实现
from openai import OpenAI
client = OpenAI()
def crispe_prompt(role, capability, insight, statement, output_format, examples=None):
"""CRISPE框架 Prompt构建
适合复杂任务,需要深度专业知识的场景
"""
prompt = f"""【角色】
{role}
【能力说明】
{capability}
【背景洞察】
{insight}
【任务声明】
{statement}
【输出格式】
{output_format}"""
if examples:
prompt += f"\n\n【示例】\n{examples}"
return prompt
def ask(prompt):
response = client.chat.completions.create(
model="gpt-3.5-turbo",
messages=[{"role": "user", "content": prompt}]
)
return response.choices[0].message.content
# 示例:资深架构师代码审查
if __name__ == "__main__":
prompt = crispe_prompt(
role="你是一位有15年经验的Python架构师,专注于代码可维护性和性能优化",
capability="你擅长发现代码中的问题,提供改进建议,评估代码是否符合Pythonic风格",
insight="用户正在开发一个数据处理服务,需要处理大量并发请求,当前实现可能存在性能瓶颈",
statement="请审查以下Python代码,指出:1)潜在bug 2)性能问题 3)可改进之处 4)代码风格建议",
output_format="分点回答,每点包含:问题描述、严重程度(高/中/低)、改进建议"
)
print("Prompt长度:", len(prompt))
print("\nAI回复:\n", ask(prompt))
4.3 适用场景
- 需要深度专业知识的任务
- 复杂分析和决策
- 专业领域咨询
4.4 小结
CRISPE适合复杂任务,需要AI具备特定专业能力时使用。
4.5 练习题
进阶题:设计一个”职业规划顾问”的CRISPE Prompt。
五、CO-STAR框架:结构化输出
5.1 框架结构
CO-STAR = Context + Objective + Style + Tone + Audience + Response。
- Context:提供背景
- Objective:明确目标
- Style:指定风格
- Tone:指定语气
- Audience:明确受众
- Response:指定响应格式
5.2 代码实现

from openai import OpenAI
client = OpenAI()
def co_star_prompt(context, objective, style, tone, audience, response_format):
"""CO-STAR框架 Prompt构建
适合需要特定风格和格式的输出
"""
prompt = f"""【背景】
{context}
【目标】
{objective}
【风格】
{style}
【语气】
{tone}
【受众】
{audience}
【响应格式】
{response_format}"""
return prompt
def ask(prompt):
response = client.chat.completions.create(
model="gpt-3.5-turbo",
messages=[{"role": "user", "content": prompt}]
)
return response.choices[0].message.content
# 示例:写商务邮件
if __name__ == "__main__":
prompt = co_star_prompt(
context="我是XX公司的技术总监,想联系YY公司的CEO李明,讨论技术合作事宜",
objective="预约一个30分钟的电话会议",
style="商务正式,使用专业术语但不过度",
tone="友好但专业,有合作诚意",
audience="对方是中型科技公司的CEO,技术背景深厚",
response_format="邮件格式,包含:主题行、称呼、正文(3段以内)、结束语、签名"
)
print("AI回复:\n", ask(prompt))
5.3 运行结果
$ python co_star.py
AI回复:
主题:关于技术合作探讨 - 预约30分钟电话会议
尊敬的李明先生:
您好!
我是XX公司的技术总监,长期关注YY公司的发展,对贵司在XX领域的技术积累印象深刻...
此致
敬礼
XX公司技术总监 张三
5.4 适用场景
- 商务沟通、正式写作
- 需要特定文风的任务
- 面向特定受众的内容
5.5 小结
CO-STAR适合需要精确控制风格和语气的场景。
5.6 练习题
基础题:用CO-STAR框架设计”小红书种草文案”的Prompt。
六、BROKE框架:目标导向
6.1 框架结构
BROKE = Background + Role + Objectives + Key Results + Evolve。
- Background:描述背景
- Role:设定角色
- Objectives:明确目标
- Key Results:关键结果(可量化)
- Evolve:评估和改进
6.2 代码实现

from openai import OpenAI
client = OpenAI()
def broke_prompt(background, role, objectives, key_results, evolve=None):
"""BROKE框架 Prompt构建
适合目标明确、需要量化结果的场景
"""
prompt = f"""【背景】
{background}
【角色】
{role}
【目标】
{objectives}
【关键结果】(请量化)
{key_results}"""
if evolve:
prompt += f"\n\n【评估改进】\n{evolve}"
return prompt
def ask(prompt):
response = client.chat.completions.create(
model="gpt-3.5-turbo",
messages=[{"role": "user", "content": prompt}]
)
return response.choices[0].message.content
# 示例:制定OKR
if __name__ == "__main__":
prompt = broke_prompt(
background="公司是一家中型电商企业,目前月活用户100万,计划拓展下沉市场",
role="你是一个OKR战略顾问,擅长帮助企业制定可执行的OKR",
objectives="在3个月内将月活用户从100万增长到150万",
key_results="""KR1:新增下沉市场用户30万(可通过地推、电商平台合作)
KR2:提升用户留存率10%(优化产品体验、会员体系)
KR3:提高用户活跃度15%(推送策略优化、签到激励)""",
evolve="请分析这个OKR的可行性,并提出调整建议"
)
print("AI回复:\n", ask(prompt))
6.3 适用场景
- 战略规划、OKR制定
- 项目管理
- 需要量化评估的任务
6.4 小结
BROKE适合目标导向、需要量化结果的任务。
6.5 练习题
进阶题:用BROKE框架为”一个月内学会Python基础”制定执行计划。
七、SCRIPTS框架:流程任务
7.1 框架结构
SCRIPTS = Background + Constraints + Role + Instructions + Process + Output + Scoring。
- Background:背景
- Constraints:约束条件
- Role:角色
- Instructions:指令
- Process:流程
- Output:输出格式
- Scoring:评分标准
7.2 代码实现
def scripts_prompt(background, constraints, role, instructions, process, output, scoring):
"""SCRIPTS框架 Prompt构建
适合流程性任务,需要明确步骤和评分标准
"""
prompt = f"""【背景】
{background}
【约束条件】
{constraints}
【角色】
{role}
【指令】
{instructions}
【流程】
{process}
【输出格式】
{output}
【评分标准】
{scoring}"""
return prompt
def ask(prompt):
response = client.chat.completions.create(
model="gpt-3.5-turbo",
messages=[{"role": "user", "content": prompt}]
)
return response.choices[0].message.content
# 示例:代码评审
if __name__ == "__main__":
prompt = scripts_prompt(
background="团队正在开发一个电商后端服务,使用Python+Django",
constraints="代码需要符合PEP8规范,不能有安全漏洞",
role="你是一个代码评审专家",
instructions="请对提交的代码进行全面评审",
process="1.检查代码规范 2.检查安全 3.检查性能 4.检查可维护性",
output="分四个维度打分(1-10分),并给出具体改进建议",
scoring="总分40分,低于24分需要重写"
)
print("AI回复:\n", ask(prompt))
7.3 适用场景
- 流程性任务
- 需要评分和评估的任务
- 需要明确步骤的复杂任务
7.4 小结
SCRIPTS适合流程性任务,能明确评估标准。
八、实战:构建Prompt优化助手
8.1 需求分析
综合运用以上框架,构建一个Prompt优化工具:
- 输入粗糙Prompt
- 自动分析问题
- 生成优化后的Prompt
- 支持多种框架选择
8.2 完整代码

from openai import OpenAI
client = OpenAI()
class PromptOptimizer:
"""Prompt优化器
综合运用5种框架,自动优化Prompt
"""
def analyze(self, prompt):
"""分析Prompt问题"""
analysis_prompt = f"""请分析以下Prompt的问题:
{prompt}
请指出:
1. 是否清晰(指令是否明确)
2. 是否完整(上下文是否足够)
3. 是否具体(约束条件是否明确)
4. 输出格式是否清晰
5. 其他问题"""
response = client.chat.completions.create(
model="gpt-3.5-turbo",
messages=[{"role": "user", "content": analysis_prompt}]
)
return response.choices[0].message.content
def optimize(self, prompt, framework='ICIO'):
"""优化Prompt"""
framework_guide = {
'ICIO': "使用ICIO框架优化:Instruction + Context + Input + Output",
'CRISPE': "使用CRISPE框架优化:角色 + 能力 + 洞察 + 任务 + 格式 + 示例",
'CO-STAR': "使用CO-STAR框架优化:背景 + 目标 + 风格 + 语气 + 受众 + 格式",
'BROKE': "使用BROKE框架优化:背景 + 角色 + 目标 + 关键结果 + 演化",
'SCRIPTS': "使用SCRIPTS框架优化:背景 + 约束 + 角色 + 指令 + 流程 + 输出 + 评分"
}
optimize_prompt = f"""请将以下Prompt优化为{framework}格式。
原始Prompt:
{prompt}
优化要求:
{framework_guide.get(framework, '')}
请提供:
1. 优化后的完整Prompt
2. 优化说明"""
response = client.chat.completions.create(
model="gpt-3.5-turbo",
messages=[{"role": "user", "content": optimize_prompt}]
)
return response.choices[0].message.content
def chat(self, rough_prompt, action='optimize', framework='ICIO'):
"""对话入口"""
print(f"📝 原始Prompt:{rough_prompt}\n")
if action == 'analyze':
result = self.analyze(rough_prompt)
print(f"🔍 分析结果:\n{result}")
else:
result = self.optimize(rough_prompt, framework)
print(f"✨ 优化结果({framework}框架):\n{result}")
return result
def run_demo(self):
"""演示"""
rough_prompts = [
"帮我写代码",
"写一封邮件给老板请假",
"分析一下这个数据"
]
frameworks = ['ICIO', 'CRISPE', 'CO-STAR']
for i, prompt in enumerate(rough_prompts):
framework = frameworks[i % len(frameworks)]
print(f"\n{'='*60}")
print(f"[案例{i+1}] 框架:{framework}")
print("="*60)
self.chat(prompt, action='optimize', framework=framework)
# 测试
if __name__ == "__main__":
optimizer = PromptOptimizer()
optimizer.run_demo()
8.3 框架选择指南
| 场景 | 推荐框架 |
|---|---|
| 简单任务、快速输出 | ICIO |
| 复杂任务、需要专业深度 | CRISPE |
| 需要特定风格 | CO-STAR |
| 目标导向、需要量化 | BROKE |
| 流程性任务 | SCRIPTS |
九、总结与练习
9.1 要点回顾
- ICIO:最基础,通用场景
- CRISPE:复杂任务,专业深度
- CO-STAR:结构化输出,特定风格
- BROKE:目标导向,量化结果
- SCRIPTS:流程任务,评分标准
9.2 Prompt优化检查清单
□ 指令是否清晰?(让AI知道要做什么)
□ 上下文是否足够?(让AI知道背景)
□ 约束是否具体?(限制条件明确)
□ 输出格式是否清晰?(期望的格式/长度/风格)
□ 有无歧义?(避免AI误解)
□ 示例是否必要且正确?(帮助AI理解)
9.3 延伸阅读
- OpenAI Prompting Guide:官方Prompt编写指南
- Anthropic Prompt Engineering:Claude的Prompt工程指南
9.4 课后练习
基础题:用ICIO框架优化”帮我写代码”这个Prompt。
进阶题:为你自己的工作场景设计专属的CRISPE Prompt模板。
挑战题:构建一个Prompt评估系统,能自动给Prompt打分并提供改进建议。