LangChain Model I/O介绍及其模型调用

阿里云教程1个月前发布
11 0 0

1. Model I/O介绍

1.1 Model I/O模块组成

  • Format:即指代Prompts Template,通过模板化来管理大模型的输入;
  • Predict:即指代Models,使用通用接口调用不同的大语言模型;
  • Parse:即指代Output部分,用来从模型的推理中提取信息,并按照预先设定好的模版来规范化输出。

Format

传统上我们创建提示词是通过手工编写来实现的,在这个过程中会利用各种提示工程技巧,如Few-Shot、链式推理(CoT)等方法,以提高大模型的推理性能。不过,在应用
开发中,一个关键的考量是提示词不能是一成不变的。其缘由在于,应用开发需要适应多变的用户需求和场景。固定的提示词限制了模型的灵活性和适用范围

Predict

在Predict部分,实质上是处理模型从接收输入到执行推理的整个过程。思考到存在两种主要类型的大模型——Base类模型和Chat类模型,LangChain在其Model I/O模块中
对这两种模型都进行了抽象,分别归类为LLMs(Large Language Models)和Chat Models。

Parse

大模型的输出是不稳定的,同样的输入Prompt往往会得到不同形式的输出。在自然语言交互中,不同的语言表达方式一般不会造成理解上的障碍。但在应用开发中,大模型的
输出可能是下一步逻辑处理的关键输入。因此,在这种情况下,规范化输出是必须要做的任务,以确保应用能够顺利进行后续的逻辑处理。

1.2 什么是LCEL?

LangChain表达式语言(LCEL)是一种声明式方法,可以轻松地将 链 组合在一起。你可以理解为就是类似shell里面管道符的开发方式。

1.3 LangChain安装

pip install langchain
pip install opeanai

2. Model I/O之模型调用

LangChain为了使开发者可以轻松地创建自定义链,整体采用Runnable协议。Runnable 协议是编程中一种常见的设计模式,用于定义可以执行的任务或行为。
在LangChain中通过构建标准接口,可以用户轻松定义自定义链并以标准方式调用它们,目前在LangChain已经集成的LLMs中,均实现了Runnable接口,目前支持包括invokestreambatchastream 等方法的调用。

LangChain已经集成的大模型:https://python.langchain.com/docs/integrations/llms/

具体支持的调用方式如下所示:

方法 说明
invoke 处理单条输入
batch 处理批量输入
stream 流式响应
ainvoke 异步处理单条输入
abatch 异步处理批量输入
astream 异步流式响应

LangChain作为一个应用开发框架,需要集成各种不同的大模型,如上述OpenAI的GPT系列模型调用示例,通过Message数据输入规范,定义不同的role,即system、user和assistant来区分对话过程,但对于其他大模型,并不意味这必定会遵守这种输入输出及角色的定义,所以LangChain的做法是,由于Chat Model基于消息而不是原始文本,LangChain目前就抽象出来的消息类型有 AIMessage 、 HumanMessage 、 SystemMessage 、 FunctionMessage 和 ChatMessage ,但大多时候我们只需要处理 HumanMessage 、 AIMessage 和 SystemMessage,即:

  • SystemMessage :用于启动 AI 行为,作为输入消息序列中的第一个传入。
  • HumanMessage :表明来自与聊天模型交互的人的消息。
  • AIMessage :表明来自聊天模型的消息。这可以是文本,也可以是调用工具的请求。
© 版权声明

相关文章

暂无评论

none
暂无评论...