一.介绍

1.1 定义

LangChain:开源 LLM 应用开发框架(Python/JS 双版本),用来串联大模型、私有文档、向量库、工具、API,快速搭建 RAG、对话机器人、Agent 智能体。

LangChain官网https://www.langchain.comhttps://www.langchain.comhttps://www.langchain.comhttps://www.langchain.com

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)

结果:

Logo

DAMO开发者矩阵,由阿里巴巴达摩院和中国互联网协会联合发起,致力于探讨最前沿的技术趋势与应用成果,搭建高质量的交流与分享平台,推动技术创新与产业应用链接,围绕“人工智能与新型计算”构建开放共享的开发者生态。

更多推荐