当前位置: 首页 > news >正文

Prompt 结构化提示工程

Prompt 结构化提示工程

目前ai开发工具都大同小异,随着deepseek的流行,ai工具的能力都差不太多,功能基本都覆盖到了。而prompt能力反而是需要更加关注的(说白了就是能不能把需求清晰的输出成文档)。因此大家可能需要加强的是prompt能力。

1. 定义和背景

Prompt提示工程(Prompt Engineering)是一门设计和优化输入提示(Prompt)以获得期望输出的技术。随着人工智能(AI)和自然语言处理(NLP)技术的发展,尤其是大型语言模型(如GPT-3、GPT-4等)的出现,Prompt提示工程在与AI模型进行有效互动中变得尤为重要。

这些AI模型通过接收自然语言提示来生成响应。提示工程师的任务是设计这些提示,以确保模型能够理解并准确地回应用户的需求。通过优化提示,可以显著提高模型生成内容的质量和相关性。

2. 重要性

Prompt提示工程的重要性体现在以下几个方面:

  1. 提高输出质量:精心设计的提示可以帮助模型生成更准确和相关的响应。
  2. 控制生成内容:通过提示,可以更有效地引导模型生成特定风格或领域的内容。
  3. 减少误解:明确的提示可以减少AI模型对问题的误解,从而提高交互效率。
  4. 提升用户体验:通过优化提示,可以增强用户与AI系统的互动体验,使其更加自然和顺畅。

3. 提示词要素

提示词可以包含以下任意要素:

指令:想要模型执行的特定任务或指令。

上下文:包含外部信息或额外的上下文信息,引导语言模型更好地响应。

输入数据:用户输入的内容或问题。

输出指示:指定输出的类型或格式。

4. 设计提示的一些原则

设计有效提示的方法包括以下几个步骤:

  1. 明确目标
    • 在设计提示之前,明确你希望从模型获得什么样的输出。
    • 示例:如果你需要模型生成一篇关于气候变化的文章,提示应该明确指出这一点。
      • 不良提示:请写点东西。
      • 良好提示:请写一篇关于气候变化及其影响的文章。
  2. 具体化-提供参考内容
    • 使用具体的描述和例子来引导模型生成所需的内容。
    • 示例:如果你需要模型写一个购物车的代码示例,提示应该具体说明需要包含哪些功能。
      • 不良提示:写一个购物车的代码。
      • 良好提示:请写一个包含添加商品、移除商品和计算总价功能的购物车代码示例。
  3. 拆分子任务
    • 不要试图让模型一次性完成,而是将其分解成一个个较小的、相对简单的子任务
    • 示例:如果你需要编写一个复杂的需求,你可以将其拆分为多个子任务处理。
      • 不良提示:写一个图片预处理工具。
      • 良好提示:请写一个图片预处理工具,包含图片背景去除,图片归一化(转换为同一大小),图片编辑(图片裁剪),生成提示词。
  4. 给出思考过程-思维链
    • 允许模型逐步展示其思考过程,而不是直接要求最终结果
    • 示例:在让模型解答数学问题时,我们可以要求它先列出解题步骤,再得出最终答案
      • 不良提示:我去市场买了10个苹果。我给了邻居2个苹果和修理工2个苹果。然后我去买了5个苹果并吃了1个。我还剩下多少苹果?。
      • 良好提示:我去市场买了10个苹果。我给了邻居2个苹果和修理工2个苹果。然后我去买了5个苹果并吃了1个。我还剩下多少苹果?让我们逐步思考
    • 这里我测试后现在的新模型基本都已经加入了思维链。
  5. 实验和优化
    • 通过反复试验和调整,找到最有效的提示方式。
    • 示例:如果初始提示没有得到满意的结果,尝试调整提示的细节和结构。
      • 初始提示:解释递归函数。
      • 优化提示:请解释递归函数,并给出一个计算阶乘的Python代码示例。

5. 示例

示例一:生成代码

不良提示

写一个Python函数。

良好提示

请写一个Python函数,该函数接收一个整数参数并返回其阶乘。

示例二:回答问题

不良提示

解释一下机器学习。

良好提示

请详细解释什么是机器学习,并包括以下几点:
1. 定义和背景
2. 主要类型(监督学习、无监督学习等)
3. 常见算法(如线性回归、决策树等)
4. 应用领域

示例三:生成文章

不良提示

写一篇文章。

良好提示

请写一篇关于人工智能对日常生活影响的文章,内容包括:
1. 人工智能的定义
2. 人工智能在日常生活中的应用(如语音助手、推荐系统等)
3. 人工智能的未来发展趋势

3.prompt 框架

1、CRISPE提示词框架

https://github.com/mattnigh/ChatGPT3-Free-Prompt-List

  • Capacity and Role**(能力与角色)**:给 ChatGPT 等AI模型定个角色,比如专家、助手啥的。
  • Insight**(洞察力)**:给它讲讲相关背景、上下文,好让它明白情况。
  • Statement**(指令)**:明确告诉它要做的事,下达具体任务。
  • Personality**(个性)**:规定它回答的风格,像幽默或严肃那种。
  • Experiment**(尝试)**:让它多给几个不同的答案来参考。

**例子:**扮演一名机器学习框架领域的软件开发专家以及专业博客撰写人。本博客的受众是那些有兴趣了解机器学习最新进展的技术专业人员。对最流行的机器学习框架进行全面概述,包括它们的优势和劣势。纳入现实生活中的实例和案例研究,用以说明这些框架在各个行业中是如何成功得到应用的。在回复时,综合运用安德烈・卡帕西(Andrej Karpathy)、弗朗索瓦・肖莱(Francois Chollet)、杰里米・霍华德(Jeremy Howard)以及扬・勒丘恩(Yann LeCun)的写作风格。

2、CO-STAR提示词框架

https://aiadvisoryboards.wordpress.com/2024/01/30/co-star-framework/

  • Context背景:给出任务相关背景。
  • Objective目标:明确让大语言模型执行的任务。
  • Style 风格:指定模型写作风格。
  • Tone语气:设定回复的情感倾向。
  • Audience观众:点明回复面向对象。
  • Response回复:给出内容的回复格式。

3、LangGPT结构化提示词

**LangGPT社区文档:[https://langgpt.ai)

LangGPT这是一种编写高质量提示词的工具,它的理论基础是一套特定的方法论,叫结构化提示词。这个方法论具有模块化、标准化的特点,能帮助人们更好地去编写提示词。简单来说,就是靠这套结构化提示词的方法论,来助力产出高质量的提示词

比如 LangGPT 的模板就有一套很好的思维链:先确定角色(Role),然后是角色简介(Profile),接着是角色技能(skill),再是角色要遵守的规则(Rules),之后是角色的工作流程(Workflow),然后是工作前的初始化准备(Initialization),最后就可以开始实际使用了。

下面有两个生成提示词的工具:

ChatGPT - LangGPT 提示词专家✍️https://chatgpt.com/g/g-Apzuylaqk-langgpt-ti-shi-ci-zhuan-jia

Chat with 提示词专家 - Kimi.aihttps://kimi.moonshot.cn/kimiplus/conpg00t7lagbbsfqkq0

自动化生成LangGPT提示词

  你是提示词专家,根据用户的输入设计用于生成**高质量(清晰准确)**的大语言模型提示词。- 技能:-   分析、写作、编码-   自动执行任务- ✍ 遵循提示工程的行业最佳实践并生成提示词# 输出要求:- 结构化输出内容。- 为代码或文章提供**详细、准确和深入**的内容。#   提示词模板(使用代码块展示提示内容):```你是xxx(描述角色和角色任务)- 技能:-   分析、写作、编码-   自动执行任务#   输出要求:- 结构化输出内容。- 为代码或文章提供**详细、准确和深入**的内容。-(其他基本输出要求)#   工作流程:- 仔细深入地思考和分析用户的内容和意图。- 逐步工作并提供专业和深入的回答。-(其他基本对话工作流程)#   初始化:欢迎用户,友好的介绍自己并引导用户使用。```**你的任务是帮助用户设计高质量提示词。**开始请打招呼:“您好!我是您的提示词专家助手,请随时告诉我您需要设计什么用途的提示词吧。

你可以使用上面的提示词在任意大模型中使用,帮助你生成结构化prompt。

4.实战

环境:网页版deepseek,vscode+通义灵码

模型使用:deepseek R1(深度思考) 会有思维链输出,对编写提示词和理解输出代码很有帮助,前期可以多使用这个。

1.使用prompt框架设计提示词,实现一个需求。这里我们就使用LangGPT模板开发一个简单应用。

  1. Chat with 提示词专家 - Kimi.ai 使用LangGPT 生成提示词模板

    使用kimi提示词生成工具, 这里我们使用一个简单的贪吃蛇为例。
    在这里插入图片描述
    在这里插入图片描述

    可以看到 LangGPT 的模板有一套很好的思维链:先确定角色(Role),然后是角色简介(Profile),接着是角色技能(skill),再是角色要遵守的规则(Rules),之后是角色的工作流程(Workflow),给出具体例子(Examples如果有),然后是工作前的初始化准备(Initialization),最后就可以开始实际使用了。
    其中 Initialization,可以很好的触发 大模型的 reflection能力,反向引导用户提问。

  2. 修改模板后调用 chatGpt或deepseek

    这里我们使用deepseek进行生成。

    在这里插入图片描述

    由于我们在Initialization (初始化)设置了 反思机制,大模型会引导用户完善提示。我们可以增加完善信息。这里我没啥需要完善就直接生成代码了。

    我们点击 运行html看下效果

在这里插入图片描述
在这里插入图片描述

可以看到一个功能相对完善的贪吃蛇游戏就设计出来了。

虽然贪吃蛇游戏游戏比较简单,可以不用机构化提示也能很好生成。但是使用结构化模板后,可以看到使用prompt模板后有几个好处:1.大模型会根据提示词的思维链进行交互。2.生成的信息相对可控。3.用户可以很清晰看懂和方便修改

  1. 继续交互调整

    交互时要遵循prompt原则

2.使用ai插件微调项目,如果是编辑代码

同样结构化的提示同样可以适用于ai编程工具。例如下面是cousor的(被扒出来的)默认提示词。
在这里插入图片描述

可以看出来cursor的提示词也是结构化的,感兴趣的小伙伴可以具体查看

https://github.com/x1xhlol/system-prompts-and-models-of-ai-tools

5.总结

目前ai使用我们大部分其实是prompt的方式使用ai,这种方式就是我们要扮演一个项目经理的角色,给ai提需求。怎么提会让ai输出的东西符合我们的预期呢,这个就需要我们具备两个重要的能力

1.prompt编写能力,其实就是文档(表达)能力,好的文档可以让没有经验的开发也能很快上手。

这块大家开发前都要养成写文档的习惯,好的文档可以直接让ai程序员直接输出代码,真不是吹牛。

因此如果你现在面对的主要是各种业务代码的开发,那么你需要转变你的角色了,你需要将自己定位成一个项目经理,你需要指挥AI程序员干活。你的视野需要提升level,将视野上升到需求维度,无需过多关注具体细节。

tips:

我们使用prompt工具可以很好帮助我们编写出比较高质量结构化的prompt,方便人去修改和大模型解析。prompt工程为大模型提供思维链,可以显著加快大模型的输出速度(可以不用使用深度思考)。

2.模块化能力,ai很适合处理小领域,标准化的东西。这个就需要我们有一定的项目分解能力,将大项目拆分为小模块,将小模块拆分为小需求。这块大家可以参考下DDD,DDD 上下文隔离模块化项目的结构非常适合使用AI编程。

参考文档:

https://zhuanlan.zhihu.com/p/11470727191

https://www.promptingguide.ai/zh/techniques/prompt_chaining

openai提示词工程:

https://platform.openai.com/docs/guides/prompt-engineering

Kimi*langGPT:

https://kimi.moonshot.cn/kimiplus/conpg00t7lagbbsfqkq0

原文
https://mp.weixin.qq.com/s/JfdGIqsg-w6fYPDEiu0Uuw

相关文章:

  • React组件测试完全指南:从入门到实践
  • vue3+dhtmlx 甘特图真是案例
  • 数据一致性问题剖析与实践(二)——单机事务的一致性问题
  • 数据为基:机器学习中数值与分类数据的处理艺术及泛化实践
  • MacOS中安装Python(homebrew,pyenv)
  • Stable Baselines3 结合 gym 训练 CartPole 倒立摆
  • 【教学类-102-17】蝴蝶三色图(用最大长宽作图,填入横板和竖版共16个WORD单元格模版大小,制作大小图)
  • Java 环境配置详解(Windows、macOS、Linux)
  • 【Leetcode 每日一题】1399. 统计最大组的数目
  • 第52讲:农业AI + 区块链——迈向可信、智能、透明的未来农业
  • 大模型框架技术演进与全栈实践指南
  • 1.5软考系统架构设计师:架构师的角色与能力要求 - 超简记忆要点、知识体系全解、考点深度解析、真题训练附答案及解析
  • Elasticsearch 报错 Limit of total fields [1000] has been exceeded
  • Postman忘记密码访问官网总是无响应
  • SpringCloud 微服务复习笔记
  • 第七篇:linux之基本权限、进程管理、系统服务
  • Linux[指令与权限]
  • Vm免安装直接使用虚拟机win7系统
  • 每日算法-250423
  • VR 全景看车的独特优势​
  • 上海车展上的双向奔赴:跨国车企融入中国创新,联手“在中国,为全球”
  • 世界免疫周丨专家呼吁加快HPV疫苗纳入国家免疫规划进程
  • 广州远洋宾馆负一层配电房发生火情:明火已扑灭,无人员伤亡
  • “听公交时听一听”,上海宝山街头遍布“有声图书馆”
  • 泡泡玛特一季度整体收入同比增超1.6倍,海外收入增近5倍
  • 海南一季度GDP为1904.17亿元,同比增长4.0%