从0到1实战:基于 LangGraph + 智谱AI + 高德天气API,打造多步骤自动化查询智能体
前言在大模型应用开发中LangGraph 作为 LangChain 生态内的工作流编排利器可以轻松实现多步骤、有状态、可循环的智能体流程。本文将带你从零开发一个真实天气查询智能体通过智谱 GLM-4.5-Air 生成查询计划利用 LangGraph 分步执行调用高德天气官方 API获取实时气温完成一套可落地、可扩展的 LLM 自动化流程。一、技术栈介绍LangGraph智能体工作流编排状态管理、条件分支、循环执行LangChain大模型调用、提示词模板、结构化输出智谱AI ChatZhipuAI使用 glm-4.5-air 生成结构化计划高德地图天气 API提供国内城市真实、稳定的实时天气数据Python整体开发语言二、整体流程设计本项目采用计划-执行双节点智能体架构生成计划节点LLM 生成四个直辖市天气查询步骤执行查询节点依次调用天气 API更新状态条件路由判断是否还有未完成计划自动循环/结束流程图START → 生成计划 → 执行单步查询 →还有计划→ 继续执行 / END三、环境准备1. 安装依赖pipinstalllanggraph langchain langchain-core langchain-community pydantic requests2. 获取 API Key智谱AI Key前往https://open.bigmodel.cn/ 获取 API Key高德 Web 服务 Key前往https://lbs.amap.com/ → 控制台 → 应用管理 → 创建应用 → 添加 Key选择 Web 服务四、完整代码实现1. 导入库与基础配置importoperatorimportosimportrequestsfromlangchain_core.messagesimportAnyMessage,HumanMessage,AIMessagefromlanggraph.graphimportSTART,END,StateGraphfromlangchain_core.runnablesimportRunnableConfigfromlangchain_community.chat_modelsimportChatZhipuAIfromlangchain_core.promptsimportChatPromptTemplatefromtypingimportTypedDict,List,AnnotatedfrompydanticimportBaseModel,Field2. 配置 API 信息# 智谱AI配置os.environ[ZHIPUAI_API_KEY]你的智谱API KeymodelChatZhipuAI(temperature0.1,modelglm-4.5-air)# 高德天气API配置GAODE_KEY你的高德Web服务Key3. 定义状态与数据结构# 智能体状态classMessageState(TypedDict):title:strplans:List[str]# 待执行计划finished:List[str]# 已完成计划messages:Annotated[List[AnyMessage],operator.add]# 结构化输出计划列表classPlans(BaseModel):plans:List[str]Field(description天气查询步骤)4. 封装真实天气 APIdefget_real_weather(city_name:str)-str:调用高德天气API获取真实气温try:urlhttps://restapi.amap.com/v3/weather/weatherInfoparams{city:city_name,key:GAODE_KEY,extensions:base,output:json}resprequests.get(url,paramsparams,timeout10)dataresp.json()ifdata.get(status)1anddata.get(lives):livedata[lives][0]returnf{live[weather]}气温{live[temperature]}℃exceptExceptionase:print(f查询{city_name}失败{e})return天气获取失败5. 构建 LangGraph 节点节点1生成查询计划defmake_plan_node(state:MessageState):promptChatPromptTemplate.from_messages([(system,只输出4个计划查北京天气、查上海天气、查天津天气、查重庆天气),(user,{title})])chainprompt|model.with_structured_output(schemaPlans)respchain.invoke({title:state[title]})plansresp.plansifrespelse[查北京天气,查上海天气,查天津天气,查重庆天气]return{plans:plans}节点2执行单步天气查询defrun_plan_node(state:MessageState):plansstate[plans]ifnotplans:return{plans:[]}currentplans[0]citycurrent.replace(查,).replace(天气,).strip()weatherget_real_weather(city)return{plans:plans[1:],finished:state[finished][current],messages:[AIMessage(contentf{city}{weather})]}路由函数defshould_continue(state):returnENDiflen(state[plans])0elserun_plan_node6. 编译并运行智能体# 构建流程图builderStateGraph(MessageState)builder.add_node(make_plan_node,make_plan_node)builder.add_node(run_plan_node,run_plan_node)builder.add_edge(START,make_plan_node)builder.add_edge(make_plan_node,run_plan_node)builder.add_conditional_edges(run_plan_node,should_continue)graphbuilder.compile()# 执行if__name____main__:outgraph.invoke({title:查询四个直辖市天气,plans:[],finished:[],messages:[HumanMessage(content开始查询真实天气)],})print(\n 天气查询结果 )formsginout[messages]:print(msg.content)五、运行效果 天气查询结果 开始查询真实天气 北京晴气温 14℃ 上海多云气温 19℃ 天津晴气温 12℃ 重庆阴气温 17℃六、常见问题与排坑No module named ‘langgraph’pip install langgraphjwt.encode 报错pip uninstall jwt pip install pyjwt第三方天气接口不通优先使用高德、和风天气等官方正规 API不要依赖免费小接口智能体死循环/消息重复节点只返回需要更新的字段不要覆盖整个 state七、扩展方向支持任意城市天气查询增加多轮重试、异常处理机制接入工具调用ToolCall自动选择查询城市构建多智能体协作计划者 执行者 总结者部署为 API 服务提供前端调用八、总结本文通过LangGraph 智谱AI 高德天气API完成了一个标准的企业级 LLM 自动化智能体开发流程。你学到了LangGraph 状态管理与条件路由大模型结构化输出Pydantic真实第三方 API 接入智能体工作流设计思想这套架构可直接迁移到自动化报告、批量数据查询、RAG 流程、多步骤任务执行等场景。博客园公众号行走之飞鱼

相关新闻

好写作AI | 学生党的救星:好写作AI如何辅助完成高质量论文与报告

好写作AI | 学生党的救星:好写作AI如何辅助完成高质量论文与报告

如果你是一个大学生,请对号入座:每到期末,你就像一只被扔进滚筒洗衣机的袜子——晕头转向、身不由己。这边三门课程论文要交,那边两个实验报告要写,还有一份社会实践报告在等你。你打开电脑,建了五个文件夹…

2026/7/5 21:46:24 阅读更多 →
Chakra UI响应式数组深度解析

Chakra UI响应式数组深度解析

# 聊聊 Chakra UI 的响应式数组 最近在项目里用 Chakra UI 做样式,发现它的响应式数组写法挺有意思的。这东西乍一看就是个普通的数组,用起来却有种四两拨千斤的感觉。 它到底是什么 Chakra UI 的响应式数组,本质上是一种简写语法。在传统的响…

2026/7/6 17:42:12 阅读更多 →
好写作AI | 不会写开头?不会结尾?好写作AI给你N种满分示范

好写作AI | 不会写开头?不会结尾?好写作AI给你N种满分示范

你见过这样的场景吗?深夜的图书馆,一个男生对着电脑屏幕发呆,文档里只有一行标题。他已经发呆半小时了,因为他不知道第一句话怎么写。他试过“随着……”,觉得太老套;试过“近年来……”,觉得太…

2026/7/6 14:04:43 阅读更多 →

最新新闻

5个秘诀打造极致漫画阅读体验:EhViewer开源应用完全指南

5个秘诀打造极致漫画阅读体验:EhViewer开源应用完全指南

5个秘诀打造极致漫画阅读体验:EhViewer开源应用完全指南 EhViewer是一款专为Android平台设计的开源漫画浏览应用,采用Material Design 2设计语言,为漫画爱好者提供流畅、高效的E-Hentai网站访问体验。这款完全免费且无广告的应用&#xff0c…

2026/7/6 20:05:23 阅读更多 →
Qwt7.0-打造更美观高效的Qt开源绘图控件库

Qwt7.0-打造更美观高效的Qt开源绘图控件库

本文是 Qwt 7.0 系列介绍和教程,如果你正在寻找一个高性能、协议友好、同时支持 2D 和 3D 绘图的 Qt 数据可视化库,那么这篇文章就是为你准备的。 系列总述文章:Qwt 7.0 —— 基于 Qt 的高性能 2D/3D 绘图库 概述 | 高性能曲线绘制 | 常用图表…

2026/7/6 20:05:23 阅读更多 →
如何用MediaCrawler轻松搞定多平台数据采集:5分钟快速上手指南

如何用MediaCrawler轻松搞定多平台数据采集:5分钟快速上手指南

如何用MediaCrawler轻松搞定多平台数据采集:5分钟快速上手指南 【免费下载链接】MediaCrawler 项目地址: https://gitcode.com/GitHub_Trending/mediacr/MediaCrawler 在当今数字时代,跨平台数据采集已成为市场分析、内容监控和学术研究的必备技…

2026/7/6 20:03:22 阅读更多 →
go2rtc:构建零延迟摄像头监控系统的终极指南

go2rtc:构建零延迟摄像头监控系统的终极指南

go2rtc:构建零延迟摄像头监控系统的终极指南 【免费下载链接】go2rtc Ultimate camera streaming application 项目地址: https://gitcode.com/GitHub_Trending/go/go2rtc go2rtc是一款专注于低延迟摄像头流媒体的终极解决方案,支持RTSP、WebRTC、…

2026/7/6 20:03:22 阅读更多 →
SRC漏洞挖掘——Web靶场实战之HTTP

SRC漏洞挖掘——Web靶场实战之HTTP

目录POST方法实战待续、更新中......POST方法 实战 referer参数 作用是告诉服务器,当前请求是从哪个页面跳转过来的 例子 你在 https://example.com/page-a 点击了一个指向 https://example.com/page-b 的链接 访问 page-b 的 HTTP 请求头里就会包含:Re…

2026/7/6 20:03:22 阅读更多 →
mirrord:解决Kubernetes本地开发与云环境隔离问题的架构方案

mirrord:解决Kubernetes本地开发与云环境隔离问题的架构方案

mirrord:解决Kubernetes本地开发与云环境隔离问题的架构方案 【免费下载链接】mirrord Run any process, on your machine or in an AI agents environment, as if it were a pod in your Kubernetes cluster: real env vars, DNS, network, traffic. 项目地址: h…

2026/7/6 20:01:21 阅读更多 →

日新闻

H2 与 MySQL 单元测试兼容性:5 个关键 SQL 语句差异与规避方案

H2 与 MySQL 单元测试兼容性:5 个关键 SQL 语句差异与规避方案

H2与MySQL单元测试兼容性:5个关键SQL语句差异与规避方案1. 单元测试中的数据库兼容性挑战在Java开发领域,单元测试是保证代码质量的重要环节。当应用涉及数据库操作时,测试环境的搭建往往成为开发者的痛点。H2数据库因其轻量级、内存模式和快…

2026/7/6 0:01:17 阅读更多 →
Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘

Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘

Windows任务栏终极清理指南:用RBTray一键隐藏窗口到系统托盘 【免费下载链接】rbtray A fork of RBTray from http://sourceforge.net/p/rbtray/code/. 项目地址: https://gitcode.com/gh_mirrors/rb/rbtray 你是否厌倦了Windows任务栏上密密麻麻的图标&…

2026/7/6 0:01:17 阅读更多 →
Visual C++ 运行时库一键安装终极指南:告别DLL缺失烦恼

Visual C++ 运行时库一键安装终极指南:告别DLL缺失烦恼

Visual C 运行时库一键安装终极指南:告别DLL缺失烦恼 【免费下载链接】vcredist AIO Repack for latest Microsoft Visual C Redistributable Runtimes 项目地址: https://gitcode.com/gh_mirrors/vc/vcredist 你是否曾经遇到过这样的情况:下载了…

2026/7/6 0:05:19 阅读更多 →

周新闻

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容

B站视频下载神器BiliTools:5分钟学会轻松保存任何B站内容 【免费下载链接】BiliTools A cross-platform bilibili toolbox. 跨平台哔哩哔哩工具箱,支持下载视频、番剧等等各类资源 项目地址: https://gitcode.com/GitHub_Trending/bilit/BiliTools …

2026/7/6 8:11:50 阅读更多 →
威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型全解析:从新手入门到实战应用,助你构建安全产品!

威胁模型的陌生现状在忙碌疲惫的一天里,参与了关于混合后量子密码学的讨论,应付端点攻击找茬的人,还参与留言板讨论后,发现“威胁模型”对多数人仍是陌生概念,且多被当作时髦用语。有趣的相关画作有一幅由 Embyr 创作的…

2026/7/6 8:11:52 阅读更多 →
渗透测试入门指南:从零基础到实战环境搭建

渗透测试入门指南:从零基础到实战环境搭建

1. 从“看热闹”到“入门”:我理解的渗透测试到底是什么?每次看到新闻里说某个大公司的数据被“黑”了,或者某个网站被攻击导致服务瘫痪,你是不是和我一样,心里会冒出两个念头:一是“这黑客真厉害”&#x…

2026/7/6 6:52:56 阅读更多 →

月新闻