从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 阅读更多 →

最新新闻

IDM激活脚本终极指南:永久免费使用IDM的简单方法

IDM激活脚本终极指南:永久免费使用IDM的简单方法

IDM激活脚本终极指南:永久免费使用IDM的简单方法 【免费下载链接】IDM-Activation-Script IDM Activation & Trail Reset Script 项目地址: https://gitcode.com/gh_mirrors/id/IDM-Activation-Script 还在为Internet Download Manager(IDM&a…

2026/7/6 20:45:50 阅读更多 →
MZmine 3:免费开源质谱数据分析平台,让复杂科研数据变得简单易懂

MZmine 3:免费开源质谱数据分析平台,让复杂科研数据变得简单易懂

MZmine 3:免费开源质谱数据分析平台,让复杂科研数据变得简单易懂 【免费下载链接】mzmine3 mzmine source code repository 项目地址: https://gitcode.com/gh_mirrors/mz/mzmine3 你是否曾面对海量的质谱数据感到无从下手?昂贵的商业…

2026/7/6 20:45:50 阅读更多 →
Git+GitHub新手实操手册:5步闭环搞定日常开发

Git+GitHub新手实操手册:5步闭环搞定日常开发

1. 这不是“又一个Git教程”——它是一份能让你三天后还在用的实操手册 你点开这个标题,大概率正卡在某个具体场景里:刚被同事甩来一个仓库链接,却连怎么把代码下载到自己电脑上都搞不清;或者写了半天功能,想提交却发现…

2026/7/6 20:43:49 阅读更多 →
CodeRed CMS未来路线图:即将推出的功能与改进指南 [特殊字符]

CodeRed CMS未来路线图:即将推出的功能与改进指南 [特殊字符]

CodeRed CMS未来路线图:即将推出的功能与改进指南 🚀 【免费下载链接】coderedcms Wagtail CodeRed Extensions enabling rapid development of marketing-focused websites. 项目地址: https://gitcode.com/gh_mirrors/co/coderedcms CodeRed C…

2026/7/6 20:41:48 阅读更多 →
OpenCV 4.9 与 Ultralytics YOLO 集成:Python 实现 5 行代码实时视频目标检测

OpenCV 4.9 与 Ultralytics YOLO 集成:Python 实现 5 行代码实时视频目标检测

OpenCV 4.9 与 Ultralytics YOLO 集成实战:5行代码构建实时视频分析系统1. 环境准备与工具链配置在开始构建实时视频分析系统之前,我们需要确保开发环境配置正确。以下是推荐的开发环境配置:Python环境要求:Python 3.8或更高版本&…

2026/7/6 20:41:48 阅读更多 →
如何利用deepTools与Python集成实现测序数据的自动化批量处理

如何利用deepTools与Python集成实现测序数据的自动化批量处理

如何利用deepTools与Python集成实现测序数据的自动化批量处理 【免费下载链接】deepTools Tools to process and analyze deep sequencing data. 项目地址: https://gitcode.com/gh_mirrors/de/deepTools 在高通量测序数据分析领域,高效处理海量数据是研究人…

2026/7/6 20:41:48 阅读更多 →

日新闻

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 阅读更多 →

月新闻