【agent篇】Langchain入门
一.介绍
1.1 定义
LangChain:开源 LLM 应用开发框架(Python/JS 双版本),用来串联大模型、私有文档、向量库、工具、API,快速搭建 RAG、对话机器人、Agent 智能体。
1.2 Agent
1.2.1 定义
Agent = 会思考、能自主规划、主动调用工具完成复杂任务的大模型。
1.2.2 四要素
- 感知(观察) 拿到用户目标、历史对话、工具返回结果。
- 思考(推理 / Thought) 我现在拥有哪些信息?信息够不够回答?缺什么?
- 行动(Action) 调用工具:搜索、读取文件、执行代码、查询数据库、调用 API。
- 记忆(Memory) 记住之前做过什么、工具返回了什么,避免重复操作。
1.2.3 agent工作流程图

1.3 LangChain、Chain、Agent 的核心区别
| 概念 | LangChain | Chain | Agent |
|---|---|---|---|
| 角色 | 舞台(提供场地、灯光、道具) | 剧本(固定的台词和走位) | 演员(根据剧情即兴发挥) |
| 决策权 | 无(是环境) | 无(按剧本走) | 有(自主决定) |
| 灵活性 | 高(提供各种组件) | 低(步骤固定) | 极高(动态规划) |
| 复杂度 | 框架复杂度 | 任务复杂度 | 智能体复杂度 |
| 关键区别 | 是什么(框架) | 怎么做(固定流程) | 谁来做+怎么做(自主流程) |
二.开发准备
2.1 Langchain
uv add langchain
不同模型的安装依赖
# 集成 DeepSeek
uv add langchain-deepseek
集成 OpenAI
uv add langchain-openai
集成 Anthropic
uv add langchain-anthropic
| 包名 | 作用 |
|---|---|
langchain |
LangChain 核心框架,提供 Chain、Agent、Memory 等功能 |
langchain-openai |
接入 OpenAI 接口 |
python-dotenv |
读取 .env 文件里的 API Key,不用把密钥写死在代码里 |
jupyterlab |
网页版笔记本,可以边写边跑代码,适合学习和实验 |
2.2 uv
uv 是一个用 Rust 编写的极速 Python 包管理器和解析器,由 Astral 团队开发(也是 Ruff 的开发者)。它旨在替代 pip、pip-tools、pipenv、poetry、virtualenv 等工具,提供更快的依赖安装和虚拟环境管理。
为什么选择 uv?
极速安装:比 pip 快 10-100 倍,比 poetry 快 5-50 倍
统一工具链:一个工具替代多个 Python 包管理工具
兼容性好:完全兼容 pip 和 pip-tools 的工作流
跨平台:支持 Windows、macOS、Linux
现代化设计:内置虚拟环境管理、依赖锁定、项目脚手架等功能
2.2.1 安装方法
方法一:使用 pip 安装(推荐)
# 使用 pip 安装 uv
pip install uv
验证安装
uv --version
方法二:使用安装脚本(Linux/macOS)
# 使用 curl 安装
curl -LsSf https://astral.sh/uv/install.sh | sh
或者使用 wget
wget -qO- https://astral.sh/uv/install.sh | sh
安装后需要重启终端或运行
source ~/.bashrc # 或 source ~/.zshrc
方法三:Windows 安装
# 使用 pip(推荐)
pip install uv
或者使用 PowerShell
powershell -c "irm https://astral.sh/uv/install.ps1 | iex"
Windows 用安装脚本装完后,当前终端的 PATH 不会立即生效,可以新开一个终端
2.2.2 uv 与 pip 命令对比
| 功能 | pip 命令 | uv 命令 | 说明 |
|---|---|---|---|
| 安装包 | pip install langchain |
uv add langchain |
uv add 会自动更新 pyproject.toml |
| 批量安装 | pip install -r requirements.txt |
uv pip install -r requirements.txt |
uv 兼容 pip 命令 |
| 创建虚拟环境 | python -m venv .venv |
uv venv |
uv 更简洁快速 |
| 列出依赖 | pip list |
uv pip list |
uv 通过 uv pip 子命令兼容 |
| 生成锁文件 | pip freeze > requirements.txt |
uv lock |
uv 生成 uv.lock 文件 |
三.项目创建
3.1 创建项目目录
首先,目录下右键创建文件并命名:
![]()
PyCharm 打开项目的正确方式
PyCharm 新建项目向导不支持 uv,正确流程是:
先在终端用
uv init创建项目再用 PyCharm → File → Open → 打开项目文件夹
配置解释器:选
.venv\Scripts\python.exe
3.2 初始化 uv 项目
uv init --python 3.12
3.3 安装相应的包
uv add langchain langchain-openai python-dotenv jupyterlab
3.4 配置 API Key
3.4.1 创建.env文件
右键创建时容易建成文件夹。确认
.env是一个文件,不是文件夹。
![]()
3.4.2 输入相应信息
OPENAI_API_KEY=sk-你的key
OPENAI_BASE_URL=https://api.openai.com/v1
DEEPSEEK_API_KEY=sk-你的deepseek-key
ANTHROPIC_API_KEY=sk-你的claude-key
.gitignore里有这两行,防止密钥泄露:.env
.ipynb_checkpoints/
3.5 启动 JupyterLab
uv run jupyter lab

3.5 代码实例
# 1.加载环境变量(自动找项目根目录的 .env)
from pathlib import Path
from dotenv import load_dotenv
from datetime import datetime
import os
load_dotenv(Path(__file__).parent.parent / ".env")
# 检查 key 是否加载成功
if not os.getenv("OPENAI_API_KEY"):
raise SystemExit("❌ 未找到 OPENAI_API_KEY,请确认项目根目录下有 .env 文件")
# 2.导入依赖
from langchain_core.tools import tool
from langchain.agents import create_agent
from langchain_openai import ChatOpenAI
# 3.定义工具
@tool
def get_current_time() -> str:
"""获取当前系统时间"""
return datetime.now().strftime("%Y-%m-%d %H:%M:%S")
# 4.创建模型(用 DeepSeek 走 OpenAI 兼容接口,key 和 base_url 从 .env 读取)
llm = ChatOpenAI(model="deepseek-v4-flash")
# 5.定义Agent(工具必须在创建 Agent 之前定义好)
agent = create_agent(
llm, # 传入 LLM 对象
tools=[get_current_time], # 工具集
)
# 6.调用模型
print("🚀 正在调用大模型...")
response = agent.invoke({
"messages": [
{"role": "user", "content": "今天几月几日"}
]
})
# 7.打印结果(只输出最终回复,不输出内部调试信息)
print(response["messages"][-1].content)
结果:
![]()
DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。
更多推荐

所有评论(0)