让ai更加精准的理解你的提示词

让ai更加精准的理解你的提示词

写在前面:langgptai.feishu.cn/wiki/ASXOwD...

关于如何写出一份良好的提示词,从而更加高效的使用ai提效,这是一个不错的学习资源。

基于该知识库学习,生成、优化后的简历警察,反响不错,已被收录于大佬 阮一峰 的每周推荐

简单推广及身边朋友、本人亲身使用后,颇有成效,欢迎大家体验。

项目中不仅提供了原始 prompt,也提供了dify的yml文件,一键导入DSL部署专属自己的工作流。

背景

接触ai比较晚,差不多从今年3月份开始,但仅仅过去半年,ai发展的势头之迅猛是肉眼可见且切身体会的。

目前已经进化成了一个ai的重度依赖患者,从知识检索到代码编写,从完成业务代码到项目架构设计优化等等都与ai进行了大量的交流。

慢慢地使用一些ai ide后,一次次的修改提示词到一次次的undoreject,我意识到vibe coding中,好的提示词是至关重要的。

甚至于,我觉得 Prompt 越来越像新时代的编程语言,它正在颠覆着人类的编码格式。

而一份好的Prompt的生成范式,它的作用是不仅局限于此的,譬如一开始提到的简历警察

chatAI中与ai交流常见坑点:

用户输入的错误定位

  • 误认为新的Prompt

    • 当我们输入一段提示词,我们的需求是借助ai对提示词进行优化时,llm可能会将其误判为我们的需求内容

    • 解决:

      • 添加标注、分块等方式

      • 添加标注:注明以下是提示词内容

      • 使用 ------ 等分隔符进行合理的分块,让llm能够更好更准确的拆解提示词、明确需求

      • eg:

        md 复制代码
        ## 提示词内容
        ...
        -------------
        上面是一份关于xxxxx的提示词,我希望你以一个专业的xxx身份,帮我分析解读,指出其中不足,并给出一份高效、精准、简洁的优化版本,以便于我能够借助它更精准高效的与ai进行交流
  • 误认为反馈指令

    • 同一次上下文中多次输入

    • llm可能误判你是基于前一次结果的要求,当然也确实会有这种的真实需求

    • 解决:

      • 添加引号包裹,"押韵"
      • 开启新的上下文对话
  • 随机输出

    • 当一个概念在多个领域中,存在重名、相近的定义时,如果用户不限定领域,就会出现赛马机制,随机输出最快匹配到的结果

    • 解决:

      • 限定领域,eg:class -> js中的class

ai的可能性

我们能和llm聊的东西有很多,玩法也有很多。

当我们和llm交流时,产出结果质量与输入往往成正相关,那么如何让ai更像一个人、一个专家一样精准的理解我们的需求,给出可行、高效的解决方案呢?

核心:设定角色

将ai当作人去交流,影响人和人之间交流的因素有很多:背景、身份、情景、压力等等。

eg:假定你是xxx中的一位xxx,你的老板对你要求很严苛,做不好就要开除你。他让你写一份关于xxx的方案,需要你完成前期调研、寻找解决方法、分析评估可行性、制定一份精准、可行的方案。

规范流程

  • 有条不紊的提问结构 - 结构化 Prompt

  • 约定规范的输出

    • 输出的内容
    • 输出的格式规范

结构化 Prompt

像写作文一样去写Prompt,一篇文章要有标题、开头、主题、结尾等等; 找工作修改简历需要一份简历模板; 做工作汇报需要一份ppt模板。

写一个好的Prompt同样需要,一份好的Prompt结构设计,有利于我们清晰的需求表达,也有利于更好的结果输出。

逻辑上的结构化

eg:知名的 CRISPE 框架([3]),CRISPE 分别代表以下含义:

  • CR:Capacity and Role(能力与角色)。你希望 ChatGPT 扮演怎样的角色。
  • I:Insight(洞察力),背景信息和上下文(坦率说来我觉得用 Context 更好)。
  • S:Statement(指令),你希望 ChatGPT 做什么。
  • P:Personality(个性),你希望 ChatGPT 以什么风格或方式回答你。
  • E:Experiment(尝试),要求 ChatGPT 为你提供多个答案。

结构化、模板化 Prompt

  • 标识符#, <> 等符号(-, []也是),这两个符号依次标识标题,变量,控制内容层级,用于标识层次结构。

  • 属性词Role, Profile, Initialization 等等,属性词包含语义,是对模块下内容的总结和提示,用于标识语义结构。

简历警察(示例):Prompt太长就不贴出来了,大家感兴趣的话,可以移步github自行下载食用。

ChatAgent 的信息接收是没有样式的,使用json、yaml等标记语言效果最佳,因为它们能够更好的被序列化从而更好的被ai理解,但使用成本偏高。

相比之下markdown的语法更加友好,最大程度的允许我们使用自然语言进行需求描述,同时模型正是从提供大量文献阅读的前期训练中而获得的能力,这也更加印证了它对结构化prompt解析的支撑性。

例如: 用标识符 # 标识一级标题,##标识二级标题,以此类推。

示例结构:

  • Role (角色) 作为 Prompt 标题总领全局篇容。

    • 角色扮演能大大提高模型表现,使用#一级标题从而加重强调
  • Profile (简介)Rules(规则) 作为二级标题声明背景、前提,规定了模型必须尽力去遵守的规则。

    • 比如添加不准胡说八道的规则,缓解大模型幻觉问题。添加输出内容必须积极健康的规则,缓解模型输出不良内容等。用 Constraints(约束),中文的 规则 等词替代也可
  • LanguageDescription 作为关键词建立提示词的情景限定。

优势:

  • 结构丰富,表达性好,无论对人还是ai都更易于理解及复刻
  • 标识符标识的层级结构实现了聚拢相同语义,梳理语义的作用,降低了模型对 Prompt 的理解难度
  • 属性词实现了对 prompt 内容的语义提示和归纳作用,缓解了 Prompt 中不当内容的干扰
  • Prompt 作为一种文本,也完全可以使用 Git 等工具像管理代码一样对 prompt 进行版本管理。

如何创建一份结构化、模板化 Prompt

LangGPT 中展示的模板设计时考虑了如下思维链:

Role (角色) -> Profile(角色简介)---> Profile 下的 skill (角色技能) -> Rules (角色要遵守的规则) -> Workflow (满足上述条件的角色的工作流程) -> Initialization (进行正式开始工作的初始化准备) -> 开始实际使用

方式一:借助模型进行优化
  1. 月之暗面 Kimi × LangGPT 提示词专家: kimi.moonshot.cn/kimiplus/co...
  2. OpenAI 商店 LangGPT 提示词专家:chatgpt.com/g/g-Apzuyla...
方式二:自行优化

1、构建 Prompt 时,不妨参考优质模板的全局思维链路(划到最后有模板),熟练掌握后,可以对其进行增删改留调整得到一个适合自己使用的模板。

例如当你需要控制输出格式,尤其是需要格式化输出时,完全可以增加 Output 或者 OutputFormat 这样的模块。

注意:

格式语义一致性:eg:# 只用于role的指定

内容语义一致性:合适的属性词语义,有利于llm的理解,eg:Role(扮演的角色) ​ **、**​Profile (简介)

Role中只概述领域、角色,而不介绍规则;Profile (简介)只概述角色技能、背景; Rules(规则)只介绍规则,而不接受角色定位、角色技能、描述。

2、结合具体方法论

3、降低结构复杂度调整属性词迭代修改 Prompt

不同模型能力不同,对不同结构复杂度的Prompt的理解理解能力不同。

LangGPT提供的低版本llm的提示词版本

相关推荐
网小鱼的学习笔记1 分钟前
python基础:数据解析BeatuifulSoup,不需要考虑前端形式的一种获取元素的方法
开发语言·前端·python
aiwery3 分钟前
深入理解React hooks:从设计初衷到自定义Hook指南
前端·设计模式
namehu6 分钟前
阿里云 acme.sh install timeout(超时)问题解析与解决方案
linux·前端·https
浩男孩22 分钟前
🍀简简单单使用 TS 封装个工具库【更新中 ✍】
前端·typescript
Shinpei42 分钟前
如何在AI流式数据中渲染mermaid图表
前端·deepseek
快起来别睡了1 小时前
深入浅出 Event Loop:前端工程师必须掌握的运行机制
前端·javascript
user297525876121 小时前
别再用关键字搜了!手搓一个Vite插件,为页面上的标签打上标记
前端·javascript·vite
野区小女王1 小时前
react调用接口渲染数据时,这些表格里的数据是被禁选的
前端·react.js·前端框架
尝尝你的优乐美1 小时前
原来前端二进制数组有这么多门道
前端·javascript·面试
CF14年老兵2 小时前
🔥 2025 年开发者必试的 10 款 AI 工具 🚀
前端·后端·trae