内容纲要
一、提示工程的核心定义
提示工程就是通过设计输入(Prompt)来影响大模型的输出行为。
大模型(LLM)是一个条件概率分布函数:
$$
P(\text{输出}|\text{输入}, \text{上下文}, \theta)
$$
其中,输入(Prompt)就是对模型条件的约束,好的 Prompt 可以让模型在庞大的知识空间里聚焦到期望的结果。
二、提示工程的基本原理
-
大模型的本质是“条件语言建模”
- 训练目标:预测下一个 Token。
- 提示的作用:给定一个起始条件,引导模型在概率分布中“走正确的路径”。
-
提示影响的三个核心维度
- 上下文引导(Contextual Guidance):你输入的描述会影响模型调用到的“潜在知识”。
- 格式约束(Format Constraint):用明确的结构/规则(JSON、表格、代码框)强制模型输出标准化结果。
- 任务分解(Decomposition):复杂任务通过逐步提示,减少模型“走偏”的可能。
-
语言表述的敏感性
- 模型对不同词语、顺序、长度都敏感。
- 比如:“请写一篇文章” vs “请用 Markdown 写一篇 2000 字的文章,包含标题、摘要、正文、参考文献”。
- 第二种更能收敛到正确输出。
三、常见提示工程技巧
-
角色设定(Role Prompting)
- 让模型“扮演某个角色”,缩小输出风格范围。
-
示例:
你是一名资深 Java 架构师,请为我设计一个高并发电商秒杀系统的架构。
-
思维链提示(Chain-of-Thought Prompting, CoT)
- 让模型显式输出推理步骤,提升复杂任务正确率。
-
示例:
请逐步推理并给出最终答案。
-
少样本 / 多样本提示(Few-shot / Many-shot Prompting)
- 提供示例,帮助模型学习模式。
-
示例:
输入:1+1 输出:2 输入:2+3 输出:5 输入:7+9 输出:
-
自洽性提示(Self-Consistency)
- 让模型多次生成答案,再通过投票或聚合选择结果,降低随机性。
-
ReAct(Reason + Act)
- 结合思考(Reasoning)与工具调用(Action),是 Agent 机制的基础。
四、架构设计中的提示工程
在系统层面,提示工程并不是单点的,而是要设计提示链路和控制机制:
- 多阶段 Prompt:数据预处理 → 任务分解 → 子任务调用 → 聚合结果。
- 外部知识注入(RAG):提示里嵌入检索的知识文档,保证输出可信。
- 模板化管理:提示抽象为参数化模板,支持不同场景复用。
示例架构:
flowchart LR
A[用户输入] --> B[Prompt 模板生成器]
B --> C[LLM调用]
C --> D{是否需要外部知识}
D -->|是| E[知识库RAG检索]
E --> F[重新构造Prompt]
D -->|否| F
F --> G[LLM输出结果]
五、Java & Python 简单 Demo
Java 调用示例(OpenAI API)
import com.theokanning.openai.service.OpenAiService;
import com.theokanning.openai.completion.chat.*;
import java.util.List;
public class PromptDemo {
public static void main(String[] args) {
OpenAiService service = new OpenAiService("YOUR_API_KEY");
ChatMessage system = new ChatMessage("system", "你是一名Java高级架构师。");
ChatMessage user = new ChatMessage("user", "请设计一个支持分布式事务的订单系统。");
ChatCompletionRequest request = ChatCompletionRequest.builder()
.model("gpt-4o")
.messages(List.of(system, user))
.build();
ChatCompletionResult result = service.createChatCompletion(request);
System.out.println(result.getChoices().get(0).getMessage().getContent());
}
}
Python 调用示例
from openai import OpenAI
client = OpenAI(api_key="YOUR_API_KEY")
messages = [
{"role": "system", "content": "你是一名Python数据科学专家。"},
{"role": "user", "content": "请写一个ETL数据清洗的代码示例,包含缺失值处理。"}
]
resp = client.chat.completions.create(
model="gpt-4o",
messages=messages
)
print(resp.choices[0].message.content)
六、总结
- 提示工程的本质:通过输入设计来操纵模型的输出分布。
- 原理:大模型是条件概率分布,Prompt = 控制条件。
- 方法:角色设定、思维链、Few-shot、ReAct、模板化。
- 工程化:结合 架构设计、RAG、模板管理,才能真正落地。