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

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

相关文章:

Prompt 结构化提示工程

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

设计心得——数据结构的意义

一、数据结构 在老一些的程序员中,可能都听说过,程序其实就是数据结构算法这种说法。它是由尼克劳斯维特在其著作《算法数据结构程序》中提出的,然后在一段时期内这种说法非常流行。这里不谈论其是否正确,只是通过这种提法&#…...

【Pandas】pandas DataFrame rdiv

Pandas2.2 DataFrame Binary operator functions 方法描述DataFrame.add(other)用于执行 DataFrame 与另一个对象(如 DataFrame、Series 或标量)的逐元素加法操作DataFrame.add(other[, axis, level, fill_value])用于执行 DataFrame 与另一个对象&…...

Pycharm 代理配置

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

GPU 加速库(CUDA/cuDNN)

现代数字图像处理与深度学习任务对计算效率提出极高要求,GPU 加速库通过硬件并行计算能力大幅提升数据处理速度。 一、CUDA 并行计算架构深度解析 1. 架构设计与硬件协同 CPU-GPU 异构计算模型CPU 作为主机端,主要负责逻辑控制、任务调度以及数据预处…...

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

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

JAVA JVM面试题

你的项目中遇到什么问题需要jvm调优,怎么调优的,堆的最小值和最大值设置为什么不设置成一样大? 在项目中,JVM调优通常源于以下典型问题及对应的调优思路,同时关于堆内存参数(-Xms/-Xmx)的设置逻…...

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

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

世界比较权威的新车安全评鉴协会(汽车安全性测试,自动驾驶功能测试)

NCAP是英文“New Car Assessment Program”的缩写,即新车评价规程,最能考验汽车安全性的测试,在自动驾驶发展迅速的现阶段,安全问题频发,自动驾驶相关功能显然也需要进行测试评价。 1. 欧洲新车安全评鉴协会&#xff…...

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

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

CentOS 7 磁盘阵列搭建与管理全攻略

CentOS 7 磁盘阵列搭建与管理全攻略 在数据存储需求日益增长的今天,磁盘阵列(RAID)凭借其卓越的性能、数据安全性和可靠性,成为企业级服务器和数据中心的核心存储解决方案。CentOS 7 作为一款稳定且功能强大的 Linux 操作系统&am…...

CSS3布局方式介绍

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

FPGA设计 时空变换

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

AI心理健康服务平台项目面试实战

AI心理健康服务平台项目面试实战 第一轮提问: 面试官: 请简要介绍一下AI心理健康服务平台的核心技术架构。在AI领域,心理健康服务的机遇主要体现在哪些方面?如何利用NLP技术提升用户与AI的心理健康对话体验? 马架构…...

Eigen稀疏矩阵类 (SparseMatrix)

1. SparseMatrix 核心属性与初始化 模板参数 cpp SparseMatrix<Scalar, Options, StorageIndex> Scalar&#xff1a;数据类型&#xff08;如 double, float&#xff09;。 Options&#xff1a;存储格式&#xff08;默认 ColMajor&#xff0c;可选 RowMajor&#xff0…...

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

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

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

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

DAM-3B,英伟达推出的多模态大语言模型

DAM-3B是什么 DAM-3B&#xff08;Describe Anything 3B&#xff09;是英伟达推出的一款多模态大语言模型&#xff0c;专门用于为图像和视频中的特定区域生成详细描述。用户可以通过点、边界框、涂鸦或掩码等方式来标识目标区域&#xff0c;从而得到精准且符合上下文的文本描述…...

【虚幻C++笔记】碰撞检测

目录 碰撞检测参数详情示例用法 碰撞检测 显示名称中文名称CSphere Trace By Channel按通道进行球体追踪UKismetSystemLibrary::SphereTraceSingleSphere Trace By Profile按描述文件进行球体追踪UKismetSystemLibrary::SphereTraceSingleByProfileSphere Trace For Objects针…...

C++学习:六个月从基础到就业——STL:分配器与设计原理

C学习&#xff1a;六个月从基础到就业——STL&#xff1a;分配器与设计原理 本文是我C学习之旅系列的第三十篇技术文章&#xff0c;也是第二阶段"C进阶特性"的第九篇&#xff0c;主要介绍C STL中的分配器设计原理与实现。查看完整系列目录了解更多内容。 引言 在之前…...

【Android】四大组件之Service

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

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

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

spring-session-data-redis使用

spring-session-data-redis是spring session项目中的一个子模块&#xff0c;&#xff0c;他允许你使用Redis来存储http session&#xff0c;&#xff0c;从而支持多个应用实例之间共享session&#xff0c;&#xff0c;&#xff0c;即分布式session 原理&#xff1a; EnableRed…...

图论---LCA(倍增法)

预处理 O( n logn )&#xff0c;查询O( log n ) #include<bits/stdc.h> using namespace std; typedef pair<int,int> pii; const int N40010,M2*N;//是无向边&#xff0c;边需要见两边int n,m; vector<int> g[N]; //2的幂次范围 0~15 int depth[N],fa[N][1…...

WPF实现类似Microsoft Visual Studio2022界面效果及动态生成界面技术

WPF实现类似VS2022界面效果及动态生成界面技术 一、实现类似VS2022界面效果 1. 主窗口布局与主题 <!-- MainWindow.xaml --> <Window x:Class"VsStyleApp.MainWindow"xmlns"http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x…...

【安全扫描器原理】网络扫描算法

【安全扫描器原理】网络扫描算法 1.非顺序扫描2.高速扫描 & 分布式扫描3.服务扫描 & 指纹扫描 1.非顺序扫描 参考已有的扫描器&#xff0c;会发现几乎所有的扫描器都无一例外地使用增序扫描&#xff0c;即对所扫描的端口自小到大依次扫描&#xff0c;殊不知&#xff0…...

WPF之项目创建

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

Unity中数据储存

在Unity项目开发中,会有很多数据,有需要保存到本地的数据,也有直接保存在缓存中的临时数据,一般为了方便整个项目框架中各个地方能调用需要的数据,因此都会实现一个数据工具或者叫数据管理类,用来管理项目中所有的数据。 首先保存在缓存中的数据,比如用户信息,我们只需…...

第十一天 主菜单/设置界面 过场动画(Timeline) 成就系统(Steam/本地) 多语言支持

前言 对于刚接触Unity的新手开发者来说&#xff0c;构建完整的游戏系统往往充满挑战。本文将手把手教你实现游戏开发中最常见的四大核心系统&#xff1a;主菜单界面、过场动画、成就系统和多语言支持。每个模块都将结合完整代码示例&#xff0c;使用Unity 2022 LTS版本进行演示…...

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

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