不懂模型思维?讲透它-单思维链

我会介绍的模型思维方式包括这些: direct prompting -> Instruction Prompting -> COT-Let's think step by step -> COT-Plan & Solve Agent -> COT- self-ask -> ReAct -> Self-Refine&Reflexion -> Self-Consistency ->Tree of Thoughts -> Graph of Thoughts

这些内容太令人兴奋,我会根据不同的模型结合coze、dify、大模型接口等方式演示这些模型思维的使用方式。

然后最终我将使用思维树(TOT)构建一个智能体模型,然后将代码开源出来。敬请期待哦,0.0 哈哈。可以提前关注我博客和github:github.com/astordu

因为这次我要把这个模型思维的演化过程讲透。我还得做个项目出来,所以文章篇幅会较长。 我们就分开4️部分来讲:

  1. 模型自己的思考、反思和改进:direct prompting -> Instruction Prompting -> COT-Let's think step by step -> COT-Plan & Solve Agent -> COT- self-ask
  2. Agent的构建,将function call整合进去,并结合模型的反思和改进能力,可以开始构建智能体了: ReAct -> Self-Refine&Reflexion
  3. 多思维链构建,让智能体从多角度思考问题并解决复杂问题,包括:Tree of Thoughts -> Graph of Thoughts
  4. 思维树项目实战,带你从实战方面,考虑如何构建TOT,并且整合这些思维模块Planner,Reasoner,Evaluator,Function call,Memory等

模型真正的价值

使用模型真正的价值在于以下两点:

1.使用模型的思考能力,更好的思考才能带来更好的答案。
2.把准确资料给到模型,让模型消除幻象,让回答有据可依。

我们的文章着重第一点,现在咱们开始研究模型思维了。 let's go。

思考方式的演进

直接问答(Direct Prompting)

直接和模型对话,输入你提问的问题。 一般不能直接解决你的问题,因为给到LLM的背景信息(即上下文信息)太少了。 你需要反复的和模型交互,用于日常的一些聊天还可以,其他的都不行。

这里边需要注意: 你不能直接把模型当知识库用呀,它告诉你的不一定是对的,因为有可能是胡说的。 如果你真要用它当作知识库,最佳用法是:找一个像kimi这种能上网搜索并回答你问题的软件(小程序就可以)。

如果你就是聊天解闷的话,下载一个"豆包"就可以。

单这种随意聊天的方式,不怎么能解决实际的工作复杂问题。因为指令太随意了。

我们得把指令精修一下。所以来看:提示语工程。

提示语工程(Instruction Prompting)

这部分是指通过几个方面把我们的问题背景描述清楚,并且指明要输出的格式要求。

openai推出了一个提示语工程手册[1],手册大概描写了如何向模型提问的6个策略:

lua 复制代码
1.提供更详细的问题背景信息
2.让模型扮演一个角色
3.用分隔符,清晰的表达不同部分的逻辑
4.如果是复杂问题,给他个拆解步骤,让它按步骤执行
5.提供一些输入input和输出output的例子
6.指定输出的格式(比如json格式等)

其中第一点,就是补充system与user的角色的信息: 可以理解system是场景设置:一些全局的信息,不如说此对话的目标要解决的问题是什么。 user则是在这个场景下用户提出的问题是什么

其中第六点,则是我们熟知的few-shot(就是给它几个例子),这部分则让模型理解我们上边描述的所有说明,比如:

systemt提示语:

makefile 复制代码
你是一个售后客服人员,你的任务是将用户的问题分类进行分类。只输出分类的名称。
一共有三个分类:退货问题,保修问题,退款问题。

Example1:
user:我想退掉我买的毛衣
assitant:退货问题

Example2:
user:我刚买的手表还不到1年就坏了
assitant:保修问题

其中Example1和Example2部分就是few shot,它让模型"学习"到了应该如何思考和回复。

使用提示语工程,我们可以解决很多复杂的问题了,比如:

  1. 数据的萃取:从文本中,提取人物信息,地点信息,关系信息等
  2. 把论文进行合理的总结,加快我们的阅读筛选速度
  3. 将格式做合理转换,比如:java接口直接转成文档。 。。。

一切关于文本处理的事情,通过提示语工程手册,大部分都能实现。

但是它最大的问题就是:整合提示语的工作都是你自己做的。需要慢慢调整和耐心。而且有时候它欠缺思考,也会给你错误的答案。

我们想要模型除了听从我们的指令外,还能自己也多思考思考,然后能给我们更准确的答案。 所以,下一步:希望模型能有点思考能力。

思维链(COT-Let's think step by step)

前边的两种方法都是通过人工补充背景信息(上下文)的方式指导模型更好的解决我们的问题。但其实很少用到模型的思考能力,我们也更希望可以使用到模型自己的推理和思考能力。

最简单的方式是在提示语中增加:让我们仔细一步一步的思考用户这个问题。就会让模型思考的更多,也会改善我们答案的准确程度。

论文中给到的案例是如上图所示,为了更好的理解,我们自己构建一个事例来展现使用它的方式。

我们使用客服人员对用户问题进行分类的案例。

不加思考的提示语如下:

arduino 复制代码
你是一个售后客服人员,你的任务是将用户的问题分类进行分类。 一共有三个分类:退货问题,保修问题,退款问题。 
用户的问题:"我裤子坏了我要退钱"

增加让模型思考的提示语如下:

arduino 复制代码
你是一个售后客服人员,你的任务是将用户的问题分类进行分类。
一共有三个分类:退货问题,保修问题,退款问题。

用户的问题:"我裤子坏了我要退钱"

让我们仔细一步一步的思考用户这个问题

可以看到模型使用了更多的推理和思考能力,只是在提示语中增加了"让我们仔细一步一步的思考用户这个问题",

这种方法的问题在于每个模型都是按照模型自己的理解进行"一步步思考和分析"的。没有什么规律可循。

比如下边是GLM模型:

这两个模型(DeepSeek和GLM)都进行了一步步思考,但是思考的逻辑都不怎么一样。都是走一步看一步的。而且对同一个问题,每一次的一步步思考也是很不一样的。

思维链(COT-Plan & Solve Agent)

我们希望模型能按照我们的思考框架来解决问题:

  1. 先制定一个分析问题的计划
  2. 然后逐个解决问题

这样做的好处是:减少了模型思考的随机性,并且提升了模型的思考水平。(因为是先从全局看问题,也就是设计一个分析问题的计划。然后在逐个子问题的突破:逐个解决子问题)

提示语如下:

arduino 复制代码
你是一个售后客服人员,你的任务是将用户的问题分类进行分类。
一共有三个分类:退货问题,保修问题,退款问题。

用户的问题:"我裤子坏了我要退钱"

按照如下方式解决这个问题:
1.我们要先理解问题,并制定一个判断这个问题分类的计划。
2.一步步的执行这个计划,最终判断用户的问题属于那个分类问题:退货问题,保修问题,退款问题。

解决问题的方式就是先制定计划然后在逐一执行计划,得到最终答案:

markdown 复制代码
	按照如下方式解决这个问题:
	1.我们要先理解问题,并制定一个判断这个问题分类的计划。
	2.一步步的执行这个计划,最终判断用户的问题属于那个分类问题:退货问题,保修问题,退款问题。

这样一来,我们已经使用上了模型的规划和思考推理能力,但它更像是一个粗略的方案(总计划和执行),而我更希望模型能按照一定的思考顺序帮我解决问题。最好还有一些自我思考能力。

思维链(COT- self-ask)

我们可以结合提示语工程的few-shot,让它先思考是否需要有子问题,如果有,再提出子问题,然后再陆续回答子问题,直到问题完全解决。

我们的案例是使用Dify进行构建的,给了模型一些思考方式,希望它按照我们这样的思考方式进行思考和回答问题:

makefile 复制代码
user:奥巴马与特朗普谁先当的美国总统
assistant:
需要思考一些子问题吗:需要
子问题:奥巴马是什么时候当选的美国总统?
思考的答案:奥巴马是2009当选的美国总统

需要思考一些子问题吗:需要
子问题:特朗普是什么时候当选的美国总统?
思考的答案:特朗普是2016当选的美国总统

最终答案是:奥巴马先当的美国总统

搞定提示词之后,我们测试了一个问题:"字节,阿里,百度,腾讯谁成立的时间最早?" 它完全按照我们的思考方式进行了思考和回答:

小结

  1. 简单玩玩,其他的不行:direct prompting
  2. 自己好好写提示词,能解决很多问题,但是少了一些思考、反思和推理:Instruction Prompting
  3. 增加了推理能力:COT-Let's think step by step
  4. 尝试让推理有有规划,按照我们的想法思考:COT-Plan & Solve Agent
  5. 增加了自我反思的能力: COT- self-ask

(文章都属于原创,来自"雷哥AI工程化"。 如果对你有帮助,帮我点赞、转发。这将是我最大的动力。万分感谢!!)

相关推荐
健忘的派大星1 小时前
什么是RAG,有哪些RAG引擎?看完这一篇你就知道了!!
人工智能·ai·语言模型·langchain·llm·agi·rag
小城哇哇4 小时前
【AI多模态大模型】基于AI的多模态数据痴呆病因鉴别诊断
人工智能·ai·语言模型·llm·agi·多模态·rag
雷哥AI工程化5 小时前
AI coding:不会前端,却开发了个Chrome插件
chrome·aigc
智兔唯新6 小时前
【AIGC】AI工作流workflow实践:构建工作日报
人工智能·prompt·aigc
花千树-01010 小时前
Milvus - 四个主要时间戳参数
aigc·embedding·ai编程·milvus
健忘的派大星1 天前
手把手教你搭建本地知识库问答AI机器人,学不会你来找我!!
人工智能·ai·语言模型·机器人·llm·知识库·agi
青云交1 天前
智创 AI 新视界 -- 探秘 AIGC 中的生成对抗网络(GAN)应用
人工智能·aigc·文本生成·图像生成·音乐生成·生成对抗网络(gan)·挑战与解决方案
程序边界1 天前
AIGC时代的数据盛宴:R语言引领数据分析新风尚
数据分析·r语言·aigc
大全Prompter2 天前
AI 提示词(Prompt)入门 :ChatGPT 4.0 高级功能指南
人工智能·ai·chatgpt·prompt·aigc·ai写作·1024程序员节