Skip to Content
教程Prompt

提示工程

提示工程(Prompt Engineering)是把任务讲清楚的能力:你给模型的输入越清晰、越可验证,输出越稳定、越可复用。对百灵大模型同样适用。

这篇文档总结一套可落地的提示编写方法:从“目标与约束”出发,逐步补齐上下文格式示例评测,让输出更可靠。


核心概念

维度你要做什么典型收益
目标明确要完成的任务与成功标准降低跑题、减少追问
约束限制输出范围、语气、长度、禁止事项更一致、更可控
上下文提供必要材料(事实/规则/数据/代码片段)并标出边界减少幻觉、提升准确性
结构指定输出格式(列表/表格/JSON/步骤)便于解析与自动化
示例给 1–5 个高质量输入输出示例(few-shot)稳定风格、减少偏差
验证要求自检、给出引用/计算过程、或用结构化输出约束提升可验证性

快速选择指南

  • 事实问答 / 代码 / 数学:目标明确 + 强约束 + 低采样(见 sampling.md
  • 写作与创意:目标明确 + 风格约束 + 示例 + 适度采样
  • 信息抽取 / 自动化:结构化输出优先(见 structured-outputs.md),必要时配合工具调用
  • 长文档处理:边界标记 + 分段任务 + 可追踪的输出结构

一个通用提示模板(推荐)

你可以把提示拆成 5 个小块,按需取用(不需要每次都全写):

  1. 任务(Task):你要模型做什么
  2. 背景/材料(Context):模型需要参考什么信息(用边界包起来)
  3. 要求(Constraints):输出语言、口吻、长度、禁止事项、必须覆盖点
  4. 输出格式(Output format):用明确可解析的结构(列表/表格/JSON)
  5. 示例(Examples):给少量高质量示例(可选)

下面给一个“可直接复制”的示例。

你是一个严谨的助手。 【任务】 将用户给出的内容改写为适合对外发布的中文文案。 【背景材料(仅可使用下列内容,不要编造)】 <<< (把原始资料粘贴在这里) >>> 【要求】 - 语言:简体中文 - 风格:专业、简洁、无夸张宣传语 - 必须包含:产品定位、3 个核心卖点、1 段使用场景 - 禁止:引入未提供的功能/数据;使用“最强/第一”等绝对化表述 【输出格式】 用 Markdown 输出: 1) 标题 2) 三条卖点(列表) 3) 使用场景(1 段)

角色与指令优先级(如何更“听话”)

多数对话式接口支持用不同角色组织消息(例如 system / developer / user / assistant)。优先级通常是:

system/developer(最高) > user > assistant(历史输出)

实战建议:

  • 把稳定不变的规则写在system/developer(例如输出语言、合规边界、格式约束)
  • 把每次变化的输入写在 user(例如本次要处理的文本/问题)
  • 避免把关键约束夹在长段上下文中;用条目列出

用“边界标记”防止上下文混淆

当你需要提供较长的参考材料(文档、日志、代码、合同条款),请用清晰的边界包裹,并告诉模型“只能在边界内引用/推断”。

推荐写法:

【参考资料】 <<<DOC ... 很长的资料 ... DOC >>>

并配套约束:

- 仅基于 <<<DOC ... DOC>>> 中的信息回答 - 若资料不足以得出结论,输出:信息不足,并说明缺少什么

这对降低“把提示当成指令/把指令当成资料”的混淆非常有效。


让输出可解析:结构化与格式约束

Markdown 结构(轻量、通用)

适合:总结、对比、方案评审、会议纪要。

【输出格式】 ## 结论 (一句话) ## 依据 - ... ## 风险 - ... ## 下一步 1. ...

JSON / Schema(强约束、适合生产)

适合:信息抽取、规则引擎输入、自动化流程。

优先使用结构化输出能力,详见:结构化输出


Few-shot:用少量示例稳定风格与规则

当任务比较“像人类打分/分类/改写”,few-shot 往往能显著提升一致性。关键是:

  • 示例要覆盖边界情况(容易误判的例子)
  • 示例要,避免把无关信息带进模式里
  • 规则变化时,示例也要同步更新

示例(情绪分类):

你是一个分类器,只能输出:正向 / 中性 / 负向。 【示例】 输入:这耳机音质很好,续航也够。 输出:正向 输入:还行吧,没有宣传的那么好。 输出:中性 输入:客服态度很差,再也不买了。 输出:负向 【现在开始】 输入:{用户评论} 输出:

把复杂任务拆成“可验收”的步骤

模型在面对复杂需求时容易遗漏点。把任务拆成明确步骤,并要求逐项对照验收。

【任务】 根据需求文档写一份技术方案。 【步骤】 1) 先给出 5 条你对需求的关键理解(逐条引用原文片段) 2) 给出 2 套可选方案(各自优缺点、成本、风险) 3) 选出推荐方案,并给出实施计划(里程碑 + 回滚策略) 【验收标准】 - 必须覆盖:性能、可用性、监控告警、安全 - 不允许:引入需求文档之外的新目标

自检与“信息不足”策略(减少幻觉)

在生产场景中,最重要的是可验证性。你可以要求模型:

  • 先判断信息是否足够:不足就明确说缺什么
  • 对关键结论给出依据:来自哪段材料、哪条规则或哪步计算
  • 输出前自检:检查是否满足格式/必填字段/禁止事项

示例:

在回答前先做两步: 1) 判断资料是否足够;不足则输出“信息不足:缺少...” 2) 输出最终答案后,附上一个“自检清单”,逐项写“满足/不满足”

代码示例:把提示工程用到 API 调用里

下面示例沿用你站内其它教程的 SDK 写法(base_url + api_key)。重点在 messages 的结构与提示内容本身。

from openai import OpenAI client = OpenAI( base_url="https://api.ant-ling.com/v1/", api_key="YOUR_API_KEY" ) prompt = """你是一个严谨的中文助手。 【任务】 根据给定资料回答问题。 【资料(仅可使用下列内容,不要编造)】 <<<DOC 产品 A 支持离线模式;离线模式下只能查看已缓存数据。 产品 A 的数据缓存默认保留 7 天,可配置为 1-30 天。 DOC >>> 【问题】 离线模式下能否查看新数据?缓存能保留多久? 【输出格式】 用两条要点回答,每条不超过 20 字。 """ resp = client.chat.completions.create( model="Ling-2.6-flash", # 此处以“Ling-2.6-flash”调用为例,可按需调整为“Ling-2.6-1T” messages=[{"role": "user", "content": prompt}], temperature=0.2 ) print(resp.choices[0].message.content)

常见问题与反模式

1. 提示太笼统

反例:
“帮我优化一下这段话。”

改进:
给出目标(受众/渠道/风格)、硬约束(长度/禁用词/必须覆盖点)与输出格式。

2. 把多个任务揉在一起

反例:
“先总结、再翻译、再提炼观点、最后给行动计划。”

改进:
拆成步骤并逐项输出,或分两次调用。

3. 上下文很长但没有边界

反例:
把文档直接粘贴,不说明哪些是资料、哪些是指令。

改进:
<<< >>> 包裹资料,并明确“仅可使用资料内容”。

4. 输出不可验收

反例:
没有格式、没有必填字段,结果难以解析与对比。

改进:
指定结构(表格/JSON/分段标题),并添加“自检清单”或 schema。


进一步阅读

Was this page helpful?
Last updated on