LangChain是一个开源的Python AI应用开发框架,它提供了构建基于大模型的AI应用所需的模块和工具。
通过LangChain,开发者可以轻松地与大模型(LLM)集成,完成文本生成、问答、翻译、对话等任务。
LangChain降低了AI应用开发的门槛,让任何人都可以基于LLM构建属于自己的创意应用。
快速入门:https://www.alang.ai/langchain/101/
参考教程:https://liaokong.gitbook.io/llm-kai-fa-jiao-cheng
发展版本:https://github.com/langchain-ai/langchain/releases
官方文档:https://python.langchain.com/v0.2/docs/how_to/
LangChain任务处理流程
LangChain提供一套提示词模板管理工具,负责处理提示词,然后传递给大模型处理,最后处理大模型返回的结果。
LangChan对大模型的封装主要包括 LLM 和 Chat Model 两张类型:
- LLM:问答模型,模型接收一个文本输入,然后返回一个文本结果。
- Chat Model:对话模型,接受一组对话消息,然后返回对话消息,类似聊天一样。
安装LangChain
pip install langchain
pip install langchain-openai
使用LLM
使用LLM来回答问题非常简单,可以直接调用LLM的
invoke
方法,并传入问题作为参数。此外,还可以通过提示词模板(Prompt Template)生成提示词,用于向模型(LLM)发送指令。
下面演示了如何构建一个简单的LLM链。
# 引入langchain聊天专用提示词模板
from langchain_core.prompts import ChatPromptTemplate
# 引入langchain openai sdk
from langchain_openai import ChatOpenAI
# 如果是官方URL,使用以下即可
llm = ChatOpenAI()
# 根据message 定义提示词模板
# 这里以对话模型的消息格式为例子,不熟悉openai对话模型的话,可以参考官方文档
# 下面消息模板,定义两条消息,system消息告诉模型扮演什么角色,user消息代表用户输入的问题
prompt = ChatPromptTemplate.from_messages([
("system", "你是世界级的技术专家"),
("user", "{input}")
])
# 通过langchain的链式调用,生成一个chain
# 基于LCEL表达式构建LLM链,lcel语法类似linux的pipeline语法,从左到右顺序执行
# 下面编排了一个简单的工作流,首先执行prompt完成提示词模板(prompt template)格式化处理,然后将格式化后的结果传递给llm模型
chain = prompt | llm
result = chain.invoke({"input": "帮我写一篇关于AI的技术文章,100字"})
print(result)
输出转换
LLM的输出通常是一条信息,为了更方便处理结果,可以将消息转换为字符串。
下面展示如何将LLM的输出消息转换为字符串。
# 字符串输出解析器
from langchain_core.output_parsers import StrOutputParser
# 引入langchain聊天专用提示词模板
from langchain_core.prompts import ChatPromptTemplate
# 引入langchain openai sdk
from langchain_openai import ChatOpenAI
llm = ChatOpenAI()
# 根据message 定义提示词模板
prompt = ChatPromptTemplate.from_messages([
("system", "你是世界级的技术专家"),
("user", "{input}")
])
# 创建一个字符串输出解析器
out_parse = StrOutputParser()
# 将输出解析器添加到LLM链中,跟前面的例子区别就是工作流编排,最后一步将LLM模型输出的结果传递给out_parse
chain = prompt | llm | out_parse
result = chain.invoke({"input": "帮我写一篇关于AI的技术文章,100字"})
print(result)