从零开始学LangChain(一):什么是LangChain

72 阅读3分钟

LangChain是一种可以非常简单地构建智能体(Agents)和由大语言模型(LLMs)驱动的应用的方式。其核心目标是让开发者能够快速上手,无缝集成各种 LLM 供应商(如 OpenAI、Anthropic、Google、DeepSeek 等大模型 ),并利用预构建的智能体架构和模型集成来加速开发。

Agent,中文翻译为 智能体 ,在本教程中今后统一称作Agent

如果你想快速构建Agent,建议使用 LangChain 。如果你需要处理更复杂的、需要确定性与智能体工作流结合、高度定制化、精细控制延迟的场景,请使用 LangGraph 。 LangChain  Agents  构建在LangGraph之上,这种架构使得 LangChain Agents能够天然具备 LangGraph 提供的持久化执行(durable execution)、流式传输(streaming)、人机交互(human-in-the-loop)、持久化(persistence) 等高级功能。对于基础的LangChain Agent使用,你暂时不需要了解LangGraph。

安装

安装LangChain

pip install -U langchain
# 要求:Python 3.10+

LangChain支持多种大模型和其他各种丰富的工具,下面以DeepSeek为例进行演示

如果还没有DeepSeek的api_key,请注册 注册完成之后,将你的api_key保存到 .env 文件中

DEEPSEEK_API_KEY="your-key"
# 安装DeepSeek(未配置aip key,后续通过.env文件设置)
pip install -U langchain-deepseek
# 也可以在安装DeepSeek的同时,将DEEPSEEK_API_KEY设置为环境变量。
# pip install -U langchain-deepseek
# export DEEPSEEK_API_KEY="your-api-key"

💡 通过 Integrations tab 查看完整信息

💡 通过MCP的方式把以编程的方式集成到VS Code、Claude等工具上 Connect these docs programmatically

快速开始

简单几步就能构建一个Agent!

创建第一个Agent

from langchain_deepseek import ChatDeepSeek
import os
from dotenv import load_dotenv

# 加载环境变量,自动读取 .env 文件
load_dotenv()

# 验证DEEPSEEK_API_KEY是否正常加载
print("API Key:", bool(os.getenv("DEEPSEEK_API_KEY")))

# 初始化模型
llm = ChatDeepSeek(
            model="deepseek-chat", # 模型名称
            temperature=0.1, # 控制生成随机性
            max_tokens=1000, # 单次响应最大 token 数
            timeout=30, # 请求超时时间(秒)
            max_retries=3, # API 调用失败时重试次数
            # api_key="...", # API密钥(严禁在代码中明文暴露密钥)
            # other params... # 其他参数
        )
print(llm.invoke("你是谁").content)

LangChain的设计哲学

LangChain就是为了通过最简单的方式以大模型(LLMs)为基础构建适用于生产环境的高灵活性的Agent而生的。

LangChain是由这些核心理念驱动的:

  • 大模型(LLMs)是一项伟大的技术。
  • 集成外部资源能让大模型更加强大。
  • 大模型将改变应用未来的形态。确切的说,未来的应用将越来越具有自主性(agentic)。
  • 这种转变仍处于非常早期的阶段。
  • 虽然构建这些agentic应用很容易,但是构建可靠到足以投入生产的agents仍然非常困难。

LangChain有两个核心关注点: 1. 希望开发人员使用最好的模型进行构建 不同的大模型供应商提供不同的api,具有不同的模型参数和不同的消息格式。标准化这些模型输入和输出是一个核心关注点,使开发人员能够轻松地切换到最新的最先进的模型。 2. 让使用模型来编排与其他数据和计算交互时更复杂的工作流变得更容易 模型应该不仅仅用于文本生成,它们还应该在与其他数据交互时编排更复杂的工作流。LangChain使得定义大模型可以动态使用的工具(tools)变得很容易,还可以帮助解析和访问非结构化数据。