LangChain P1 | LangChain快速上手[MacOS]

随着AI的快速发展,Agent已经成为我们学习与工作中不可或缺的存在,为紧跟时代发展,本系列博客我们将来探讨如何快速上手LangChain并快速创建你的第一个简单Agent注意:我们不会过多赘述关于python库的内容,请大家自行下载pip以及相关的AI库

介绍

在正式开始之前,我们需要回答一些问题:什么是LangChain?它可以做什么?

什么是LangChain?它可以做什么?

用一句人话来说就是:LangChain 是一个帮你「把大模型和外部工具/数据串起来」的编排框架。

以询问天气为例:

在引入LangChain之前,我们写了一个llm之后,它没有工具,因此它无法直接去帮你搜索天气,因为llm的训练数据是有截止日期的,它无法给你实时数据,你如果想调用查询天气的工具则需要自己手写一个if-else来判断是否来调用查询天气的工具

而有了LangChain之后,你可以给它定义一个搜索天气的工具,它自己就会去判断需不需要调用这个工具来给你实时答复

LangChain相关概念

那么在知道我们要学习的是什么之后,我们还得了解一下和它相关的概念

Runnable接口

一句人话:Runnable 是 LangChain 里最核心的统一接口,就像一个"通用电源插头"。

只要继承了这个接口就可以调用它的方法:

方法 作用 使用场景
.invoke(input) 输入 → 输出 普通单次调用
.stream(input) 逐块产出 打字机效果
.batch([inputs]) 批量并行 多条数据一起处理
.astream()/.abatch() 异步版本 异步服务

我们举个例子来看一下:

python 复制代码
from langchain_core.output_parsers import StrOutputParser
from langchain_deepseek import ChatDeepSeek

llm = ChatDeepSeek(model="deepseek-v4-flash")
messages = "你是谁?"
print(llm.invoke(messages))     #大模型是Runnable实例,成功调用invoke方法

parser = StrOutputParser()
print(parser.invoke(messages))  #parser是Runnable实例,成功调用invoke方法

运行后我们就可以发现,大模型调用invoke方法后就输出了deepseek关于"你是谁?"这个问题的回答,完成了**输入你是谁 -> 输出deepseek回答**的变化

LCEL

LCEL = LangChain Expression Language(LangChain 表达式语言)

说白了就是:| 管道符把不同的 Runnable 组件串起来的一种写法

python 复制代码
chain = prompt | model | output_parser

上述就是一个LCEL,表示提示词 -> 调用大模型 -> 输出 这样一个过程,你可以把它理解为大模型编程里的「管道」------左边输出啥,右边就接收啥,一路串下去。

我们可以举个例子:

python 复制代码
from langchain.chains.question_answering.map_reduce_prompt import messages
from langchain_core.messages import SystemMessage, HumanMessage
from langchain_core.output_parsers import StrOutputParser
from langchain_core.prompts import ChatPromptTemplate
from langchain_deepseek import ChatDeepSeek

llm = ChatDeepSeek(model="deepseek-v4-flash")
messages = [
    HumanMessage("你是谁?")
]
parser = StrOutputParser()
# 没有LCEL的写法
result = llm.invoke(messages)
print(parser.invoke(result))

# 有LCEL的写法
chain = llm | parser
print(chain.invoke(messages))

我们可以发现有了LCEL之后,我们不用再每一步都自己调用一下,只需要把它写成管道,最后再统一调用,非常方便

快速上手

在前面的博客中我们有讲到代码的部分,可能有比较喜欢动手的友友们已经开始尝试过了复刻这些代码,或许或多或少在运行的时候都遇到了一些问题,接下来我们就讲讲如何快速上手成功运行这些代码

申请API KEY

在本篇博客中我们采用的llm是**deepseek-v4-flash** ,在这里我们需要知道的是,无论我们选择使用任何一个llm都必须要先申请它的api,此处我们都是选择使用远程调用的方式,不涉及本地部署,所以我们需要申请API KEY

来到deepseek api官网

创建一个API,自己妥善保存内容,这就是后面我们会用到的API

配置环境变量

申请完API之后我们还要把它配置在环境变量中它才会生效,或者你也可以明文放置在项目文件中,此处我们采用配置环境变量的方式

打开终端zsh版

python 复制代码
nano ~/.zshrc

输入上述代码,进入环境变量编辑文件

python 复制代码
export DEEPSEEK_API_KEY="sk-你的实际API密钥"

在这个文件里添加上述语句,将引号中内容替换成刚刚保存的API内容,control + x 退出,按y,再按enter,即配置完成

python 复制代码
source ~/.zshrc

输入上述代码让配置生效

python 复制代码
echo $DEEPSEEK_API_KEY

再输入上述代码,看配置是否成功,若输出你申请的API,则表示配置成功

导入所需的库

完成前置工作后,我们就正式进入了代码环节,打开我们的PyCharm,创建好项目后导入我们需要的库

python 复制代码
pip install langchain langchain-core langchain-community
pip install langchain-openai langchain-deepseek
pip install 'urllib3<2.0'

定义LLM

接下来就可以定义我们的LLM了

python 复制代码
from langchain_deepseek import ChatDeepSeek

llm = ChatDeepSeek(model="deepseek-v4-flash")

定义消息列表

python 复制代码
from langchain_core.messages import SystemMessage, HumanMessage
from langchain_deepseek import ChatDeepSeek

llm = ChatDeepSeek(model="deepseek-v4-flash")
messages = [
    SystemMessage("translate the words into Chinese"),  # 定义大模型作用定位
    HumanMessage("Hello World")                         # 模拟用户消息
]

定义输出解析器

python 复制代码
from langchain_core.messages import SystemMessage, HumanMessage
from langchain_core.output_parsers import StrOutputParser
from langchain_deepseek import ChatDeepSeek

llm = ChatDeepSeek(model="deepseek-v4-flash")
messages = [
    SystemMessage("translate the words into Chinese"),  # 定义大模型作用定位
    HumanMessage("Hello World")                         # 模拟用户消息
]
parser = StrOutputParser()

定义管道 | 直接调用

在前面的文章我们讲过,有两种方式,使用LCEL或者不使用,大家可以根据自己的需求来选择如何调用,这里我们选择不使用管道

python 复制代码
from langchain_core.messages import SystemMessage, HumanMessage
from langchain_core.output_parsers import StrOutputParser
from langchain_deepseek import ChatDeepSeek

llm = ChatDeepSeek(model="deepseek-v4-flash")

messages = [
    SystemMessage("translate the words into Chinese"),  # 定义大模型作用定位
    HumanMessage("Hello World")                         # 模拟用户消息
]

parser = StrOutputParser()

print(parser.invoke(llm.invoke(messages)))

查看结果

我们可以看到,此时我们的大模型就将它翻译成了中文,符合我们给它的定位

-------------------------------------------❤️❤️❤️------------------------------------------

📌 下一篇预告:有了这个大模型基础后,我们会给它装上「工具」,让它可以自己查天气、算数学、搜资料------这就是真正的 Agent。敬请期待!

相关推荐
颜酱5 小时前
LangChain 调用大模型实战:从跑通到服务商与模型选型
python·langchain
VipSoft6 小时前
LangChain 入门 Model 的初始化和调用
langchain
好家伙VCC6 小时前
Qdrant + LangChain 实战:构建毫秒级语义检索服务
java·langchain
wuhen_n8 小时前
AI Agent 入门:从零实现 LangChain 基础智能体
前端·langchain·ai编程
lhxcc_fly9 小时前
6.LangChain--RAG
langchain·llm·rag
wuhen_n9 小时前
LangChain 自定义 Tool 封装:打造专属 AI 能力工具集
前端·langchain·ai编程
lhxcc_fly9 小时前
6.1RAG--文档加载器
langchain·llm·rag
Irissgwe11 小时前
十、LangGraph能力详解(2)LangGraph入门教程,构建AI工作流
ai·langchain·graph·langgraph