简介
LCEL是 LangChain Expression Language的缩写
先来做个程序书写的对比,观察一下、使用了Expression Language语法之后更加短小精悍(缩短了一倍长度,更加高级的用法缩短会更多)而且代码看起来更加简单易读。
-
使用EL
from langchain_community.chat_models import ChatOllama
from langchain.schema import HumanMessage
from langchain_core.output_parsers import StrOutputParser
(ChatOllama(model="llama3", temperature=0) | StrOutputParser()).invoke([HumanMessage(content="你好啊, AI小助手")])
-
未使用EL
from langchain_community.chat_models import ChatOllama
from langchain.schema import HumanMessage
from langchain_core.output_parsers import StrOutputParser
chat = ChatOllama(model="llama3", temperature=0)
output_parser = StrOutputParser()
response = chat.invoke([HumanMessage(content="你好啊, AI小助手")])
output_parser.invoke(response)
Expression Language是一种将 Runnable 组成链(Runnables into chains)的声明性方式,以这种方式构建的任何链都将自动具有同步、异步、批处理、流支持等等,包含RunnableSequence 和 RunnableParallel两大部分内容。
关于RunnableParallel内容,放到后面再介绍
RunnableSequence:按顺序调用一系列可运行对象,一个可运行对象的输出充当下一个可运行对象的输入