对于复杂场景,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编排解决方案。

Logo

有“AI”的1024 = 2048,欢迎大家加入2048 AI社区

更多推荐