从AI的幻想世界找到你要的灵感
前年下半年开始用chatGPT,当时为了注册账号通过各种科学方法尝试,包括短信验证等等。去年打算尝试其它的那些GEMINI,CLAUDE等等,因为魔法的原因一直没能用上,就一直持续的chatGPT的免费版本,期间想过充值plus均以支付失败为结束。直到年末接触了perplexity,支持搜索结果整理,支持chatgpt4,CLAUDE等大模型的接入,关键它没有太强的魔法限制,在充值了一个月之后,让我的日常工作变得更便捷,更得心应手,就算是未知的领域,你也不会产生畏惧的想法,心怀信心的向前冲。
一直以为,日常使用已经习惯了,也给我了很大的帮助,让我愿意为他付费,我应该已经在正确的使用AI了,在重新看了几个文章和视频之后,发现自已其实,用土话来说就是“也就那样”。
SO 让我自已重新正视一下AI。这是让我自已正视AI大模型的内容。
正视观念
大语言模型(LLM)不是搜索引擎,当然perplexcity有一点特别,你想要更新鲜一点的信息,那就还是选择搜索引擎。这个我没有用perplexcity的时候也犯过几次,比如直接问最好的设计网站是什么之类,perplexcity之后我多了一个选择,把他当AI搜索工具,还是AI对话大模型的选择。我也重新拾起了google,该用搜索引擎的时候还是要用搜索引擎,为什么在后面。
LLM高复杂性、参数众多,偶尔一本正经的胡说八道是很正常的事情,不要批判他,不要跟他较真,影响你的心情,不影响它的心情
LLM不是客户,也不是秘书,不要把自已当上帝,问不出你想要的答案,多从自已身上找找原因,是不是问的方法错了,尽量不要去想这个LLM怎么这么垃圾。
LLM的答案每一次都会不太一样,跟别人输入同样的问题,回复你的也不一定会一样,学的是提问的方法。
不建议LLM上提问的内容
时效性类信息
上面提到的时效性信息,询问最新发生的新闻事件,如政治事件、科技发展或名人动态等,搜索引擎能够提供即时更新的新闻链接和报道。
事实类信息
当你需要查询具体的事实性信息,如历史事件的日期、某个赛事的具体信息或某个地点的具体信息等,“北京奥运会是哪一年举办的?”“2020年的斯诺克世锦赛冠军是谁?”这种问题搜索引擎通常能提供更直接、准确的答案。LLM你知道的,再简单的问题都有可能会出现幻觉。
专业准确的信息
还是幻觉的原因,对于需要高度专业化知识的查询,如特定法律条文的解释、医学诊断相关的详细信息等,搜索引擎可以帮助你快速找到专业网站或资料库中的具体答案。“ES2022的新特性”“世界斯诺克锦标赛规则”等等。
特定网站的内容
某些需要从特定的网站上获取的信息,如政府公告、公司公告、学术论文,直接用搜索引擎进行站点搜索(使用site:关键字)或者直接打开相关的网站浏览、搜索,会更直接有效。
关于提示词
提示词(Prompt)就是我们输入给AI的问题或者指令。简单的说就是你告诉AI你想要什么样的信息,就好象点菜的时候,我需要一个“蕃茄炒蛋”,当然你还可以加入一些其它的提示信息“不要太咸,不要葱花”,或者更抽象一点的“不要蕃茄,不要鸡蛋”。
提示调工程(Prompt Engineering)是一种技术,它涉及到精心设计和优化这些提示词,让AI给你的回答更准确、更有用、更贴合你想要的。所以下面都是“蕃茄炒蛋”,提示调工程就是得到你想要的那个“蕃茄炒蛋”。
提示词方法
追问法:
不要只问一个宽泛的问题,要进行结构化思考,将问题拆解成多个小问题,逐步追问细节,引导LLM给出更加深入和具体的回答。
比如我需要出一个公司参加展会的文案,先问我们的客户群有哪些特点和要求,针对我们的客户群的特点和需求,如何突出我们公司的优势和产品特色,用什么样的方式组织语言会让客户更容易阅读和理解。
追问的时效性很长,进行一个主题的时候,纯净的保留,不要参杂其它的一些咨询信息,如果需要就重新另外一个对话框,在展会结束的时候,如果你有后续的新闻稿需要发布,你可以重新回来,在这个对话里面告诉LLM,让其给你新闻稿的意见,或者对于下一次展会的建议。
元素碰撞法:
先让LLM生成与主题相关和不相关的两组关键词,再强制让它将这些看似无关的元素混合在一起,产生出有创意的内容。
例如先让LLM写一个展会的设计方案,关键词:互动展示、虚拟现实、环保、绿色能源等等,然后再走一条线关键词:星座、甜点、古典音乐等,然后让两者互相混合碰撞。
扩写/改写法:
这是我经常用的一个方法,给LLM一个开头,让它接着往下写,给其提一些限制或加入一些你想要的元素。写出初稿后,再让它用不同的写作风格和技巧改写,最终自已选择某个版本,再对其进行修改调整。
反问法:
这也是我经常使用的一个方法,当我需要给别人发邮件交待一个事情,或者我组织一个聚会,如果是第一次做这类事件,我会直接给LLM提问,告诉他背景信息,问他需要准备哪些资料,需要考虑哪些细节,引导我一步步完成任务。这个过程可以让我尽可能全面地思考问题,LLM也能给出更精准的回复。
人设法:
这个应该很多教程里面都有提到过的,为LLM和自己都设定一个角色人设,比如让LLM扮演专家,把你当成新手来指导。还可以加上从业年限等设定,LLM会根据不同人设给出不同的回复角度和内容。
评价反馈法:
对LLM给出的答案进行评价,说明优缺点,让它修改和完善。多次迭代,结果会越来越好。
没有原生IOS的开发经验,直接安装了XCODE+LLM就直接撸。在经历9次的来回反馈调整之后,慢慢将代码达到接近自已想要的目标。告诉LLM理解实现正确的地方,需要调整的地方和调整的方向要求。
借力法:
我管他叫自我拆解法,让LLM先输出一个框架大纲,再根据这个框架逐段展开。
“一句话需求”是我们经常遇到,然后又不想遇到的事情。一句话需求拿到让LLM给我分析出一个大纲。去掉不认可的条目,同时也可以加上LLM没有分析出来的条目,(LLM只是辅助,真正需要思考的是我们自已)。对于每一个条目进行逐个仔细分析,然后再将有关联的条目产生关联分析。
自我对话法:
让LLM扮演两个不同的角色来对话讨论,激发思维的碰撞。这个我还没有没有玩过,打算玩一下再说。
提示词框架
上面的提示词方法只是一个交互过程的方法,如果每一次都是“怎么给朋友挑选礼物?”“写一个旅行计划”这样的问题,用任何方案都无法很容易的得到你想要的结果。
perplexcity跟其它的一个区别就是会预先分析你的提示词,把里面特别模糊不清、界限很大的内容分析出来供你选择,或者提示你输入,让输出的结果更准确。但如果LLM没有提供应,那就会出一个范围很大的结果,所以我们要尽可能的把这些前置条件都提供给LLM。
下面我理解的几个提示词框架:
CO-STAR框架
新加坡首届 GPT-4 提示工程(Prompt Engineering)大赛冠军使用方法。
CO-STAR的每个字母都代表提示词的一个具体部分:
- C (Context): 提供任务的背景信息,帮助模型精确理解讨论的具体场景,确保提供的反馈具有相关性。
- O (Objective): 明确你要求大语言模型完成的任务,使模型更专注地调整其回应,以实现这一具体目标。
- S (Style): 明确你期望的写作风格,可以指定一个特定的著名人物或某个行业专家的写作风格,如商业分析师或CEO。
- T (Tone): 设置回应的情感调,确保大语言模型的回应能够与预期的情感或情绪背景相协调。
- A (Audience): 识别目标受众,针对特定受众定制大语言模型的回应,无论是领域内的专家、初学者还是儿童,都能确保内容在特定上下文中适当且容易理解。
- R (Response): 提供LLM回答的格式,可以是列表、JSON、专业报告等,确保输出格式符合下游任务的需求
示例:
假设需要设计一个话费充值的产品,使用CO-STAR框林来构建这个产品的大语言模型提示词。
Context (背景): 用户需要一个简单快捷的方式来充值手机话费。
Objective (目标): 设计一个用户界面,允许用户输入金额和支付方式,完成话费充值。
Style (风格): 界面应简洁明了,语言直白易懂,适合所有年龄层的用户。
Tone (语气): 语气友好,提供积极的反馈,如充值成功的确认信息。
Audience (受众): 面向所有需要手机话费充值的用户,包括技术不太熟练的老年人。
Response (响应格式): 界面上应有清晰的指示,如步骤指南,操作成功的提示,错误信息的解释等。
CRISPE框架
Matt Nigh创建的一种LLM提示词方法。作者github地址在页末。
- Capacity and Role(能力与角色):定义模型在交互中应扮演的角色,例如教育者、翻译者或顾问。
- Insight(洞察):提供背景信息,帮助模型理解其在特定情境下的作用。
- Statement(声明):明确指出模型需要执行的任务。
- Personality(个性):设定模型回复的风格和格式,使其更符合用户的期望和场景需求。
- Experiment(实验):如果需要,可以要求模型提供多个示例,以供用户选择最佳回复。
示例:
假设需要设计一个话费充值的产品,使用CRISPE框林来构建这个产品的大语言模型提示词。
Capacity and Role(角色):设定LLM为“客服助手”,以便它能够以服务者的身份回答关于话费充值的问题。
Insight(背景):提供背景信息,如“用户需要一个简单快捷的方式来充值手机话费”。
Statement(任务):给出具体的任务指令,如“引导用户通过几个简单步骤完成话费充值”。
Personality(个性):指定LLM的回复风格,例如“用简单易懂的语言,适合所有年龄层的用户理解”。
Experiment(实验):要LLM提供几个不同风格的示例,如“用故事讲述的方式”或“用图形界面的形式”。
还有一些其它的框架,我个人感觉不需要理解太多,上面一个目标导向、一个角色导向,结合前面的提示词方法,已经能满足我日常的使用需要,当然每个人的日常需要和习惯都不一样,找到一个适合你的方法和提示词框架,并坚持用下去才是主要的。
所以提示词框架的核心理念都是一样,把你需要的结果尽可能的给LLM描述清楚,让其给能给你更准确的结果。当然提示词框架限制得越多,LLM的自主发挥空就小,如果想要让LLM自主发挥有更大的空间,那就放弃提示词框架的想法,让他自已冲吧。
结尾
然后查资料的时候,还顺带看了三个提示词思维模式的论文。
一个探讨的是“思维链”模式,有点象前面提到的“追问”+“借力”的合集。
除了给模型输入和输出的例子,还给它一系列中间推理步骤的例子。这些推理步骤就像人类思考问题时的思路,用自然语言写出来。研究者发现,通过这种方式给模型一些示范性的"思维链",足够大的语言模型就能学会类似的推理能力。
一个探讨的是“树型思维”模式,由普林斯顿大学的Shunyu Yao和谷歌DeepMind的团队共同研究完成。利用大型语言模型进行深思熟虑的问题解决。现在的大型语言模型,比如GPT-4,已经能够完成很多任务,从数学问题解答到创意写作。但是,这些模型在解决问题时,通常是一步步地,从左到右地生成文本。这种方法在很多情况下都很有效,但是它在需要探索、策略性前瞻或者初步决策至关重要的任务中可能就不够用了。
如果你在玩一个需要策略的游戏,或者尝试解决一个复杂的数学问题,仅仅依靠直觉或者第一反应可能并不总是最好的方法。有时候,你需要停下来,考虑不同的可能性,甚至回头重新考虑你的选择。这就是“树形思维”要解决的问题。
“树形思维”框架让语言模型能够生成一系列的“思考单元”或者说是解决问题的中间步骤。这些中间步骤就像是一棵树的枝条,模型可以探索不同的路径,评估每个选择,然后决定下一步怎么走。这样,模型就能进行更加深入的思考,找到更好的解决方案。例如,在解决一个数学问题时,模型可能会先生成几个可能的解决方案路径,然后评估这些路径,选择最有可能成功的那个继续前进。如果发现这条路径行不通,它还可以回溯,尝试其他的路径。
研究团队在三个需要深思熟虑的任务上测试了他们的方法:24点游戏、创意写作和迷你填字游戏。结果显示,“树形思维”在这些任务上的表现都显著优于传统的方法。例如,在24点游戏中,使用传统方法的GPT-4只能解决4%的任务,而使用“树形思维”的方法则达到了74%的成功率。
一个是探讨“自洽性”的方法,里面提到了“思维链”模式已经取得了不错的效果。比如问"停车场原有3辆车,又来了2辆,现在停车场有几辆车?",不是直接回答"5",而是生成"停车场原有3辆车。又来了2辆。现在有3+2=5辆车。答案是5。"这样的推理过程。
这篇论文的核心思想是,对于复杂的推理问题,通常有多种不同的思考方式能得出正确答案。所以与其只得到一个最优的推理过程,不如从语言模型中采样出一些不同的推理路径,然后看哪个答案在这些推理中出现得最多,就选它作为最终答案。这就是"自洽性"的含义。
举个例子,如果问"小明吃了3个鸡蛋,每个鸡蛋2块钱,小明一共花了多少钱?",模型可能会生成以下几种推理:
推理1:小明吃了3个鸡蛋,每个2块钱,所以是3x2=6,答案是6块钱。
推理2:每个鸡蛋2块钱,小明吃了3个,2+2+2=6,所以花了6块钱。
推理3:小明吃了3个鸡蛋,每个鸡蛋2块钱,3x2=5,答案是5块钱。
可以看到,推理1和2虽然思路不太一样,但得出的答案都是6块钱。而推理3算错了,得到5块钱的答案。用自洽性的方法,就是从这些采样出的推理中,选出出现次数最多的答案6块钱作为最终答案。这比只得到一个推理结果更加稳健。
这项工作利用了一个很朴素的道理:对于有点复杂的问题,通常有多种思考方式能得出正确答案。
AI不会取代你,别人会用AI来取代你!
资料来源:
CRISPE:https://github.com/mattnigh
思维链:https://arxiv.org/pdf/2201.11903.pdf