三亩地 三亩地SAN MU DI · CODE DIARY
ARTICLE DETAIL

日记详情

真实记录编程学习的某一天,欢迎挑你感兴趣的翻一翻。

【agent篇】Langchain入门

【agent篇】Langchain入门

一.介绍

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 的核心区别

概念LangChainChainAgent
角色舞台(提供场地、灯光、道具)剧本(固定的台词和走位)演员(根据剧情即兴发挥)
决策权无(是环境)无(按剧本走)(自主决定)
灵活性高(提供各种组件)低(步骤固定)极高(动态规划)
复杂度框架复杂度任务复杂度智能体复杂度
关键区别是什么(框架)怎么做(固定流程)谁来做+怎么做(自主流程)

二.开发准备

2.1 Langchain

uv add langchain

不同模型的安装依赖

# 集成 DeepSeek uv add langchain-deepseek 集成 OpenAI uv add langchain-openai 集成 Anthropic uv add langchain-anthropic
包名作用
langchainLangChain 核心框架,提供 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 langchainuv add langchainuv add 会自动更新 pyproject.toml
批量安装pip install -r requirements.txtuv pip install -r requirements.txtuv 兼容 pip 命令
创建虚拟环境python -m venv .venvuv venvuv 更简洁快速
列出依赖pip listuv pip listuv 通过 uv pip 子命令兼容
生成锁文件pip freeze > requirements.txtuv lockuv 生成 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)

结果:

← 返回列表