LangChain软件包安装
LangChain 生态系统包含不同的包,用来准确选择要安装的功能。

• 主 langchain 包 这个包是使用 LangChain 的起点,安装方式如下:
pip install langchain
• langchain-core 包
除了 langsmith SDK 之外,LangChain 生态系统中的所有包都依赖于 langchain-core ,包 含其它包使用的基类和抽象,以及 LangChain LCEL(表达式语言)。 它由 langchain 包自动安装,不需要显式安装该包。但是,如果使用的功能仅在该依赖项的特定版 本中可用,则可以选择这样做。如果这样做,则应确保已安装或固定的版本与我们使用的任何其他集 成包兼容。
pip install langchain-core
• Integrations 集成包
LangChain 的大部分价值来自于将各种能力进行集成,如各类模型集成(如 OpenAI 和 Anthropic)、各类组件集成(如数据存储、工具等)等。LangChain 中集成好的包见这里LangChain Python integrations - Docs by LangChain。 对于所需依赖项,我们需要单独安装。例如要使用 OpenAI,可以运行:
pip install langchain-openai
• langchain-community 包
简单来说,任何尚未拆分到自己的包中的集成,都存在于 langchain-community 包中。安装方 式:
pip install langchain-community
• langgraph 包
langgraph 是一个库,用于使用 LLM 构建有状态的应用程序。它与 LangChain 顺利集成。安装方 式:
pip install langgraph
• LangSmith SDK
LangSmith SDK 由 LangChain 自动安装。但它不依赖于 langchain-core ,如果需要,可以独立 安装和使用,安装方式
pip install langsmith
一、快速上手
对于 LangChain,它是一个用于开发 由大语言模型 (LLM) 驱动的应用程序的框架。
使用原生 LLM 可能会存在 一些问题,例如将其当作搜索引擎去使用,LLM 生成的答案可能要比其他搜索引擎查到的答案更符合 你的预期,但要是在复杂的场景下使用,如将 LLM 嵌入应用程序时却遭遇了全新难题:
• 简单提示词(Prompt)得到的答案经常出现幻觉?
• 提示词结构是否可以统一规范?
• 如何实现开发过程中大模型的轻松、灵活切换?
• 大模型输出是非结构化的,怎样与要求结构化数据的程序接口交互?
• 如何克服预训练模型知识陈旧的问题,引入实时更新?
• 如何连接模型与外部工具或系统,执行具体任务?
• ...
2. 详细过程
2.1 步骤1:申请 API key 并配置环境变量
2.2 步骤2:定义大模型
1、安装包
pip install -U langchain-deepseek
- 定义大模型
#1、定义模型 #api key默认从系统环境变量中读取()里的第二个参数也可以自己加上api_key= model = ChatDeepSeek(model="deepseek-v4-flash")
2.3 步骤3:定义消息列表
#2、定义消息 #用户消息在langchain里被定义成HumanMessage,他是是来自用户的、从用户传递到模型的消息。 #系统提示消息SystemMessage 通常作为第一条消息传入 messages=[ SystemMessage(content="请帮我进行翻译,有英文转换为中文"), HumanMessage(content="hi") ]
2.4 步骤4:调用大模型
model 是 LangChain Runnable (可运行)接口的实例,这意味着 model 提供了一个标准接口供 我们与之交互。要简单地调用模型,我们可以将 消息列表 传递给 .invoke 方法。 使用 .invoke 方法进行大模型调用
#调用大模型 # result=model.invoke(messages) # print(result)
输出说明:
**• AIMessage :**来自 AI 的消息。从聊天模型返回,作为对提示(输入)的响应。
◦ content :消息的内容。
◦ additional_kwargs :与消息关联的其他有效负载数据。对于来自 AI 的消息,可能包括模 型提供程序编码的工具调用。
**◦ response_metadata :**响应元数据。例如:响应标头、logprobs、令牌计数、模型名称。
▪ 侧重于 "响应"本身的信息,比如这次请求的 ID、使用的模型版本、以及服务提供商返回 的所有原始元数据。它主要用于调试、日志记录和获取请求的上下文信息。
**◦ usage_metadata :**消息的使用元数据,例如令牌计数。
▪ 侧重于 "资源消耗"的量化信息,即这次请求消耗了多少 Token。它主要用于成本计算、 监控和预算控制。
2.5 步骤5:输出解
若只想输出聊天模型返回的结果字符串,可以使用 StrOutputParser 输出解析器组件,将大模型 输出结果解析为最可能的字符串。
#4、定义输出解析 parse=StrOutputParser() # print(parse.invoke(result))
2.6 步骤6:链式执行
通过上述步骤,无论是调用大模型,还是输出解析,我们发现,每次都调用了一个 invoke() 方法,最 终才会得到我们想要的结果。
对于 LangChain,它给我们提供了链式执行的能力,即我们只需要定义各个"组件",将它们"链起 来",一次性执行即可得到最终效果。

python
from langchain_core.output_parsers import StrOutputParser
from langchain_deepseek import ChatDeepSeek
from langchain_core.messages import HumanMessage, SystemMessage
from langchain_openai import ChatOpenAI
#1、定义模型
#api key默认从系统环境变量中读取()里的第二个参数也可以自己加上api_key=
model = ChatDeepSeek(model="deepseek-v4-flash")
#2、定义消息
#用户消息在langchain里被定义成HumanMessage
#系统提示消息SystemMessage 通常作为第一条消息传入
messages=[
SystemMessage(content="请帮我进行翻译,有英文转换为中文"),
HumanMessage(content="hi")
]
#调用大模型
# result=model.invoke(messages)
# print(result)
#4、定义输出解析
parse=StrOutputParser()
# print(parse.invoke(result))
#5、定义链
#注意链的顺序不能错,因为它是按照顺序来执行每一个组件的
chain = model | parse
#6、执行链条
print(chain.invoke(messages))
注意:有多种定义链的方式,不过还是推荐chain=model | parse。简介直观

3.2 LangChain Expression Language
LangChain Expression Language(LCEL):采用声明性方法,从现有 Runnable 对象构建新的 Runnable 对象。
通过 LCEL 构建出的新的 Runnable 对象,被称为RunnableSequence ,表示可运行序列 。 RunnableSequence 就是一种 链 ,chain 的类型就是 RunnableSequence

重要的是, RunnableSequence 也是 Runnable 接口的实例 ,它实现了完整的 Runnable 接口, 因此它可以用与任何其他 Runnable 相同的姿势使用。
chain = model | parser
chain.invoke(messages) # 链是 Runnable 接口实例,允许invoke调用

LCEL 其实是一种编排解决方案,它使 LangChain 能够以优化的方式处理链的运行时执行。
任何两个 Runnable 实例都可以"链"在一起成序列。上一个可运行对象的 .invoke() 调用 的输出作为输入传递给下一个可运行对象。