LangChain 是一个开源框架(Python / JS),用来快速开发「基于大语言模型 LLM」的 AI 应用,使用 LangChain( create_agent)可构建高度可定制的运行框架,能够轻松适配业务场景与数据。
uv初始化项目到 LLM 调用 搭建了基本的环境和了解了 uv 的基本使用,本片文章主要介绍的是 langchain 的能力以及通过代码来调用 langchain 的能力
1. LangChain 的核心能力
-
统一模型接口
服务商是托管 AI 模型并通过 API 对外提供模型服务的公司或平台(例如 OpenAI、Anthropic、Google)。许多服务商都提供专属的
langchain-<provider>(如 deepseek 就是 langchain-deepseek, 更多提供商可点击查看),该软件包实现了 LangChain 的一项或多项标准接口 ------ 对话模型、嵌入模型、向量数据库等。这让你可以使用统一的 API,无需关心底层服务商。你只需安装对应软件包,选定模型名称,即可在不修改代码的情况下切换服务商 -
外部数据连接与检索增强(RAG) LangChain 提供了强大的 RAG 支持:
- 文档加载器(Document Loaders):读取 PDF、Word、网页、数据库等各种格式的数据。
- 文本分割器(Text Splitters):把大文档切成适合模型处理的小片段。
- 向量数据库集成(Vector Stores):将文本转化为向量并存储,用于高效检索。当用户提问时,先从外部数据中找到相关内容,再喂给大模型,让大模型基于真实资料回答。
-
工作流编排 允许将多个组件串联起来。例如:"第一步从数据库查资料 -> 第二步让大模型总结 -> 第三步翻译成英文",像流水线一样自动化执行。
-
记忆(Memory) : 大模型本身是"无状态"的(每次对话都是独立的)。LangChain 提供了记忆模块,能够帮程序记住之前的对话历史,实现像真人一样的多轮连续对话。
2. 开发一个基本的 agent
主要基本步骤:
- 安装依赖
- 定义工具
- 创建 agent
- agent 发起调用
2.1 安装 langchain 和相关 provider
参考 docs.langchain.com/oss/python/... 顺便一提, python 的版本最好在 3.11 ~ 3.14 之间,原因有:
- Python 3.11之后异步性能有显著提升,能够满足消息网关以单进程事件循环同时管理多个平台连接的需求; - 完善的类型注解系统使得Agent引擎中数十个配置参数能以清晰的类型签名表达语义;
- Python在AI生态中的主导地位,确保了与大语言模型SDK、向量数据库等周边工具的集成。
csharp
# 固定使用 Python 3.13
uv python pin 3.13
uv add langchain
# 安装 langchain 的 provider, 比如你要使用 langchain 来调用 deepseek 那么,你就安装
uv add langchain-deepseek
2.2 使用 notebook 创建一个 基本的agent
新建一个 notebook 名字叫做 lc-create-basic-agent.ipynb,内容如下:
注意: 如果不知道某个函数的参数是啥,可以直接右键选择 "跳转到定义的"查看参数的类型
Agent 的标准执行流程
当用户向 Agent 发起一个复杂任务时,底层通常会经历以下循环:
- 接收输入与意图解析 (Input & Parsing)
- 过程:Agent 接收到用户的自然语言请求(例如:"查一下今天杭州的天气,并把温度乘以 1.8 加上 32 转换成华氏度")。
- 动作:大模型对用户的目标进行拆解,理解用户的真实意图和约束条件。
- 思考/推理 (Thought / Planning)
- 过程:模型在内部(通过 Prompt 引导或思维链 Chain of Thought)进行规划。
- 动作:模型判断:"我直接回答不了这个问题,我需要外部工具。第一步我得先查杭州的天气;第二步我得做数学计算。"
- 动作决策 (Action Selection)
- 过程:模型从可用的工具箱中选择最合适的工具,并生成调用参数。
- 动作:模型输出类似结构化的指令:"调用 get_current_weather(location='杭州')"。
- 工具执行 (Execution)
- 过程:框架(如 LangChain 的 AgentExecutor)拦截到模型的工具调用指令,在真实世界或系统中执行该代码/API。
- 动作:程序发起网络请求,获取到天气结果:"杭州今天晴,25°C"。
- 观察与反馈 (Observation)
- 过程:将工具执行返回的结果重新喂给大模型作为上下文(Context)。
- 动作:模型看到了天气结果 25°C,进入下一轮循环:"第一步完成了,拿到了 25°C。接下来我要执行第二步:计算 25×1.8+32。"
- 循环与最终输出 (Loop or Final Answer)
- 过程:Agent 重复步骤 2~5,直到它认为任务已经彻底完成。
- 动作:当不需要再调用工具时,模型输出最终的自然语言总结给用户:"杭州今天晴,25°C,折合华氏度为 77°F。"