05|提示工程(下):用思维链和思维树提升模型思考质量
黄佳
你好,我是黄佳,欢迎来到 LangChain 实战课!
什么是 Chain of Thought
CoT 这个概念来源于学术界,是谷歌大脑的 Jason Wei 等人于 2022 年在论文《Chain-of-Thought Prompting Elicits Reasoning in Large Language Models(自我一致性提升了语言模型中的思维链推理能力)》中提出来的概念。它提出,如果生成一系列的中间推理步骤,就能够显著提高大型语言模型进行复杂推理的能力。
Few-Shot CoT
Few-Shot CoT 简单的在提示中提供了一些链式思考示例(Chain-of-Thought Prompting),足够大的语言模型的推理能力就能够被增强。简单说,就是给出一两个示例,然后在示例中写清楚推导的过程。
图片来源论文
论文中给出了一个大模型通过思维链做数学题的示例。图左和图右,大模型都读入了 OneShot 示例,但是图左只给出了答案,而图右则在 OneShot 示例中给出了解题的具体思路。结果,只给出了答案的模型推理错误,而给出解题思路后,同一个模型生成了正确的答案。
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
- 深入了解
- 翻译
- 解释
- 总结
本文深入探讨了如何利用思维链和思维树提升模型思考质量。作者介绍了CoT(Chain of Thought)的概念,以及Few-Shot CoT和Zero-Shot CoT的应用,展示了如何设计思维链模板来引导AI的推理过程。同时,还分享了一个AI运营助手的开发实战案例,生动地展现了思维链和思维树在模型推理中的应用。另外,文章还介绍了Tree of Thoughts(ToT)框架,为解决复杂问题提供了一种新的方法。整体而言,本文为读者提供了丰富的实践案例和技术理论,对于对模型推理感兴趣的读者具有很高的参考价值。
仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《LangChain 实战课》,新⼈⾸单¥59
《LangChain 实战课》,新⼈⾸单¥59
立即购买
© 版权归极客邦科技所有,未经许可不得传播售卖。 页面已增加防盗追踪,如有侵权极客邦将依法追究其法律责任。
登录 后留言
全部留言(6)
- 最新
- 精选
- 阿斯蒂芬ToT看起来很有意思,刚想说老师文中的例子似乎“简陋”了一点,原来更精彩的在推荐的repo上,瞄了下上面的 example,看起来像是在用ToT “教”大模型算24点,期待周末要跑一跑看看效果🤓
作者回复: Github是个宝藏,里面的宝贝可太多了。
2023-09-15归属地:广东36 - 悟尘把它换为 Zero-Shot CoT: cot_template = """ 作为一个为花店电商公司工作的AI助手,我的目标是帮助客户根据他们的喜好做出明智的决定。 让我们一步步的思考(Let’s think step by step): 我会尽我所能根据客户的需求,推荐合适的鲜花。 首先,我会仔细聆听客户描述他们想要表达的意思或找到适合的场合。 然后,我会考虑不同鲜花的涵义和特征,比如颜色,花型,花期等,并结合客户的需求进行匹配。 在给出推荐时,我会解释为什么这样的选择能够满足客户的要求,以及这种鲜花所传达的寓意。 """ 结果: content='当然!根据您女朋友喜欢的粉色和紫色,我可以给您一些建议。\n\n1. 粉色康乃馨(Carnation):康乃馨是一种非常受欢迎的花朵,有着丰富的颜色选择。粉色康乃馨代表着母爱、温柔和善良,非常适合表达对女友的爱意。\n\n2. 紫色玫瑰(Purple Rose):玫瑰是一种经典的花朵,紫色玫瑰代表着神秘、浪漫和尊贵。这是一种非常适合表达深情的花朵。\n\n3. 紫色薰衣草(Lavender):薰衣草是一种芳香四溢的花朵,紫色薰衣草代表着宁静、平和和优雅。这种花朵非常适合给女友带来放松和舒适的感觉。\n\n4. 粉色郁金香(Pink Tulip):郁金香是一种优雅的花朵,粉色郁金香代表着温柔、浪漫和爱情。这是一种非常适合表达对女友的感情的花朵。\n\n这些是一些基于您女朋友喜欢的颜色的花朵建议。您可以根据您女朋友的喜好和您想要表达的情感来选择其中之一。希望这些建议对您有所帮助!' 老师,不知道我上面换为 Zero-Shot CoT 的提示,是否正确?
作者回复: 挺好的!
2023-11-08归属地:北京1 - Geek_4b73f8思维链,简而言之,是不是就比正常的chat请求,多一个system message,而这个message会告诉模型该怎么思考?
作者回复: 可以这样理解,思路对。
2023-12-18归属地:湖南 - 远游老师,程序运行报错: Traceback (most recent call last): File "/Users/wangshibao/Documents/idea/GitHub/langchain-geektime/05_提示模板下/CoT.py", line 47, in <module> response = llm(prompt) ^^^^^^^^^^^ File "/usr/local/lib/python3.11/site-packages/langchain/chat_models/base.py", line 600, in __call__ generation = self.generate( 。。。。。。。 self._send_request(method, url, body, headers, encode_chunked) File "/usr/local/Cellar/python@3.11/3.11.6/Frameworks/Python.framework/Versions/3.11/lib/python3.11/http/client.py", line 1327, in _send_request self.putheader(hdr, value) File "/usr/local/lib/python3.11/site-packages/urllib3/connection.py", line 224, in putheader _HTTPConnection.putheader(self, header, *values) File "/usr/local/Cellar/python@3.11/3.11.6/Frameworks/Python.framework/Versions/3.11/lib/python3.11/http/client.py", line 1259, in putheader values[i] = one_value.encode('latin-1') ^^^^^^^^^^^^^^^^^^^^^^^^^^^ UnicodeEncodeError: 'latin-1' codec can't encode characters in position 7-8: ordinal not in range(256)
作者回复: 这个问题是同学没有用自己的OpenAI Key替换我的占位符吧。
2023-10-26归属地:北京 - KevinToT的repo里边总缺一个abstractLanguageModel Traceback (most recent call last): File "/content/tree-of-thoughts/examples/montecarlo_example.py", line 1, in <module> from tree_of_thoughts.models.openai_models import OpenAILanguageModel File "/usr/local/lib/python3.10/dist-packages/tree_of_thoughts/__init__.py", line 2, in <module> from tree_of_thoughts.treeofthoughts import TreeofThoughts, MonteCarloTreeofThoughts, TreeofThoughtsBFS, TreeofThoughtsDFS, TreeofThoughtsBEST, TreeofThoughtsASearch File "/usr/local/lib/python3.10/dist-packages/tree_of_thoughts/treeofthoughts.py", line 16, in <module> from abstractLanguageModel import AbstractLanguageModel ModuleNotFoundError: No module named 'abstractLanguageModel'
作者回复: 嗯 可以给他们Log一个Issue
2023-09-272 - Geek_77c3ce老师,自己想做个收集信息的AI工具,通过chat方式,对参与的人进行提问,提的问题是有固定的清单,需要大模型针对问题的回答进行3个等级的评分判断,如胡扯,准确,不准确,想咨询下,用那种思维推理会好点,以及有没有好的prompt的内容2024-03-04归属地:浙江
收起评论