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。敬请期待!

相关推荐
早点睡啊20 小时前
精读 LangChain 官方文档(二)Model 篇:把模型调用升级成工程化推理接口
人工智能·langchain
星始流年3 天前
从 Tool 到 Skill——基于 LangChain 的服务端Skill实现
前端·langchain·agent
codedx3 天前
LangChain 和 LangGraph 构建的 Agent 项目模版
后端·langchain·agent
颜酱4 天前
LangGraph 入门指南
langchain
武子康5 天前
调查研究-186 LangChain 和 LangGraph 的区别:从快速构建 Agent 到生产级工作流编排
人工智能·langchain·llm
葫芦和十三8 天前
渐进发现|代码库不是文档库
langchain·agent·ai编程
柒和远方8 天前
LangGraph 深度解析:从增强型 LLM 到生产级 Agent
langchain·llm·agent
沪漂阿龙9 天前
《LangChain》成本、限流、缓存、降级:AI 应用上线要考虑的问题
人工智能·langchain
段一凡-华北理工大学9 天前
LangChain框架在高炉炼铁智能化领域的应用~系列文章09:工具调用Tool — 让AI学会操作高炉仪表盘
网络·人工智能·架构·langchain·高炉炼铁·高炉智能化·高炉智能体
Niuguangshuo9 天前
LangChain 学习之旅(五):Agent 与工具调用实战
学习·langchain