【LangChain】LangChain开篇
Runnable 接口定义了一个标准的接口,允许Runnable 组件进行Invoked(调用),Batched(批处理),Streamed(流式传输)1.幻觉问题,在使用LLM的时候,可能会发现,LLM开始回答的不合理了;对于 LangChain,它给我们提供了链式执行的能力,即我们只需要定义各个“组件”,将它们“链起来”,一次性执行即可得到最终效果。5.实效性问题,大模型的训练是有截止日期的,
对于复杂场景,LLM的问题主要有6种,分别为
1.幻觉问题,在使用LLM的时候,可能会发现,LLM开始回答的不合理了;举个例子:明明这个厂商没有提供这个API接口,但是竟然被LLM幻觉出来了这个接口
2.统一提示词,提示词的质量和风格直接决定输出结果的准确性和安全性。没有统⼀的规范会导致应⽤行为不可预测、难以调试,且⽆法规模化地优化效果
3.切换模型的成本,可能对于同一套提示词,不同模型给我们的输出就不同了。
4.非结构化输出难以与程序接口交互。应用程序需要将模型分析的“可能疾病”结果,结构化地展示在前端UI 的列表里。
5.实效性问题,大模型的训练是有截止日期的,这就说明LLM的实时性不高,可能获取不到最新的知识。
6.对于非常专业的知识(医学),只能参考LLM的结果,不一定能直接采用
而LangChain就是解决这些LLM的问题的
对于问题1:可以通过RAG或者Agent就能解决幻觉问题。
3.LangChain提供了统一的模型调用姿势
4.LangChain可以提供结构化的数据,比如json,html,xml...
5.类似于coze中的插件,LangChain可以使用很多工具,通过实时的搜索引擎来获取实时性数据
所以,什么是LangChain?
LangChain 是⼀个用于开发由大语⾔模型 (LLM) 驱动的应用程序的框架。它通过将自然语言处理(NLP)流程拆解为标准化组件,让开发者能够自由组合并高效定制工作流
自然语言处理流程(NLP):指的是完成⼀个特定 NLP 任务所需的⼀系列步骤。例如,构建⼀
个“基于公司文档的问答机器人”的流程可能包括:
读取文档、
分割文本、
将文本转换为向(嵌入)、
存储向量、
接收用户问题并转换为向量、
搜索相关文本段、
将问题和文本段组合发送给大语言模型(LLM)、
解析模型输出并返回答案等。

LangChain基本对于层对于所有的LLM厂家,都在上层实现了一份自已的统一姿势,举个例子:
LangChain 定义了几个核心的抽象类,所有厂家的模型都必须实现这些类的方法。
-
BaseChatModel: 针对对话型模型(如 GPT-4)。无论厂家要求的是messages数组还是特殊的 Prompt 格式,在 LangChain 里你统一使用HumanMessage,AIMessage,SystemMessage。 -
BaseLLM: 针对传统的补全型模型(以文本输入,文本输出)
LangChain通过在上层,对于各个LLM的封装,最后给我们提供了统一调用LLM的姿势。
用langChain完成一个最简单的链:

对于 LangChain,它给我们提供了链式执行的能力,即我们只需要定义各个“组件”,将它们“链起来”,一次性执行即可得到最终效果

什么是一个合法的组件呢?
我们先了解一下Runnable接口:
Runnable 接口是使用 LangChain Components(组件)的基础。Runnable 接口定义了一个标准的接口,允许Runnable 组件进行Invoked(调用),Batched(批处理),Streamed(流式传输)
Inspected(检查),Composed(组合)
而我们上述定义链过程中的语言模型(model)、输出解析器(StrOutputParser)都是
Runnable 接口的实例!他们都使用了 Invoked(调用)的能力
换句话说,只要满足Runnable的实力,都可以链起来。
任何两个 Runnable 实例都可以“链”在⼀起成序列。上⼀个可运行对象的 .invoke() 调用的输出作为输入传递给下⼀个可运行对象。方法就是使用 | (管道/运算符),这其实就是LCEL编排解决方案。
更多推荐



所有评论(0)