当前位置: 首页 > news >正文

AI Agent设计模式六:ReAct

概念 :思考-执行循环系统

  • ✅ 优点:提升任务完成度,适合复杂问题拆解
  • ❌ 缺点:执行延迟较高,资源消耗大

在这里插入图片描述

from langchain_core.messages import SystemMessage, HumanMessage, ToolMessage, AIMessage
from langgraph.prebuilt import ToolNode
from langchain_core.tools import tool
from langgraph.graph import MessagesState, StateGraph,START, END
from langchain_openai import ChatOpenAI
import os# 初始化模型
llm = ChatOpenAI(model="gpt-3.5-turbo",openai_api_key=os.environ["GPT_API_KEY"],openai_api_base="https://api.chatanywhere.tech/v1",streaming=False  # 禁用流式传输
)# 定义函数,后续作为节点
@tool
def add_numbers(a: float, b: float) -> float:"""计算两数之和参数:a (float): 第一个数字b (float): 第二个数字返回:float: 两数之和"""print(f"开始计算:{a} + {b} = {a+b}")return a + b@tool
def get_planet_mass(planet: str):"""查询星球质量(单位:千克)参数:planet (str): 星球名称,例如 'Earth' 或 '地球'返回:float: 星球质量"""PLANET_MASSES = {'Mercury': 3.301e23,'Venus': 4.867e24,'Earth': 5.972e24,'Mars': 6.417e23,'Jupiter': 1.899e27,'Saturn': 5.685e26,'Uranus': 8.682e25,'Neptune': 1.024e26,'Sun': 1.989e30}print(f"查询星球质量:{planet}")mass = PLANET_MASSES.get(planet, 0)print(f"{planet}的星球质量为:{mass} kg")return f"{planet}的质量为{mass} 10^24千克"# 所有的tool 工具列表
tools = [get_planet_mass, add_numbers]def llm_call(state: MessagesState):# 将工具列表绑定到大模型上llm_with_tools = llm.bind_tools(tools)print(f"大模型开始判断")response = llm_with_tools.invoke([SystemMessage(content="""你是一个智能助手"""),*state["messages"]])return {"messages": state["messages"] + [response]}def should_continue(state: MessagesState):"""判断是否继续执行"""messages = state["messages"]last_message = messages[-1]if last_message.tool_calls:print(f"调用工具: {last_message.tool_calls}")return "Action"print(f"流程结束")return END#定义图
workflow = StateGraph(MessagesState)
# 定义节点
workflow.add_node("llm_call", llm_call)
# 将所有的工具封装成工具节点
workflow.add_node("tools", ToolNode(tools=tools))# 定义边
workflow.add_edge(START,"llm_call")
workflow.add_conditional_edges("llm_call",should_continue,{"Action": "tools",END: END}
)
workflow.add_edge("tools", "llm_call")# 编译
graph = workflow.compile()# 执行
graph.invoke({"messages": [HumanMessage(content="请计算一下Earth和Sun的质量之和。")]})

执行结果
在这里插入图片描述

相关文章:

AI Agent设计模式六:ReAct

概念 :思考-执行循环系统 ✅ 优点:提升任务完成度,适合复杂问题拆解❌ 缺点:执行延迟较高,资源消耗大 from langchain_core.messages import SystemMessage, HumanMessage, ToolMessage, AIMessage from langgraph.pr…...

使用MySQL时出现 Ignoring query to other database 错误

Ignoring query to other database 错误 当在远程连接软件中输入MySQL命令出现该错误 导致错误原因是:登录mysql时账户名没有加上u 如果出现该错误,退出mysql,重新输入正确格式进入即可!...

(三)链式工作流构建——打造智能对话的强大引擎

上一篇:(二)输入输出处理——打造智能对话的灵魂 在前两个阶段,我们已经搭建了一个基础的智能对话,并深入探讨了输入输出处理的细节。今天,我们将进入智能对话的高级阶段——链式工作流构建。这一阶段的目…...

跳跃连接(Skip Connection)与残差连接(Residual Connection)

1. 跳跃连接(Skip Connection)的基本概念 跳跃连接是一种在深度神经网络中广泛应用的技术,它允许信息在网络中跨层直接传递。在传统的神经网络里,每一层的输出仅仅是前一层输出经过特定变换后的结果。而在具备跳跃连接的网络中&a…...

[特殊字符] 通过Postman和OAuth 2.0连接Dynamics 365 Online的详细步骤 [特殊字符]

🌟 引言 在企业应用开发中,Dynamics 365 Online作为微软的核心CRM平台,提供了强大的Web API接口。本文将教你如何通过Postman和OAuth 2.0认证实现与Dynamics 365的安全连接,轻松调用数据接口。 📝 准备工作 工具安装…...

什么是RPC通信

RPC(Remote Procedure Call,远程过程调用)通信是一种允许程序像调用本地函数一样调用远程服务器上函数的通信技术。它简化了分布式系统中的网络交互,隐藏了底层网络通信的复杂性,使开发者能够专注于业务逻辑。 一、RPC…...

HANA如何在存储过程里执行动态SQL

业务场景需求: 在HANA里如何实现动态的SQL控制,比如需要多个单据里,实现某个自定义字段不允许重复 一般的写法是需要在每个业务单据里加对应的存储过程控制,这样的话,需要在每个业务单据里进行控制,SQL维…...

NO.66十六届蓝桥杯备战|基础算法-贪心-区间问题|凌乱的yyy|Rader Installation|Sunscreen|牛栏预定(C++)

区间问题是另⼀种⽐较经典的贪⼼问题。题⽬⾯对的对象是⼀个⼀个的区间,让我们在每个区间上做出取舍。 这种题⽬的解决⽅式⼀般就是按照区间的左端点或者是右端点排序,然后在排序之后的区间上,根据题⽬要求,制定出相应的贪⼼策略&…...

0101安装matplotlib_numpy_pandas-报错-python

文章目录 1 前言2 报错报错1:ModuleNotFoundError: No module named distutils报错2:ERROR:root:code for hash blake2b was not found.报错3:**ModuleNotFoundError: No module named _tkinter**报错4:UserWarning: Glyph 39044 …...

SQL ServerAlways On 可用性组配置失败

问题现象: 配置 Always On 可用性组时,报错 “无法将数据库加入可用性组”(错误 41158),或提示 “WSFC 群集资源无法联机”(错误 19471)。 快速诊断 验证 WSFC 群集状态: # 检查群集…...

01 - UnLua访问蓝图

前文回顾:配置好了智能提示和调试 分别对私有的和公开函数,变量,组件,事件进行测试。 测试 在BeginPlay中,分别访问他们。这里引入了GetDisplayName函数打印相机组件名 打印结果: 结论 不管是私有的&…...

6.5.图的基本操作

一.图的基本操作&#xff1a; 1.判断图G是否存在弧<x,y>或边(x,y)&#xff1a; a.使用邻接矩阵来实现判断无向图G中是否存在边(x,y)&#xff1a; 以上述图片的无向图为例&#xff0c;用邻接矩阵存储无向图时想要判断两个顶点之间是否有边是很方便的&#xff0c; 比如判…...

2025全新开源双端系统源码:获取通讯录、相册、短信、定位及已装应用信息

分享一套全新上线的双端信息采集系统源码&#xff0c;支持提取通讯录、相册、短信、定位信息及已安装应用数据。源码完全开源&#xff0c;只做轻微测试需要的自取&#xff0c;简易教程放在压缩包里面了&#xff0c;欢迎有需要的朋友自取参考。 下载地址&#xff1a;下载地址.t…...

es基本概念

Elasticsearch 的架构与基本概念 Elasticsearch&#xff08;简称 ES&#xff09;是一个开源的分布式搜索和分析引擎&#xff0c;基于 Apache Lucene 构建。它被广泛用于全文搜索、日志分析、实时数据分析等场景。以下是其架构概述及其基本概念的详细解释。 Elasticsearch 的架…...

算法刷题记录——LeetCode篇(2.5) [第141~150题](持续更新)

更新时间&#xff1a;2025-04-04 算法题解目录汇总&#xff1a;算法刷题记录——题解目录汇总技术博客总目录&#xff1a;计算机技术系列博客——目录页 141. 环形链表 给你一个链表的头节点 head &#xff0c;判断链表中是否有环。 如果链表中有某个节点&#xff0c;可以通…...

【Rust学习】Rust数据类型,函数,条件语句,循环

本文专栏&#xff1a;Rust学习 目录 一&#xff0c;数据类型 1&#xff0c;标量类型 1.1&#xff0c;整型 1.2&#xff0c;整型溢出 1.3&#xff0c;浮点数型 1.4&#xff0c;布尔类型 1.5&#xff0c;字符型 2&#xff0c;复合类型 2.1&#xff0c;Tuple(元组) 2.2&am…...

PgVectore的使用

PgVectore的使用 一、PgVector的安装 参照博客&#xff1a;https://blog.csdn.net/u012953777/article/details/147013691?spm1001.2014.3001.5501 二、PgVector的使用 1、创建表与插入数据​ ​​定义向量字段​​&#xff1a; CREATE TABLE items (id SERIAL PRIMARY …...

智能工厂的数字孪生与信息物理系统架构研究

摘要 本文以工业 4.0 为背景&#xff0c;系统分析数字孪生&#xff08;Digital Twin&#xff09;与信息物理系统&#xff08;CPS&#xff09;在智能工厂中的协同架构。通过构建 "感知 - 映射 - 决策 - 执行" 的四层技术框架&#xff0c;结合三一重工、海尔等企业案例…...

基于YOLO11实例分割与奥比中光相机的快递包裹抓取点检测

本博客来源于CSDN机器鱼&#xff0c;未同意任何人转载。 更多内容&#xff0c;欢迎点击本专栏&#xff0c;查看更多内容。 0 引言 项目采用六轴机械臂搭配末端真空吸盘&#xff0c;从无序包裹中抓取想要的包裹。AI算法需要提供各包裹的抓取点的3D坐标与3D姿态。由于快递包裹含…...

简单程序语言理论与编译技术·22 实现一个从AST到RISCV的编译器

本文是记录专业课“程序语言理论与编译技术”的部分笔记。 LECTURE 22&#xff08;实现一个从AST到RISCV的编译器&#xff09; 一、问题分析 1、完整的编译器&#xff08;如LLVM&#xff09;需先完成AST到IR的转换&#xff0c;并进行代码优化&#xff0c;再到汇编&#xff0…...

无锡无人机驾驶证培训费用

无锡无人机驾驶证培训费用&#xff0c;随着科技的迅速发展&#xff0c;无人机在众多行业中发挥着举足轻重的作用。从影视制作到农业监测&#xff0c;再到物流运输与城市规划&#xff0c;无人机的应用场景不断扩展&#xff0c;因此越来越多的人开始意识到学习无人机驾驶技能的重…...

[ctfshow web入门] web5

前置知识 引用博客&#xff1a;phps的利用 当服务器配置了 .phps 文件类型时&#xff0c;访问 .phps 文件会以语法高亮的形式直接显示 PHP 源代码&#xff0c;而不是执行它。.phps被作为辅助开发者的一种功能&#xff0c;开发者可以通过网站上访问xxx.phps直接获取高亮源代码 …...

第五章:架构安全性_《凤凰架构:构建可靠的大型分布式系统》

第五章 架构安全性 一、认证机制 核心知识点&#xff1a; 认证标准&#xff1a; HTTP Basic认证&#xff1a;Base64编码传输凭证&#xff0c;需配合HTTPS使用OAuth 2.0&#xff1a;授权框架&#xff0c;重点掌握四种授权模式&#xff1a; 授权码模式&#xff08;最安全&#…...

控件主题效果添加程序设计

以下是针对Qt Designer设计的控件添加阴影效果的完整解决方案&#xff0c;结合可视化设置与动态主题支持&#xff1a; 一、基础阴影效果实现方案 1. 通过QSS实现简易阴影&#xff08;适用于简单需求&#xff09; /* 使用多重边框模拟阴影效果 */ QFrame#customWidget {borde…...

用swift playground写个ios应用和大模型或者网站交互

import SwiftUIstruct ContentView: View {State private var textFieldText: String ""State private var outputText: String "输出将会显示在这里"private let tip:String "消息已发送&#xff0c;请等待"State private var history:[Stri…...

Mlivus Cloud SDK v2的革新:从痛点剖析到实战优化

目录 从V1到V2:开发者体验的范式转变 深度解析SDK v2的架构革新 1. 统一接口范式:终结API混乱时代 2. 原生异步支持:高并发场景的性能救星 3. Schema Cache机制:性能优化的隐形冠军 4. 全功能REST API:简化集成的关键 实战指南:从迁移到深度优化 平滑迁移策略 性…...

【图像处理基石】什么是AWB?

1. AWB&#xff08;自动白平衡&#xff09;的定义 AWB&#xff08;Auto White Balance&#xff09;是一种图像处理技术&#xff0c;通过算法校正不同色温光源下图像的色彩偏差&#xff0c;使白色在任何光照条件下都能准确呈现为白色&#xff0c;从而让图像颜色更接近人眼真实感…...

[蓝桥杯 2017 省 B] k 倍区间

P8649 [蓝桥杯 2017 省 B] k 倍区间 题目描述 给定一个长度为 N N N 的数列&#xff0c; A 1 , A 2 , ⋯ A N A_1,A_2, \cdots A_N A1​,A2​,⋯AN​&#xff0c;如果其中一段连续的子序列 A i , A i 1 , ⋯ A j ( i ≤ j ) A_i,A_{i1}, \cdots A_j(i \le j) Ai​,Ai1​,⋯…...

基于SSM的高校宿舍水电管理系统

作者&#xff1a;计算机学姐 开发技术&#xff1a;SpringBoot、SSM、Vue、MySQL、JSP、ElementUI、Python、小程序等&#xff0c;“文末源码”。 专栏推荐&#xff1a;前后端分离项目源码、SpringBoot项目源码、Vue项目源码、SSM项目源码、微信小程序源码 精品专栏&#xff1a;…...

【LLM系列】1.大模型简介

1. 基础 1.1 如何权衡模型的复杂度和性能&#xff1f; ├── a. 模型架构选择 │ ├── 简化架构 │ │ └── 选择较小的网络层数和宽度&#xff0c;降低复杂度&#xff1b; │ │ 可使用高性能基础模型如 Transformers 作为起点&#xff0c;根据需求缩放模型。 │ └──…...

从概念和设计哲学的角度详细解析工厂模式

从概念和设计哲学的角度详细解析工厂模式。 1. 工厂模式的核心目标 解耦&#xff1a;将对象的创建过程与使用过程分离&#xff0c;使用者无需关心对象如何被创建。 统一入口&#xff1a;通过一个接口或方法控制对象的生成&#xff0c;隐藏底层实现细节。 类比现实中的工厂&am…...

AI小白:机器学习VS深度学习

1 特征工程的范式革命 传统机器学习&#xff1a;手工特征工程的艺术 在传统机器学习中&#xff0c;特征工程是一个关键步骤&#xff0c;它涉及将原始数据转化为能够被机器学习模型高效利用的特征。这通常需要领域专家的经验和知识&#xff0c;以手动设计和提取特征。 例如&a…...

对应列表数据的分割和分组

要基于指定的流派列表分割数据&#xff0c;可以使用 布尔索引 或 groupby 结合筛选。以下是具体方法&#xff1a; 场景假设 数据列 genres 中的值可能是多流派的字符串&#xff0c;例如 "drama,action" 或 ["drama", "action"]。目标&#xff1…...

信息物理系统(CPS):中国 AI(DEEPSEEK)的未来路径

一、引言 人工智能&#xff08;AI&#xff09;的发展正从通用模型向垂直领域渗透&#xff0c;而信息物理系统&#xff08;CPS&#xff09;作为连接数字世界与物理世界的桥梁&#xff0c;为 AI 提供了新的发展方向。中国 AI 企业如 DEEPSEEK 通过开源策略和本土化优势&#xff…...

SEO长尾词优化实战技巧

内容概要 长尾关键词作为SEO策略的重要组成部分&#xff0c;能够有效捕捉细分领域的精准流量&#xff0c;降低竞争成本的同时提升转化效率。本文系统梳理了从关键词挖掘到流量转化的全链路优化方法&#xff0c;重点解析工具使用、布局策略及搜索意图匹配三大核心模块。通过结合…...

爬虫自动化工具:DrissionPage

1. DrissionPage初始 官网地址&#xff1a;&#x1f6f0;️ 概述 | DrissionPage官网 在当今互联网高速发展的时代&#xff0c;网页数据的获取和处理变得愈发重要。传统的自动化工具如 Selenium 在某些方面逐渐显露出一些局限性&#xff0c;而 DrissionPage 正是在这样的背景下…...

扩展库Scrapy:Python网络爬虫的利器

目录 一、扩展机制的核心原理 二、六大实用扩展库详解 1. 动态渲染神器&#xff1a;scrapy-playwright 2. 分布式架构&#xff1a;scrapy-redis 3. 反反爬利器&#xff1a;scrapy-zyte-smartproxy 4. 智能调度&#xff1a;scrapy-thunder 5. 数据管道&#xff1a;scrapy…...

L3-21

exer01 Message # 1.定义Message消息类和cmd,content,sender,to四个属性&#xff0c;其中to默认为None class Message:def __init__(self, cmd, content, sender, toNone):self.cmd cmdself.content contentself.sender senderself.to to # 2. 创建登录消息对象msg1,聊天消…...

04.游戏开发-unity编辑器详细-工具栏、菜单栏、工作识图详解

04.游戏开发&#xff0c;unity编辑器详细-工具栏、菜单栏、工作识图详解 提示&#xff1a;帮帮志会陆续更新非常多的IT技术知识&#xff0c;希望分享的内容对您有用。本章分享的是Python基础语法。前后每一小节的内容是存在的有&#xff1a;学习and理解的关联性&#xff0c;希…...

GRBL运动控制算法(二)圆弧插补

前言 GRBL 是一款高性能、开源的嵌入式 CNC&#xff08;计算机数控&#xff09;控制器固件&#xff0c;专为 Arduino 平台优化&#xff0c;广泛应用于雕刻机、激光切割机、3D 打印机及其他精密运动控制场景。自 2009 年发布以来&#xff0c;GRBL 凭借其高效的运动规划算法、稳…...

《P1072 [NOIP 2009 提高组] Hankson 的趣味题》

题目描述 Hanks 博士是 BT&#xff08;Bio-Tech&#xff0c;生物技术) 领域的知名专家&#xff0c;他的儿子名叫 Hankson。现在&#xff0c;刚刚放学回家的 Hankson 正在思考一个有趣的问题。 今天在课堂上&#xff0c;老师讲解了如何求两个正整数 c1​ 和 c2​ 的最大公约数…...

矩阵分解中的梯度下降:详细实现方案(包含数学推导、代码实现和优化技巧)

矩阵分解中的梯度下降:详细实现方案(包含数学推导、代码实现和优化技巧) 矩阵分解是机器学习和数据科学中重要的技术,广泛应用于推荐系统、自然语言处理、图像处理等领域。梯度下降作为一种优化算法,在矩阵分解中常用于最小化目标函数以找到最佳的矩阵近似。本指南将详细…...

STM32F103C8T6实现 SG90 360 °电机转动

简介 基于上一篇 STM32F103C8T6实现 SG90 180 电机任意角度转动 本来想实现角度转动, 但靠舵机本身无法实现限位, 需要记录位置, 并且根据转速计算大概位置, 存在误差&#xff0c; 不实现角度转动了, 只实现正反转 代码 正向速度0.75为最大速度, 反向2.25&#xff0c; 接近1.5…...

RTDETR融合[CVPR2025]DnLUT中的MuLUTUnit模块

RT-DETR使用教程&#xff1a; RT-DETR使用教程 RT-DETR改进汇总贴&#xff1a;RT-DETR更新汇总贴 《DnLUT: Ultra-Efficient Color Image Denoising via Channel-Aware Lookup Tables》 一、 模块介绍 论文链接&#xff1a;https://arxiv.org/pdf/2503.15931 代码链接&#xf…...

大数据Spark(五十七):Spark运行架构与MapReduce区别

文章目录 Spark运行架构与MapReduce区别 一、Spark运行架构 二、Spark与MapReduce区别 Spark运行架构与MapReduce区别 一、Spark运行架构 Master:Spark集群中资源管理主节点&#xff0c;负责管理Worker节点。Worker:Spark集群中资源管理的从节点&#xff0c;负责任务的运行…...

二:python基础(黑马)

一&#xff1a;了解 1.1: python特点 python是完全面向对象的语言 函数&#xff0c;模块&#xff0c;数字&#xff0c;字符串都是对象&#xff0c;在python中一切皆对象 完全支持继承&#xff0c;重载&#xff0c;多重继承 支持重载运算符&#xff0c;也支持泛型设计 py…...

【马拉车 KMP 差分数组】P6216 回文匹配|省选-

本文涉及知识点 较难理解的字符串查找算法KMP C差分数组 马拉车算法 P6216 回文匹配 题目描述 对于一对字符串 ( s 1 , s 2 ) (s_1,s_2) (s1​,s2​)&#xff0c;若 s 1 s_1 s1​ 的长度为奇数的子串 ( l , r ) (l,r) (l,r) 满足 ( l , r ) (l,r) (l,r) 是回文的&#…...

C/C++测试框架googletest使用示例

文章目录 文档编译安装示例参考文章 文档 https://github.com/google/googletest https://google.github.io/googletest/ 编译安装 googletest是cmake项目&#xff0c;可以用cmake指令编译 cmake -B build && cmake --build build将编译产物lib和include 两个文件夹…...

提高MCU的效率方法

要提高MCU(微控制器单元)的编程效率,需要从硬件特性、代码优化、算法选择、资源管理等多方面入手。以下是一些关键策略: 1. 硬件相关优化 时钟与频率: 根据需求选择合适的时钟源(内部/外部振荡器),避免过高的时钟频率导致功耗浪费。关闭未使用的外设时钟(如定时器、UA…...

Ansible 实战:Roles,运维的 “魔法函数”

一、介绍 你现在已经学过tasks和handlers&#xff0c;那么&#xff0c;最好的playbook组织方式是什么呢&#xff1f;答案很简单&#xff1a;使用roles&#xff01;roles基于一种已知的文件结构&#xff0c;能够自动加载特定的vars_files、tasks以及handlers。通过roles对内容进…...