资讯动态

LangChain 最新版 create_agent 实战:智能天气查询助手(完整可运行 + 多工具联动)

发布时间:2026/9/26 2:26:31 来源:尧图企业网站定制
前言随着大模型应用的快速普及单纯的对话交互已经无法满足实际业务需求。具备工具调用能力的智能体Agent成为大模型落地的核心方向。LangChain 作为大模型应用开发的主流框架官方推出的create_agent已全面替代老旧的initialize_agent成为新一代智能体构建的标准 API。它具备参数简洁、稳定性高、兼容国产大模型、支持多工具联动等优势。但目前网上绝大多数教程存在版本不兼容、参数错误、工具调用失败、国产模型无法运行、400/401/500 报错等问题新手很难直接跑通。本文基于LangChain 最新稳定版从零构建一个具备天气查询、日期查询、节日查询三大能力的智能助手所有代码可直接复制运行逐行注释、逻辑清晰、覆盖完整实战场景并提供高频报错避坑指南 多模型切换方案 生产级优化全文超 5000 字新手也能轻松掌握。一、核心功能介绍本项目最终实现一个全能智能助手支持实时天气查询调用公共天气 API当前日期查询节日日期查询多工具自动联动例如“今天几号顺便查北京天气”交互式对话可一直聊天国产大模型通义千问驱动国内稳定、无风控二、环境准备从根源避免报错2.1 安装依赖固定版本不踩坑bash运行pip install langchain0.2.10 langchain-openai0.1.21 langchain-core0.2.29 python-dotenv requests2.2 获取 API Key前往阿里云百炼平台开通通义千问获取DASHSCOPE_API_KEY。2.3 创建 .env 文件推荐envDASHSCOPE_API_KEY你自己的key三、最终完整版可运行代码首选置顶python运行# -*- coding: utf-8 -*- LangChain create_agent 智能天气助手完整版可直接运行 功能天气查询 日期查询 节日查询 多工具自动调用 模型通义千问 qwen-turbo 作者CSDN 技术博客 import os import requests from datetime import datetime from dotenv import load_dotenv # 加载环境变量 from langchain_openai import ChatOpenAI from langchain.agents import create_agent from langchain.tools import tool # 加载环境变量必须 load_dotenv() # 1. 定义工具函数 tool def query_weather(city: str) - str: 查询指定城市的实时天气信息。城市名称例如北京、上海、深圳 try: # 免费天气APIwttr.in支持中文 url fhttps://wttr.in/{city}?format%C%t%wlangzh response requests.get(url, timeout5) if response.status_code 200: weather_text response.text.strip() parts weather_text.split() if len(parts) 2: condition parts[0] temp parts[1] wind parts[2] if len(parts) 2 else 无风 return f{city}的天气{condition}温度{temp}风力{wind} return f{city}天气{weather_text} return f抱歉暂时无法获取{city}的天气信息 except Exception as e: return f查询天气失败{str(e)} tool def get_current_date() - str: 获取今天的日期和星期几 now datetime.now() weekdays [星期一, 星期二, 星期三, 星期四, 星期五, 星期六, 星期日] return f今天是{now.year}年{now.month}月{now.day}日{weekdays[now.weekday()]} tool def get_holiday_date(holiday_name: str) - str: 查询节日的日期。支持元旦、春节、清明节、劳动节、端午节、中秋节、国庆节 holidays { 元旦: 1月1日, 春节: 农历正月初一, 清明节: 4月4日或5日, 劳动节: 5月1日, 端午节: 农历五月初五, 中秋节: 农历八月十五, 国庆节: 10月1日 } if holiday_name in holidays: return f{holiday_name}是{holidays[holiday_name]} else: return f暂不支持查询{holiday_name} # 2. 初始化大模型 llm ChatOpenAI( api_keyos.getenv(DASHSCOPE_API_KEY), base_urlhttps://dashscope.aliyuncs.com/compatible-mode/v1, modelqwen-turbo, temperature0.7 ) # 3. 系统提示词 system_instruction 你是一个智能助手具备以下工具 可用工具 1. query_weather - 查询城市天气参数城市名 2. get_current_date - 获取今天的日期 3. get_holiday_date - 查询节日日期参数节日名称 使用规则 - 用户问天气 → 调用 query_weather - 用户问今天日期 → 调用 get_current_date - 用户问节日 → 调用 get_holiday_date - 可同时使用多个工具 - 回答友好、简洁、准确 # 4. 创建 Agent tools [query_weather, get_current_date, get_holiday_date] agent create_agent( modelllm, toolstools, system_promptsystem_instruction ) # 5. 运行测试 if __name__ __main__: print( * 60) print( 智能助手已启动支持天气/日期/节日查询) print( * 60) # 自动测试用例 test_questions [ 今天几号, 元旦节是几号, 北京今天天气怎么样, 今天是什么日子顺便查上海天气, 国庆节是哪天, ] for question in test_questions: print(f\n❓ 用户{question}) try: result agent.invoke({ messages: [{role: user, content: question}] }) print(f 助手{result[messages][-1].content}) print(- * 60) except Exception as e: print(f❌ 出错{e}) # 交互式对话 print(\n 进入交互模式输入 退出 结束) while True: user_input input(\n 你) if user_input.lower() in [退出, quit, exit]: print( 再见) break try: result agent.invoke({ messages: [{role: user, content: user_input}] }) print(f 助手{result[messages][-1].content}) except Exception as e: print(f❌ 出错{e})四、运行效果展示plaintext 智能助手已启动支持天气/日期/节日查询 ❓ 用户今天几号 助手今天是2025年5月9日星期五 ❓ 用户元旦节是几号 助手元旦节是1月1日 ❓ 用户北京今天天气怎么样 助手北京的天气晴温度20°C风力↓3km/h支持连续对话、多工具自动调用、自然语言理解效果非常流畅。五、create_agent 核心知识点详解5.1 正确传参唯一不报错写法python运行agent create_agent( modelllm, # 模型 toolstools, # 工具列表 system_promptsystem_instruction # 系统提示 )5.2 工具必须使用 tool 装饰器只有被tool包装的函数才能被 Agent 自动识别。5.3 调用格式必须是 messages 格式python运行agent.invoke({ messages: [{role: user, content: question}] })六、高频报错避坑指南全网最全错误 1tools 传 None 报错解决无工具必须传tools[]错误 2参数用 llm 而不是 model解决新版必须用modelllm错误 3提示词格式错误导致 400解决直接传字符串system_prompt不要用 ChatPromptTemplate错误 4API Key 硬编码导致 401解决使用os.getenv()读取环境变量错误 5返回结果解析报错解决统一使用result[messages][-1].content错误 6天气接口访问失败解决检查网络、增加超时时间、切换 API七、多模型切换通义 / 智谱 / DeepSeek/GPT只需修改以下三行python运行llm ChatOpenAI( api_keyxxx, base_urlxxx, modelxxx )所有工具、Agent 代码完全不用改。八、扩展升级方向接入高德天气 / 和风天气更精准添加定时提醒工具添加搜索工具添加文件读写工具部署成 Web 服务FastAPI流式输出提升体验九、总结本文完整实现了LangChain 最新版create_agent 多工具自动调用 天气查询实战代码可直接运行、注释清晰、结构标准是学习大模型智能体的最佳入门实战项目。掌握本文内容你就能✅ 理解智能体 Agent 工作原理✅ 熟练使用 create_agent✅ 自定义工具✅ 实现多工具自动调用✅ 避开 99% 的报错✅ 快速开发企业级大模型应用十、代码关注我提供完整代码。

读完文章,也想定制专属网站?

尧图设计师 24 小时内与您沟通定制方案

免费获取报价 →
↑