LangChain之模型调用

1.两者的关系

LangChain 是一个大模型应用开发框架,不是大模型本身。 它的核心目标:帮你把 LLM(GPT、DeepSeek、通义千问等)串联上外部能力,快速搭建智能应用,不用从零写大量胶水代码。

在我看来就类似于之前的那个coze,两者在这方面我个人认为作用或者说意义是一样的。通过这个LangChain来构建框架从而实现让AI实现以模版的方式来实现问题。

2.怎么进行模型调用

2.1 基本配置

如果说我们是在pycharm里面的终端里面下载一些包,这样我们就可以在pycharm里面对其进行调用了。具体可以上网查一下,对了,过低版本的解释器会让包安装失败。

同时我们还需要去申请一个模型API

2.2 模型的调用执行过程

当我们把一条消息发给了AI模型之后,AI是通过一种类似于链表的方式来进行思考,最后得出结果的。所以这一点待会在我们下面的调用里面也会有所体现。

2.3 调用方式

2.3.1 标准接口调用

这个的话就是通过我们的标准接口来执行的,相当于是我们一步一步的去执行,把AI模型的一套分成了很多我们能看见的步骤(实际上后面的话几步代码就直接可以了)。这个的话不常用,在这里说只是为了我们更好的去理解这个过程。

我们来看下面这个代码,首先我们需要先定义一个变量model,然后给他赋值一个ChatDeepSeek,同时在里面指定它的模型的类型。

接着我们定义一个变量叫做messages,给里面填入两个变量,分别代表了用户消息和系统消息。

ps:系统消息相当于我们需要叫模型做的事情。而用户消息相当于我们作为一个普通用户发给AI的消息。

接着我们需要使用invoke函数,通过这个函数来提取两个消息,把其赋值给result,最后打印就可以了。

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

model=ChatDeepSeek(model="deepseek-v4-flash")            #定义AI模型
#不用写这个模型的key,因为已经配置到环境变量了

messages=[                                        #定义消息
    SystemMessage(content="帮我翻译下面的话,翻译成中文"),  #表示系统消息(相当于你告诉AI需要做什么) 这个通常是第一条消息
    HumanMessage(content="helloworld!") #表示用户消息
]

result=model.invoke(messages)                     #这一步是在调用大模型,然后把数据转给result
print(result)

最后的输出结果。

2.3.2 通过解析器来输出

接下来我们来演示通过解析器的方式来进行输出。

解析器的话就是把直接把模型的输出结是按照解析器的方式解析成字符串并输出得到结果。

我们来看下面这个代码,老样子先创建定义模型,然后定义消息。

最后再输出的时候我们直接提过StrOutputParser()来进行解析,StrOutputParser就是我们前面说的解析器。最后通过解析器输出打印。

PS:在这边我们可能会疑惑为什么需要多此一举呢,为啥不直接在定义result之后直接打印呢,这是因为我们使用解析器的作用是为了追求统一化的输出结果,所以这才需要使用解析器。

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


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

messages=[
    SystemMessage(content="翻译成中文"),
    HumanMessage(content="helloworld!")
]

result = model.invoke(messages) #是把模型输出的结果给给输出解析器
print(result)

parser=StrOutputParser()
print(parser.invoke(result))#这一步是在定义输出解释器

下面是最后的输出结果,我们来看是有两个你好世界的,但是我们看上面那一个的,它的后面就跟了很长一串的东西,这个的话就是直接invoke后直接输出的结果,而我们经过解析器后输出的结果就只有你好世界了,其他多余的都被删除了,这就是解析器的作用。

2.3.3 执行链调用

接下来我们来通过执行链的方式来进行模型的输出结果。执行链的话是需要我们先把输出结果解析成为字符串的。

我们来看下面这代码,我们只需要在一个 | 的符号就可以建立管道,然后我们直接

model | parser就可以了,这一步的话相当于让模型按照链的方式来直接完成任务。我们在这边的话会觉得这个还不如第一个的好用,这是因为我们在这边的代码比较短小,所以我们看不出为什么执行链好用。

最后我们通过print直接输出就好了。

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


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

messages=[
    SystemMessage(content="翻译成中文"),
    HumanMessage(content="helloworld!")
]

parser=StrOutputParser()

chain=model|parser        #这个是通过执行链的方式
print(chain.invoke(messages))
相关推荐
Patrick在香港39 分钟前
一个斜杠,把毫秒变成十几秒
android·数据库·python·性能优化·正则表达式·回溯·redos
2601_967980111 小时前
Python 初学者必备的常用内置函数
python·编程语言·内置函数·初学者·常用函数
OnlineProxy1 小时前
移动应用数据爬取:通过模拟器与流量嗅探对 API 进行逆向工程
爬虫·python·httpx
染指11101 小时前
162.Agent-LangGraph-检查点的作用
人工智能·python·langchain·agents
我命由我123451 小时前
访客系统形式(有用户概念、无用户概念)
java·开发语言·前端·javascript·python·产品运营·产品经理
叼烟扛炮2 小时前
[LangChain] 学习笔记(02):LCEL 链式调用与动态模型配置实战
服务器·开发语言·网络·笔记·学习·langchain
xixingzhe22 小时前
图表中同比与环比的区别:看趋势还是看变化?
开发语言·python
forest_092 小时前
当 AI 搜索开始「自我进化」,谁来进化它的核实?——「已核实」结论复核器:3 条结论挖出 2 个洞(附可运行代码)
人工智能·python·机器学习·prompt·agi
小小张说故事2 小时前
Python 的 str 为什么设计成不可变?拆开字符串驻留、字符串池,以及 += 拼接到底慢在哪
后端·python
ljt27249606612 小时前
Python笔记(十一)--Numpy(一)
笔记·python·numpy