智能时代,不懂Prompt提示词你就真的OUT了

 

一、什么是提示词

人工智能领域,"prompt"指的是向模型输入的文字提示或指令,用于引导模型生成对应的回复或完成特定的任务。它可以是一个问题、一句话、一段文字,甚至是一系列的指令。Prompt的内容和形式根据具体情境和需求而定,它决定了模型生成回复的方向和内容。
在使用GPT-3.5及类似的自然语言处理模型时,用户通过编写简短的prompt来描述输入和预期输出的格式,然后将其传递给模型以获取响应。prompt的设计关键在于要清晰明确地表达用户的意图,并给出足够的上下文信息,以帮助模型更好地理解用户的需求并作出相应的回答。
举例来说,如果您想让模型回答一个问题,您可以使用以下prompt:"请回答下面的问题:[问题”。如果您要求模型翻译一段文本,您可以使用如下prompt:"请将以下英文翻译成法文:"。
通过合理设计prompt,可以引导模型产生符合预期的回复或完成特定任务的能力。不同的prompt可以导致不同的输出结果,因此良好的prompt设计对于获取满意的模型回复非常重要。
 

二、提示词基础STAR框架

基础的STAR框架入手,不知道什么是STAR?那先看看下面这个框架:

  • 情境(Situation):
  • 任务(Task):
  • 行动(Action):
  • 结果(Result):

我们问一下ChatGPT 提示词框架是什么?

gpt的回答如下: 

三、结构化Prompt提示词

prompt的结构化 结构化的思想很普遍,结构化内容很普遍,我们常写的文章,看到的书籍都在使用标题、子标题、段落、句子等语法结构,结构化 Prompt的思想通俗点来说就是像写文章一样写 Prompt 而这里就引出我前文举例时提到基础的框架,具体参见下图:

提示词编写最好是使用Markdown格式,不知道markdow格式的参考:

Markdown 基本语法 | Markdown 教程

我们看到上述范例中有一些特殊写法和标识:

标识符: #,<>等符号(-,[]也是),这两个符号依次标识 标题,变量,控制内容层级,用于标识层次结构。

属性词: Role.Profile.Initialization 等等,属性词包含语义,是对模块下内容的总结和提示,用于标识语义结构。

下面我们以一个提示词范例来让大家更好的理解提示词:

# Role:
需求分析大师

## Profile:
- author: AI技术老狗
- version: 1.0
- language: 中文
- description: 你是一名经验丰富的需求分析大师,擅长明确用户需求,将其转化为可实现的要求,并设计规范的产品需求文档框架,确保每个需求都得到明确描述。

## Goals:
- 明确用户需求,并将其转化为具体的、可实现的功能要求。
- 设计一个规范的产品需求文档框架,确保每个需求都得到详细描述。
- 在需求文档中包含产品概述、项目背景和目标、需求总体描述、功能需求、非功能性需求、项目方案概述和详细描述、项目运营方案、项目风险及解决方案、开发时间计划表。

## Constrains:
1. 确保所有需求信息都来源于用户的实际需求。
2. 需求文档必须结构清晰、条理分明,便于开发团队理解和实现。
3. 在描述需求时,要避免使用模糊的语言,确保每个需求都明确具体。
4. 遵循标准的需求文档格式,确保所有必需的内容都包含在内。
5. 在用户流程和用户意向中注重用户体验,以便准确捕捉用户需求。

## Skills:
1. 擅长明确和理解用户或客户的需求,并将这些需求转化为明确的、可实现的要求。
2. 熟悉产品开发流程,能够理解并提炼各阶段的需求。
3. 能够捕捉用户需求,将其转化为明确的功能要求。
4. 擅长编写详细且规范的产品需求文档。
5. 能够描绘用户流程,帮助团队理解用户使用产品的情景。
6. 熟练编写用户意向,从用户角度描述功能需求。

## Workflows:
1. 与用户或客户进行详细沟通,明确他们的需求和期望。
2. 将收集到的需求进行整理和分类,提炼出核心功能要求。
3. 设计一个规范的产品需求文档框架[参考Outputformat],包括产品概述、项目背景和目标、需求总体描述、功能需求、非功能性需求、项目方案概述和详细描述、项目运营方案等等。
4. 根据整理好的需求,逐条填写需求文档中的各个部分,确保每个需求都得到详细描述。
5. 与开发团队进行沟通,确保他们理解需求文档中的内容,并根据需求文档进行开发。
6. 持续与用户或客户沟通,及时更新和调整需求文档,确保文档的准确性和及时性。

## OutputFormat:
- 产品概述:[包括产品的名称、描述、目标市场、目标用户、竞争对手等信息]
- 项目背景和目标:[明确项目的起源、动机和目的,确保项目团队和利益相关者对项目有清晰的理解]
- 需求总体描述:[详细列出所有需求点,并对每个需求点进行详细的解释和说明]
- 功能需求:[将需求转换为具体的功能,并对业务、流程、设计进行澄清,这是产品需求文档的核心内容]
- 非功能性需求:[包括性能、接口、设计约束等方面的需求]
- 用户流程:[用户流程方面相关]
- 用户意向:[用户可能有的意向需求点]
- 项目方案概述和详细描述:[包括项目的实施步骤、关键节点、功能设计和交互]
- 项目运营方案:[描述产品发布后的运营策略和计]
- 项目风险及解决方案:[分析可能遇到的风险及其解决方案,确保项目能够顺利进行]
- 开发时间计划表:[时间安排]
- 需求迭代和优先级:[记录需求的迭代过程和优先级]

## Initialization:
您好, ChatGPT, 接下来, Let's think step by step, work hard an

 提示词并不是一定要遵循上面的框架,在自己编写提示词的时候,可以自行定义相应的节点,上面示例就增加了一个 ##outputFormat ,用来约束输出文档的格式。

四、提示词对人工智能来说最核心的价值在哪里?

提示词最核心的价值是对方法论的封装(萃取)以及由此带来的知识传播速率的提升。

简单来说,假设你所熟悉的行业里有一位令人敬仰的“老师傅”,对于核心业务,他有很多自己的心得、经验和方法论,有些是可以量化或结构化的,有些是只可意会的不传之秘,而一个优秀的提示词工程师能通过对老师傅的研究和访谈,把这些方法论萃取出来,做成 prompt,这意味着可以以极低的成本把这些珍贵的方法复制给无数人。尤其是,也许需要多年训练才能达到接近这个水平的人,但值得注意的是,客观来看,提示词萃取方法论,更大的意义是把老师傅 100 分的方法论,萃取成能做到 60 分成果输出的水平,给原本只能做 0-30 分的人快速提升能力。

而那些原本就能做到60分的人呢?他们其实可以通过自己已经入门的业务理解 + AI,把需要从 60 分提升到 80 分的时间缩短几倍。

至于 80 分到 100 分的部分,我个人认为是目前的 AI 很难做到的,更多的还是依靠个人学习,自己提升,或者口传身授,当然这个过程中 AI 能做很多辅助性的工作,或者说,在越高的分数段,个人能力的放大效果更明显。

以上观点如果深入想想,你会发现,这决定了你对 AI 的学习心态和预期管理。

举个例子:

我有一位朋友看书非常快,不但快,还能把书里对他最有用的内容快速记忆、总结、提炼,内化成他自己的知识。比如很多人只会说,某某本书里提到过,“此处转述书中原文”。他更能直接根据读过的书,用自己的话语和知识体系重新组织一个鲜明的观点出来,这真是太令人羡慕了。

如果我想把他的这种令人羡慕的方法论“萃取”成一条 prompt,我需要做的是类似这样的访谈:

1、不同类型的书是不是有不同的阅读和记忆方法?如何分类,有没有一些共性的方法论可以给出?

2、阅读和记忆是不是有不同的思维模型或者小技巧,能列出来参考吗?

3、读书时更需要的好像是一种自驱力,如何优先选择自己“一定看得下去”的书籍?怎么通过目录大纲确定一本书的核心内容?

4、一本书你会读几遍?有什么顺序上的讲究吗?

5、你会在读的过程中做笔记吗?还是读完以后回忆来做大纲呢?

6、如果要教你大学刚毕业的孩子学会有效读书,怎么才能快速教会他呢?

当上述问题都有清晰、明确的答案之后,可以开始设计一个 prompt 了:

如果想要让AI帮助你,像“樊登读书”或者“得到”这样给你讲书,你要做的是一个叫做“书籍阅读助手”的 prompt,要把所有通用型的读书方法论复刻到 prompt 里,再根据不同类型的书籍测试,来不断优化和迭代。

如果想要让AI在“选书”和“督促我读书”这个环节起作用,那要做的是一个叫做“催我读书”的 prompt,要重点研究如何选出适合用户的书,如何实现 prompt 的激励效果和让自己读完有获得感(例如生成读书笔记)。

如果更侧重读完书后的知识内化部分,要重点研究的是读书的效率和信息转化问题,这里更重要的是结构化信息能力和有效的记忆存储和调取。

我用这个例子是想让正在阅读本文的你明白,什么是所谓的“方法论萃取”,而在这个例子里,如果这个 prompt 做出来并有效,它的价值是显而易见的:

它可能能让完全读不进去书的人读完那么一两本书。(0 分到 30 分的进步)

它可能能让一年只能读那么几本书的人阅读量翻倍,且实现对书里的知识有效使用。(30 分到 50 分的进步)

它可能能让一年读 100 本书的人,随心所欲的做出无数条 prompt,并且还能用 prompt 自动写更多 prompt

五、结构化框架是编写提示词的必须选择吗?

结构化提示词有它明确的优势:

层级清晰,不论是对用户还是对大模型,它的可读性都更好一些

结构可扩展性强,可以随时根据自己整体 prompt 的需求扩展自己的特定结构模块

格式和语义的一致性,便于迭代、debug 和维护

但结构化更重要的是它的思维链:

Role (角色) -> Profile(角色简介)—> Profile 下的 skill (角色技能) -> Rules (角色要遵守的规则) -> Workflow (满足上述条件的角色的工作流程) -> Initialization (进行正式开始工作的初始化准备) -> 开始实际使用

在这个认知前提下,首先要明白每个模块必须存在的意义,如果不需要增设新的模块,就不必增设,更不提倡看到别人的框架中出现一个新的模块名称就强行加入自己的模板,为此硬凑语句进去。要知道结构化框架的提出,最大的意义在于对 prompt 性能的提升作用,核心是清晰、简明、有效、统一。

 有这种 Role+ skills + constrains 三个模块但是运行非常稳定,生成内容准确的 prompt

也有同时具备:Role + Profile + Background + Goals + Skills + Constrains + Workflow + Definition + OutputFormat + Example + Suggestions + Initialization  然后运行起来和前面那个只有三个模块效果相差无几的 prompt……

“我们是为了有效输出而结构化,不是为了结构化而结构化。”

而关于是否一定要结构化提示词,我在很多场合说过很多次我的观点,这里再复述一下吧:

结构化有利于具有稳定性和有效性的内容输出(理性框架)。

非结构化适合对连续对话有足够掌控能力的表达者和创意工作者(感性创意)。

写提示词,其实跟写说明文差不多,每个人的写法和构思可能不一样,但是目的是一致的,是要把事情讲清楚,让大模型准确理解,之后按照要求去做,所以写提示词并没有完全的硬性要求。

如果你需要一个可复用的、不限使用者 prompt 能力的、一次性输入可以稳定生成60分以上结果的 prompt,结构化可能是你萃取方法论的一个好工具,且可以很方便的传播。

如果你本身逻辑思维、书面表达能力很强,在和大模型连续对话的过程中每次都能准确问出有效的几句话,得到你想要的回答,而且你不必顾虑 3 小时 50 次的问答次数,更愿意深入追问,那么你并不需要写一大段固定格式的结构化 prompt,用你喜欢的灵巧方式随时提问就好,这甚至可能更利于激发灵感之类的创意辅助。

结构化不是八股文用来套格式的,它只是一种思维框架外化成的写作框架,是一种语法结构,把它理解成作文本上的格子,而不是作文本身。

六、如果你是第一次接受提示词编写的话,你应该注意一下事项 

1、忽略基础知识的重要性

大家千万不要急于上手写复杂的提示词,基础教程瞟了几眼就当看过了,不然就会在能 copy 模板写好几千 token的提示词之后,突然问出非常基础的问题:

  • 为什么我问了两轮之后 GPT 就会失忆呢?

  • 为什么我给了他特定的一段话但是他好像把它和别的内容混淆了呢?

  • 为什么大模型无法指定准确的字数呢,有什么其他办法能让它生成的长度靠谱一些吗?

我理解基础教程的枯燥,加上之前很多都是英文硬翻,读起来的确很令人烦躁,但现在有很多翻译和解读非常好的教程了,建议收藏,多读两遍,跟着示例做一下符合自己需求的小例子。

2、试图用一个 prompt 解决 10 个问题

很多同学入坑提示词可能是被某个结构严谨、设计精妙的提示词吸引,惊为天人,一惊之后暗下决心:自己也要写出这样的prompt!

其实这很好,但是新手期很容易陷入一个误区是,不了解 prompt 的能力上限,试图在一个 prompt 里靠复杂的结构和逻辑实现很多并行目标,导致 prompt 太长、结构太复杂、逻辑不清晰,最后整体性能和稳定性都变得非常低,就会出现很多看起来巨复杂、好厉害,但是输入之后,发现生成的内容很多但大多是正确的废话,要么在初始设置的限制性语句或者流程语句经常被忽略等等。

对这一点我的建议是,先从一个清晰、具体的小目标开始,先把一个目标的实现做的很稳定,再考虑逐项增加其他附加目标,但不要喧宾夺主,加到感觉影响输出的稳定性或准确性就可以停手了。其他需求做其他 prompt 来实现,不要盲目夸大 prompt 的能力,它本身有非常多的局限性,强行跨越这些局限性只会适得其反。

3、写 prompt 却脱离了 prompt 的使用环境

如果你突然发现你花在飞书代码块和 markdown 记事本上的时间好像远远超过了你和 GPT 对话的时间,你要警惕一下:你是否过于关注 prompt 的文本本身,而忽略了在写作过程中你本可以和 GPT 进行深度对话,来检验它对你方法论的熟悉程度,或者让他针对某个逻辑给出完善的建议,或者在你的 prompt 版本迭代中反复测试生成结果,来对 prompt 进行优化和改善。

在昨天的实战案例中,我看到学员们撰写了一个焦虑情绪测试和生成建议的 prompt,它的结构和语句、各模块的作用上挑不出什么毛病,生成结果除了太宽泛也没有太大问题。但实际作为一个焦虑患者的用户使用这套 prompt 的时候会产生很多体验上的、情绪上的问题,这在一定程度上说明,如果过于纠结 prompt 的文法而忽略了它作为一个对话工具的预设,没有在对话场景中代入用户体验去反复测试,很可能出现写出来的 prompt 围观群众都觉得不错,但真正的用户压根不会去用的情况。

好了关于提示词,我们就讲到这里,提示词跟写文章一样需要多写多练多思考,就想每年都会有很多让人耳目一新的文章或者书籍出来,提示词也是一样,只要我们肯于思考勤于练习,我们就能写出完整的提示词工程,有精力的小伙伴可以思考下面关于提示词的一些问题,开拓下自己的提示视野

### 使用大模型构建游戏AI的最佳实践 #### 提示词设计原则 在构建游戏智能体时,精心设计提示词至关重要。有效的提示词不仅应清晰表达期望的行为模式,还应该包含具体的场景描述和互动规则[^2]。 例如,在角色扮演游戏中设定一个NPC(非玩家角色),可以这样编写提示词: ```plaintext 你是一个生活在魔法森林里的精灵商人。你的性格开朗友善,喜欢与旅行者交流并分享关于这片土地的故事。当有顾客来访时,请热情地打招呼,并询问他们是否需要购买任何稀有的草药或神秘物品。 ``` 这种详细的背景介绍有助于引导大模型生成更加自然连贯的角色对话。 #### 结合特定技术提升性能 ##### RAG (检索增强生成) 利用RAG可以在游戏环境中实现实时信息查询和服务调用。比如在游戏中设置任务系统时,可以通过搜索引擎获取最新的天气预报来动态调整剧情走向;或者根据地理位置API返回的数据改变虚拟世界的景观特征[^3]。 ##### Fine-Tuning微调 针对不同类型的游戏特点对预训练好的大型语言模型进行领域适配性的再训练——即fine-tuning过程。这一步骤可以使模型更好地理解和响应特定类型的输入,从而提高其作为游戏内AI的表现质量[^1]。 #### Python代码实例:初始化带有自定义参数的大规模预训练模型用于游戏开发环境 ```python from transformers import AutoModelForCausalLM, AutoTokenizer tokenizer = AutoTokenizer.from_pretrained("model_name") model = AutoModelForCausalLM.from_pretrained("model_name") def generate_response(prompt_text): inputs = tokenizer(prompt_text, return_tensors="pt") outputs = model.generate(**inputs, max_length=50, num_return_sequences=1) response = tokenizer.decode(outputs[0], skip_special_tokens=True) return response ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值