做大模型产品,如何设计prompt?

news2024/11/15 7:12:57

做GenAI产品,除了要设计好的AI任务流程,合理的拆分业务以外,最重要的就是写好prompt,管理好prompt,持续迭代prompt。

prompt一般有两种形式:结构化prompt对话式prompt

结构化prompt的优点是通过规范的结构把任务介绍得很清楚,缺点就是往往很长,比较复杂。而对话式prompt更加简单,更符合日常的说话习惯,缺点是难以一句话描述清楚任务,最后得不到满意的结果,需要进行多轮对话才能获得最终结果。

两种prompt都有自己的适合场景,结构化的prompt更合适用来内置到产品工作流中,由开发者编写、维护,非对话类AI产品基本采用的就是这种复杂的prompt形式。对话式prompt就合适用在chatbot场景,直接由用户发出。

关于对话式prompt,关键是引导用户持续对话下去,很多时候,用户其实是不知道怎么提问的,我们可以通过搜索query推荐策略来给用户推荐话题相关的prompt,当然也可以把上下文丢给大模型并让模型针对上面的对话提出x个最相关的问题。

如果大家对推荐query感兴趣(评论留言),后面我将单独写一篇文章,本文主要关注非对话类(即“任务型”)AI产品的设计,因此下面着重介绍下结构化prompt的设计思路。

1、结构化prompt

结构化prompt一般可以包括以下几个部分:

  • 定义角色
  • 介绍背景和输入的数据格式
  • 提出任务(可能会有多个任务)
  • 执行所有任务的步骤
  • 定义输出格式
  • 给定输出例子

这是一个结构化prompt的大概框架,这个框架可以采用markdown来描述。结构化prompt有两个很关键的地方需要注意,第一个是多任务,第二个就是输出格式的控制。

  • 关于多任务:首先,一定要明白在一个prompt里面内置多个任务,绝对不是一个好的选择,除非你有强烈的这样做的理由。但是选择做多任务可以「降低成本」,我相信对大多数独立开发者来说,都是重要的事情。
  • 如果在一个prompt同时执行「总结章节」,「抽取highlight」,「抽取关键字」等任务,就是为了让这些事情只需要输入一遍transcript就可以同时获取这些结果。如果单独执行每一个任务,那就需要把相同的transcript数据输入LLM多次,这将会多消耗数倍的成本。
  • 但一定要明白,多任务无疑增加了LLM执行的复杂度,这并不符合「尽量给LLM简单、明确、较小的任务的原则」。经过测试,多任务执行的结果质量赶单任务是有差距的,这就需要不断的打磨和权衡吧。
  • 关于输出格式控制:由于LLM总结结果是需要在任务型产品页面上进行结构化展示,并不是chatbot那样直接输出给用户,所以这类产品对LLM的输出格式就需要严格定义,并且希望LLM能够稳定且正确的输出。对于程序员来说,一般会选择json作为输出。但考虑到LLM的输出可能不稳定,且偶尔输出的json可能是非法的,这种情况下只能重试LLM,导致浪费token,增加成本。因而,建议选择LLM的输出格式为markdown,并通过以下几点来控制输出,减少重试LLM。
  1. prompt中提供输出示例
  2. 输出格式使用简单的markdown语法,自己解析markdown
  3. 借助编程做好容错处理

2、prompt管理

我们采用模板技术来定义prompt,然后通过模板变量去控制prompt,比如多语言等。使用模板来管理prompt后,就不需要为不同的情况都写一份prompt,只需要抽象好prompt模板+模板变量即可。

3、prompt测试

可以在大模型第一梯队或者专门的prompt playground上测试:

  • Open AI playground
  • Google AI studio
  • Knit - The best beta AI playground for prompt developers

在调试prompt的时候,温度(temperature)应该是最常用的一个选项。也就是设置不同的温度,可能会得到不同的效果。像总结文章这种需求,需要基于原文的事实,那最好是温度设置低一些,倾向0都可以。温度设置得很高,大于1,LLM就会更大概率做自由发挥了。还是看自己的业务场景,以及更多的测试。

4、prompt迭代

在开发AI产品的时候,不要纠结一步到位写好prompt,还是需要将重心放到完成整个业务流程和功能上。prompt的编写也和代码一样,需要持续的迭代、优化。所以,需要好的prompt管理方式,方便持续的迭代、测试改进。

虽然对prompt不断地打磨,调试,并不是一件roi很高的事情,但有时候你又不得不做。

5、实战示例

比如我想做一个文章阅读助手的任务型产品,你可以参考上述结构化prompt的要素来设计prompt模版:

你是一个文章阅读助手,我会给你一个文章链接,请根据以下步骤输出markdown格式的内容:

一、我们一步一步思考,阅读我提供的内容,并做出以下操作:
1、提取文章的元数据
- 标题:
- 作者:
- 标签:(阅读文章内容后给文章打上标签,标签通常是领域、学科或专有名词)
2、一句话总结这篇文章;
3、总结文章内容并写成摘要;
二、精读文章内容,并作出以下操作:
1、请详细地列举文章的大纲,并叙述大纲中每一部分的内容,
2、总结文章的结论;
3、列举读这篇文章,我可以学到哪些知识?
三、好的,接着
1、提取文章中的金句;
2、这篇文章里,作者有哪些独到的见解?

为你提供的文章链接为:{url}

由于国内月之暗面的kimi模型在阅读长文本上表现很好,我在kimi chat上测试了一下,能够比较好满足我们结构化的要求(当然如果输出的格式不满足我们的要求,在prompt设计时可以把预期的示例加上)。

最后,必须强调下,做任务型AI产品最好选择那些在chat bot中很难满足的场景或工作流,否则一旦用户掌握了在chat中使用prompt的方法,任务型AI产品的价值很快就被对话产品覆盖掉

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

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

相关文章

C++:二叉树进阶

二叉搜索树 二叉搜索树又称二叉排序树,它或者是一棵空树 ,或者是具有以下性质的二叉树 : 若它的左子树不为空,则左子树上所有节点的值都小于根节点的值 若它的右子树不为空,则右子树上所有节点的值都大于根节点的值 它的左右子…

超分中使用的损失函数和经典文章

损失函数 https://towardsdatascience.com/super-resolution-a-basic-study-e01af1449e13 在GAN出现之前,使用的更多是MSE,PSNR,SSIM来衡量图像相似度,同时也使用他们作为损失函数。 MSE 表面上MSE直接决定了PSNR,MSE&#xff…

路径规划算法 | A* 搜索算法

作者:Rachit Belwariar 编译:东岸因为一点人工一点智能 路径规划算法 | A* 搜索算法https://mp.weixin.qq.com/s/lTVkknLWZ4ERYnv8m0JCGQ 动机:为了在现实生活中近似求解最短路径,例如地图、游戏等存在许多障碍物的情况。我们可…

Linux命令超详细介绍

目录 安装 Linux的目录结构: Linux命令入门: Linux命令的基础格式: 例子: ls 参数 选项 注意: 目录切换命令:cd/pwd cd: pwd: 相对路径和绝对路径: mkdir 不用参数: …

非Root用户编译C程序如何生成Core文件

非Root用户编译C程序如何生成Core文件 一.生成core文件的步骤1.设置核心转储文件大小为不限制2.**修改核心转储文件生成路径**3.指定core的生成目录为当前目录下4.测试程序 二.核心转储相关设置文件 一.生成core文件的步骤 1.设置核心转储文件大小为不限制 #查询生成core文件…

云上如何实现 Autoscaling: AutoMQ 的实战经验与教训

01 背景 弹性是云原生、Serverless 的基础。AutoMQ 从软件设计之初即考虑将弹性作为产品的核心特质。对于 Apache Kafka 而言,由于其存储架构诞生于 IDC 时代,针对物理硬件设计,存储层强依赖本地存储,已不能很好地适应现在云的时…

【网络】:高级IO(一)

高级IO 一.五种IO模型二.多路转接(select)三.非阻塞IO(funcl)四.POLL IO等待拷贝。单位时间内,IO过程中,等的比例越小,IO就越高效。几乎所有提高IO效率的方式本质都是基于此。 一.五种IO模型 举…

深入解析:前端跨域问题及其CORS、代理、JSONP、Nginx反向代理等解决方案

前端跨域是指在浏览器环境下,当一个网页(源)尝试访问与自身源不同的服务器资源(目标源)时,由于浏览器的同源策略限制而产生的访问限制现象。同源策略(Same-Origin Policy)是浏览器实…

芜湖市夜间景区、文娱主题活动、夜读空、精品文艺演出、数字促销补助等夜间经济奖励政策申报条件、材料

芜湖市示范街区、示范门店、夜间景区、文娱主题活动、体育赛事、夜读空、精品文艺演出、数字促销补助等夜间经济奖励政策申报条件、材料及补贴标准整理如下 芜湖市2023年促进夜间经济发展若干政策申报时间: 针对2023年度促进夜间经济发展若干政策(商务局…

❤️新版Linux零基础快速入门到精通——第一部分❤️

❤️新版Linux零基础快速入门到精通——第一部分❤️ 非科班的我!Ta!还是来了~~~1. 来认识一下Linux吧!1.1 操作系统概述1.1.1 操作系统概述1.1.2 操作系统的发展史1.1.2.1 Unix1.1.2.2 Minix1.1.2.3 Linux 1.1.3 操作系统的发展 1.2 Linux初识1.2.1 Lin…

二叉检索树的实现——增删改查、读取命令文件、将结果写入新文件

看这篇文章前的知识储备 链接: 二叉树的性质和分类 链接: 二叉检索树的概念 、insert方法的图解、实现、时间代价分析 链接: 二叉检索树的search、remove方法的图解、实现、时间代价分析 1、中序遍历及中序遍历写进文件的区别 两者思路一致,将二叉树分为三部分&…

Linux信号(产生)

个人主页:Lei宝啊 愿所有美好如期而遇 目录 信号是什么? 为什么要有信号? 信号是如何产生的? kill命令 键盘产生信号 系统调用 kill系统调用 raise函数 abort函数 自制kill命令 ​编辑 软件条件 举例一&#xff1…

C++ :设计模式实现

文章目录 原则单一职责原则开闭原则依赖倒置原则接口隔离原则里氏替换原则 设计模式单例模式观察者模式策略模式代理模式 原则 单一职责原则 定义: 即一个类只负责一项职责 问题: 类 T 负责两个不同的职责:职责 P1,职责 P2。当…

大数据第六天

这里写目录标题 问题解决问题查询插入(时间慢)练习sql数据清理 问题 FAILED: ParseException line 1:16 mismatched input ‘input’ expecting INPATH near ‘local’ in load statement MismatchedTokenException(24!155) 加载数据的时候出现了这个错误,我们解释…

【六十】【算法分析与设计】用一道题目解决dfs深度优先遍历,dfs中节点信息,dfs递归函数模板进入前维护出去前回溯,唯一解的剪枝飞升返回值true

路径之谜 题目描述 小明冒充X星球的骑士,进入了一个奇怪的城堡。 城堡里边什么都没有,只有方形石头铺成的地面。 假设城堡地面是nn个方格。如下图所示。 按习俗,骑士要从西北角走到东南角。可以横向或纵向移动,但不能斜着音走,也不能跳跃。每走到一个新方格,就要向正北 方和正西…

短信视频提取批量工具,免COOKIE,博主视频下载抓取,爬虫

痛点:关于看了好多市面的软件,必须要先登录自己的Dy号才能 然后找到自己的COOKIE 放入软件才可以继续搜索,并且无法避免长时间使用 会导致无法正常显示页面的问题。 有没有一种方法 直接可以使用软件,不用设置的COOKIE的方法呢 …

对于地理空间数据,PostGIS扩展如何在PostgreSQL中存储和查询地理信息?

文章目录 一、PostGIS扩展简介二、PostGIS存储地理空间数据1. 创建空间数据表2. 插入空间数据 三、PostGIS查询地理空间数据1. 查询指定范围内的地理空间数据2. 计算地理空间数据之间的距离3. 对地理空间数据进行缓冲区分析 四、总结 地理空间数据是指描述地球表面物体位置、形…

开源社区与开发者的故事

开源社区与开发者的故事 什么是开源社区你参加开源社区的主要目的你是否在开源社区中贡献,或者开源自己的项目?你认为个人开发者是否应该从开源中获利?如果是,该如何获利? 今天要谈及的主题是开源社区,那么…

2024年新算法-牛顿-拉夫逊优化算法(NRBO)优化BP神经网络回归预测

亮点: 输出多个评价指标:R2,RMSE,MSE,MAPE和MAE 满足需求,分开运行和对比的都有对应的主函数:main_BP, main_NRBO, main_BPvsBP_NRBO,并且详细中文注释 方便快捷:替换…