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

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/

http://www.lryc.cn/news/485687.html

相关文章:

  • MySQL社区版的启动与连接
  • 【图像压缩感知】论文阅读:Content-Aware Scalable Deep Compressed Sensing
  • 物理hack
  • Linux——环境基础开发工具使用2(正在更新中...)
  • STM32传感器模块编程实践(十二) micro SD卡模块简介及驱动源码
  • Linux debian系统安装ClamTk开源图形用户界面(GUI)杀毒软件
  • RapidIO介绍
  • 用魔方做存储器
  • 动力商城-03 Idea集成apifox Mybatis-Plus字段策略
  • python如何使用Rabbitmq
  • 分布式,微服务,SpringCloudAlibaba,nacos,gateway,openFeign
  • MySQL初学之旅(3)约束
  • 使用YOLOv9进行图像与视频检测
  • C# 中的 LINQ:轻松处理集合和数据
  • 【征稿倒计时!华南理工大学主办 | IEEE出版 | EI检索稳定】2024智能机器人与自动控制国际学术会议 (IRAC 2024)
  • RHCE的学习(20)
  • 控制器ThinkPHP6
  • 1. Django中的URL调度器 (项目创建与简单测试)
  • 学习python的第十天之数据类型——dict字典
  • 华为Mate 70临近上市:代理IP与抢购攻略
  • 进程信号
  • RT-DETR融合GhostModel V3及相关改进思路
  • JVM有哪些垃圾回收器
  • EWM 打印
  • 前端文件优化
  • 电脑怎么自动切换IP地址
  • hbase集成phoenix
  • 单片机智能家居火灾环境安全检测
  • Git_2024/11/16
  • Java基础夯实——2.1Java常见的线程创建方式