Universe Prompt 工程指南
高质量的 Prompt(提示词)是释放大语言模型潜力的关键。本指南将帮助您掌握 Prompt 工程的核心原则与实用技巧,通过 Universe API 获得更精准、更可靠的生成结果。
什么是 Prompt 工程
Prompt 工程是指通过精心设计和优化输入给大语言模型的文本指令,引导模型生成符合预期的高质量输出的技术与方法论。一个好的 Prompt 就像一份精确的需求文档——描述越清晰,模型的"交付"就越到位。
Prompt 工程并非一次性工作,而是一个设计 → 测试 → 迭代优化的持续过程。建议您从小规模测试开始,逐步完善 Prompt 结构,直到输出稳定满足业务需求。
核心原则
无论您的应用场景如何,以下四条原则是编写高质量 Prompt 的基础:
| 原则 | 说明 | 关键要点 |
|---|---|---|
| 清晰明确 | 用简洁的语言准确描述您的需求,避免模糊和歧义。 | 说清楚"要什么"和"不要什么",越具体越好。 |
| 提供上下文 | 给予模型足够的背景信息,帮助其理解任务场景。 | 包含领域知识、用户画像、输出格式要求等。 |
| 设定边界 | 明确输出范围,防止模型"自由发挥"偏离主题。 | 限定字数、格式、语言风格和内容禁区。 |
| 迭代优化 | 没有完美的初版 Prompt,持续测试和调整是关键。 | 记录每次修改及其效果,形成可复用的 Prompt 模板。 |
System Prompt 设计
System Prompt 是每次对话中优先级最高的指令,用于定义模型的角色、行为模式和输出规范。一个设计良好的 System Prompt 能显著提升输出的一致性和可控性。
基本结构
一个完整的 System Prompt 通常包含以下要素:
角色定义:你是谁?(如:资深法律顾问、Python 开发专家)
任务目标:你需要完成什么?(如:审查合同条款、生成单元测试)
输出规范:输出格式、语言、风格、长度等要求
约束条件:不能做什么?(如:不编造数据、不超出知识范围)
示例
基础版:
你是一个专业的客服助手,负责回答用户关于产品使用的问题。
请用简洁友好的语气回复,回答长度不超过 200 字。
进阶版:
# 角色
你是"小宇",Universe API 平台的官方智能客服。
# 职责
- 解答用户关于 API 调用、模型选择、计费规则等技术问题
- 引导用户查阅相关文档,必要时提供操作步骤
# 回复规范
- 语言:中文
- 语气:专业、友好、耐心
- 格式:使用 Markdown,关键步骤使用有序列表
- 长度:优先简洁回答,复杂问题分段说明
# 约束
- 仅回答与 Universe API 平台相关的问题
- 不确定的信息请明确告知用户并建议联系技术支持
- 不编造 API 端点、参数名或价格数据
最佳实践
- 角色越具体越好:与其说"你是一个助手",不如说"你是一位拥有 10 年经验的数据分析师,擅长用通俗语言解读复杂数据"。
- 用正面指令代替负面指令:"请用简洁的语言回答"比"不要用冗长的语言回答"更有效。
- 分模块组织:使用标题(
#)、列表(-)等结构化方式组织 System Prompt,模型理解更准确。 - 定期更新:随着业务变化和产品迭代,及时更新 System Prompt 中的角色定义和约束条件。
Prompt 编写技巧
1. 提供具体细节,避免模糊指令
模型无法"猜"出您的真实意图。在 Prompt 中补充具体的背景信息、约束条件和期望输出,能大幅提升结果质量。
反面示例:
帮我写一篇文章。
正面示例:
请撰写一篇面向技术团队负责人的博客文章,主题为"如何在企业内部推广 AI API 的使用"。
要求:
- 字数:800-1200 字
- 风格:专业但不枯燥,适当使用类比
- 结构:引言 → 痛点分析 → 解决方案(3 个步骤) → 总结
- 包含至少 1 个实际案例或场景描述
2. 使用分隔符区分指令与内容
当 Prompt 中同时包含操作指令和待处理的内容时,使用分隔符(如 """、---、<tag> 等)将二者明确区分,可以防止模型混淆指令与输入。
请将以下用户评论翻译为英文,并判断情感倾向(正面/中性/负面)。
用户评论:
"""
这个 API 接口响应速度很快,文档也写得很清楚,就是错误提示信息可以更友好一些。
"""
输出格式:
{"translation": "...", "sentiment": "..."}
3. 思维链提示(Chain of Thought)
对于需要推理、计算或分析的复杂问题,引导模型"逐步思考"可以显著提高准确率。
基础用法:在 Prompt 末尾加入引导语。
请分析以下 SQL 查询的性能瓶颈并给出优化建议。
在回答前,请先逐步分析查询的执行逻辑,再得出结论。
进阶用法:指定推理框架。
请按以下步骤分析这份市场报告:
1. 提取报告中的核心数据点
2. 识别数据之间的关联和趋势
3. 评估潜在的风险和机会
4. 基于以上分析,给出 3 条可执行的建议
4. 少样本学习(Few-shot Learning)
通过提供输入输出示例,让模型理解您期望的回答模式和风格。通常提供 2-3 个高质量示例即可获得良好效果。
请将以下产品描述改写为适合社交媒体发布的短文案风格。
示例 1:
输入:这款蓝牙耳机采用主动降噪技术,续航时间长达 30 小时,支持多设备切换。
输出:通勤路上的静音神器!30 小时超长续航,降噪一开世界安静,多设备随心切换~
示例 2:
输入:该云服务器支持弹性扩容,按需计费,提供 99.99% 的可用性保障。
输出:业务高峰不怕流量暴涨!按需弹性扩容,用多少付多少,99.99% 稳如磐石。
现在请改写:
输入:Universe API 提供多款大语言模型,支持按 token 计费,最低仅需 2 元/百万 tokens。
输出:
5. 指定输出格式
明确告知模型您期望的输出格式,尤其在需要结构化数据(JSON、表格、Markdown 等)用于下游系统处理时。
请分析以下文本中的关键实体,以 JSON 数组格式输出。
每个实体包含 name(名称)、type(类型:人名/地名/组织/产品)和 description(简要描述)三个字段。
文本:"""
马云在杭州创立了阿里巴巴集团,旗下产品包括淘宝、天猫和阿里云等。
"""
小贴士:如果对 JSON 格式有严格要求,建议在 System Prompt 中补充"请确保输出为合法的 JSON 格式,不要包含 Markdown 代码块标记",减少解析错误。
6. 控制输出长度与风格
虽然模型无法精确计算字数,但您可以通过描述性指令大致控制输出篇幅。
| 期望效果 | 推荐写法 |
|---|---|
| 简短回答 | "请用一句话回答" 或 "用 50 字以内概括" |
| 中等篇幅 | "请用 2-3 个段落详细说明" |
| 长文本 | "请撰写一篇 800-1000 字的完整文章" |
| 列表形式 | "请以有序列表形式列出 5 个要点" |
复杂任务分解策略
大语言模型在处理单一、明确的任务时表现最佳。面对复杂需求,将其拆解为多个简单子任务并串联执行,能显著降低错误率,提升输出的可靠性。
策略一:多轮对话拆解
将一个复杂需求拆分为多个对话轮次,每轮聚焦一个子任务。
# 第一轮:意图识别
用户输入:"我想查一下上个月的销售数据,如果下滑的话帮我分析原因"
请判断用户的核心意图,输出 JSON:{"primary_intent": "...", "secondary_intent": "..."}
# 第二轮:数据查询(基于第一轮结果)
根据意图"查询上月销售数据",生成对应的 SQL 查询语句。
# 第三轮:原因分析(基于第二轮结果)
销售数据显示环比下降 12%,请从市场、产品、运营三个维度分析可能原因。
策略二:长文档分段处理
当文档长度超过模型上下文窗口时,采用分步归纳策略:
第一步:逐章节摘要
→ 对文档每个章节生成独立摘要
第二步:合并摘要
→ 将所有章节摘要组合,提炼核心观点
第三步:最终输出
→ 基于合并摘要生成结构化的总结报告
策略三:Map-Reduce 模式
适用于需要跨多个文档进行信息整合的场景:
Map 阶段:分别对每份文档提取关键信息(如结论、数据点、风险项)
Reduce 阶段:将所有文档的提取结果汇总,去重合并后生成统一报告
高级技巧
角色扮演与专业视角
让模型站在特定专业角色的视角思考问题,能获得更有深度和专业性的输出。
你是一位资深的代码审查员(Code Reviewer),拥有 15 年 Python 开发经验。
请审查以下代码,重点关注:
1. 潜在的 Bug 和边界条件
2. 性能优化空间
3. 代码可读性和可维护性
4. 安全隐患
请以审查报告的形式输出,每个问题标注严重程度(Critical / Major / Minor)。
自我验证与纠错
引导模型在输出前进行自我检查,减少错误和遗漏。
请完成以下数学证明。在得出结论后,请回头检查每一步推理是否存在逻辑漏洞。
如果发现错误,请修正后重新给出最终结论。
模板化 Prompt
对于重复性任务,将 Prompt 抽象为模板,用变量占位符替换动态内容,便于批量调用。
请将以下{source_language}文本翻译为{target_language}。
要求:
- 保持原文的段落结构
- 专业术语参照{domain}领域的通用译法
- 语气风格:{tone}
待翻译内容:
"""
{content}
"""
在实际调用时,通过代码替换 {source_language}、{target_language} 等变量即可复用同一套 Prompt。
参数调优建议
除了 Prompt 本身,API 调用参数也会影响输出效果。以下是常用参数的调优建议:
| 参数 | 作用 | 推荐设置 |
|---|---|---|
| temperature | 控制输出的随机性。值越高,输出越多样;值越低,输出越确定。 | 事实问答/代码生成:0.0-0.3;创意写作:0.7-1.0;日常对话:0.5-0.7 |
| top_p | 核采样,仅从概率最高的 token 中采样。与 temperature 二选一调整。 | 需要精确输出时设低(如 0.1),需要多样性时设高(如 0.9) |
| max_tokens | 限制模型输出的最大 token 数。 | 根据期望输出长度设置,避免输出被截断或过于冗长 |
| frequency_penalty | 降低已出现 token 的重复概率。 | 需要避免重复内容时适当调高(如 0.5-1.0) |
| presence_penalty | 降低已讨论话题的重复概率,鼓励引入新话题。 | 需要多样性讨论时适当调高(如 0.5-1.0) |
注意:temperature 和 top_p 通常只需调整其中一个。同时调整两者可能导致输出行为难以预测。
常见问题与避坑指南
| 问题 | 可能原因 | 解决方案 |
|---|---|---|
| 模型输出不稳定,每次结果差异大 | temperature 设置过高,或 Prompt 不够明确 | 降低 temperature,增加具体约束和示例 |
| 模型"幻觉"(编造不存在的信息) | 缺乏知识边界约束 | 在 System Prompt 中明确"不确定时请如实说明";使用 RAG 提供可靠知识源 |
| 输出格式不符合预期 | 未指定格式或指定方式不够明确 | 提供明确的格式模板和示例输出;使用 JSON Mode 强制结构化输出 |
| 长对话中模型"忘记"早期内容 | 超出上下文窗口限制 | 定期总结对话内容;使用分段处理策略;选择上下文窗口更大的模型 |
| 模型拒绝执行合理请求 | 触发了安全策略或角色限制 | 调整措辞避免歧义;在 System Prompt 中明确授权模型处理该类任务 |
| 输出被截断不完整 | max_tokens 设置过小 | 适当调大 max_tokens 参数;将长输出任务拆分为多次请求 |
Prompt 模板速查表
以下是常见应用场景的 Prompt 模板,可直接复制修改使用:
文本分类
请对以下文本进行分类。
类别选项:{category_list}
仅输出类别名称,不需要解释原因。
文本:"""{input_text}"""
信息提取
从以下文本中提取所有{entity_type},以 JSON 数组格式输出。
每个实体包含 name 和 context(出现的上下文)两个字段。
文本:"""{input_text}"""
内容摘要
请为以下内容生成摘要,字数控制在{word_count}字以内。
要求:保留核心观点和关键数据,语言精炼,不添加原文中没有的信息。
内容:"""{input_text}"""
代码生成
请使用{language}编写一个函数,实现以下功能:
{function_description}
要求:
- 包含完整的类型注解和文档注释
- 处理常见的边界条件(如空输入、异常值)
- 附带 2-3 个使用示例
多轮对话系统
# System Prompt
你是{assistant_name},{role_description}。
# 对话规范
- 每次回复只回答一个核心问题
- 如需追问,每次最多提出 1 个问题
- 引用信息时说明来源
# 当前对话上下文
{conversation_history}