提示词工程完全指南
·
📘 提示词工程完全指南
从入门到精通:掌握与大语言模型和影视 AI 高效沟通的艺术
📑 目录
1. 提示词 vs 提示词工程
什么是提示词(Prompt)?
提示词是你向 AI 模型输入的文本指令,用于告诉模型你想要什么。
简单示例:
"写一首关于春天的诗"
什么是提示词工程(Prompt Engineering)?
提示词工程是一门关于如何构造和精炼提示词的艺术和科学,目的是最大化 AI 模型的性能,让它产出更符合你需求的、高质量的输出。
工程化示例:
你是一位擅长写现代诗的诗人,请用简洁优美的语言创作一首关于春天的诗。
要求:
- 8-12 行
- 使用意象:花朵、微风、阳光
- 情感基调:温暖、希望
- 避免使用"美丽"、"漂亮"等常见词汇
核心区别
| 维度 | 提示词 | 提示词工程 |
|---|---|---|
| 目标 | 获取回答 | 获取高质量、可预测的回答 |
| 方法 | 随意输入 | 结构化设计 |
| 结果 | 不稳定 | 稳定、可复现 |
| 适用场景 | 日常对话 | 生产环境、工作流集成 |
2. 如何写好提示词
2.1 针对大语言对话模型(LLM)

【角色】你是一位资深 Python 工程师
【任务】帮我写一个函数,用于解析 JSON 数据
【上下文】这个函数将用于处理用户提交的表单数据,需要处理嵌套结构
【格式要求】
- 函数名:parse_nested_json
- 包含错误处理
- 添加类型注解
- 提供使用示例
✅ 最佳实践
- 明确角色 - 给 AI 一个专业身份
- 具体任务 - 清晰描述要做什么
- 提供上下文 - 背景信息帮助 AI 理解
- 指定格式 - 明确输出形式
- 给出示例 - Few-shot prompting 效果更佳
❌ 常见错误
❌ 太模糊:"帮我写代码"
✅ 具体化:"用 Python 写一个快速排序函数,包含单元测试"
❌ 缺少约束:"总结一下这篇文章"
✅ 有约束:"用 3 句话总结这篇文章的核心观点,每句不超过 20 字"
❌ 多重指令混杂:"写个函数还要加注释最好能测试一下顺便优化性能"
✅ 分步指令:"第一步:写函数。第二步:添加注释。第三步:编写测试用例"
2.2 针对影视创作 AI(文生视频/图生视频)
影视创作 AI(如 Sora、Wan2.2、即梦 AI、通义万相等)需要视觉化、具象化的描述。
🎬 视频提示词结构
【主体】+【场景】+【运动/动作】+【镜头语言】+【光影/氛围】+【声音(如支持)】
✅ 优秀示例
主体:一只毛茸茸的小奶猫
场景:冬日清晨的雪地,银装素裹的庭院,积雪厚实松软,周围有结霜的树枝
运动:小猫用前爪滚起一个雪球,笨拙地推着雪球前进,突然雪球裂开,它惊得后跳
镜头:特写镜头,缓慢推近,浅景深
光影:柔和的晨光,雪地反射出温暖的金色光晕
氛围:温馨、治愈、童趣
📝 技巧要点
| 技巧 | 说明 | 示例 |
|---|---|---|
| 动词强调动作 | 使用具体动词描述运动 | “奔跑"→"四肢蹬地,奋力向前冲刺” |
| 描绘运动轨迹 | 说明物体如何移动 | “球滚过草地,划出一道弧线” |
| 镜头语言 | 使用影视术语 | 特写、全景、推镜头、摇摄 |
| 光影描述 | 说明光源和阴影 | “侧逆光,产生轮廓光效果” |
| 情感氛围 | 传达情绪基调 | “压抑的、欢快的、神秘的” |
❌ 避免
- 抽象概念:“表现孤独感”(AI 难以理解)
- 复杂长句:拆分为短句
- 矛盾描述:“既是白天又是黑夜”
3. 提示词工程实战
3.1 标准格式内容生成:JSON 输出
为什么需要结构化输出?
- ✅ 程序可解析
- ✅ 结果可验证
- ✅ 工作流可自动化
基础 JSON 提示词模板
请按照以下 JSON Schema 输出,不要包含任何额外文本:
{
"type": "object",
"required": ["name", "age", "email"],
"properties": {
"name": {"type": "string"},
"age": {"type": "integer"},
"email": {"type": "string", "format": "email"}
}
}
输入数据:张三,25 岁,zhangsan@example.com
进阶技巧
- 设置 temperature=0 - 提高确定性
- 明确说明"只输出 JSON" - 避免多余文本
- 提供示例 - Few-shot 提升准确率
- 使用系统消息 - 在 API 中设置 system role
3.2 Python 多步骤工作流示例
场景:自动化数据处理管道
# workflow.py
import json
import requests
API_KEY = "your-api-key"
API_URL = "https://api.example.com/v1/chat"
def step1_extract_data(text):
"""步骤 1:从文本中提取结构化数据"""
prompt = f"""
从以下文本中提取关键信息,输出 JSON 格式:
- company_name: 公司名称
- revenue: 营收(数字)
- growth_rate: 增长率(百分比)
文本:{text}
只输出 JSON,不要其他内容。
"""
response = requests.post(API_URL, json={
"messages": [{"role": "user", "content": prompt}],
"temperature": 0
})
return json.loads(response.json()["choices"][0]["message"]["content"])
def step2_analyze(data):
"""步骤 2:分析数据并生成洞察"""
prompt = f"""
分析以下公司数据,输出 JSON 格式:
- risk_level: "low" | "medium" | "high"
- recommendations: string[]
- summary: string
数据:{json.dumps(data)}
只输出 JSON。
"""
response = requests.post(API_URL, json={
"messages": [{"role": "user", "content": prompt}],
"temperature": 0.3
})
return json.loads(response.json()["choices"][0]["message"]["content"])
def step3_generate_report(analysis):
"""步骤 3:生成报告"""
prompt = f"""
根据以下分析生成 Markdown 格式的报告:
{json.dumps(analysis)}
报告结构:
# 公司分析报告
## 风险评级
## 建议
## 总结
"""
response = requests.post(API_URL, json={
"messages": [{"role": "user", "content": prompt}],
"temperature": 0.5
})
return response.json()["choices"][0]["message"]["content"]
# 主流程
if __name__ == "__main__":
text = "某某公司 2025 年营收达到 5000 万元,同比增长 23%..."
data = step1_extract_data(text)
print(f"步骤 1 完成:{data}")
analysis = step2_analyze(data)
print(f"步骤 2 完成:{analysis}")
report = step3_generate_report(analysis)
print(f"步骤 3 完成:\n{report}")
关键要点
- 每步独立验证 - 确保 JSON 解析成功再继续
- temperature 分级 - 提取用 0,分析用 0.3,创作用 0.5+
- 错误处理 - 添加 try-except 和重试逻辑
- 日志记录 - 便于调试和审计
4. 高阶技巧
4.1 修改 role 参数实现专项技能
在 API 调用中,role 参数决定消息的类型:
| Role | 用途 | 效果 |
|---|---|---|
system |
系统指令 | 设定 AI 的行为准则和角色 |
user |
用户输入 | 普通对话或任务请求 |
assistant |
AI 回复 | 历史对话记录 |
技巧:用 system role 注入专项技能
{
"messages": [
{
"role": "你是一位资深的数据分析师,擅长从复杂数据中发现模式和洞察。你的回答应该:1) 基于数据 2) 逻辑清晰 3) 提供可操作建议",
"content": "分析xxx销售数据"
}
],
"model": "gemini-2.5-flash-preview"
}
常见专项角色模板
# 代码审查专家
role = """你是一位资深代码审查专家。你的任务是:
1. 识别代码中的 bug 和潜在问题
2. 评估代码质量和可维护性
3. 提供具体的改进建议
4. 保持建设性和友好的语气"""
# 翻译专家
role = """你是一位专业翻译,精通中英文互译。你的翻译应该:
1. 准确传达原意
2. 符合目标语言的表达习惯
3. 保持原文的语气和风格
4. 对文化特定内容添加注释"""
# 创意写作助手
role = """你是一位创意写作教练。你的任务是:
1. 帮助用户激发创意灵感
2. 提供写作技巧和结构建议
3. 给出具体示例
4. 鼓励用户尝试不同风格"""
4.2 多轮对话中的角色一致性
def chat_with_context(user_messages):
"""保持角色一致性的多轮对话"""
system_instruction = {
"role": "你是一位友好的编程导师,用简单易懂的方式解释概念,多举例子,鼓励学生提问。",
"content": "传统提示词输入"
}
messages = [system_instruction] + user_messages
response = requests.post(API_URL, json={
"messages": messages,
"model": "gemini-2.5-flash-preview"
})
# 将 AI 回复加入对话历史,保持上下文
messages.append(response.json()["choices"][0]["message"])
return messages
4.3 动态角色切换
def multi_agent_workflow(task):
"""在一个工作流中使用多个专家角色"""
# 阶段 1:需求分析
analyst_messages = [
{"role": "你是需求分析师,负责理解用户需求并拆解为功能点。", "content": ""}
]
requirements = call_llm(analyst_messages)
# 阶段 2:架构设计
architect_messages = [
{"role": "你是系统架构师,负责设计技术方案。", "content": "传统提示词输入"}
]
architecture = call_llm(architect_messages)
# 阶段 3:代码实现
developer_messages = [
{"role": "你是高级开发工程师,负责编写生产级代码。", "content": "传统提示词输入"}
]
code = call_llm(developer_messages)
return code
AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。
更多推荐

所有评论(0)