F FisherHub Docs

Prompt Engineering

什么是 Prompt Engineering

Prompt Engineering(提示词工程)是通过设计和优化输入文本,引导大语言模型生成期望输出的技术。它是当前使用 LLM 时最直接、成本最低的优化手段。

基本原则

1. 清晰明确

模型对模糊指令的理解往往不可靠。用具体、可衡量的语言描述需求。

❌ 写一篇关于 AI 的文章
✅ 写一篇 800 字的中文科普文章,面向高中生,解释 Transformer 的自注意力机制,
   要求包含一个类比和一张 ASCII 示意图

2. 分步指示

复杂的任务拆解成多个步骤,模型在每一步都能看到中间结果,减少出错概率。

第一步:分析用户问题的实体和关系
第二步:检索相关知识库
第三步:基于检索结果生成回答
第四步:检查回答中是否存在事实错误

3. 提供示例

用输入输出对来定义格式和风格预期。这在结构化输出任务中尤其重要。

4. 指定角色和约束

给模型一个”角色”能显著改变输出风格和内容选择。

你是一个资深 Python 技术面试官。你的任务是出题考察候选人对
异步编程的理解。每次只出一个问题,用中文提问,难度为中级。

高级技巧

Few-shot Prompting

在提示词中提供少量示例,让模型通过模式匹配理解任务。

# 结构化输出示例
examples = [
    {"input": "苹果发布了新款 MacBook Pro", "output": '{"entity": "MacBook Pro", "org": "Apple", "type": "product_release"}'},
    {"input": "特斯拉股价下跌 5%", "output": '{"entity": "Tesla", "org": "Tesla Inc.", "type": "stock_movement"}'},
]

def build_few_shot_prompt(examples, query):
    prompt = "从文本中提取结构化信息:\n\n"
    for ex in examples:
        prompt += f"输入:{ex['input']}\n输出:{ex['output']}\n\n"
    prompt += f"输入:{query}\n输出:"
    return prompt

Chain-of-Thought (CoT)

引导模型在给出最终答案前展示推理步骤。CoT 在数学、逻辑推理任务上有显著提升。

问题:一个长方形长 12 米,宽是长的 1/3,求面积。

让我们逐步推理:
1. 宽 = 12 × 1/3 = 4 米
2. 面积 = 长 × 宽 = 12 × 4 = 48 平方米
答案:48 平方米

Tree-of-Thought (ToT)

ToT 让模型在多个推理分支上同时探索,评估各分支的可行性后选择最优路径。在需要规划或搜索的任务中,ToT 比 CoT 更有效。

问题:用 4 升和 9 升的水壶量出 6 升水。

探索方案 A:
- 装满 9L,倒入 4L(剩 5L)
- 倒空 4L,再倒入(剩 1L)
- ... 继续

探索方案 B:
- 装满 4L,倒入 9L(4/9)
- 再装满 4L,倒入(8/9)
- ... 继续

评估:方案 A 只需 4 步,方案 B 需 7 步,选择方案 A。

ReAct (Reasoning + Acting)

将推理和行动交替进行,适合需要调用外部工具的 Agent 场景。

# ReAct 循环伪代码
def react_loop(question, tools):
    thought = analyze(question)
    action = decide_action(thought, tools)
    observation = call_tool(action)
    if goal_achieved(observation):
        return final_answer(observation)
    else:
        return react_loop(f"{question}\n新信息:{observation}", tools)

系统提示词设计

系统提示词定义模型的全局行为。一个好的系统提示词包含:

  1. 角色定义:你是谁,你能做什么
  2. 行为边界:什么能做,什么不能做
  3. 输出格式:偏好结构还是自由文本
  4. 安全约束:如何处理敏感内容
你是一个专业的学术写作助手。
- 只基于事实信息回答,不确定时明确说不知道
- 保持中立客观的语气
- 支持 Markdown 格式输出
- 拒绝回答涉及违法的请求
- 每次回复控制在 500 字以内

常见陷阱

  1. 过度约束:过多的规则会让模型”想太多”,反而降低效果
  2. 位置偏差:模型对提示词开头和结尾的内容更敏感,重要的信息放在这两处
  3. 否定指令:“不要提到 X” 有时会产生反效果,不如正面引导
  4. 模板固化:提示词模板需要定期测试,模型版本更新后行为可能会变