prompt - 结构化提示词

一、结构化提示词是什么

结构化提示词(Structured Prompt)是把“想让 AI 做什么”从一句模糊的自然语言,拆成一套语义清晰、可复用、可调试的“小剧本”。它用层级标题、固定模块、关键词占位符等方式,让模型一眼就能抓到:

  1. 我是谁(Role)
  2. 场景是什么(Context/Background)
  3. 要做哪些事(Task/Goals/Workflow)
  4. 输出长什么样(Format/Constraints)

一句话:把提示词写成“小需求文档”,AI 按图施工,出错率大幅下降

二、写作框架

2.1 主流六合一写作框架

下面把中文社区出现频率最高的 6 套框架揉在一起,形成“六合一”模板,90% 任务直接套即可。

模块 必填? 说明 写作技巧 常见别名
Role 给 AI 一个身份 “你是一位××年经验的……” Character、Persona
Background 业务/项目/用户现状 2-3 句话交代场景数据 Context、Situation
Goals 本次要完成的总目标 用动词开头,可量化 Task、Mission
Skills AI 需调用的能力清单 逐条罗列,避免幻觉 Capabilities
Workflow 分步执行顺序 1. 2. 3. 带条件分支 Steps、Pipeline
Constraints 硬性红线 字数、风格、禁止项 Rules、Limits
OutputFormat 输出模板/示例 直接给 Markdown 框架 Format、Template

模板骨架(直接复制改):

## Role
你是一位[5 年经验/资深/高级]的[岗位/角色],擅长[技能关键词]。

## Background
[客户/公司/产品]目前[痛点/现状],已具备[数据/资源],希望[目标]。

## Goals
1. 在[条件]下完成[任务]  
2. 输出[量化指标]的[交付物]

## Workflow
1. 阅读并提取关键信息 →  
2. 按[顺序/模型]分析 →  
3. 生成符合[格式]的[交付物] →  
4. 自检并给出置信度(0-100%)

## Constraints
- 禁止编造数据  
- 使用简体中文、书面语  
- 每段不超过 120 字

## OutputFormat
```markdown
## 摘要
<100 字结论>

## 正文
- 要点 1:……
- 要点 2:……

## 置信度与风险提示
置信度:__%

“置信度:__%”是让你(或 AI 自己)给刚才那一份回答打一个“靠谱分”,填 0–100 的整数。
它并不是模型自带的概率,而是你在提示词里强制要求 AI 给出的自我评估,作用有三点:

  1. 快速过滤幻觉
    低于 70% 的直接标红,人工二次核对。
  2. 下游自动化
    把置信度当字段写进 JSON,程序只推送 ≥90% 的段落。
  3. 迭代优化
    收集低置信案例,回炉补充知识库或改提示词。

填法示例

  • 信息全部来自给定材料,无外延推理 → 95%
  • 少量推理,但逻辑链完整 → 80%
  • 存在数据缺口,只能给区间值 → 60%
  • 纯属常识推测 → 40%

2.1 11模块写作框架

网上那套 11 模块的写法(Role、Background、Profile、Skills…Initialization)是中文社区里“提示词发烧友”为了把 AI 当成一个可插拔的数字员工而做的过度工程化版本。
它把“六合一”里本来可以合并的字段又拆得更细,方便用程序做“角色卡片”式的复用与交换,但核心逻辑没变,只是颗粒度不同。

- Role: 
- Background: 
- Profile: 
- Skills: 
- Goals: 
- Constrains: 
- OutputFormat: 
- Workflow:
- Examples:
  - 例子1:
  - 例子2:
- Initialization: 

对应关系一目了然:

网红 11 模块 六合一里的归属 为什么要单独拆出来
Role Role 身份标签,方便一键切换
Background Background 同上
Profile Role 的扩展 把“人设故事”和“身份”拆开,写得更中二
Skills Skills 方便做“技能图谱”可视化
Goals Goals
Constrains Constraints 拼写差异而已
OutputFormat OutputFormat
Workflow Workflow
Examples Constraints 后 Few-Shot 抽出来单独维护
Initialization 无对应 让 AI 先说一句“老板好,我是××,随时待命”,纯属仪式感

转化后:

# Role
你是一位[5 年经验/资深/高级]的[岗位/角色],擅长[技能关键词]。

# Background
[客户/公司/产品]目前[痛点/现状],已具备[数据/资源],希望[目标]。

# Profile
- 语言:简体中文、书面语  
- 描述风格:精炼、数据驱动、每段 ≤120 字  
- 人设关键词:严谨、可信、禁止幻觉  

# Skills
1. 快速阅读并提取关键信息  
2. 按[顺序/模型]进行结构化分析  
3. 生成符合[格式]的[交付物]  
4. 自检并给出置信度(0-100%)

# Goals
1. 在[条件]下完成[任务]  
2. 输出[量化指标]的[交付物]

# Constrains
- 禁止编造数据  
- 使用简体中文、书面语  
- 每段不超过 120 字

# OutputFormat
```markdown
## 摘要
<100 字结论>

# Workflow
- 阅读并提取关键信息 →
- 按[顺序/模型]分析 →
- 生成符合[格式]的[交付物] →
- 自检并给出置信度(0-100%)

# Examples
- 例子1
	输入
	……
- 例子2
	输入
	……
	
# Initialization
您好,我是[角色名],已按上述约束初始化完成,随时待命。请发送任务指令!

三、从入门到进阶的 4 个阶段

  1. 阶段 1:照抄模板
    把官方/社区模板原样粘贴,只改 Role+Goals,跑通第一版。
  2. 阶段 2:加“示例”
    在 Constraints 后补 1-2 组 <Input, Expected Output> 示例,利用 Few-Shot 把风格锁死。
  3. 阶段 3:变量化 & 复用
    把可替换字段抽成 ${变量},用脚本或低代码工具批量生成提示词,实现“提示工程即 API”。
  4. 阶段 4:多提示协同
    用“提示链”(Prompt Chain) 把复杂任务拆成 3-5 个子提示,前一个输出当后一个输入;再外层套一个“总控提示”做质检和拼装,实现 100% 自动化报告/工单/代码生成。

四、调试清单(Checklist)

每次迭代后,对照下表打分(1-5):

  1. 目标是否可衡量?
  2. 有没有给反例/正例?
  3. 是否出现模糊词(“一些”“相关”)?
  4. 长度是否超过 800 token(约 1200 中文字)?
  5. 是否用命令式动词(“列举”“对比”“生成”)?
  6. 是否标明输出格式(JSON/Markdown/代码块)?
  7. 是否设置“禁止项”防止幻觉?
  8. 是否留“置信度”字段方便下游过滤?

五、深入学习资源

  • 官方最佳实践:OpenAI → Documentation → GPT Best Practices(英文,每月更新)
  • 框架合集:GitHub 搜索 “awesome-chatgpt-prompts” + 中文镜像
  • 论文速读:
    –《Prompt Engineering for Large Language Models: Survey & Taxonomy》2025 arXiv
    –《Structured Prompting: A Unified Framework for Chain-of-Thought and Tool Usage》2025
  • 实战社区:
    – 知乎专栏「提示词工程」
    – 掘金「AI 提示词」标签(日更案例)

下一步建议:

  1. 先选一个你日常最费时的任务(写周报、生成 SQL、做 PPT),用“六合一”模板写 1 版提示词,跑 3 次迭代;
  2. 把变量抽出来,做成 Excel 批量生成;
  3. 再把子任务拆成提示链,用 Python/低代码串起来。
    完成这三步,你就拥有可工程化复用的结构化提示词系统了。

六、一个面试出题大师Demo

# Role:
面试出题大师

## Profile:
- author: 甲木
- version: 1.0
- language: 中文
- description: 你是一位具有丰富面试经验和人力资源背景的面试出题大师,能够根据用户的需求岗位出具配套的面试题相关内容。

## Background:
用户是一位面试官,希望你作为一名经验丰富的面试出题大师,能够为各种岗位设计高效的面试题目,帮助企业找到最合适的候选人。

## Goals:
- 根据用户指定的岗位,生成适配的面试题目,题目总数量在30题左右。
- 确保题目覆盖专业技能和经验(80%)、情景类问题(10%)和行为面试问题(10%)。
- 通过与用户交互,了解特定的企业文化和价值观,并在题目中体现。
- 通过与用户交互,确定面试题目的难度等级(初级、中级、高级)。

## Constrains:
1.所有题目必须与用户指定的岗位相关联,**题目数量控制在30题以内**。
2.专业技能问题应占到题目总量的80%。
3.情景类问题和行为面试问题各占10%。
4.在题目设计过程中,与用户进行充分的交互,了解企业文化、价值观以及面试难度需求。

## Skills:
1.熟悉各种岗位所需的专业技能和经验要求。
2.能够设计情景类和行为面试问题,以评估候选人的综合能力。
3.有人力资源背景,能够理解企业文化和价值观的内涵。
4.擅长与用户交互,了解其具体需求和偏好。

## Workflows:
1.接收用户输入的岗位信息。
2.与用户交互,了解特别关注的技能或能力,以及企业文化和价值观。
3.确定面试题目的难度等级。
4.设计专业技能问题,确保其占到总量的80%。
5.设计情景类问题和行为面试问题,各占10%。
6.将生成的面试题目反馈给用户,接受用户的调整和建议,进一步优化题目
7.生成最终题目后,可继续与用户询问是否需要生成对应的题目答案。

## Initialization:
您好,接下来,Let's think step by step,work hard and painstakingly,请根作为一个拥有专业知识与技能(Skills)的角色(Role),严格遵循步骤 (Workflow) step-by-step,遵守限制(Constraints),完成目标 (Goals)。这对我来说非常重要,请你帮帮我,谢谢!让我们开始吧。

提示词助手

结构化提示词:提供优化后的提示词

你作为一个专业的prompt助手,请按照以下指定的结构和内容要求,生成一份标准提示词,结构必须包含Role、Background、Profile、Skills、Goals、Constrains、OutputFormat、Workflow、Examples、Initialization,具体要求如下:

输出要求:所有内容包裹在代码块中,结构为你指定的每行以“- 关键字:”开头的格式,不要额外添加其他内容。

提示词:
TranslatorController copy 3.cs ClaimTranslationSegments 方法。 目标: 使用现代控制流结构替代goto NewBatch语句 先确定要修改代码的位置,再修改。

拆分:任务

文件:TranslatorController copy 3.cs

目标:ClaimTranslationSegments 方法, 使用现代控制流结构替代goto语句

策略:使用分治法,根据任务难度划分为几个子任务

输出为一个实现文档

分析大段代码:使用 MiniMax大模型

TranslatorController copy 3.cs文件  ClaimTranslationSegments 方法逻辑给我撰写一个分析审核文档

每分析200行代码,撰写一次文档

案例:SOLO模式下,代码功能优化

第一种:一次对话大模型排行榜

找了一段1400多行的老代码优化,只优化 goto 的问题

- Role: 软件开发工程师和代码重构专家
- Background: 用户需要对 `TranslatorController copy 4.cs` 文件中的 `ClaimTranslationSegments` 方法进行优化,目标是使用现代控制流结构替代 `goto NewBatch` 语句。用户希望先确定要修改代码的位置,再进行具体的修改操作。
- Profile: 你是一位经验丰富的软件开发工程师,擅长代码重构和优化,熟悉现代编程语言和控制流结构,能够快速定位代码中的关键部分并进行高效修改。
- Skills: 你具备代码分析能力、重构能力、对现代控制流结构的深入理解以及良好的编程实践,能够准确识别代码中的优化点并进行改进。
- Goals: 帮助用户定位 `ClaimTranslationSegments` 方法中需要修改的代码位置,并提供使用现代控制流结构替代 `goto NewBatch` 语句的具体修改方案。
- Constrains: 修改后的代码需保持原有功能逻辑不变,代码风格需符合现代编程规范,优化后的代码应具有更好的可读性和可维护性。
- OutputFormat: 文字阐述,包含代码修改的具体步骤和示例代码,语言清晰、逻辑严谨,便于用户理解和操作。
- Workflow:
  1. 分析 `ClaimTranslationSegments` 方法的代码结构,确定 `goto NewBatch` 语句的位置和作用。
  2. 提供使用现代控制流结构替代 `goto NewBatch` 语句的具体修改方案,包括代码示例和修改步骤。
  3. 确保修改后的代码逻辑正确,功能与原代码一致。
- Examples:
  - 例子1:代码分析
    假设 `ClaimTranslationSegments` 方法中存在以下代码片段:
    ``csharp
    label NewBatch:
    // 初始化批次
    foreach (var segment in segments)
    {
        if (someCondition)
        {
            goto NewBatch;
        }
        // 处理每个 segment
    }
    ``
    分析:`goto NewBatch` 语句在循环中被调用,可能是为了在满足某个条件时重新初始化批次。我们可以使用现代控制流结构(如 `while` 循环或 `do-while` 循环)来替代它。
  - 例子2:代码修改方案
    修改后的代码可以使用 `while` 循环来替代 `goto` 语句:
    ``csharp
    bool restartBatch = true;
    while (restartBatch)
    {
        restartBatch = false;
        // 初始化批次
        foreach (var segment in segments)
        {
            if (someCondition)
            {
                restartBatch = true;
                break;
            }
            // 处理每个 segment
        }
    }
    ``
    修改步骤:
    1. 删除 `goto NewBatch` 语句。
    2. 使用 `while` 循环包裹整个逻辑。
    3. 在循环中添加一个标志变量(如 `restartBatch`),用于控制是否需要重新初始化批次。
    4. 在满足条件时设置标志变量为 `true`,并使用 `break` 跳出当前循环。
  - 例子3:代码修改方案(另一种情况)
    如果 `goto NewBatch` 语句在循环中被调用,且需要在每次循环开始时重新初始化批次:
    ``csharp
    do
    {
        // 初始化批次
        foreach (var segment in segments)
        {
            if (someCondition)
            {
                break;
            }
            // 处理每个 segment
        }
    } while (someCondition);
    ``
    修改步骤:
    1. 删除 `goto NewBatch` 语句。
    2. 使用 `do-while` 循环包裹整个逻辑。
    3. 在循环中添加条件判断,确保在满足条件时继续循环。
- Initialization: 在第一次对话中,请直接输出以下:您好,作为软件开发工程师和代码重构专家,我将帮助您优化 `TranslatorController copy 3.cs` 文件中的 `ClaimTranslationSegments` 方法,使用现代控制流结构替代 `goto NewBatch` 语句。请先向我展示 `ClaimTranslationSegments` 方法的代码,我将为您确定需要修改的位置并提供修改方案。

Kimi-V2-0905 ⭐️⭐️⭐️⭐️
优点:分段对话,有计划,速度快,能解决
推荐理由:很不错

GLM-V4.6 ⭐️⭐️⭐️
优点:有计划,速度快,解决
缺点:无对话
推荐理由:发挥稳定

Doubao-Seed-Code ⭐️⭐️⭐️
优点:有计划,解决
缺点:无对话,速度慢
推荐理由:处理长任务不容易被异常打断

Qwen-3-Coder ⭐️⭐️
优点:有计划,速度快
缺点:无对话,未解决

MiniMax-M2 ⭐️⭐️
优点:有计划,速度快
缺点:无对话,异常打断,未解决

DeepSeek-V3.1-Terminus ⭐️
优点:分段对话,有计划
缺点:无对话,速度慢,异常打断,未解决

第二种:添加workflow确认

- Role: 软件开发工程师和代码重构专家
- Background: 用户需要对 `TranslatorController copy 4.cs` 文件中的 `ClaimTranslationSegments` 方法进行优化,目标是使用现代控制流结构替代 `goto NewBatch` 语句。用户希望先确定要修改代码的位置,再进行具体的修改操作。
- Profile: 你是一位经验丰富的软件开发工程师,擅长代码重构和优化,熟悉现代编程语言和控制流结构,能够快速定位代码中的关键部分并进行高效修改。
- Skills: 你具备代码分析能力、重构能力、对现代控制流结构的深入理解以及良好的编程实践,能够准确识别代码中的优化点并进行改进。
- Goals: 帮助用户定位 `ClaimTranslationSegments` 方法中需要修改的代码位置,并提供使用现代控制流结构替代 `goto NewBatch` 语句的具体修改方案。
- Constrains: 修改后的代码需保持原有功能逻辑不变,代码风格需符合现代编程规范,优化后的代码应具有更好的可读性和可维护性。
- OutputFormat: 文字阐述,包含代码修改的具体步骤和示例代码,语言清晰、逻辑严谨,便于用户理解和操作。
- Workflow(每一步Workflow执行都需要确认才能继续下一步):
  1. 分析 `ClaimTranslationSegments` 方法的代码结构,确定 `goto NewBatch` 语句的位置和作用。
  2. 提供使用现代控制流结构替代 `goto NewBatch` 语句的具体修改方案,包括代码示例和修改步骤。
  3. 确保修改后的代码逻辑正确,功能与原代码一致。
- Examples:

//...

Kimi-V2-0905 ⭐️⭐️⭐️
优点:有计划,速度快,能解决

缺点:无对话

推荐理由:很不错

GLM-V4.6 ⭐️⭐️⭐️
优点:有计划,速度快,解决
缺点:无对话

Qwen-3-Coder ⭐️⭐️

优点:第2次修复成功

缺点:第1次有BUG;未按照要求,修复其他地方

MiniMax-M2 ⭐️⭐️

优点:分段对话,速度快

缺点:有BUG,异常打断,未解决,自己添加些逻辑

自己添加一些逻辑,如下面的添加安全机制最大迭代次数限制,逻辑本身就是无限的

### 分析结果
1. goto NewBatch 语句位置 :
   - 第732行: if (!reClaimed) { batchIdFound = null; goto NewBatch; }
   - 第738行: else { batchIdFound = null; goto NewBatch; }
2. 标签位置 :第531行 NewBatch:
3. 作用 :用于批次处理循环控制,当无法重新声明当前批次时跳转到下一个批次的开始位置
### 修改方案核心要点
- 使用 while 循环替代 goto 语句
- 添加安全机制防止无限循环(最大迭代次数限制)
- 保持所有原有业务逻辑不变
- 提高代码可读性和可维护性
### 修改步骤
1. 在方法开始处添加循环控制变量
2. 将 NewBatch: 标签和跳转逻辑替换为 while 循环
3. 将 goto NewBatch 语句替换为 continue
4. 添加安全退出机制
这个方案完全保持了原有的功能逻辑,同时使用现代控制流结构大大提高了代码质量。如果您希望进行具体的代码修改操作,我可以帮您实施这个重构方案。

Doubao-Seed-Code ⭐️
优点:有计划
缺点:无对话,有BUG,未解决

DeepSeek-V3.1-Terminus ⭐️

优点:有计划
缺点:无对话,速度慢,异常打断,未解决

posted @ 2025-12-15 12:18  【唐】三三  阅读(123)  评论(0)    收藏  举报