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

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

一、什么是提示词工程

最简单理解:

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

它解决的是一个问题:

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

例如:

普通提问:

Plain 复制代码
总结这段话

效果不稳定。

优化后的 Prompt:

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

内容:
{content}

输出就稳定很多。

二、Prompt 设计原则

常见的设计方法:

1 角色设定(Role Prompting)

给模型一个身份。

例如:

Plain 复制代码
你是一名资深前端架构师

示例:

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

好处:

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

2 任务拆解(Task Decomposition)

复杂任务拆成多个步骤。

例如:

Plain 复制代码
1. 提取关键词
2. 总结内容
3. 给出建议

示例:

TypeScript 复制代码
const prompt = `
请按照以下步骤完成任务:

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

文本:
${text}
`

3 Few-shot 示例

给模型示例。

Plain 复制代码
输入:苹果是一种水果
输出:水果

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

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

TS 实现:

TypeScript 复制代码
const prompt = `
请提取类别

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

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

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

4 约束输出格式

例如:

Plain 复制代码
必须输出 JSON

示例:

Plain 复制代码
返回 JSON 格式:

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

TS:

TypeScript 复制代码
const prompt = `
判断图片和文本是否匹配

返回JSON:

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

文本:
${text}
`

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

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

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

示例:Prompt Template

TypeScript 复制代码
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
  }
}

使用:

TypeScript 复制代码
const template = new PromptTemplate(`
你是一个视频审核专家

判断视频是否符合要求:

要求:
{requirement}

视频描述:
{description}

返回 JSON:
{
 "pass": boolean,
 "reason": string
}
`)

调用:

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

多模板形成的 Prompt Chain

复杂任务需要多个 Prompt。

例如:

视频生成流程:

Plain 复制代码
用户需求
   ↓
脚本生成
   ↓
分镜生成
   ↓
视频生成
   ↓
视频评估

TS 示例:

TypeScript 复制代码
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 中会更常见。

四、结构化输出

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

例如:

坏例子:

Plain 复制代码
这个图片挺符合要求的

好例子:

Plain 复制代码
{
 "match": true,
 "score": 0.87,
 "reason": "图片包含猫"
}

TS 实现:

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

五、常见应用

1 AI 客服

Plain 复制代码
用户问题
↓
Prompt
↓
大模型回答

2 内容审核

Plain 复制代码
视频生成
↓
内容校验
↓
语义分析
↓
质量评估

Prompt 示例:

Plain 复制代码
判断视频是否符合以下要求:

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

3 图文匹配

image-text matching 的 ​Prompt:

Plain 复制代码
判断图片是否符合文本描述

返回:

Plain 复制代码
score

4 自动生成内容

例如:

Plain 复制代码
文章
视频脚本
代码
相关推荐
pshdhx_albert7 小时前
AI agent实现打字机效果
java·http·ai编程
古译汉书7 小时前
【IoT死磕系列】Day 9:架构一台“自动驾驶物流车”,看8种协议如何协同作战
网络·arm开发·单片机·物联网·tcp/ip·架构·自动驾驶
沉鱼.448 小时前
第十二届题目
java·前端·算法
KaneLogger8 小时前
从传统笔记到 LLM 驱动的结构化 Wiki
人工智能·程序员·架构
斯外戈的小白8 小时前
【Agent】LangChain 1.0架构
架构·langchain
赫瑞8 小时前
数据结构中的排列组合 —— Java实现
java·开发语言·数据结构
小橘子8319 小时前
(学习)Claude Code 源码架构深度解析
学习·程序人生·架构
周末也要写八哥10 小时前
多进程和多线程的特点和区别
java·开发语言·jvm
C'ᴇsᴛ.小琳 ℡10 小时前
架构技术演进的方向
架构
刀法如飞10 小时前
Agentic Workflow 设计与实战指南
架构·agent·ai编程