这才称得上是提示词工程!

3 阅读2分钟

提示词工程(Prompt Engineering)是 ​在不微调模型参数的情况下,通过设计输入提示(Prompt)来控制大模型输出行为的一种工程方法​。它的核心目标是:​让大模型稳定、可控、可评估地完成任务​。

一、什么是提示词工程

最简单理解:

Prompt Engineering = 如何写Prompt + 如何用代码管理Prompt

它解决的是一个问题:

大模型本质是概率预测,你需要让它尽量按你的意图输出。

例如:

普通提问:

总结这段话

效果不稳定。

优化后的 Prompt:

你是一个技术文档助手。
请用三条 bullet point 总结下面内容。
每条不超过20字。

内容:
{content}

输出就稳定很多。

二、Prompt 设计原则

常见的设计方法:

1 角色设定(Role Prompting)

给模型一个身份。

例如:

你是一名资深前端架构师

示例:

const prompt = `
你是一名资深前端架构师
请解释 React diff 算法
`

好处:

  • 输出更专业
  • 风格更稳定

2 任务拆解(Task Decomposition)

复杂任务拆成多个步骤。

例如:

1. 提取关键词
2. 总结内容
3. 给出建议

示例:

const prompt = `
请按照以下步骤完成任务:

1. 提取文本关键词
2. 总结文本
3. 给出改进建议

文本:
${text}
`

3 Few-shot 示例

给模型示例。

输入:苹果是一种水果
输出:水果

输入:老虎是一种动物
输出:动物

输入:香蕉是一种水果
输出:

TS 实现:

const prompt = `
请提取类别

输入:苹果是一种水果
输出:水果

输入:老虎是一种动物
输出:动物

输入:香蕉是一种水果
输出:
`

4 约束输出格式

例如:

必须输出 JSON

示例:

返回 JSON 格式:

{
 "score": number,
 "reason": string
}

TS:

const prompt = `
判断图片和文本是否匹配

返回JSON:

{
  "score": number,
  "reason": string
}

文本:
${text}
`

三、Prompt 模板化(工程实践)

在真实项目中,Prompt ​不能写死在代码里​。

通常做成 ​模板系统​。比如一些内置的 Skills 或者 Tools 。

示例:Prompt Template

class PromptTemplate {
  constructor(
    private template: string
  ) {}

  format(data: Record<string, string>) {
    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
}
`)

调用:

const prompt = template.format({
  requirement: "必须包含动物",
  description: "视频是一只狗在跑"
})

多模板形成的 Prompt Chain

复杂任务需要多个 Prompt。

例如:

视频生成流程:

用户需求
   ↓
脚本生成
   ↓
分镜生成
   ↓
视频生成
   ↓
视频评估

TS 示例:

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
}

这就是 ​Prompt Chain​。在 LangChain / LangGraph 中会更常见。

四、结构化输出

工程中 ​必须结构化输出​。否则你没法处理。

例如:

坏例子:

这个图片挺符合要求的

好例子:

{
 "match": true,
 "score": 0.87,
 "reason": "图片包含猫"
}

TS 实现:

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)
}

五、常见应用

1 AI 客服

用户问题
↓
Prompt
↓
大模型回答

2 内容审核

视频生成
↓
内容校验
↓
语义分析
↓
质量评估

Prompt 示例:

判断视频是否符合以下要求:

1 包含动物
2 场景是森林
3 时长不超过10秒

3 图文匹配

image-text matching 的 ​Prompt:

判断图片是否符合文本描述

返回:

score

4 自动生成内容

例如:

文章
视频脚本
代码