Docs · App Dev Guide

大模型应用开发

从 Prompt 工程到 AI Agent,一站式覆盖大模型应用开发全链路 —— 让你能在 1 周内跑出生产级 MVP。

Prompt · 5 大设计原则

四要素是「结构」,5 大原则是「内容」 —— 让 Prompt 真正生效的底层准则。

原则 1:明确性优先

模型不会脑补你脑子里的隐含条件。所有「显然如此」都得显式写出来。

# ❌ 模糊
      帮我写个登录功能
      
      # ✅ 明确
      帮我用 FastAPI 写一个 /login 接口,要求:
      - 请求体: {"email": str, "password": str}
      - 返回: {"access_token": str, "token_type": "bearer"}
      - 验证逻辑: 查 PostgreSQL 的 users 表,密码用 bcrypt 比对
      - 失败统一返回 401 + {"detail": "Invalid credentials"}

明确性的本质:消除二义性。任何允许多种解读的指令,都会得到「模型最省事」的那种解读。

原则 2:上下文与语境

补足模型回答所需的背景信息 —— 这是规避幻觉最有效的手段。

# ❌ 无上下文(模型只能瞎猜)
      这个错误怎么解决?
      TypeError: 'NoneType' object is not subscriptable
      
      # ✅ 有上下文
      我在做一个 RAG 系统,技术栈:FastAPI + langchain 0.3 + Qdrant。
      执行 retriever.invoke(query) 时报:
      TypeError: 'NoneType' object is not subscriptable
      
      完整堆栈:
      [贴堆栈]
      
      我的查询是中文,已经过 BGE-zh embedding。
      请帮我定位问题。

经验:贴堆栈 / 贴报错 / 贴版本 三件套,能解决 80% 的「这个为什么不工作」类问题。

原则 3:问题可分解

复杂任务直接抛给模型 → 输出混乱。先人工拆解,再让模型做每一步。

# ❌ 一锅炖
      帮我写一个数据分析报告,要求 SWOT + 趋势预测 + 行动建议
      
      # ✅ 分步骤
      请按以下顺序输出(每节单独一段):
      
      【1. 数据现状】用 3 个核心指标概括当前情况
      【2. SWOT 分析】4 象限分析,每象限 3 条
      【3. 趋势预测】基于过去 6 个月数据线性外推,给出 3 个月预测
      【4. 行动建议】给出 5 条可执行建议,按优先级排序

分解的好处:

  • 每步任务复杂度低,模型不容易跑偏
  • 输出结构清晰,可单步评测
  • 哪一步崩了一目了然

原则 4:结构化 vs 自然语言

不是所有 prompt 都要写得像 SQL。看任务类型选:

任务类型推荐风格
创意写作 / 头脑风暴自然语言,越随意越好
标准化任务(分类 / 提取)结构化,模板化
多轮对话混合,第一轮结构化定调,后续自然语言
Agent 工具调用强结构化 + JSON Schema
# 创意类(自然语言反而效果好)
      我想做一个面向程序员的咖啡品牌,你帮我头脑风暴 10 个有趣的名字
      和对应的 slogan,要有「调试」、「编译」、「死循环」这种梗
      
      # 标准化类(必须结构化)
      角色: 资深安全工程师
      任务: 检查下面代码的 OWASP Top 10 漏洞
      输出: JSON 数组,每项 {type, severity, line, fix}
      代码:
      {code_here}

原则 5:限制条件显式声明

模型默认会「填空」 —— 没说不要做什么时,它会自己加内容。

# ❌ 没说约束(模型会自由发挥)
      帮我写产品介绍
      
      # ✅ 显式约束
      帮我写产品介绍,要求:
      - 不超过 200 字
      - 不要用任何「赋能 / 颠覆 / 闭环」这类词
      - 不要列举竞品
      - 只描述产品本身,不写公司背景
      - 用第二人称(「你」)写给目标用户看

5 大原则的优先级

按踩坑频率排序,前面的优先做:

明确性 → 上下文 → 显式约束 → 可分解 → 结构化 vs 自然语言

新手最容易忘的是明确性显式约束 —— 因为你的脑子里其实是有答案的,但忘了告诉模型。

🎯

实战 Tip:写完一条 prompt,自己冒充模型读一遍 —— 「如果我什么背景都不知道,按这个 prompt 能产出你想要的结果吗?」答案是「能」之前,prompt 就还不够好。

下一节:Zero-shot vs Few-shot —— 该不该给示例。