个人主页:夏天拐跑了西瓜
专栏传送门:《Redis入门到精通》、《Spring 生态全家桶体系化实战》、《Python AI Agent开发实战》
学习方向:Java 后端|AI‑Agent 大模型应用开发爱好者
⭐人生格言:路虽远,行则将至

【Python AI Agent实战01】LangChain入门:核心概念+天气查询Agent完整实现
🔥 本文是《Python AI Agent开发实战》系列教程的第一篇,带你全面了解LangChain框架的前世今生、核心能力和适用场景,并通过一个完整的Agent实战案例快速上手。
一、LangChain是什么?
LangChain是一个用于开发由大语言模型(LLM)驱动的应用程序的开源框架。
它并非仅是对模型API的简单封装,而是提供了一套完整的智能体(Agent)架构和丰富的工具集成,使开发者无需从零搭建复杂架构,就能快速构建基于LLM的高级AI应用。
1.1 诞生背景
LangChain诞生于2022年10月 ,由哈佛大学的 Harrison Chase(哈里森·蔡斯)创建。
其名称来源于 "Language"(语言模型)+ "Chain"(链式连接) 的组合,体现了核心设计理念------将大语言模型与外部计算资源和数据源以链式方式连接,构建功能更强大的AI应用。
1.2 为什么需要LangChain?
单一的大语言模型虽然能力强大,但在实际应用中存在明显局限:
| 局限性 | 说明 |
|---|---|
| 知识时效性 | LLM的知识受限于训练数据,无法获取训练时点之后的信息 |
| 无法交互外部系统 | 模型无法直接与数据库、API等外部系统交互 |
| 无状态 | 模型本身不具备状态保持能力,难以进行连贯的多轮对话 |
因此,要构建真正实用的AI应用,必须将大语言模型与外部工具、数据源和记忆机制有机结合------这正是LangChain框架诞生的原因。
1.3 发展历程
- 2022年10月:Harrison Chase 创建 LangChain 开源项目
- 2024年:推出 LangGraph 作为底层智能体编排框架,原有链和智能体标记为弃用
- 2025年10月20日 :正式发布 LangChain v1.0.0 与 LangGraph v1.0.0,标志着框架成熟和标准化
📚 官方文档地址
二、LangChain核心特点
2.1 统一的模型接口
各大模型提供商(OpenAI、Anthropic、DeepSeek、Google等)都有各自独特的API接口和参数规范。
LangChain通过统一的API抽象层解决了这个问题:
- 开发者可以无缝切换不同模型而无需重写大量代码
- 降低技术锁定风险
- 轻松利用最新最先进的模型,加速实验和创新
2.2 模块化架构
LangChain采用高度模块化架构,核心组件包括:

开发者可以像搭积木一样组合各种功能,快速构建AI应用。
组件的可组合性体现在 LCEL(LangChain表达式语言) 中,允许通过管道操作符 | 将多个组件连接成复杂工作流:
python
# LCEL 示例:检索增强生成流程
chain = retriever | prompt_template | llm
这种方式代码简洁,且天然支持流式输出、异步调用和并行执行。
2.3 智能体与工具调用
智能体(Agent)是LangChain最强大的特性之一,它将LLM从被动的文本生成器转变为能够主动决策和执行任务的智能系统。
核心机制:

智能体支持集成丰富的外部工具:搜索引擎、数据库、API接口等。工具是标准的函数接口,包含名称、描述和执行函数三个基本要素。
2.4 记忆管理机制
LangChain的记忆系统解决了纯LLM应用的无状态性问题:
- 短期记忆:维护当前会话上下文
- 长期记忆:记住用户偏好和历史交互
- 多种存储后端:内存、文件、数据库
开发者可以根据应用需求灵活选择记忆类型和检索策略。
三、LangChain使用场景
3.1 检索增强生成(RAG)
LangChain最经典的应用场景,解决了大模型知识滞后和幻觉问题。
原理: 将外部知识源(文档、数据库等)向量化存储,在生成答案前先检索相关信息,使模型基于最新、最相关的数据生成回答。
3.2 Agent智能体构建
将LLM作为推理引擎,自主规划并执行复杂任务。
典型应用:
- 🧳 智能旅行规划:依次调用航班查询、酒店预订、景点推荐等工具
- 📊 市场调研:自动搜索行业报告、分析数据并生成简报
- 🗄️ 数据分析:连接数据库,根据自然语言生成SQL并执行分析
3.3 对话系统与聊天机器人
通过记忆管理系统构建上下文感知的对话应用:
- 电商客服:连接订单数据库,提供个性化推荐和售后支持
- 教育助手:结合教材内容,解答学生学习问题
3.4 数据连接与处理
使LLM能够与各种数据源交互:
- 从PDF合同中自动提取关键信息(各方、金额、条款)
- 将自然语言转换为SQL查询数据库
- 基于Excel数据生成趋势分析和报告
3.5 内容生成与自动化写作
通过提示模板和输出解析器确保生成内容符合特定格式:
- 周报生成:从业务系统提取数据,按固定格式生成报告
- 法律文书:基于模板和用户输入,产出符合规范的法律文件
3.6 多模态应用开发
处理图像、音频、视频等非文本数据:
- 图像分析:上传图片 → 图像识别API → LLM基于描述回答问题
- 语音交互:语音转文本 → LLM处理 → 文本转语音输出
四、快速上手实战
4.1 Python环境准备
LangChain 1.2版本要求 Python 3.10+。这里使用 Anaconda 来创建和管理Python环境。
bash
# 创建名为 langchain_v1.2 的环境,指定Python版本3.13
conda create --name langchain_v1.2 python=3.13.11
# 查看已安装的Python环境
conda env list
# 切换到目标环境
conda activate langchain_v1.2
# 验证Python版本
python -V
# 输出: Python 3.13.11
# 退出当前环境
conda deactivate
# 删除环境(如需要)
conda remove --name langchain_v1.2 --all
4.2 创建项目及配置
Step 1:安装必要依赖
bash
# 确保已切换到目标环境
conda activate langchain_v1.2
# 安装核心依赖
pip install langchain==1.2.0 langchain-deepseek==1.0.1 dotenv==0.9.9 -i https://pypi.tuna.tsinghua.edu.cn/simple
💡 依赖说明:
langchain:LangChain核心框架langchain-deepseek:DeepSeek大模型集成包dotenv:从项目根目录.env文件加载环境变量
Step 2:创建 .env 配置文件
在项目根目录下创建 .env 文件,配置大模型的API密钥:
env
DEEPSEEK_API_KEY=sk-xxxx
DEEPSEEK_BASE_URL=https://api.deepseek.com
Step 3:创建 env_utils.py(环境变量加载工具)
python
import os
from dotenv import load_dotenv
# override=True 确保.env文件中的值优先
load_dotenv(override=True)
# 从环境变量读取配置
DEEPSEEK_API_KEY = os.getenv("DEEPSEEK_API_KEY")
DEEPSEEK_BASE_URL = os.getenv("DEEPSEEK_BASE_URL")
Step 4:创建 my_llm.py(模型初始化)
python
from langchain_deepseek import ChatDeepSeek
from env_utils import DEEPSEEK_API_KEY, DEEPSEEK_BASE_URL
# 创建DeepSeek LLM实例
deepseek_llm = ChatDeepSeek(
api_key=DEEPSEEK_API_KEY,
api_base=DEEPSEEK_BASE_URL,
model="deepseek-chat",
)
4.3 实战案例:Agent查询天气
下面通过一个完整的案例,使用LangChain创建一个能查询天气的Agent。
python
from langchain.agents import create_agent
from my_llm import deepseek_llm
def get_weather(city: str) -> str:
"""获取给定城市的天气。"""
# 模拟天气查询(实际项目中可接入真实天气API)
return f"{city} 天气晴朗!"
# 创建Agent
agent = create_agent(
model=deepseek_llm,
tools=[get_weather],
system_prompt="你是一个助手,你可以查询城市的天气。",
)
# 调用Agent
resp = agent.invoke(
{"messages": [{"role": "user", "content": "查询北京的天气"}]}
)
print(resp)
运行结果解读
Agent执行完成后,返回的 messages 列表记录了完整的交互过程:
python
# 1️⃣ 用户消息 - 用户的原始查询
HumanMessage(content='查询北京的天气')
# 2️⃣ AI决策 - LLM分析后决定调用天气工具
AIMessage(
content='我来帮您查询北京的天气。',
tool_calls=[{'name': 'get_weather', 'args': {'city': '北京'}}]
)
# 3️⃣ 工具执行结果 - get_weather函数的返回值
ToolMessage(content='北京 天气晴朗!', name='get_weather')
# 4️⃣ AI最终回复 - 基于工具结果生成自然语言回答
AIMessage(content='根据查询结果,北京今天的天气是晴朗的!')
🎯 关键观察: Agent自动完成了"理解意图 → 选择工具 → 执行调用 → 生成回答"的完整流程,开发者只需定义工具和提示词即可。
五、项目结构总览
完成以上步骤后,项目结构如下:
LangchainProject/
├── .env # 环境变量配置(API密钥等)
├── env_utils.py # 环境变量加载工具
├── my_llm.py # LLM模型初始化
└── quick_start.py # Agent实战案例
六、总结
本文介绍了LangChain框架的核心知识:
| 模块 | 要点 |
|---|---|
| 框架定位 | 用于开发LLM驱动应用的开源框架 |
| 核心理念 | Language + Chain,链式连接LLM与外部资源 |
| 四大特点 | 统一模型接口、模块化架构、智能体工具调用、记忆管理 |
| 适用场景 | RAG、Agent、对话系统、数据处理、内容生成、多模态 |
| 快速上手 | 环境配置 → 依赖安装 → 模型初始化 → Agent创建 |
下一篇预告: 我们将深入LangChain的模型调用机制,学习如何使用统一接口对接多种大模型。
参考资料
📝 作者注: 本系列基于 LangChain v1.2 + Python 3.13 编写,所有代码均已验证可运行。如果对你有帮助,欢迎点赞收藏关注!有问题评论区交流~