5. Prompt 提示词
5. Prompt 提示词
@
提示词
在生成式人工智能中,创建提示对于开发人员来说是一项至关重要的任务。这些提示的质量和结构会显著影响人工智能输出的有效性。投入时间和精力设计周到的提示可以显著提升人工智能的成果。
例如,一项重要的研究表明,以“深呼吸,一步一步解决这个问题”作为提示开头,可以显著提高解决问题的效率。这凸显了精心选择的语言对生成式人工智能系统性能的影响。
提示词类型:
public enum MessageType {
USER("user"), // 用户(显示)
ASSISTANT("assistant"), // AI回复
SYSTEM("system"), // 系统 (隐式)
TOOL("tool"); // 工具
...
}
- SYSTEM 系统角色:引导AI的行为和响应方式,设置AI如何解释和回复输入的参数或规则。这类似于在发起对话之前向AI提供指令。
- USER用户角色:代表用户的输入——他们向AI提出的问题、命令或语句。这个角色至关重要,因为它构成了AI响应的基础。
- ASSISTANT助手角色:AI 对用户输入的响应。它不仅仅是一个答案或反应,对于维持对话的流畅性至关重要。通过追踪 AI 之前的响应(其“助手角色”消息),系统可以确保交互的连贯性以及与上下文的相关性。助手消息也可能包含功能工具调用请求信息。它就像 AI 中的一项特殊功能,在需要执行特定功能(例如计算、获取数据或其他不仅仅是对话的任务)时使用。
- TOOL工具/功能角色:工具/功能角色专注于响应工具调用助手消息返回附加信息。
提示词模板:
有时候, 提示词里面的内容不能写死, 需要根据对话动态传入
chatModel $
可以使用SystemPromptTemplate
String userText = """
请告诉我三位著名的海盗,他们的黄金时代和他们的动机。
每位海盗至少写一句话。
""";
Message userMessage = new UserMessage(userText);
String systemText = """
你是一个友好的 AI 助手,帮助人们寻找信息。
你的名字是 {name}。
你应该用你的名字回复用户的请求,并以一种 {voice} 的风格进行回复。
""";
SystemPromptTemplate systemPromptTemplate = new SystemPromptTemplate(systemText);
Message systemMessage = systemPromptTemplate.createMessage(Map.of("name", name, "voice", voice));
Prompt prompt = new Prompt(List.of(userMessage, systemMessage));
List<Generation> response = chatModel.call(prompt).getResults();
chatClient
String answer = ChatClient.create(chatModel).prompt()
.user(u -> u
.text("告诉我5部{composer}的电影.")
.param("composer", "周星驰"))
.call()
.content();
自定义提示词模板(了解即可)
chatModel $
PromptTemplate promptTemplate = PromptTemplate.builder()
.renderer(StTemplateRenderer.builder().startDelimiterToken('<').endDelimiterToken('>').build())
.template("""
告诉我5部<composer>的电影.
""")
.build();
String prompt = promptTemplate.render(Map.of("composer", "John Williams"));
chatClient
String answer = ChatClient.create(chatModel).prompt()
.user(u -> u
.text("告诉我5部<composer>的电影")
.param("composer", "John Williams"))
.templateRenderer(StTemplateRenderer.builder().startDelimiterToken('<').endDelimiterToken('>').build())
.call()
.content();
提示词模板文件
chatModel $
@Value("classpath:/prompts/system-message.st")
private Resource systemResource;
SystemPromptTemplate systemPromptTemplate = new SystemPromptTemplate(systemResource);
chatClient
/prompts/system-message.st
告诉我5部{composer}的电影
@Test
public void testPrompt(@Autowired DeepSeekChatModel chatModel,
// 加载该资源文件
@Value("classpath:/prompts/system-message.st")
Resource systemResource) {
ChatClient chatClient = ChatClient.builder(chatModel)
.defaultSystem(systemResource)
.build();
String content = chatClient.prompt()
.system(p -> p.param("composer","周星驰"))
.call()
.content();
System.out.println(content);
}
提示词设置技巧 $
简单技巧
- 文本摘要:
将大量文本缩减为简洁的摘要,捕捉关键点和主要思想,同时省略不太重要的细节。 - 问答:
专注于根据用户提出的问题,从提供的文本中获取具体答案。它旨在精准定位并提取相关信息以响应查询。 - 文本分类:
系统地将文本分类到预定义的类别或组中,分析文本并根据其内容将其分配到最合适的类别。 - 对话:
创建交互式对话,让人工智能可以与用户进行来回交流,模拟自然的对话流程。 - 代码生成:
根据特定的用户要求或描述生成功能代码片段,将自然语言指令转换为可执行代码。
高级技术
- 零样本、少样本学习:
使模型能够利用特定问题类型的极少或没有先前的示例做出准确的预测或响应,并使用学习到的概括来理解和执行新任务。 - 思路链:
将多个AI响应连接起来,创建连贯且符合语境的对话。它帮助AI保持讨论的线索,确保相关性和连续性。 - ReAct(推理 + 行动):
在这种方法中,人工智能首先分析输入(推理),然后确定最合适的行动或响应方案。它将理解与决策结合在一起。
Microsoft 指导
- 提示创建和优化框架:
微软提供了一种结构化的方法来开发和完善提示。该框架指导用户创建有效的提示,以便从 AI 模型中获取所需的响应,并优化交互以提高清晰度和效率。
- 指令明确
- 避免情绪化内容
- “求求你好好说啊!”“你这样我不会啊”
- 不要让大模型去猜去臆想你的想法, 描述足够清楚
- 补充必要背景信息:身份、场景、用途、已有内容等,避免 AI “脑补” 出错。
- 避免“或许、可能、你懂的”等模糊修饰语
- 把大模型当一个小学生,你描述的任务越清楚他执行越具体
模糊:写一篇文章
清晰:写一篇 800 字的高考作文,主题 “坚持与创新”,结构分引言、三个论点(每个配历史案例)、结论,语言风格正式书面
- 避免情绪化内容
- 格式清晰(结构化)
可以通关markdown格式,确定一级标题、二级标题、列表 这样更利于模型理解。后续维也更加清晰
公式:「角色设定」+「具体任务(技能)」+「限制条件(约束)」+「示例参考」
# 角色
你是一位热情、专业的导游,熟悉各种旅游目的地的风土人情和景点信息。你的任务是根据用户的需求,为他们规划一条合理且有趣的旅游路线。
## 技能
### 技能1:理解客户需求
- 询问并了解用户的旅行偏好,包括但不限于目的地、预算、出行日期、活动偏好等信息。
- 根据用户的需求,提供个性化的旅游建议。
### 技能2:规划旅游路线
- 结合用户的旅行偏好,设计一条详细的旅游路线,包括行程安排、交通方式、住宿建议、餐饮推荐等。
- 提供每个景点的详细介绍,包括历史背景、特色活动、最佳游览时间等。
### 技能3:提供实用旅行建议
- 给出旅行中的实用建议,如必备物品清单、当地风俗习惯、安全提示等。
- 回答用户关于旅行的各种问题,例如签证、保险、货币兑换等。
- 如果有不确定的地方,可以调用搜索工具来获取相关信息。
## 限制
- 只讨论与旅行相关的话题。
- 确保所有推荐都基于客户的旅行需求。
- 不得提供任何引导客户参与非法活动的建议。
- 所提供的价格均为预估,可能会受到季节等因素的影响。
- 不提供预订服务,只提供旅行建议和信息。
# 知识库
请记住以下材料,他们可能对回答问题有帮助。
最后:
“在这个最后的篇章中,我要表达我对每一位读者的感激之情。你们的关注和回复是我创作的动力源泉,我从你们身上吸取了无尽的灵感与勇气。我会将你们的鼓励留在心底,继续在其他的领域奋斗。感谢你们,我们总会在某个时刻再次相遇。”
5. Prompt 提示词的更多相关文章
- 免费Midjourney AI绘画Prompt提示词平台合集
Midjourney AI绘图最关键的地方在于Prompt提示词写的好,一个好的提示词可以让AI模型创造出更优质的绘图,以下是8个免费的Midjourney Prompt提示词辅助平台. 编辑切换 ...
- AI绘画提示词创作指南:DALL·E 2、Midjourney和 Stable Diffusion最全大比拼 ⛵
作者:韩信子@ShowMeAI 深度学习实战系列:https://www.showmeai.tech/tutorials/42 自然语言处理实战系列:https://www.showmeai.tech ...
- Semantic Kernel 入门系列:🥑突破提示词的限制
无尽的上下文 LLM的语言理解和掌握能力在知识内容的解读和总结方面提供了强大的能力. 但是由于训练数据本身来自于公共领域,也就注定了无法在一些小众或者私有的领域能够足够的好的应答. 因此如何给LLM ...
- Midjourney 提示词工具(10 个国内外最好最推荐的)
Midjourney,是一个革命性的基于人工智能的艺术生成器,可以从被称为提示的简单文本描述中生成令人惊叹的图像.Midjourney已经迅速成为艺术家.设计师和营销人员的首选工具(包括像我这样根本不 ...
- SublimeCodeIntel 所有代码提示和补全插件 All Autocomplete 插件搜索所有打开的文件来寻找匹配的提示词
SublimeCodeIntelSublimeCodeIntel 作为一个代码提示和补全插件,支持 JavaScript.Mason.XBL.XUL.RHTML.SCSS.Python.HTML.Ru ...
- Selenium处理alert/confirm/prompt提示框
About 回到顶部 重新认识alert首先,不是所有的alert都能叫做alert框.JavaScript中,关于消息提示框的方法有三个(虽然都跟alert差不多): alert(message)方 ...
- 第2天:JavaScript基础(运算符、案例、循环、冒泡以及prompt提示输入框)
一元运算在前在后的区别 加加 var num1 = 10; //++在后面 先参与运算 再自加1 var sum1 = num1++ +10; console.log("sum1的值:&qu ...
- SQL Prompt提示和SQL默认智能提示冲突解决
- 一键上手时下最火AI作画工具
摘要:在华为云ModelArts上, 无需考虑计算资源.环境的搭建,就算不懂代码,也能按照教程案例,通过Stable Diffusion成为艺术大师. 本文分享自华为云社区<跟着华为云Model ...
- ChatGPT 与 Midjourney 强强联手,让先秦阿房宫重现辉煌!
Midjourney 是一款非常特殊的 AI 绘画聊天机器人,它并不是软件,也不用安装,而是直接搭载在 Discord 平台之上,所有的功能都是通过调用 Discord 的聊天机器人程序实现的.要想使 ...
随机推荐
- java PriorityQueueTest.java
简介 优先级队列内部采用大顶堆或者小顶堆实现 code import java.util.*; import java.time.*; public class PriorityQueueTest { ...
- ICEE-SPI-debug最好用 SPI 和 JTAG 或更优的(高达104MHz的)SPI通信保障飞速的debug响应;不再像UART的115200 BaudRate ~
S25FL032P : 32-Mbit CMOS 3.0 Volt Flash Memory with 104-MHz SPI (Serial Peripheral Interface) Multi ...
- prometheus学习笔记(1)-mac单机版环境搭建
注:以下所有环境均为mac笔记本 一.安装prometheus brew install prometheus 安装完后,默认的安装路径为: /usr/local/Cellar/prometheus/ ...
- 「TAOI-2」Break Through the Barrier 题解
前言:比赛前去做牙齿矫正,回来晚了 10 分钟--做比赛的运气全用在了一路绿灯上了(无语).第二题切了两个半小时.决定写篇题解来抒发一下再记得愤怒愉悦之情. AC 的想法很简单,就是表示出每一串连续的 ...
- 万人同屏 角色动画优化 Animation Instancing动画实例化– SkinnedMeshRenderer的实例化 GPU Instancing
在上一篇文章中有个技术点引发了我的好奇 GPU Instancing 这个技术是Unity自带的功能,但是他不支持SkinnedMeshRenderer,所以要采用特殊方法 他这里采用GPU蒙皮+EC ...
- 笔记-docker学习-2
继续之前的docker学习 16.docker commit 从容器创建一个新的镜像 OPTIONS说明: -a :提交的镜像作者: -c :使用Dockerfile指令来创建镜像: -m :提 ...
- VS code 中 自动格式化 html 代码
方法一:右键菜单格式化 打开 HTML 文件. 右键点击空白处或代码区域. 选择 "Format Document"(格式化文档) 或 "Format Selection ...
- 就像哆啦A梦的神奇口袋,看似平平无奇,实则内藏乾坤!
"一软在手,天下我有"是啥感觉?图片就像哆啦A梦的神奇口袋,看似平平无奇,实则内藏乾坤!一个工具箱内置200+软件,那种乐趣,用一次就忘不掉~不管你有没有体验过,今天就让你试一试! ...
- 【EF Core】聊聊“复合”属性
复合(或复杂)属性,即 Complex Property,怎么理解呢?这是相对于常见的基础类型,比如 string.int.byte.long 等类型的属性就是基础类型值,而由多个基础类型构成的类型就 ...
- CmsEasy7.6支付逻辑漏洞
最近在学习支付逻辑漏洞相关的知识,利用一些测试思路来复现一下靶场,顺便做一下笔记,不过这个靶场比较老了,供新手学习练练手 靶场源码下载链接:https://ftp.cmseasy.cn/CmsEasy ...
