📘 提示词工程完全指南

从入门到精通:掌握与大语言模型和影视 AI 高效沟通的艺术


📑 目录

  1. 提示词 vs 提示词工程
  2. 如何写好提示词
  3. 提示词工程实战
  4. 高阶技巧

1. 提示词 vs 提示词工程

什么是提示词(Prompt)?

提示词是你向 AI 模型输入的文本指令,用于告诉模型你想要什么。

简单示例:
"写一首关于春天的诗"

什么是提示词工程(Prompt Engineering)?

提示词工程是一门关于如何构造和精炼提示词的艺术和科学,目的是最大化 AI 模型的性能,让它产出更符合你需求的、高质量的输出。

工程化示例:
你是一位擅长写现代诗的诗人,请用简洁优美的语言创作一首关于春天的诗。
要求:
- 8-12 行
- 使用意象:花朵、微风、阳光
- 情感基调:温暖、希望
- 避免使用"美丽"、"漂亮"等常见词汇

核心区别

维度 提示词 提示词工程
目标 获取回答 获取高质量、可预测的回答
方法 随意输入 结构化设计
结果 不稳定 稳定、可复现
适用场景 日常对话 生产环境、工作流集成

2. 如何写好提示词

2.1 针对大语言对话模型(LLM)

提示词黄金公式

【角色】你是一位资深 Python 工程师
【任务】帮我写一个函数,用于解析 JSON 数据
【上下文】这个函数将用于处理用户提交的表单数据,需要处理嵌套结构
【格式要求】
- 函数名:parse_nested_json
- 包含错误处理
- 添加类型注解
- 提供使用示例
✅ 最佳实践
  1. 明确角色 - 给 AI 一个专业身份
  2. 具体任务 - 清晰描述要做什么
  3. 提供上下文 - 背景信息帮助 AI 理解
  4. 指定格式 - 明确输出形式
  5. 给出示例 - 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
进阶技巧
  1. 设置 temperature=0 - 提高确定性
  2. 明确说明"只输出 JSON" - 避免多余文本
  3. 提供示例 - Few-shot 提升准确率
  4. 使用系统消息 - 在 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}")
关键要点
  1. 每步独立验证 - 确保 JSON 解析成功再继续
  2. temperature 分级 - 提取用 0,分析用 0.3,创作用 0.5+
  3. 错误处理 - 添加 try-except 和重试逻辑
  4. 日志记录 - 便于调试和审计

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
Logo

AtomGit 是由开放原子开源基金会联合 CSDN 等生态伙伴共同推出的新一代开源与人工智能协作平台。平台坚持“开放、中立、公益”的理念,把代码托管、模型共享、数据集托管、智能体开发体验和算力服务整合在一起,为开发者提供从开发、训练到部署的一站式体验。

更多推荐