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

AI agent案例汇总:基于 LangGraph 的智能对话 Agent 实现

实现了一个具备记忆功能和工具调用能力的智能对话 Agent,基于 LangChain 框架构建,可实现天气查询、数学运算两大核心功能,同时支持多轮对话记忆。代码中初始化了大模型并配置相关参数,通过装饰器定义工具函数,让 Agent 能够根据用户需求,自动调用对应工具完成天气查询和数学计算任务;同时引入对话历史存储机制,确保 Agent 能记住过往对话内容,实现自然、连贯的多轮交互,整体流程清晰,既保留了 AI 的对话能力,又通过工具调用拓展了实际应用场景,可满足用户多样化的查询需求。

# 导入大模型统一调用接口

from langchain_openai import ChatOpenAI

# 自定义工具的装饰器(@tool:把函数变为AI工具)

from langchain_core.tools import tool

# 提示词的模板 + 历史消息占位符(做记忆必须用)

from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder

# 对话历史存储器(有的是聊天记录)

from langchain_community.chat_message_histories import ChatMessageHistory

from langchain_core.runnables.history import RunnableWithMessageHistory

# 创建agent(会思考, 会调用工具)

from langgraph.prebuilt import create_react_agent

# 1:自定义工具

@tool

def get_weather(city:str) -> str:

"""

查询指定城市的天气

"""

return f'{city}今天天气很好,气温39.9度。'

@tool

def cal(expr:str) -> str:

"""

做数学运算, 传入的是表达式

"""

return f'{eval(expr)}'

# 2:初始化大模型

llm = ChatOpenAI(

api_key="嘿嘿嘿嘿嘿", # 身份凭证(密钥)

model="deepseek-chat", # 调用的 DeepSeek 模型名称

base_url="嘿嘿嘿" # DeepSeek 模型接口地址(网页解析失败不影响接口调用)

)

# 工具列表

tools = [get_weather, cal]

# 3:创建支持工具的agent

agent = create_react_agent(llm, tools)

# 4: 配置对话记忆

# 存储会话历史

chat_history = ChatMessageHistory()

# 5给agent加上记忆功能

agent_with_history = RunnableWithMessageHistory(

agent,

lambda session_id: chat_history,

input_messages_key = "messages"

)

# 6多轮问话测试

# 第一轮问天气+计算

res1 = agent_with_history.invoke(

{"messages":[{"role":"user","content":"榆次天气怎么样,帮我算一下3*5"}]},

config = {"configurable":{"session_id":"user01"}}

)

print('第一轮回答:')

print(res1["messages"][-1].content)

print('*'*20)

# 第二轮利用记忆,说城市,表达式

res2 = agent_with_history.invoke(

{"messages":[{"role":"user","content":"我刚才问了那两个问题"}]},

config = {"configurable":{"session_id":"user01"}}

)

print('第二轮回答(带记忆):')

print(res2["messages"][-1].content) 描述一下这是在干什么,生动形象

http://www.jsqmd.com/news/881046/

相关文章:

  • 文章三:Elasticsearch 集群恢复和索引分布
  • 2026年当前,上海别墅大宅新风系统可靠服务商深度解析 - 2026年企业推荐榜
  • 机器学习数据集详解,公开免费数据集获取渠道汇总
  • Try和expect的正确使用方式
  • 连锁董事网络指标数据(2001-2024)
  • 2026电工杯数学建模竞赛A题论文、代码、数据
  • 数据结构:线性表和顺序表
  • 2026槽式电缆桥架优质推荐指南:网格电缆桥架、铝合金走线架、不锈钢电缆桥架、北京电缆桥架厂家、托盘式电缆桥架选择指南 - 优质品牌商家
  • Claude Code 在安装vscode插件时遇到的问题。
  • 告别图形界面!5个CUPS命令行技巧,让你在Linux终端高效管理打印机
  • 2026微型舵机优质推荐榜:小型舵机/尾翼用方扁舵机/工业舵机/德晟舵机/数字舵机/无人机舵机/无刷舵机/最小的舵机/选择指南 - 优质品牌商家
  • 2026电工杯数学建模竞赛A题论文、代码、数据(改进)
  • # 网页设计学习感悟
  • 朝晖玻璃钢:玻璃钢保温水箱/玻璃钢消防水箱/玻璃钢罐化粪池/碳钢水箱/立式不锈钢水箱/组合式玻璃钢水箱/雨水一体化提升泵站/选择指南 - 优质品牌商家
  • 别再手动下载DLL了!用Windows自带工具SFC/SCANNOW一键修复kernel32.dll错误
  • 别再让系统‘无家可归’:给已用满空间的Win10 SSD无损创建EFI引导分区指南
  • 2026年紫外线杀菌除藻灯优质厂家深度解析:聚焦技术、产能与服务三角 - 2026年企业推荐榜
  • Titanic数据集分析避坑指南:新手常犯的3个错误及如何修正
  • ubuntu2026.04部署k8s1.36版本的傻瓜式教程(注:运行时为docker,网络插件为calico)
  • 一文讲清楚规则、Skill、MCP
  • 2026泛塞封密封圈优质品牌推荐:聚四氟乙烯密封圈/铁氟龙密封圈/高分子材料密封圈/O型圈/PEEK密封圈/PU密封圈/选择指南 - 优质品牌商家
  • 别再让Ubuntu卡成PPT!手把手教你用swapfile把交换空间从1G扩容到64G(附权限修复)
  • 【iOS】底层原理:理解dyld
  • 告别虚拟机!手把手教你用U盘给新电脑装Win11+统信UOS 1060双系统(保姆级分区教程)
  • Win10开机WiFi列表全空?先别慌,按这个‘服务状态排查流程图’走一遍
  • 2026靠谱仪器推荐:Trim200离子束刻蚀机、Essent Optics分光光度计、LINZA分光光度计、LensCheck MTF传函仪选择指南 - 优质品牌商家
  • 告别下载量低迷,5套实操方法打通用户增长
  • MacBook新手福音:用Final Cut Pro 10.6.5搞定你的第一门视频课(附保姆级设置与导出指南)
  • 2026年知名的大豆定量包装机/饲料定量包装机厂家哪家好 - 行业平台推荐
  • 从零开始手把手教你用Python和XFLR5估算小型固定翼无人机的升力系数(附代码)