推理框架对比:ReAct、思维链(COT)和思维树(TOT)谁更胜一筹
推理框架作为 AI 解决复杂问题的核心机制,正逐渐成为研究和应用的焦点。ReAct、思维链(Chain-of-Thought,CoT)(Chain-of-Thought (CoT):引导大型语言模型解决问题的有效策略)和思维树(Tree-of-Thoughts,ToT)这三种推理框架各具特色,它们从不同角度模拟人类思维方式,为 AI 提供了多样化的问题解决策略。深入研究和比较这些框架,对于推动人工智能的发展、拓展其应用场景具有重要意义。
一、ReAct 框架:边推理边行动的智能决策
ReAct,即 “推理与行动”,是一种将推理和行动紧密结合的框架,让 AI 在解决问题时能够实时根据环境反馈调整策略。这一框架的核心在于反馈循环和情境感知。在反馈循环机制下,AI 执行每一个行动后,都会根据行动结果获取反馈信息,并利用这些信息优化后续行动。例如在机器人导航任务中,机器人每前进一步,都会通过传感器获取周围环境的信息,判断自己的行动是否使它更接近目标,若偏离则及时调整路线。
情境感知则使 AI 能够依据实时数据灵活调整行动。以客户支持场景为例,面对不同客户提出的复杂多样的问题,基于 ReAct 框架的客服 AI 可以实时分析问题内容、客户情绪等多方面数据,选择最合适的回答方式。如果客户情绪较为激动,AI 可能会先采取安抚措施,再解答问题;若问题涉及多个方面,AI 会逐步引导客户明确需求,进而提供精准解答。
在实际应用中,ReAct 在动态环境下的任务表现出色。在机器人领域,无论是让机器人在复杂的室内环境中穿梭寻找特定物品,还是在未知的户外环境中执行探索任务,ReAct 都能发挥重要作用。通过不断尝试和调整,机器人能够逐渐适应环境,完成任务。在客户支持领域,ReAct 帮助 AI 客服快速响应客户需求,提供个性化服务,提升客户满意度。
以 LangChain 库为例,使用 ReAct 框架实现一个简单的信息检索功能,代码逻辑如下:首先定义工具,这里以fetch_information
函数为例,它接收一个查询并返回相应结果;然后初始化语言模型,如OpenAI
模型,并设置temperature
参数来控制生成文本的随机性;最后通过initialize_agent
函数初始化 ReAct 代理,将定义好的工具和语言模型传入,并指定代理类型为react
。当输入查询(如 “法国的首都是什么?”)时,代理会调用工具获取信息并给出答案。
二、思维链(CoT):逐步推理的逻辑路径
思维链推理(自动思维链(Auto-CoT):LLM推理能力的自动化提升)是一种模拟人类逐步解决问题的方式,它在解决问题时,不是直接给出最终答案,而是将推理过程分解为一系列逻辑步骤,每一步都基于前一步的结果进行推导。这种方式使得 AI 的决策过程更加透明,易于理解和解释。
在解决数学问题时,思维链的优势尤为明显。例如求解 “”,基于思维链的
AI 会按照数学运算规则,先计算除法 “”,再计算加法 “”,清晰地展示解题过程。在法律分析领域,律师在分析复杂案件时,需要依据法律条文,逐步剖析案件事实、证据,构建逻辑严密的论证结构。思维链可以帮助 AI 像专业律师一样,有条不紊地梳理案件信息,为法律决策提供有力支持。在教育领域,教师可以利用思维链引导学生逐步思考问题,培养学生的逻辑思维能力。例如在教授几何证明题时,通过展示每一步的推理依据和过程,帮助学生理解解题思路,掌握解题方法。
在 LangChain 库中实现思维链推理,首先要定义一个合适的提示模板。在这个模板中,明确要求 AI “一步一步地思考来解决问题”,并预留步骤填写的位置。然后初始化语言模型和LLMChain
,将提示模板与语言模型关联起来。当输入问题(如 “45 和 67 的和是多少?”)时,LLMChain
会按照思维链的方式进行推理并输出结果。从线性的流程来看,思维链就像一条清晰的线索,引导 AI 沿着逻辑路径逐步得出最终答案,每一步都紧密相连,环环相扣。
三、思维树(ToT):多路径探索的创新思维
思维树是在思维链基础上的进一步拓展,它突破了单一推理路径的限制,允许 AI 同时探索多种可能的解决方案。在概念上,这类似于人类在面对复杂问题时进行头脑风暴,提出多个想法,然后对这些想法进行评估和筛选,选择最优方案。
在战略规划方面,企业在制定市场进入策略、产品研发方向等决策时,面临多种不确定因素和选择。思维树可以帮助 AI 分析不同市场环境、竞争对手反应、自身资源配置等多种因素,生成多种可能的战略方案,并通过模拟和评估,找出最具可行性和收益的方案。在游戏 AI 领域,无论是国际象棋、围棋等棋类游戏,还是策略类电子游戏,思维树都能发挥重要作用。以围棋为例,在每一步落子前,AI 会通过思维树探索多种可能的落子位置,分析每种落子方式对棋局后续发展的影响,从而选择最优的落子策略。在创意生成方面,如广告创意策划、产品设计创新等领域,思维树可以激发 AI 产生多种创新想法。例如在设计一款新型手机时,AI 可以通过思维树探索不同的外观设计、功能组合、用户体验方案,然后对比评估,为设计师提供创意灵感和参考。
在 LangChain 库中应用思维树,首先需要定义一个具有分支结构的提示模板,引导 AI 考虑多种解决问题的方法。然后初始化语言模型和LLMChain
,将提示模板与语言模型结合。当输入问题(如 “如何提高应用程序的用户参与度?”)时,AI 会按照提示模板的要求,生成多个解决方案选项,并对这些选项进行评估,最终选择并输出最优答案。从树形结构来看,思维树在问题节点处不断分支,探索不同路径,最后又通过评估收敛到最优解,体现了其多路径探索和择优选择的特点。
四、三种框架的比较分析
4.1 框架对比
ReAct、CoT和ToT框架各有千秋。ReAct擅长处理动态和探索性任务,其反馈循环和情境感知机制使得AI能够在不断变化的环境中灵活应对。CoT则适用于结构化和逻辑性强的问题,其逐步推理和透明决策过程使得AI的决策更加易于理解和跟踪。而ToT则在战略性和创造性挑战中表现出色,其分支路径和评估机制使得AI能够探索多种可能性并找到最佳解决方案。
然而,这些框架也存在一定的局限性。ReAct可能过于依赖实时数据,导致在某些情况下反应不够迅速。CoT(没有提示的COT(Chain of Thought)推理:解锁大型语言模型的内在能力)虽然提供了清晰的推理过程,但可能过于僵化,难以适应非结构化问题。ToT虽然能够探索多种可能性,但也可能因为选项过多而导致决策效率低下。
4.2 最佳选择
在选择推理框架时,我们需要根据具体问题的性质和要求进行权衡。对于需要快速适应环境变化的任务,ReAct可能是最佳选择。对于需要清晰推理和透明决策的任务,CoT则更加合适。而对于需要探索多种可能性和创造性解决方案的任务,ToT则更具优势。
此外,我们还可以考虑将这些框架结合起来使用。例如,在解决复杂问题时,我们可以先使用ReAct框架进行初步探索和反馈循环,然后使用CoT框架逐步推理并展示中间步骤,最后使用ToT框架评估不同解决方案的优劣并选择最佳方案。这种组合使用的方法可以充分利用各个框架的优势,提高AI解决问题的能力和效率。
ReAct、思维链和思维树作为人工智能领域重要的推理框架(Google DeepMind研究员关于LLM推理讲座的深度解析(含原视频链接)),各自为 AI 解决问题提供了独特的视角和方法。深入理解和合理运用这些框架,将有助于开发出更智能、更高效的 AI 系统,推动人工智能技术在各个领域的广泛应用和深入发展。无论是在日常生活中的智能助手,还是在复杂的工业生产、科研创新等领域,这些推理框架都将发挥不可或缺的作用,为构建更加智能的未来奠定坚实基础。
相关文章:
推理框架对比:ReAct、思维链(COT)和思维树(TOT)谁更胜一筹
推理框架作为 AI 解决复杂问题的核心机制,正逐渐成为研究和应用的焦点。ReAct、思维链(Chain-of-Thought,CoT)(Chain-of-Thought (CoT):引导大型语言模型解决问题的有效策略)和思维树࿰…...
electron.vite 项目创建以及better-sqlite3数据库使用
1.安装electron.vite npm create quick-start/electronlatest中文官网:https://cn.electron-vite.org/ 2. 安装项目依赖 npm i3.修改 electron-builder 配置文件 appId: com.electron.app productName: text33 directories:buildResources: build files:- !**/.v…...
Dockerfiles 的 Top 10 常见 DevOps/SRE 面试问题及答案
1. RUN 和 CMD 之间有什么区别? RUN : 在镜像构建过程中执行命令,创建一个新的层。通常用于安装软件包。 示例: RUN apt-get update && apt-get install -y curlCMD : 指定容器启动时默认运行的命令。它在运行时执行,而不是在构建过程…...
Sentinel——Spring Boot 应用接入 Sentinel 后内存开销增长计算方式
接入 Sentinel 对 Spring Boot 应用的内存消耗影响主要取决于 规则数量、资源数量、监控粒度、并发量 等因素。 1. 核心内存消耗来源 (1) Sentinel 核心库 默认依赖:Sentinel Core 本身占用较小,通常在 10~50MB(取决于资源数量和规则复杂度…...
domain 网络安全 网络安全域
文章目录 1、域的概述 1.1、工作组与域1.2、域的特点1.3、域的组成1.4、域的部署概述1.5、活动目录1.6、组策略GPO 2、域的部署实验 2.1、建立局域网,配置IP2.2、安装活动目录2.3、添加用户到指定域2.4、将PC加入域2.5、实验常见问题 3、OU(组织单位…...
OpenCV机器学习(2)提升算法类cv::ml::Boost
操作系统:ubuntu22.04 OpenCV版本:OpenCV4.9 IDE:Visual Studio Code 编程语言:C11 算法描述 cv::ml::Boost 是 OpenCV 机器学习模块中的一部分,用于实现提升算法(Boosting Algorithms)。Boosting 是一种…...
【Java 面试 八股文】框架篇
框架篇 1. Spring框架中的单例bean是线程安全的吗?2. 什么是AOP?3. 你们项目中有没有使用到AOP?4. Spring中的事务是如何实现的?5. Spring中事务失效的场景有哪些?6. Spring的bean的生命周期?7. Spring中的…...
基于HAL库的按钮实验
实验目的 掌握STM32 HAL库的GPIO输入配置方法。 实现通过按钮控制LED亮灭(支持轮询和中断两种模式)。 熟悉STM32CubeMX的外部中断(EXTI)配置流程。 实验硬件 开发板:STM32系列开发板(如STM32F103C8T6、N…...
TCP 端口号为何位于首部前四个字节?协议设计的智慧与启示
知乎的一个问题很有意思:“为什么在TCP首部中要把TCP的端口号放入最开始的四个字节?” 这种问题很适合我这种搞历史的人,大年初一我给出了一个简短的解释,但仔细探究这个问题,我们将会获得 TCP/IP 被定义的过程。 文…...
前端实现在PDF上添加标注(1)
前段时间接到一个需求,用户希望网页上预览PDF,同时能在PDF上添加文字,划线,箭头和用矩形框选的标注,另外还需要对已有的标注进行修改,删除。 期初在互联网上一通搜索,对这个需求来讲发现了两个问…...
Springboot 中如何使用Sentinel
在 Spring Boot 中使用 Sentinel 非常方便,Spring Cloud Alibaba 提供了 spring-cloud-starter-alibaba-sentinel 组件,可以快速将 Sentinel 集成到你的 Spring Boot 应用中,并利用其强大的流量控制和容错能力。 下面是一个详细的步骤指南 …...
如何优化React应用的性能?
文章目录 1. 引言2. 渲染优化2.1 使用 React.memo 避免不必要的重新渲染2.2 使用 shouldComponentUpdate 或 PureComponent2.3 使用 useMemo 和 useCallback 3. 异步渲染与懒加载3.1 使用 React.lazy 和 Suspense 实现懒加载3.2 分割代码(Code-Splitting)…...
ES的java操作
ES的java操作 一、添加依赖 在pom文件中添加依赖包 <dependencies><dependency><groupId>org.elasticsearch</groupId><artifactId>elasticsearch</artifactId><version>7.8.0</version></dependency><!-- elastic…...
八大排序——简单选择排序
目录 1.1基本操作: 1.2动态图: 1.3代码: 代码解释 1. main 方法 2. selectSort 方法 示例运行过程 初始数组 每轮排序后的数组 最终排序结果 代码总结 1.1基本操作: 选择排序(select sorting)也…...
算法学习笔记之贪心算法
导引(硕鼠的交易) 硕鼠准备了M磅猫粮与看守仓库的猫交易奶酪。 仓库有N个房间,第i个房间有 J[i] 磅奶酪并需要 F[i] 磅猫粮交换,硕鼠可以按比例来交换,不必交换所有的奶酪 计算硕鼠最多能得到多少磅奶酪。 输入M和…...
【数据结构】(8) 二叉树
一、树形结构 1、什么是树形结构 根节点没有前驱,其它节点只有一个前驱(双亲/父结点)。所有节点可以有 0 ~ 多个后继,即分支(孩子结点)。每个结点作为子树的根节点,这些子树互不相交。 2、关于…...
前端大屏适配方案:从设计到实现的全流程指南
引言 随着数据可视化需求的增长,大屏展示项目在前端开发中越来越常见。然而,大屏开发面临独特的挑战: 屏幕分辨率多样:从1080P到4K甚至8K,如何保证清晰度?布局复杂:多图表、多组件如何合理排列…...
10. Hbase Compaction命令
一. 什么是Compaction 在 HBase 中,频繁进行数据插入、更新和删除操作会生成许多小的 HFile,当 HFile 数量增多时,会影响HBase的读写性能。此外,垃圾数据的存在也会增加存储需求。因此,定期进行 Compact操作ÿ…...
完善sql盲注中的其他函数 dnslog+sqlmap外带数据
2. 布尔盲注 布尔盲注是通过观察应用程序的响应(如页面内容、HTTP 状态码等)来判断查询条件是否为真。 <?php // 数据库连接配置 $host localhost; $dbname testdb; $user root; $password password; // 创建数据库连接 $conn new mysqli($ho…...
Python 识别图片和扫描PDF中的文字
目录 工具与设置 Python 识别图片中的文字 Python 识别图片中的文字及其坐标位置 Python 识别扫描PDF中的文字 注意事项 在处理扫描的PDF和图片时,文字信息往往无法直接编辑、搜索或复制,这给信息提取和分析带来了诸多不便。手动录入信息不仅耗时费…...
Java 有哪些锁,他们的区别是什么
Java 锁的分类 Java 中的锁可以从多个维度进行分类: 悲观锁 vs. 乐观锁公平锁 vs. 非公平锁独占锁 (互斥锁) vs. 共享锁 (读写锁)可重入锁 vs. 不可重入锁自旋锁偏向锁 vs. 轻量级锁 vs. 重量级锁 (JVM 锁优化) 1. synchronized 关键字: 类型: 悲观锁…...
CSS实现单行、多行文本溢出显示省略号(…)
在网页设计中,我们常常遇到这样的情况:文本内容太长,无法完全显示在一个固定的区域内。为了让界面看起来更整洁,我们可以使用省略号(…)来表示内容溢出。这不仅能提升用户体验,还能避免内容溢出…...
网络协议/MQTT Paho.MQTT客户端库接口基础知识
开源c版mqtt客户端:https://github.com/eclipse-paho/paho.mqtt.cMQTT 客户端与服务器之间支持的通信协议主要包括: 协议地址格式加密默认端口适用场景服务器地址示例TCPtcp://不加密1883局域网或对安全性要求不高的场景tcp://localhost:1883TLS/SSLssl://加密8883对安全性要…...
VSCode C/C++ 开发环境完整配置及常见问题(自用)
这里主要记录了一些与配置相关的内容。由于网上教程众多,部分解决方法并不能完全契合我遇到的问题,因此我选择以自己偏好的方式,对 VSCode 进行完整的配置,并记录在使用过程中遇到的问题及解决方案。后续内容也会持续更新和完善。…...
深入解析 Go 中的 `io.Pipe()`:实现高效的并发通信
在 Go 语言中,io.Pipe() 是一个强大且灵活的工具,用于在不同的 goroutine 之间实现高效的同步和通信。它通过创建一对连接的 I/O 流,允许数据在管道的两端安全地传递。本文将详细介绍 io.Pipe() 的工作原理、主要特点、使用方法以及一些实际应…...
【Kubernetes】常用命令全解析:从入门到实战(中)
🐇明明跟你说过:个人主页 🏅个人专栏:《Kubernetes航线图:从船长到K8s掌舵者》 🏅 🔖行路有良友,便是天堂🔖 目录 一、引言 1、什么是k8s 2、K8s的核心功能 二、资…...
嵌入式八股文面试题(二)C语言算法
相关概念请查看文章:C语言概念。 1. 如何实现一个简单的内存池? 简单实现: #include <stdio.h> #include <stdlib.h>//内存块 typedef struct MemoryBlock {void *data; // 内存块起始地址struct MemoryBlock *next; // 下一个内…...
Proxmox VE 8.3 qm 方式导入ESXi Linux OVA UEFI模式虚拟机
前言 实现esxi ova uefi 虚拟机导入到pve,Linux UEFI 都支持 创建一个105虚拟机 qm 参数使用参考,以下可以根据自己的实际情况执行调整 esxi 导出虚拟机参考 #vmid (100 - 999999999) vmid=105# qm vm name...
人工智能浪潮下脑力劳动的变革与重塑:挑战、机遇与应对策略
一、引言 1.1 研究背景与意义 近年来,人工智能技术发展迅猛,已成为全球科技领域的焦点。从图像识别、语音识别到自然语言处理,从智能家居、智能交通到智能医疗,人工智能技术的应用几乎涵盖了我们生活的方方面面,给人…...
【线性代数】1行列式
1. 行列式的概念 行列式的符号表示: 行列式的计算结果:一个数 计算模型1:二阶行列式 二阶行列式: 三阶行列式: n阶行列式: 🍎计算行列式 计算模型2:上三角形行列式 上三角形行列式特征:主对角线下皆为0。 上三角形行列式: 化上三角形通用方法:主对角线下,…...
厘米和磅的转换关系
在排版和设计领域,厘米(cm)和磅(pt)都是常用的长度度量单位,它们之间的转换关系基于特定的换算标准,下面为你详细介绍: 基本换算关系 磅是印刷行业常用的长度单位,1英寸…...
vant4 van-list组件的使用
<van-listv-if"joblist && joblist.length > 0"v-model:loading"loading":finished"finished":immediate-check"false"finished-text"没有更多了"load"onLoad">// 加载 const loading ref(fals…...
QT 异步编程之多线程
一、概述 1、在进行桌面应用程序开发的时候,假设应用程序在某些情况下需要处理比较复制的逻辑,如果只有一个线程去处理,就会导致窗口卡顿,无法处理用户的相关操作。这种情况下就需要使用多线程,其中一个线程处理窗口事…...
HCIA项目实践---OSPF的知识和原理总结
9.5 OSPF 9.5.1 从哪些角度评判一个动态路由协议的好坏? (1)选路佳(是否会出环) OSPF 协议采用链路状态算法,通过收集网络拓扑信息来计算最短路径,从根本上避免了路由环路的产生。 (…...
DNS污染:网络世界的“隐形劫持”与防御
在互联网的底层架构中,DNS(域名系统)如同数字世界的“导航员”,将用户输入的域名翻译成机器可读的IP地址。然而,DNS污染(DNS Poisoning)正像一场无声的“地址篡改”危机,威胁着全球网…...
Unity Shader Feature
Shader Feature 设置Keyword //0:Red 1:Green 2:Blue Mat.SetInt(“_Color”,0); 需要在创建时进行设置,运行时不可设置 Shader "Unlit/KeywordEnum" {Properties{[KeywordEnum(Red,Green,Blue)] _Color("Color",int) 0}SubShader{Pass{HLSL…...
Java-数据结构-栈与队列(常考面试题与单调栈)
在上一篇的学习中,我们学习了栈和队列的基本知识,以及它们对应都有哪些方法,在什么应用场景下如何使用,并且还对它们进行了模拟实现,而其实对于栈和队列的相关知识还远不止于此,而今天我们就对栈与队列进行…...
Python Pandas(11):Pandas 数据可视化
数据可视化是数据分析中的重要环节,它帮助我们更好地理解和解释数据的模式、趋势和关系。通过图形、图表等形式,数据可视化将复杂的数字和统计信息转化为易于理解的图像,从而便于做出决策。Pandas 提供了与 Matplotlib 和 Seaborn 等可视化库…...
wordpress模板文件结构超详解
wordpress网站建设中,主题的制作是最为核心的环节。了解模板文件结构是模板制作的第一步,本文所讲的模板文件结构包括两部分,一是指以文件名为概念的文件结构,二是指文件内容的代码结构。 一、如何使模板文件起作用 ↑ wordpres…...
大脑神经网络与机器神经网络的区别
大脑神经网络(生物神经网络)与机器神经网络(人工神经网络,ANN)虽然名称相似,但在结构、功能、学习机制等方面存在显著差异。以下是两者的主要区别: 1. 基础结构与组成 大脑神经网络: 由 生物神经元(约860亿个)通过突触连接形成动态网络。 神经元通过电化学信号(动作…...
【H5自适应】高端科技类pbootcms网站模板 – 三级栏目、下载与招聘功能支持
(H5自适应)高端大气的科技类pbootcms网站模板 带三级栏目、下载和招聘功能 后台地址:您的域名/admin.php 后台账号:admin 后台密码:123456 为了提升系统安全,请将后台文件admin.php的文件名修改一下。修改之后,后台…...
SQL-leetcode—1661. 每台机器的进程平均运行时间
1661. 每台机器的进程平均运行时间 表: Activity ----------------------- | Column Name | Type | ----------------------- | machine_id | int | | process_id | int | | activity_type | enum | | timestamp | float | ----------------------- 该表展示了一家工厂网站的…...
C++ Primer 跳转语句
欢迎阅读我的 【CPrimer】专栏 专栏简介:本专栏主要面向C初学者,解释C的一些基本概念和基础语言特性,涉及C标准库的用法,面向对象特性,泛型特性高级用法。通过使用标准库中定义的抽象设施,使你更加适应高级…...
清华大学:DeepSeek 如何赋能职场应用(35 页 PDF)
原来已经分享过清华大学的 DeepSeek:从入门到精通(100页PDF) 现在又来第二弹:《DeepSeek 如何赋能职场应用?从提示语技巧到多场景应用》 PDF里介绍了 DeepSeek 这一人工智能工具及其在职场中的应用,从基础…...
idea 错误: 找不到或无法加载主类 @C:\Users\admin\AppData\Local\Temp\idea_arg_file1549212448
idea 错误: 找不到或无法加载主类 C:\Users\admin\AppData\Local\Temp\idea_arg_file1549212448 该错误往往和左下角爱弹出的如下提示是一个意思 Error running ‘PayV3Test1.testTransferBatchesBatchId’ Error running PayV3Test1.testTransferBatchesBatchId. Command lin…...
开发指南098-logback-spring.xml说明
可执行的工程src\main\resources目录有logback-spring.xml文件用于配置日志。配置日志有些容易犯晕的地方,这里列出: 1、<logger>标签的优先级高于<root>标签:所以,如果<logger>标签指定了某个具体的包或类的…...
【SpringBoot3.x+】slf4j-log4j12依赖引入打印日志报错的两种解决方法
最开始引入了1.7.5版本的slf4j-log4j依赖包,但是控制台不报错也不显示日志 在https://mvnrepository.com/找到最新的2.0.16版本之后出现报错: 进入提示的slf4j网站中可以找到从2.0.0版本开始,slf4j-log4j已经被slf4j-reload4j取代࿱…...
【STM32】H743的以太网MAC控制器的一个特殊功能
调试743的MAC,翻阅手册的时候,发现了一个有意思的功能 混杂模式 H743的MAC控制器,可以设置为混杂模式,这就意味着它可以做一些网络监控的应用,譬如连接具备端口镜像功能的交换机,然后直接代替PC实现网络数据…...
Java LinkedList(单列集合)
LinkedList 是 Java 中实现了 List 接口的一个类,它属于 java.util 包。与 ArrayList 不同,LinkedList 是基于双向链表实现的,适合于频繁进行插入和删除操作的场景。 1. LinkedList 的基本特性 基于链表实现:LinkedList 使用双向…...
docker compose快速部署kafka-connect集群
先部署kafka集群,启动 参考:docker compose部署kafka集群-CSDN博客 创建timezone文件,内容填写Asia/Shanghai 再部署kafka-connect集群 networks: net: external: true services: kafka-connect1: restart: always image:…...