
LangChain是一个框架,用于开发由大型语言模型(LLM)驱动的应用程序。
LangChain 简化了 LLM 应用程序生命周期的每个阶段:
总结: LangChain是一个用于开发由LLM支持的应用程序的框架,通过提供标准化且丰富的模块抽象,构建LLM的输入输出规范,主要是利用其核心概念chains,可以灵活地链接整个应用开发流程。(即,其中的每个模块抽象,都是源于对大模型的深入理解和实践经验,由许多开发者提供出来的标准化流程和解决方案的抽象,再通过灵活的模块化组合,才得到了langchain)

想象一下,如果要组织一个AI应用,开发者一般需要?
由上边的内容,引出LangChain抽象的一些核心模块:
LangChain通过模块化的方式去高级抽象LLM在不同场景下的能力,其中LangChain抽象出的最重要的核心模块如下:‘
LangChain的特点如下:

在使用大模型的过程中,一些行业痛点:
pip install langchainLangChain 表达式语言(LCEL)是一种声明式的方法,用于轻松组合多个组件来构建复杂的处理链条。LCEL 设计之初就支持将原型直接投入生产环境,无需更改代码,适用于从简单的“提示+模型”链条到复杂的、包含数百个步骤的链条。
LCEL 的核心特点包括:
访问中间结果:对于复杂的链条,能够在最终输出产生之前访问中间步骤的结果非常有用,这可以用来通知最终用户或调试链条。
LCEL 的基本使用示例包括提示(Prompt)+ 模型(Model)+ 输出解析器(OutputParser)。
基础Demo: 将提示模板和模型链接在一起。使用LCEL将不同的组件组合成一个单一的链条:
from langchain\_core.output\_parsers import StrOutputParser
from langchain\_core.prompts import ChatPromptTemplate
from langchain\_community.chat\_models import ChatZhipuAI
# 定义 Prompt
prompt = ChatPromptTemplate.from\_template("讲一个有关于 {topic} 的笑话")
# 初始化智谱AI的模型实例
# 请替换"your\_api\_key"为你的智谱AI API密钥
# 智谱AI的模型名称根据实际情况填写,例如 "glm-4"
model = ChatZhipuAI(
model="glm-4",
temperature=0.5,
api\_key=""
)
# 定义 Output Parser
output\_parser = StrOutputParser()
# 使用 LCEL 组合链
chain = prompt | model | output\_parser
# 调用链,传递参数
result = chain.invoke({"topic": "冰激凌"})
# 打印结果
print(result)chain = prompt | model | output_parser
| 符号类似于 unix 管道操作符,它将不同的组件链接在一起,将一个组件的输出作为下一个组件的输入。在这个链条中,用户输入被传递给提示模板,然后提示模板的输出被传递给模型,然后模型的输出被传递给输出解析器。
LCEL 通过提供以下功能,使得从基本组件构建复杂链变得容易。它通过提供以下方式实现:
为了尽可能简化创建自定义链的过程,我们实现了一个 "Runnable" 协议。Runnable 协议已为大多数组件实现。 这是一个标准接口,可以轻松定义自定义链并以标准方式调用它们。 标准接口包括:
这些方法也有对应的异步方法:
示例:
# 调用链
chain.invoke({"topic": "bears"})
# 异步调用
await chain.ainvoke({"topic": "bears"})
# 批量调用
chain.batch([{"topic": "bears"}, {"topic": "cats"}])
# 异步调用
await chain.abatch([{"topic": "bears"}])
# 流式输出
for s in chain.stream({"topic": "bears"}):
print(s.content, end="", flush=True)
# 异步的流式输出
async for s in chain.astream({"topic": "bears"}):
print(s, end="", flush=True)不同组件的输入类型和输出类型如下:

所有可运行对象都公开输入和输出的模式以检查输入和输出:
如下图为2-2获取可运行对象,输入或者是输出产生的描述。(JSONSchema 表示)

pip install zhipu-aiimport os
from langchain\_community.chat\_models import ChatZhipuAI
from langchain\_core.messages import AIMessage, HumanMessage, SystemMessage
from langchain\_core.output\_parsers import StrOutputParser
os.environ["ZHIPUAI\_API\_KEY"] = ""chat = ChatZhipuAI(
model="glm-4",
temperature=0.5,
)
messages = [
AIMessage(content="Hi."),
SystemMessage(content="Your role is a poet."),
HumanMessage(content="Write a short poem about AI in four lines."),
]
response = chat.invoke(messages)
print(response.content) # Displays the AI-generated poemfrom langchain\_core.callbacks.manager import CallbackManager
from langchain\_core.callbacks.streaming\_stdout import StreamingStdOutCallbackHandler
streaming\_chat = ChatZhipuAI(
model="glm-4",
temperature=0.5,
streaming=True,
callback\_manager=CallbackManager([StreamingStdOutCallbackHandler()]),
)
streaming\_chat(messages)输出如下所示:

async\_chat = ChatZhipuAI(
model="glm-4",
temperature=0.5,
)
response = await async\_chat.agenerate([messages])
print(response)原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。
原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。
如有侵权,请联系 cloudcommunity@tencent.com 删除。