LangChain

月伴飞鱼 2025-04-06 19:41:59
AI相关 > AI框架
支付宝打赏 微信打赏

如果文章对你有帮助,欢迎点击上方按钮打赏作者!

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/

中文教程:https://python.langchain.com.cn/docs/

常用案例:https://python.langchain.com.cn/docs/use_cases

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)
支付宝打赏 微信打赏

如果文章对你有帮助,欢迎点击上方按钮打赏作者!