提示词工程(Prompt Engineering)是一门专注于通过优化输入指令来精确引导大语言模型输出的技术。它无需调整模型内部参数,而是通过系统化设计Prompt,使AI的生成结果更稳定、可控且易于评估。

一、什么是提示词工程
我们可以将其核心定义为:
提示词工程 = 如何写Prompt + 如何用代码管理Prompt
它旨在解决大模型作为概率预测系统所固有的输出不确定性问题。通过一系列工程化技巧,提示词工程能够有效引导这个“黑盒”按照预设的意图、格式和标准生成内容。
对比示例:
基础提问:“总结这段话”可能导致回复格式杂乱、长度不一。
优化后的Prompt:“你是一名技术文档专家。请用三个要点总结以下内容,每个要点不超过20字。内容:{content}”
优化后,输出的结构、长度和质量都得到了显著提升,更便于实际应用。
二、Prompt 设计核心原则
要设计出高效的Prompt,可以遵循以下几个经过验证的核心原则。
1. 角色设定(Role Prompting)
为模型赋予一个明确的专业身份,能深度影响其回答的风格、视角和详尽程度。例如:“你是一位拥有十年经验的前端架构师”。
代码实现示例:
const prompt = `你是一名资深前端架构师,请从工程实践角度解释 React 的 diff 算法原理`
这种方法能确保输出内容更具专业性和一致性。
2. 任务拆解(Task Decomposition)
对于复杂需求,应将任务分解为清晰的、循序渐进的子步骤,引导模型逐步完成。
例如,文本分析任务可拆解为:“第一步:提取核心关键词;第二步:归纳段落主旨;第三步:提出优化建议”。
代码中的Prompt构建:
const prompt = `请按顺序执行以下任务:1. 提取文本中的关键实体;2. 用一句话概括文本大意;3. 基于内容提出一项可行性建议。文本:${text}`
3. Few-shot 示例(少样本学习)
当模型对任务格式不明确时,提供少量输入输出示例能快速引导其掌握模式。
分类任务示例:
输入:苹果是一种水果
输出:水果
输入:老虎是一种动物
输出:动物
输入:香蕉是一种水果
输出:
TypeScript实现方式:
const prompt = `请根据示例推断类别。示例:输入‘苹果是一种水果’,输出‘水果’。输入‘老虎是一种动物’,输出‘动物’。现在请判断:输入‘香蕉是一种水果’,输出:`
4. 约束输出格式
为便于程序化处理,必须明确指定输出的数据结构格式,如JSON、XML或特定标记语言。
例如:“请以JSON格式输出,包含‘score’(数值)和‘reason’(字符串)两个字段。”
具体代码示例:
const prompt = `评估图片与文本的相关性。请返回严格的JSON格式:{"score": number, "reason": string}。文本:${text}`
三、Prompt 模板化(工程实践)
在实际项目开发中,应将Prompt设计为可复用的模板或技能(Skills),避免硬编码,提升维护性和一致性。
示例:Prompt Template
一个基础的Prompt模板类实现如下:
class PromptTemplate {
constructor(private template: string) {}
format(data: Record) {
let result = this.template
for (const key in data) {
result = result.replace(`{${key}}`, data[key])
}
return result
}
}
应用示例:
const template = new PromptTemplate(
`你是一名专业的视频内容审核员。请根据要求审核视频。
审核标准:{requirement}
视频内容描述:{description}
请返回JSON结果:{ "pass": boolean, "reason": string}`
)
动态生成Prompt:
const prompt = template.format({
requirement: "视频主题需包含动物元素",
description: "这是一段关于小狗在公园奔跑的视频"
})
多模板形成的 Prompt Chain
复杂业务流程通常需要多个Prompt串联,形成处理链(Prompt Chain),实现分阶段的任务协作。
以AI视频制作为例,典型工作流为:需求分析 → 脚本撰写 → 分镜设计 → 视频合成 → 质量评估。
代码化的工作流示意:
async function generateScript(topic: string) {
return llm(`请为以下主题创作一个短视频脚本。主题:${topic}`)
}
async function generateStoryboard(script: string) {
return llm(`请根据脚本内容,设计详细的分镜头描述。脚本:${script}`)
}
async function generateVideo(storyboard: string) {
return videoModel(storyboard)
}
async function workflow(topic: string) {
const script = await generateScript(topic)
const storyboard = await generateStoryboard(script)
const video = await generateVideo(storyboard)
return video
}
此类链式调用在LangChain、LangGraph等AI应用框架中已成为标准实践。
四、结构化输出
在工程化应用中,结构化输出是必备条件。非结构化的自然语言文本难以被程序自动化解析和使用。
对比示例:模糊回答“图片基本符合描述” vs. 结构化输出 { "match": true, "score": 0.87, "reason": "图片中清晰包含了一只猫"}。后者可直接被下游代码消费。
实现结构化输出的TypeScript函数示例:
async function evaluateImage(text: string, imageDesc: string) {
const prompt = `进行图文匹配度评估。
文本描述:${text}
图片描述:${imageDesc}
请返回JSON格式结果:{ "match": boolean, "score": number, "reason": string}`
const res = await llm(prompt)
return JSON.parse(res)
}
五、常见应用场景
提示词工程已广泛应用于各类AI驱动的产品与服务中。
1. AI 智能客服
核心流程:用户输入问题,经过优化的客服Prompt引导大模型生成准确、友好且有用的回答,提升客服自动化水平与用户体验。
2. 内容安全审核
通过设计多轮审核Prompt,对UGC内容进行自动化校验。例如:“审核视频是否满足:1. 主题包含指定动物;2. 背景为自然环境;3. 视频时长在5-15秒之间”。
3. 图文匹配与多模态理解
在多模态AI任务中,Prompt用于评估图文一致性。例如:“判断图片内容是否准确反映了文本描述”,并输出量化的匹配分数,使结果可衡量、可比较。
4. 自动化内容生成
这是目前最普及的应用之一。通过定制不同的Prompt,AI可以高效辅助生成营销文案、技术博客、视频脚本甚至可执行代码片段,大幅提升内容生产效率。
