LangChain快速上手

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. 定义大模型
复制代码
#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() 调用 的输出作为输入传递给下一个可运行对象。

相关推荐
程序员Better1 小时前
前端成功转型AI全栈,我踩过的坑都替你填上了
前端·后端·ai编程
飞坦2 小时前
failed to set model 和 GatewayRequestError 怎么解决?排查了一整天,总结 4 种修法
ai编程·claude
掘根2 小时前
【LangChain】大模型介绍
langchain
Where-2 小时前
LangChain核心组件-Tool
python·langchain
C澒2 小时前
AI 生码 - D2C:Figma to Code 全流程实现
前端·低代码·ai编程·figma
多年小白2 小时前
谷歌第八代 TPU 来了:性能提升 124%
网络·人工智能·科技·深度学习·ai
带娃的IT创业者3 小时前
Claude Code Routines 深度解析:重新定义 AI 辅助编程的工作流自动化
运维·人工智能·自动化·ai编程·工作流·anthropic·claude code
wsjsf3 小时前
智能代码审查助手的搭建
java·学习·ai编程
sunneo3 小时前
专栏A-AI原生产品设计-06-AI原生产品的未来展望(专栏A终篇)
人工智能·产品运营·产品经理·ai编程·ai-native