当前位置: 首页 > 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 ChatMessageHistoryfrom langchain_core.runnables.history import RunnableWithMessageHistory# 创建agent(会思考, 会调用工具)from langgraph.prebuilt import create_react_agent# 1:自定义工具tooldef get_weather(city:str) - str:查询指定城市的天气return f{city}今天天气很好,气温39.9度。tooldef cal(expr:str) - str:做数学运算, 传入的是表达式return f{eval(expr)}# 2:初始化大模型llm ChatOpenAI(api_key嘿嘿嘿嘿嘿, # 身份凭证(密钥)modeldeepseek-chat, # 调用的 DeepSeek 模型名称base_url嘿嘿嘿 # DeepSeek 模型接口地址(网页解析失败不影响接口调用))# 工具列表tools [get_weather, cal]# 3:创建支持工具的agentagent 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.zskr.cn/news/1374094.html

相关文章:

  • 2026槽式电缆桥架优质推荐指南:网格电缆桥架、铝合金走线架、不锈钢电缆桥架、北京电缆桥架厂家、托盘式电缆桥架选择指南 - 优质品牌商家
  • Landsat8数据EVI计算踩坑实录:从辐射定标到大气校正,你的公式真的写对了吗?
  • Windows 10/11 上从零搭建PCR-GLOBWB水文模型:手把手解决Miniconda环境与Python报错
  • MAIT:面向医疗研究的可解释机器学习工具箱设计与应用
  • 避开叶绿体基因组分析第一个坑:你的序列起始点真的在LSC开头吗?(附B站视频演示)
  • 用Python和Nuscenes数据集,手把手教你搞懂自动驾驶的6大坐标系转换
  • Unity 避免Text组件每行开头不是字符和空格,适配不同分辨率
  • 2026泛塞封密封圈优质品牌推荐:聚四氟乙烯密封圈/铁氟龙密封圈/高分子材料密封圈/O型圈/PEEK密封圈/PU密封圈/选择指南 - 优质品牌商家
  • LLM Weekly(2026.5.11-2026.5.17)
  • CentOS 7 LAMP 服务部署(学习环境)
  • 告别下载量低迷,5套实操方法打通用户增长
  • Win10开机WiFi列表全空?先别慌,按这个‘服务状态排查流程图’走一遍
  • C语言学习:预处理详解
  • 2026电工杯数学建模竞赛A题论文、代码、数据
  • Codex入门19-数据库操作(解放双手:用自然语言写SQL、建表和数据迁移)
  • Codex入门18-批量文件操作(效率神器:一句话批量重命名、格式化、清理几百个文件)
  • 别再手动调阴影了!Godot 4.0 2D光照系统保姆级配置指南(含法线/高光贴图实战)
  • 2026保姆级免费去图片水印教程,这4款微信小程序一键搞定
  • if语句
  • 洛谷官方题单[Java版题解]--【算法1-6】二分查找与二分答案
  • 避坑指南:在Ubuntu 22.04和服务器上成功编译SoftGroup点云分割模型(含gcc降级、sparsehash头文件修复)
  • 【Linux网络编程】进程间关系与守护进程
  • Try和expect的正确使用方式
  • 别再为单细胞数据批次效应发愁了:手把手教你用Harmony算法在R/Seurat中搞定整合
  • 【昇腾CANN】cann-samples示例仓库:快速上手昇腾NPU开发
  • 保姆级教程:用SGImini把物理机Win10的Ghost备份,无损还原到VMware的Win7虚拟机里
  • MacBook新手福音:用Final Cut Pro 10.6.5搞定你的第一门视频课(附保姆级设置与导出指南)
  • 告别数据拼接烦恼!一份教程搞定DMSP与VIIRS夜间灯光数据的融合与校准
  • 别再为立体匹配发愁了!手把手教你用Fusiello法搞定双目相机极线校正(附Python代码)
  • 避坑指南:在openEuler 22.03上配置vsftpd虚拟用户,解决gdbmtool替代db_load的认证问题