前言在大模型应用开发中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 流程、多步骤任务执行等场景。博客园公众号行走之飞鱼