【ChatGPT】解锁AI思维链:如何让机器像人类一样思考?

在人工智能领域,我们一直在追求让机器像人类一样思考。然而,即使是最先进的AI,也常常被诟病缺乏“常识”,难以理解复杂问题,更不用说像人类一样进行逻辑推理和解决问题了。最经常的表现就是遇到不会的地方,或者一些人一眼能看出来的地方AI在那里胡扯。🤔

为了解决这个问题,一种名为“思维链(Chain of Thought, COT)”的技术应运而生。COT的核心思想是:将复杂问题分解成一系列简单的子问题,并逐步推理出最终答案。这就像人类在解决问题时,会先将问题拆解成一个个小步骤,然后一步步推理,最终得出结论。🧩

在这里插入图片描述

什么是思维链(COT)?

思维链(COT)是一种新兴的AI技术,旨在通过将复杂问题分解为多个简单的子问题来提高AI的推理能力。COT不仅提升了AI解决复杂问题的能力,还增强了模型的可解释性,使得AI的决策过程更加透明,便于人类理解和调试。🔍

理解COT的实践

为了更好地理解COT,我们来看一个简单的例子:数单词“strawberry”中有几个字母“r”。

from langchain_openai import ChatOpenAI
from langchain.chains import LLMChain
from langchain.prompts import PromptTemplate# 模型
model = ChatOpenAI(model='deepseek-chat', openai_api_key='sk-xxx',openai_api_base='https://api.deepseek.com',max_tokens=4096
)
# 定义一个简单的提示模板
prompt_template = PromptTemplate(input_variables=["user_input"],template="用户: {user_input}\nAI:"
)
# 创建一个链,将提示模板与模型连接起来
chain = LLMChain(llm=model, prompt=prompt_template)# 手动输入一个值并发送给模型
user_input = "strawberry里面有几个r"
# 发送消息给模型并获取响应
response = chain.run(user_input=user_input)
print(f"\n\nAI: {response}\n")

初步结果

我们得到的结果是:

AI: 在单词 "strawberry" 中,有两个字母 "r"。

显然,这个结果是错误的。AI没有正确地数出“r”的数量。😅

使用COT解决问题

接下来,我们尝试使用COT来解决这个问题。通过将问题分解为多个步骤,AI可以更准确地得出答案。

user_input = '''
回答下面问题并注意回答的时候严格按照以下步骤,逐步进行:
1.将单词拆开
2.从左到右一个,一个对比字母是不是,是的话你要记录他的位置,并记住数量加一
3,第2步数出来多少个r直接输出 
问题:'strawberry'里面有几个r
'''# 发送消息给模型并获取响应
response = chain.run(user_input=user_input)
print(f"\n\nAI: {response}\n")

改进后的结果

通过使用COT,AI得到了正确的答案:

AI: 1. 将单词拆开: s, t, r, a, w, b, e, r, r, y
2. 从左到右一个,一个对比字母是不是r:- 第1个字母是s,不是r- 第2个字母是t,不是r- 第3个字母是r,是r,记录位置3,数量加一- 第4个字母是a,不是r- 第5个字母是w,不是r- 第6个字母是b,不是r- 第7个字母是e,不是r- 第8个字母是r,是r,记录位置8,数量加一- 第9个字母是r,是r,记录位置9,数量加一- 第10个字母是y,不是r
3. 第2步数出来多少个r直接输出: 3

通过逐步推理,AI成功地数出了三个“r”。🎉

内置COT的优势

在上面的例子中,我们引导AI解决了一个具体的问题。但如果我们不知道用户想问什么,又想内置思维链怎么办呢?我们可以通过编写一个通用的COT框架来实现这一点。

from langchain_openai import ChatOpenAI
from langchain.chains import LLMChain
from langchain.prompts import PromptTemplate
import json# 模型
model = ChatOpenAI(model='deepseek-chat', openai_api_key='sk-xxx',openai_api_base='https://api.deepseek.com',max_tokens=4096
)
# 定义一个简单的提示模板
prompt_template = PromptTemplate(input_variables=["user_input"],template="用户: {user_input}\nAI:"
)
# 创建一个链,将提示模板与模型连接起来
chain = LLMChain(llm=model, prompt=prompt_template)# 手动输入一个值并发送给模型
initial_prompt = '''
你是一个能够逐步解释推理过程的专家AI助手。对于每一步,提供一个描述你在该步骤中所做内容的标题,以及相应的内容。决定是否需要另一步骤或你已准备好给出最终答案,
,且每次推理你仅执行一步等我说继续才能执行下一步。输出以JSON格式响应,包含 ‘title’, ‘content’, 和 ‘next_action’(要么是 ‘continue’,要么是 ‘final_answer’)键值。为了提高指令遵从性,通过大写字母强调指令的重要性,包括一组提示和最佳实践:
1、尽可能多地使用推理步骤。至少5步,且每次推理你仅执行一步等我说继续才能执行下一步
2、意识到作为语言模型你的限制以及你能做什么和不能做什么。
3、包括探索替代答案。考虑你可能是错误的,如果你的推理是错误的,错误可能在哪里。
4、当你说你在重新检查时,实际上要重新检查,并采用另一种方法来做。不要只是说你在重新检查。
5、至少使用3种方法得出答案。
6、使用最佳实践。问题如下:周五昨天的后天是周几
'''# 发送消息给模型并获取响应
response = chain.run(user_input=initial_prompt)
print(f"\n\nAI: {response}\n")

通过这种方式,我们可以让AI在不明确问题的情况下,自动进行问题拆解和推理。🤖

COT的优势

  1. 提升复杂问题的解决能力:传统的AI模型通常只能处理简单、直接的任务,而COT可以将复杂问题分解成多个简单的子问题,从而提升模型解决复杂问题的能力。

  2. 增强模型的可解释性:COT将推理过程可视化,使得模型的决策过程更加透明,便于人类理解和调试。

  3. 促进模型的学习和进化:COT可以帮助模型更好地理解问题的本质,从而促进模型的学习和进化,使其在解决新问题时更加高效。

COT的未来展望

COT作为一种新兴的技术,目前还处于发展初期,但其潜力巨大。未来,随着技术的不断进步,COT有望在以下几个方面取得突破:

  1. 更强大的推理能力:未来的COT模型将能够处理更加复杂、抽象的问题,并进行更加深入的推理。

  2. 更强的可解释性:未来的COT模型将能够提供更加清晰、易懂的推理过程,使得人类可以更好地理解和信任AI的决策。

【CodeMoss】集成13个种AI模型(GPT4、o1等)、提示词助手100+、支持Open API调用、自定义助手、文件上传等强大功能,助您提升工作效率!

请添加图片描述

CodeMoss点击访问 >>> https://pc.aihao123.cn/index.html#/page/login?invite=1141439&fromChannel=1_Moss1213siwei

结语

思维链(COT)技术为AI的推理能力带来了革命性的提升。通过将复杂问题分解为简单的子问题,COT不仅提高了AI解决问题的能力,还增强了模型的可解释性和学习能力。随着技术的不断进步,COT将在更多领域发挥重要作用,为人类带来更多便利和创新。🌟

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/bicheng/64176.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

蓝桥杯刷题——day5

蓝桥杯刷题——day5 题目一题干解题思路一代码解题思路二代码 题目二题干解题思路代码 题目一 题干 给定n个整数 a1,a2,⋯ ,an,求它们两两相乘再相加的和,即: 示例一: 输入: 4 1 3 6 9 输出: 117 题目链…

监测预警智能分析中心建设项目方案

随着科技的不断进步,地理信息与遥感技术在国家治理、环境保护、灾害预警等领域发挥着越来越重要的作用。监测预警智能分析中心的建设,旨在通过集成先进的遥感技术、地理信息系统(GIS)、大数据分析和人工智能(AI&#x…

【漫话机器学习系列】009.词袋模型(Bag of Words)

词袋模型(Bag of Words, 简称 BoW) 词袋模型是一种常见的文本表示方法,主要用于自然语言处理(NLP)和信息检索领域。它将文本数据转换为特征向量,忽略语序,仅考虑词的出现与否或出现频率。 1. 基…

vue3 setup语法,子组件点击一个元素打印了这个元素的下标id,怎么传递给父组件,让父组件去使用

问: vue3 setup语法,子组件点击一个元素打印了这个元素的下标id,怎么传递给父组件,让父组件去使用 回答: 在 Vue 3 中,你可以使用 setup 语法糖和组合式 API 来实现子组件向父组件传递数据。具体来说&am…

分治算法(单选题)

2-1 分数 2 下列多少种排序算法用了分治法? 堆排序插入排序归并排序快速排序选择排序希尔排序 A.2 B.3 C.4 D.5 正确答案 A 2-2 分数 2 分治法的设计思想是将一个难以直接解决的大问题分割成规模较小的子问题,分别解决问题,最后将子…

【栈】栈的定义及基本操作

1. 栈的定义和特点 定义:栈是限定尽在表尾进行插入或删除操作的线性表。 表头元素成为栈底,表尾元素成为栈顶。 特点:后进先出(先进后出) 2. 顺序栈 顺序栈是利用顺序存储结构实现的栈,即用一组连续…

UNIX简史

从1991年Linux出现至今,由于众多IT巨头以及技术社区的推动,Linux已经成为非常成熟、可用于各种关键领域的操作系统,适当了解其发展历史,对于理顺其技术流派、从而更好地学习和使用Linux具有重要意义。由于其基于UNIX系统二十多年的…

C# OpenCV机器视觉:畸变矫正

在一个阳光明媚的早晨,阿强决定去拍照。他拿起相机,穿上他最喜欢的羊毛大衣,准备记录下生活中的美好瞬间。可是,当他兴奋地查看照片时,发现自己拍的每一张都像是被外星人用变形金刚的力量扭曲过一样!“这是…

读书|关于马斯克

于我而言,马斯克是一个有魅力的人,他张扬嚣张、却又一直做着惊世骇俗的事情。 关于健康 马斯克本身的工作就十分忙碌,但早年的他生活习惯也极其不规律,睡眠不足、饮食糊弄、懒得运动。健康三要素一个不占。另外, 42 …

tryhackme——Defensive Security Intro(防御安全简介)

任务一:Introduction to Defensive Security防御安全简介 此room的两个要点: Preventing intrusions from occurring 防止入侵发生Detecting intrusions when they occur and responding properly 检测发生的入侵并正确响应 防御安全还有更多内容。 除上…

使用rust语言创建python模块(pyo3+maturin)

1. 首先使用conda创建python虚拟环境(已创建的可省略) >conda create --prefixE:\python_envs\rust_python python3.11 2. 激活python虚拟环境 conda activate rust_python 3. 安装maturin pip install maturin 4. 创建rust项目 >cd E:\py…

阿里云RAM实战详解

引言 阿里云RAM(Resource Access Management)是一款用于管理阿里云资源访问权限的服务。通过RAM,您可以为不同的用户分配不同的访问权限,确保资源的安全和可控。本文将详细介绍RAM的实战应用,结合最佳实践,帮助您更好地管理阿里云资源。 RAM的核心概念 在使用RAM之前,…

解锁CSS新维度:预处理器之LessSass

在现代前端开发中,CSS(层叠样式表)是用于控制网页外观的主要技术。然而,随着项目的复杂度增加,传统的CSS编写方式逐渐显现出其局限性,如变量复用、嵌套规则、模块化管理等需求难以满足。为此,出…

C++中函数的特性

文章目录 一、C中形参带默认值的函数二、C中的inline内联函数三、C中的inline内联函数和普通函数的区别四、C中函数重载五、C为什么支持函数重载六、C语言为什么无法实现函数重载 一、C中形参带默认值的函数 在C中,形参带默认值的函数是指在函数声明或定义时&#…

关于Postgresql旧版本安装

抛出问题 局点项目现场,要求对如下三类资产做安全加固,需要在公司侧搭建测试验证环境,故有此篇。 bclinux 8.2 tomcat-8.5.59 postgrel -11 随着PG迭代,老旧版本仅提供有限维护。如果想安装老版本可能就要费劲儿一些。现在&…

使用echarts实现3d柱状图+折线图

以下代码有问题请直接问国内直连GPT/Claude HTML 需要注意threeDchart一定要设置宽度高度&#xff0c;不然图不显示,然后echarts版本不要太低&#xff0c;不然也不显示 <div id"threeDchart" class"threeDchart"></div>js set3DBarChart2(dat…

2024.1212-02-虚拟私人网(VPN) 虚拟局域网 及隧道技术(四)--GRE47 Etherip97 原理及应用

虚拟局域网 及隧道技术&#xff08;四&#xff09;-GRE47 & Etherip97原理及应用 概述原理及应用EOIP/Etherip概念区别 隧道协议标准EtherIP &#xff08;IP protocol number 97&#xff09;GRE 开源工具katlogic-eoip 验证环境GRE&#xff08;EOIP&#xff09;演示验证Eth…

一个初始化bitmap的小算法

一个初始化bitmap小算法 根据长度&#xff0c;创建bitmap初始化bitmap 根据长度&#xff0c;创建bitmap 看到一个开源项目&#xff0c;利用bitmap存储数据&#xff0c;其中创建和初始化过程&#xff0c;比较经典。这里摘录出来&#xff0c;以备后续使用。代码采用的是golang …

【从零开始入门unity游戏开发之——C#篇01】理论开篇,理解什么是编程

文章目录 前言前置条件进制什么是十进制、二进制二进制有什么用&#xff1f;为什么计算机用二进制而不用十进制&#xff1f;二进制转十进制十进制转二进制二进制运算 计算机中的数据存储单位什么是编程&#xff1f;什么是代码&#xff1f;什么是编程语言&#xff1f;常见的编程…

黑盒白盒测试

任务1 黑盒测试之等价类划分法 【任务需求】 【问题】例&#xff1a;某报表处理系统要求用户输入处理报表的日期&#xff0c;日期限制在2003年1月至2008年12月&#xff0c;即系统只能对该段期间内的报表进行处理&#xff0c;如日期不在此范围内&#xff0c;则显示输入错误信息…