2. langgraph中的react agent使用 (在react agent添加历史消息)
1. 导入必要的库
首先,我们需要导入所需的库。这里我们使用 langchain_openai
来与 智谱AI 模型进行交互,并使用 langchain_core.tools
来定义自定义工具。
from langchain_openai import ChatOpenAI
from typing import Literal
from langchain_core.tools import tool
2. 初始化 智谱AI 模型
接下来,我们初始化 智谱AI 模型。这里需要指定模型的参数,包括温度、模型名称、API 密钥和 API 基地址。
model = ChatOpenAI(temperature=0,model="glm-4-plus",openai_api_key="your_api_key",openai_api_base="https://open.bigmodel.cn/api/paas/v4/"
)
3. 定义自定义工具
我们定义一个获取天气信息的工具 get_weather
,该工具接受一个城市名称作为参数,并返回相应的天气信息。
@tool
def get_weather(city: Literal["nyc", "sf"]):"""Use this to get weather information."""if city == "nyc":return "It might be cloudy in nyc"elif city == "sf":return "It's always sunny in sf"else:raise AssertionError("Unknown city")
4. 创建工具列表
将定义好的工具添加到工具列表中。
tools = [get_weather]
5. 初始化记忆存储
使用 MemorySaver
来存储对话过程中的状态。
from langgraph.checkpoint.memory import MemorySavermemory = MemorySaver()
6. 创建反应式代理
使用 create_react_agent
函数创建一个反应式代理,该代理将模型和工具结合在一起。
from langgraph.prebuilt import create_react_agentgraph = create_react_agent(model, tools=tools, checkpointer=memory)
7. 定义打印流函数
为了更好地展示对话过程,我们定义一个 print_stream
函数,用于打印流式输出的消息。
def print_stream(stream):for s in stream:message = s["messages"][-1]if isinstance(message, tuple):print(message)else:message.pretty_print()
8. 发送查询并打印结果
配置输入参数,并发送查询请求,最后打印结果。
config = {"configurable": {"thread_id": "1"}}
inputs = {"messages": [("user", "What's the weather in NYC?")]}print_stream(graph.stream(inputs, config=config, stream_mode="values"))
输出结果如下:
==============================[1m Human Message [0m=================================What's the weather in NYC?
================================[1m Ai Message [0m==================================
Tool Calls:get_weather (call_9208192282885233822)Call ID: call_9208192282885233822Args:city: nyc
================================[1m Tool Message [0m=================================
Name: get_weatherIt might be cloudy in nyc
================================[1m Ai Message [0m==================================It might be cloudy in NYC.
9. 发送另一个查询并打印结果
再次配置输入参数,发送新的查询请求,并打印结果。
inputs = {"messages": [("user", "What's it known for?")]}
print_stream(graph.stream(inputs, config=config, stream_mode="values"))
输出结果如下:
==============================[1m Human Message [0m=================================What's it known for?
================================[1m Ai Message [0m==================================New York City is known for a multitude of things, making it one of the most iconic and influential cities in the world. Here are some highlights:1. **Statue of Liberty**: A symbol of freedom and democracy, this iconic statue is located on Liberty Island.2. **Central Park**: An expansive urban park in the heart of Manhattan, known for its lush landscapes, recreational activities, and cultural events.3. **Broadway**: The pinnacle of American theater, Broadway is famous for its high-quality performances and historic theaters.4. **Times Square**: A bustling commercial intersection known for its bright lights, massive digital billboards, and the annual New Year's Eve ball drop.5. **Empire State Building**: An Art Deco skyscraper that once held the title of the world's tallest building and remains a symbol of New York's skyline.6. **Museums and Art**: Home to world-renowned institutions like the Metropolitan Museum of Art, the Museum of Modern Art (MoMA), and the Guggenheim.7. **Diverse Cuisine**: Reflecting its status as a melting pot, NYC offers an incredible variety of global cuisines.8. **Financial Hub**: Wall Street and the New York Stock Exchange are central to the global economy.9. **Fashion Capital**: Known for its influence on global fashion trends, hosting events like New York Fashion Week.10. **Cultural Diversity**: A city of immigrants, NYC boasts a rich tapestry of cultures, languages, and traditions.These are just a few aspects that contribute to NYC's global reputation and appeal.
参考链接:https://langchain-ai.github.io/langgraph/how-tos/create-react-agent-memory/
相关文章:
2. langgraph中的react agent使用 (在react agent添加历史消息)
1. 导入必要的库 首先,我们需要导入所需的库。这里我们使用 langchain_openai 来与 智谱AI 模型进行交互,并使用 langchain_core.tools 来定义自定义工具。 from langchain_openai import ChatOpenAI from typing import Literal from langchain_core.…...

MySQL社区版的启动与连接
1.启动: 注意:MySQL是默认开机自启的 方式一: 1.WinR 的命令行中直接输入services.msc 2.在服务中找到数据库名称,然后鼠标右键点击启动 方式二: 1.在开始选项中搜索“cmd”命令提示符,使用管理员身份运行 …...

【图像压缩感知】论文阅读:Content-Aware Scalable Deep Compressed Sensing
tips: 本文为个人阅读论文的笔记,仅作为学习记录所用。本文参考另一篇论文阅读笔记 Title: Content-Aware Scalable Deep Compressed Sensing Journal: TIP 2022 代码链接: https://github.com/Guaishou74851/CASNet…...

物理hack
声明 声明 文章只是方便各位师傅学习知识,以下网站只涉及学习内容,其他的都与本人无关,切莫逾越法律红线,否则后果自负。 ✍🏻作者简介:致力于网络安全领域,目前作为一名学习者,很荣…...

Linux——环境基础开发工具使用2(正在更新中...)
1.自动化构建-make/Makefile 1.1 认识make和Makefile make是一个命令; Makefile是一个文件。 1.2 理解 其中在第一个图片中,第一行的 mytest:test.c 叫做依赖关系;第二行的 gcc test.c -o mytest 叫做依赖方法。 依赖关系和依赖方法共同…...

STM32传感器模块编程实践(十二) micro SD卡模块简介及驱动源码
文章目录 一.概要二.Micro SD卡模块主要特性三.Micro SD卡模块接线说明四.Micro SD卡模块参考原理图五.通讯协议介绍六.FATFS文件系统介绍七.STM32F030C8T6单片机与SD卡模块实现数据读写实验1.硬件准备2.软件工程3.软件主要代码4.实验效果 八.源代码工程下载九.小结 一.概要 M…...

Linux debian系统安装ClamTk开源图形用户界面(GUI)杀毒软件
一、ClamTk简介 ClamTk 是一个基于 ClamAV 的开源图形用户界面(GUI)杀毒软件。它使用 GTK2-Perl 脚本构建而成,支持32位与64位操作系统。ClamTk 提供了一个直观的用户界面,使得用户无需深入了解命令行即可完成大部分操作。它具备…...

RapidIO介绍
传统串行总线(如 UART, SPI, I2C 等) 特点: 接口简单:传统的串行总线设计相对简单,通常使用少量的引脚,因此硬件设计较为简洁。协议简单:这些协议设计简单,容易实现,因…...
用魔方做存储器
用魔方模拟存储器是一种形象化的方式,特别适合教学演示或帮助理解存储器结构。以下是如何将魔方作为存储器的设计思路和可能的实现: 基本思路 魔方的结构: 魔方有 (6) 个面,每面 (3 \times 3 9) 个方块,总共 (6 \time…...

动力商城-03 Idea集成apifox Mybatis-Plus字段策略
1.Idea下载apifox插件 2.新建令牌放入Idea 3.右键上传到对应接口 4.设置前置url 插件能够自动识别swagger注解 Mybatis-Plus字段策略 1、FieldStrategy作用 Mybatis-Plus字段策略FieldStrategy的作用主要是在进行新增、更新时,根据配置的策略判断是否对实体对…...
python如何使用Rabbitmq
目录 一、Rabbitmq介绍 二、Rabbitmq的使用场景 1、异步处理 2、服务解耦 3、流量削峰 4、日志收集 5、发布订阅 6、任务调度 三、python如何使用Rabbitmq 1、安装依赖 2、基础使用 3、消息确认 4、消息持久化 5、公平调度 6、发布订阅 7、关键字发布 一、Rabbi…...
分布式,微服务,SpringCloudAlibaba,nacos,gateway,openFeign
想学习微服务SpringCloudAlibaba的小伙伴,可以观看视频 地址: https://www.bilibili.com/video/BV1cFDEYWEkY/?vd_source14d27ec13a4737c281b7c79463687112分布式架构和微服务是两个密切相关但又有所区别的概念。它们在现代软件工程中经常被提及&#…...

MySQL初学之旅(3)约束
目录 1.前言 2.正文 2.1约束类型 2.2NULL约束 2.3UNIQUE约束 2.4DEFAULT约束 2.5PRIMARY KEY主键约束 2.6FOREIGN KEY外键约束 2.7CHECK约束 3.小结 1.前言 哈喽大家好啊,今儿来继续给大家分享最近学习的MySQL和约束相关的知识点,希望大家一起…...
使用YOLOv9进行图像与视频检测
大家好,YOLOv9 与其前身v8一样,专注于识别和精确定位图像和视频中的对象。本文将介绍如何使用YOLOv9进行图像与视频检测,自动驾驶汽车、安全系统和高级图像搜索等应用在很大程度上依赖于此功能,YOLOv9 引入了比 YOLOv8 更令人印象…...
C# 中的 LINQ:轻松处理集合和数据
C#中的LINQ(Language Integrated Query),这是一个非常强大且实用的功能,可以简化集合操作和数据查询。以下是一篇关于C#中LINQ使用的文章。 引言 LINQ(Language Integrated Query)是C#语言的一个重要特性…...

【征稿倒计时!华南理工大学主办 | IEEE出版 | EI检索稳定】2024智能机器人与自动控制国际学术会议 (IRAC 2024)
#华南理工大学主办!#IEEE出版!EI稳定检索!#组委阵容强大!IEEE Fellow、国家杰青等学术大咖领衔出席!#会议设置“优秀论文”“优秀青年学者报告”“优秀海报”等评优奖项 2024智能机器人与自动控制国际学术会议 &#…...

RHCE的学习(20)
变量5种赋值方式 shell中变量赋值5种方式,其中采用name10的方法称A 直接赋值 nameB read命令 read v1C 使用命令行参数 ($1 $2 $3 ..) name$1D 使用命令的输入 username$(whoami)E 从文件读取 #cut -d : -f1 /etc/passwd > /user.listfor…...

控制器ThinkPHP6
五、控制器中对数组值的返回 在做接口服务时,很多时候回使用数组作为返回值,那么数组如何返回成 json呢? 在 tp6 中返回json 很简单,直接使用 json 进行返回即可,例如: public function index(){$resarra…...

1. Django中的URL调度器 (项目创建与简单测试)
1. 创建 Django 项目 运行以下命令创建一个名为 blog_project 的 Django 项目: django-admin startproject blog_project2. 创建博客应用 Django 中,项目可以包含多个应用。创建一个名为 blog 的应用: cd blog_project python manage.py …...
学习python的第十天之数据类型——dict字典
学习python的第十天之数据类型——dict字典 Python 中的字典(Dictionary)是一个非常强大的内置数据类型,它用来存储键值对(key-value pairs)信息。字典是无序的,这意味着它们不会记录你添加键值对的顺序&am…...

【Axure高保真原型】引导弹窗
今天和大家中分享引导弹窗的原型模板,载入页面后,会显示引导弹窗,适用于引导用户使用页面,点击完成后,会显示下一个引导弹窗,直至最后一个引导弹窗完成后进入首页。具体效果可以点击下方视频观看或打开下方…...

Vue3 + Element Plus + TypeScript中el-transfer穿梭框组件使用详解及示例
使用详解 Element Plus 的 el-transfer 组件是一个强大的穿梭框组件,常用于在两个集合之间进行数据转移,如权限分配、数据选择等场景。下面我将详细介绍其用法并提供一个完整示例。 核心特性与用法 基本属性 v-model:绑定右侧列表的值&…...

C++ 求圆面积的程序(Program to find area of a circle)
给定半径r,求圆的面积。圆的面积应精确到小数点后5位。 例子: 输入:r 5 输出:78.53982 解释:由于面积 PI * r * r 3.14159265358979323846 * 5 * 5 78.53982,因为我们只保留小数点后 5 位数字。 输…...

零基础设计模式——行为型模式 - 责任链模式
第四部分:行为型模式 - 责任链模式 (Chain of Responsibility Pattern) 欢迎来到行为型模式的学习!行为型模式关注对象之间的职责分配、算法封装和对象间的交互。我们将学习的第一个行为型模式是责任链模式。 核心思想:使多个对象都有机会处…...

Selenium常用函数介绍
目录 一,元素定位 1.1 cssSeector 1.2 xpath 二,操作测试对象 三,窗口 3.1 案例 3.2 窗口切换 3.3 窗口大小 3.4 屏幕截图 3.5 关闭窗口 四,弹窗 五,等待 六,导航 七,文件上传 …...

CVPR2025重磅突破:AnomalyAny框架实现单样本生成逼真异常数据,破解视觉检测瓶颈!
本文介绍了一种名为AnomalyAny的创新框架,该方法利用Stable Diffusion的强大生成能力,仅需单个正常样本和文本描述,即可生成逼真且多样化的异常样本,有效解决了视觉异常检测中异常样本稀缺的难题,为工业质检、医疗影像…...

ubuntu系统文件误删(/lib/x86_64-linux-gnu/libc.so.6)修复方案 [成功解决]
报错信息:libc.so.6: cannot open shared object file: No such file or directory: #ls, ln, sudo...命令都不能用 error while loading shared libraries: libc.so.6: cannot open shared object file: No such file or directory重启后报错信息&…...

2.3 物理层设备
在这个视频中,我们要学习工作在物理层的两种网络设备,分别是中继器和集线器。首先来看中继器。在计算机网络中两个节点之间,需要通过物理传输媒体或者说物理传输介质进行连接。像同轴电缆、双绞线就是典型的传输介质,假设A节点要给…...
大数据治理的常见方式
大数据治理的常见方式 大数据治理是确保数据质量、安全性和可用性的系统性方法,以下是几种常见的治理方式: 1. 数据质量管理 核心方法: 数据校验:建立数据校验规则(格式、范围、一致性等)数据清洗&…...
嵌入式面试常问问题
以下内容面向嵌入式/系统方向的初学者与面试备考者,全面梳理了以下几大板块,并在每个板块末尾列出常见的面试问答思路,帮助你既能夯实基础,又能应对面试挑战。 一、TCP/IP 协议 1.1 TCP/IP 五层模型概述 链路层(Link Layer) 包括网卡驱动、以太网、Wi‑Fi、PPP 等。负责…...