自用 AI 提示词整理(2025版)

自用 AI 提示词整理(3 in)继续讨论:

时间过得很快,但大模型发展的更快。今天我又在整理提示词,其实这也算是整理笔记中的一环。

我把一些提示词用 Obsidian 的 canvas 放在一起,这很方便看,然后这个强迫症就开始难受了,因为提示词之间的风格不一样。当然都能够解决问题,反正只要用更好的大模型,而且把问题描述清楚,基本上都能获得满意的答案。只不过把不一样风格的东西放在一起让我觉得浑身难受。

终于我觉得我自己需要提示词框架了。我对于提示词框架的理解是这东西其实也没什么用,就像上面说的,只要模型够强,你把问题描述清楚了都可以获得差不多的答案。那么提示词框架的作用是什么呢?就是个框架,用来快速搭建提示词,只要按格式填空,基本上就不至于缺少要素,而且在 AI 看来条理清晰,它就是也不容易丢失要点。

研究了一圈,我决定选用一个非常简单的框架——TAG。以下解读纯本人臆想,如果与他人解释有所出入,那一定是我错了

任务(TASK):要做什么
行动(ACTION):如何去做
目标(GOAL):要达到什么目标

在我眼中这就是一个经典的总分总格式:先告诉 AI 你要做什么,然后让它带着这个中心思想去往下理解,这样减少它胡思乱想的幻觉。最后再明确一下我们的目标是什么,通过这个提示去收敛 AI 的答案,再次消除可能产生的幻觉。当然理解是这么理解的,至于实际有没有用,就纯靠玄学了。

为代码添加注释

点击展开提示词
任务:请对代码进行注释规范化重构
要求:
    - **格式:**
        - 使用 4 个空格缩进(非制表符)。
        - 移除注释块之间的多余空行。
        - 严格保持注释与对应代码的缩进对齐。
    - **注释内容:**
    - **语言:** 所有注释必须使用中文。
    - **范围:**
        - 为每个函数添加中文注释(说明函数功能)。
        - 为函数内部主要逻辑代码块添加中文注释(说明步骤目的)。
    - **表达:**
        - 每个注释需简明扼要,单句说明,不超过 30 字。
        - 合并新旧注释中的重复信息。
        - 避免过度解释技术细节(不说明具体算法原理)。
    - **现有注释处理:**
    - **保留:** 含有特定标记结构的注释:
        - 标签结构:`[tag]: [内容]` (例如 `note: 用户ID`)
        - 任务标记:`- [ ] 待办事项` (例如 `- [ ] 实现缓存更新`)
    - **删除与重写:**
        - 删除冗余的、仅描述步骤的旧注释。
        - 根据当前代码逻辑,为相应步骤重新编写简明注释。

目标:目的是大幅提升代码可读性、可维护性,确保注释简洁、一致、实用,并保留特殊功能性标记。

技术文档翻译

点击展开提示词
任务:请将我发送给你的内容翻译为 [中文/英文](选择与原文不同的语言)
要求:

    - **核心原则:**
        - 严格忠于原文含义,不做增删或解释。
        - 严格遵照原文格式(段落、列表、标题等)。
    - **输出质量:**
        - 翻译结果需高度符合目标语言的母语表达习惯,自然流畅。
        - 优化表达,避免生硬直译。
    - **格式处理:**
        - 在必要的地方(如全角字符与半角字符相邻处)插入空格,确保排版美观。
        - 对于原文中被 Markdown 标记为代码块(```)或行内代码(`)的内容,在翻译结果中保持相同的 Markdown 标记。
    - **内容限制:**
        - 仅输出翻译结果。
        - 不添加任何解释性文字、额外信息或说明。

目标:目的是获得一个高度准确、符合目标语言习惯、格式严谨、可直接使用的翻译版本,无需二次编辑。

文件头注释块

对这个需求稍作解释:因为我写的脚本比较多。脚本就比较短,思路也简单。但这个短也是相对而言的,常常随着细节的补充就变得不尴不尬了,几百上千行,不分模块有点长,分模块有点不值当的。然后过几个月回来想做修改的时候,就很难快速把这么长的内容载入大脑。所以应该写一个给自己读的摘要、地图。不要求很复杂,但最好能够快速让我抓到整个脉络。琢磨了好几天终于找出了这份提示的词,实际使用效果还不错。

点击展开提示词
请你担任一名经验丰富的软件架构师和技术文档工程师。我需要为我的代码模块创建一个综合性的注释头(Comment Block)和一份文本流程图,目的是为了未来的代码维护和快速上手。

**核心目标:**
1.  **快速理解**:让任何阅读者(包括未来的我)在几分钟内理解这个模块的**存在意义、核心逻辑和设计哲学**。
2.  **高效导航**:提供清晰的“地图”,让阅读者能迅速定位到他们关心的**功能部分、关键算法或配置区域**。

---

**第一部分:注释块设计需求**

请设计一个放在代码文件顶部的多行注释块。它应清晰易读,并包含以下章节(可根据代码类型调整):

*   **文件名称 (File Name)**
*   **核心功能 (Core Purpose)**:用一两句话精炼概括这个文件是“做什么的”。
*   **设计思路/架构摘要 (Design Summary)**:简要说明背后的设计决策、采用的设计模式、以及为什么这么设计。
*   **重要依赖 (Key Dependencies)**:列出关键的外部库、模块、服务或配置文件。
*   **主要函数/模块说明 (Key Components)**:以列表形式简要说明文件中的主要函数、类或模块的职责(例如:`_validate_input()`: 负责检查和净化用户输入)。
*   **关键算法/逻辑 (Critical Logic)**:如果存在复杂算法,简述其名称和目的(例如:“使用Dijkstra算法计算最短路径”)。
*   **修改日志 (Change Log)**:包含【创建日期】、【作者】、【最后修改日期】、【修改者】以及最后一次【修改内容简述】。
*   **待办事项/已知问题 (TODOs/Known Issues)**:(可选)列出已知的限制或未来的改进点。

**格式要求**:使用常见的注释符号(如 `#`, `//`, `/* */`),结构清晰,章节之间有空行分隔。

---

**第二部分:工作流程图需求**

请根据注释块中描述的设计思路,绘制一幅纯文本的工作流程图。

**绘制要求:**
1.  **语法**:使用 **ASCII Art 流程图** 绘制。
2.  **内容**:流程图应描绘模块的**主要工作流程**或**关键组件的交互过程**。
3.  **重点**:突出显示关键的**判断点(条件判断)、输入/输出、以及异常处理路径**。
4.  **简洁性**:保持流程图简洁,只包含最高层级的步骤,避免过度细化。目标是提供直观的概览,而非详细的指令。

---

**最终输出格式:**
请将你的回答直接放在一个代码块中,包含两部分:
1.  设计好的**注释块**。
2.  用 ASCII Art 编写的**流程图代码**。

请基于一个假设的“用户注册模块”的上下文来生成示例,这将非常有助于我的理解。谢谢!

如果只是想生成代码工作的流程图,可以尝试如下提示词:

代码流程图

点击展开提示词
**角色**:你是一名资深软件架构师,精通代码可视化和技术文档生成
**任务**:为当前代码文件生成超详细流程图
**要求**:
    1. 深度分解:将每个函数/方法拆解为原子级操作步骤
    2. 精准标注:每个流程图节点必须包含对应的函数名/方法名
    3. 完整覆盖:包含以下元素:
        - 函数调用(标注参数传递)
        - 循环结构(标注迭代变量)
        - 条件分支(标注判断条件)
        - 异常处理(标注错误类型)
        - 返回值传递(标注返回路径)
    4. 层级结构:采用嵌套子图表示函数调用关系。尽可能使用子流程图去表达方法之间的嵌套关系,允许多层子流程图的嵌套
    5. 技术规范:
        - 使用Mermaid语法输出
        - 不同代码块用颜色区分(函数/类/控制流)
        - 为每个节点添加行号标记 [Lxx]
        - 节点使用含义明确的 id 命名
        - 节点的描述使用双引号进行标记
        - 包含数据流箭头标注(输入/输出)

**输出格式**:
```mermaid
flowchart TD
    main["main: 程序入口"] --> init["init_system: 初始化"]
    init -->|config| validate["validate_config: 验证配置"]

    subgraph validate_config ["🔑 验证配置"]
        v1["validate_config: 检查空值 [L25]"] --> v2{"是否为有效路径? [L28]"}
        v2 -->|Yes| v3["load_config: 加载配置 [L31]"]
        v2 -->|No| v4["throw InvalidPathError [L33]"]
    end

    validate -->|valid| db["connect_db: 连接数据库"]
    validate -->|invalid| log["log_error: 记录错误 [L41]"]

    ...
```

**处理规则**:
1. 遇到循环时:
   ```mermaid
   forLoop[for循环: i in 0..n [L58]] --> loopBody[process_item: 处理元素]
   loopBody -->|i++| forLoop
   ```
2. 遇到异步调用时:
   ```mermaid
   main -->|异步调用| asyncTask[fetch_async: 获取数据]
   asyncTask -.->|callback| handleResult[handle_response: 处理结果]
   ```
3. 对每个函数生成独立子图,保持最大深度不超过4层
4. 对以下重点元素添加特殊标记(标记写在节点描述的开始位置):
   - 关键算法: 🔑
   - 外部依赖: 🌐
   - 性能热点: ⚡

想起来整理到了再慢慢添加。欢迎大家参与讨论。

3 Likes

我比较传统,基本都会加上「角色」这个部分,告诉AI的身份和能力。这个习惯是最开始学写提示词养成的,现在大模型进步很多,虽然不确定还有没有用,但还是习惯写。虽然写「角色」很反直觉,在使用 AI 之前,我们描述一个任务或者提出问题的时候,根本不会考虑「角色」。

简单任务几句话说清楚,基本楼主的这三板斧:任务、要求、目标够用,甚至更加简单也能拿到满意的答案。但遇到复杂任务,我就不确定「角色」的对答案的影响了。所以对于复杂问题,我可能会问好几次,甚至几个模型一起问。

我的理解,这本质也是一种限定,一种对答案范围的限定,来减少AI的“发散思维”。也能比较准确的去定义思考的方向。

但终究一切都比不上 AI 升级带来的效果最实在。对于比较弱的模型,再严谨的提问也避免不了他的东拉西扯,答非所问;而强大的AI真的,有点给人震撼了,我自己都觉得自己那一句提问太过含糊其辞,他不仅给出了正确的回答,还十分严谨的考虑了许多细节问题。在这样的对比下,回看提示词工程有点儿觉得……自己的努力是那么的可笑

MoE大模型都是内含多个“专家”的混合模型,也就是专业的问题交给专业的“人”回答,这样提出角色设定一般会更直接地“唤醒”某个“专家”来回答;只不过大多数对话式大模型会更着重于“回答”而不是“专家”角色,也就是“提供答案”的目标更优先,“符合角色”的目标是弱化甚至模糊的:

图片.png

当然,你自己部署模型的话可以用微调或者使用系统提示词,设定大模型的回答逻辑,使其更着重于“扮演”而不是“回答”。