Prompt 结构化提示工程

news2025/4/27 13:59:28

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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/2344133.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Pycharm 代理配置

Pycharm 代理配置 文章目录 Pycharm 代理配置1. 设置系统代理1.1 作用范围1.2 使用场景1.3 设置步骤 2. 设置 python 运行/调试代理2.1 作用范围2.2 使用场景2.3 设置步骤 Pycharm 工具作为一款强大的 IDE,其代理配置在实际开发中也是必不可少的,下面介绍…

Spring Native:GraalVM原生镜像编译与性能优化

文章目录 引言一、Spring Native与GraalVM基础1.1 GraalVM原理与优势1.2 Spring Native架构设计 二、原生镜像编译实践2.1 构建配置与过程2.2 常见问题与解决方案 三、性能优化技巧3.1 内存占用优化3.2 启动时间优化3.3 实践案例分析 总结 引言 微服务架构的普及推动了轻量级、…

药监平台上传数据报资源码不存在

问题:电子监管码上传药监平台提示“导入的资源码不存在” 现象:从生产系统导出的关联关系数据包上传到药监平台时显示: 原因:上传数据包的通道的资源码与数据包的资源码不匹配。 解决方法:检查药监平台和生产系统的药…

【Linux应用】交叉编译环境配置,以及最简单粗暴的环境移植(直接从目标板上复制)

【Linux应用】交叉编译环境配置,以及最简单粗暴的环境移植(直接从目标板上复制) 文章目录 交叉编译器含有三方库的交叉编译直接从目标板上复制编译环境glibc库不一致报错方法1方法2 附录:ZERO 3烧录ZERO 3串口shell外设挂载连接Wi…

CSS3布局方式介绍

CSS3布局方式介绍 CSS3布局(Layout)系统是现代网页设计中用于构建页面结构和控制元素排列的一组强大工具。CSS3提供了多种布局方式,每种方式都有其适用场景,其中最常用的是Flexbox和CSS Grid。 先看传统上几种布局方式&#xff…

FPGA设计 时空变换

1、时空变换基本概念 1.1、时空概念简介 时钟速度决定完成任务需要的时间,规模的大小决定完成任务所需要的空间(资源),因此速度和规模就是FPGA中时间和空间的体现。 如果要提高FPGA的时钟,每个clk内组合逻辑所能做的事…

《AI大模型趣味实战》智能Agent和MCP协议的应用实例:搭建一个能阅读DOC文件并实时显示润色改写过程的Python Flask应用

智能Agent和MCP协议的应用实例:搭建一个能阅读DOC文件并实时显示润色改写过程的Python Flask应用 引言 随着人工智能技术的飞速发展,智能Agent与模型上下文协议(MCP)的应用场景越来越广泛。本报告将详细介绍如何基于Python Flask框架构建一个智能应用&…

uniapp开发03-轮播图组件swiper的简单使用案例

uniapp开发03-轮播图组件swiper的简单使用案例!这个仅仅是官方提供的一个轮播图组件啊。实际上我们项目开发的时候,会应用到其他第三方公司的轮播图组件资源!效果更强大。兼容性更强。 废话不多说,我们直接上代码。分析代码。 &l…

【Android】四大组件之Service

目录 一、什么是Service 二、启停 Service 三、绑定 Service 四、前台服务 五、远程服务扩展 六、服务保活 七、服务启动方法混用 你可以把Service想象成一个“后台默默打工的工人”。它没有UI界面,默默地在后台干活,比如播放音乐、下载文件、处理…

TRO再添新案 TME再拿下一热门IP,涉及Paddington多个商标

4月2日和4月8日,TME律所代理Paddington & Company Ltd.对热门IP Paddington Bear帕丁顿熊的多类商标发起维权,覆盖文具、家居用品、毛绒玩具、纺织用品、游戏、电影、咖啡、填充玩具等领域。跨境卖家需立即排查店铺内的相关产品! 案件基…

WPF之项目创建

文章目录 引言先决条件创建 WPF 项目步骤理解项目结构XAML 与 C# 代码隐藏第一个 "Hello, WPF!" 示例构建和运行应用程序总结相关学习资源 引言 Windows Presentation Foundation (WPF) 是 Microsoft 用于构建具有丰富用户界面的 Windows 桌面应用程序的现代框架。它…

AI数字人:未来职业的重塑(9/10)

摘要:AI 数字人凭借计算机视觉、自然语言处理与深度学习技术,从虚拟形象进化为智能交互个体,广泛渗透金融、教育、电商等多领域,重构职业生态。其通过降本提效、场景拓展与体验升级机制,替代重复岗位工作,催…

深入解析Mlivus Cloud中的etcd配置:最佳实践与高级调优指南

作为大禹智库的向量数据库高级研究员,我在《向量数据库指南》一书中详细阐述了向量数据库的核心组件及其优化策略。今天,我将基于30余年的实战经验,深入剖析Mlivus Cloud中etcd这一关键依赖的配置细节与优化方法。对于希望深入掌握Mlivus Cloud的读者,我强烈建议参考《向量…

前端面试宝典---vue原理

vue的Observer简化版 class Observer {constructor(value) {if (!value || typeof value ! object) returnthis.walk(value) // 对对象的所有属性进行遍历并定义响应式}walk (obj) {Object.keys(obj).forEach(key > defineReactive(obj, key, obj[key]))} } // 定义核心方法…

PyTorch卷积层填充(Padding)与步幅(Stride)详解及代码示例

本文通过具体代码示例讲解PyTorch中卷积操作的填充(Padding)和步幅(Stride)对输出形状的影响,帮助读者掌握卷积层的参数配置技巧。 一、填充与步幅基础 填充(Padding):在输入数据边缘…

用go从零构建写一个RPC(仿gRPC,tRPC)--- 版本1

希望借助手写这个go的中间件项目,能够理解go语言的特性以及用go写中间件的优势之处,同时也是为了更好的使用和优化公司用到的trpc,并且作者之前也使用过grpc并有一定的兴趣,所以打算从0构建一个rpc系统,对于生产环境已…

django之账号管理功能

账号管理功能 目录 1.账号管理页面 2.新增账号 3.修改账号 4.账号重置密码 5.删除账号功能 6.所有代码展示集合 7.运行结果 这一片文章, 我们需要新增账号管理功能, 今天我们写到的代码, 基本上都是用到以前所过的知识, 不过也有需要注意的细节。 一、账号管理界面 …

月之暗面开源 Kimi-Audio-7B-Instruct,同时支持语音识别和语音生成

我们向您介绍在音频理解、生成和对话方面表现出色的开源音频基础模型–Kimi-Audio。该资源库托管了 Kimi-Audio-7B-Instruct 的模型检查点。 Kimi-Audio 被设计为通用的音频基础模型,能够在单一的统一框架内处理各种音频处理任务。主要功能包括: 通用功…

IDEA配置将Servlet真正布署到Tomcat

刚开始只能IDEA运行完Servlet web application 并保持IDEA运行才能通过浏览器访问到我的Servlet,跟想象中的不一样,不应该是IDEA运行完项目以后只要打开Tomcat就能访问吗?事实时运行完项目只要关掉IDEA就不能再访问到应用了,而且T…

刚体运动 (位置向量 - 旋转矩阵) 笔记 1.1~1.3 (台大机器人学-林沛群)

目录 1. 理解刚体的“自由度”(Degrees of Freedom, DOF) 1.1 平面运动 (2D) 1.2 空间运动 (3D) 2. 统一描述:引入“体坐标系”(Body Frame) 3. 从“状态”到“运动”:引入微分 3.1 补充:…