Langchain入门学习(1)

举报
Pingoo 发表于 2023/09/04 21:50:54 2023/09/04
【摘要】 LLMs最近非常火,例如OpenAI的ChatGPT、华为的盘古语言大模型、百度的文心一言、阿里的通义千问等。 实际生产生活中,可以基于LLMs构建个人助手、聊天机器人、信息提取工具等应用。Langchain是一种为简化使用LLM创建应用程序的框架,它本身并不实现LLMs,而是提供把LLMs相关的组件“链接”在一起的能力,以便于简化LLMs应用开发过程的难度。

1. 什么是Langchain

LLMs最近非常火,例如OpenAIChatGPT、华为的盘古语言大模型、百度的文心一言、阿里的通义千问等。 实际生产生活中,可以基于LLMs构建个人助手、聊天机器人等应用。

Langchain是一种为简化使用LLM创建应用程序的框架,它本身并不实现LLMs,而是为各种LLMs实现通用的接口,把LLMs相关的组件链接在一起能力,以便于简化LLMs应用的开发难度。

两个比较重要的价值主张:

1)组件化Langchain 为处理语言模型所需的组件提供模块化的抽象,并为这些抽象提供了实现的集合,以方便使用。

2)链化:链可以被看作是将不同的组件以特定方式进行的组装,以更好地完成某些特别场景的用例。你也可以认为链是一种更高阶的接口,用户通过使用这个接口可以更轻松的使用LLMs的能力,也可以针对不同场景进行定制。

 

2. Langchain的6大模块

Models I/O:模型I/O语言模型的接口

Retrieval:数据链接

Chains:链,一系列组件的调用

Agents:代理,决定模型采取哪些行动

Memory:记忆,用来保存和模型交互时的上下文状态

Callbacks:记录和流式传输任何链的中间步骤

 

2.1 模型I/O (Models I/O)

语言模型应用的核心元素:模型的输入和输出。Langchain 提供了与语言模型进行接口交互的基本组件。


langchain1.png


(1)提示 (prompt)

提示(prompt) 指的是输入模型的内容。可以是文本字符,也可以是文件、图片甚至是视频,Langchain目前只支持字符形式的提示。

提示一般不是硬编码的形式写在代码里,而是由模板和用户输入来生成,Langchain提供多个类和方法来构建提示。

  • 提示模板 (Prompt templates)

提示模板是一种生成提示的方式,包含一个带有可替换内容的模板,最简单的使用场景,比如You are a naming consultant for new companies. What is a good name for a company that makes {product}?

这里面分为:

示模板 (Prompt template):可以使用PromptTemplate 去创建一个string型的提示模板

聊天提示模板 (Chat prompt template):接收聊天消息作为输入,再次强调聊天消息和普通字符是不一样的,聊天提示模板的作用就是为聊天模型生成提示

  • 示例选择器 (example_selectors)

示例选择器是一个高级版的数据筛选器,比如,在提示时,基于长度、最大边际相关性等动态选择包含的示例。

(2)语言模型 (Language models)

Langchain为第三方模型提供通用接口,目前支持三种:

  • LLMs

大型语言模型( LLMs )以文本作为输入,返回文本字符串作为输出

  • 聊天模型

聊天模型基于LLMs,不同的是它接收聊天消息作为输入,返回的也是聊天消息。

  • 文本嵌入模型

文本嵌入模型,接收文本作为输入,返回的是浮点数列表(嵌入结果)。可用于文档检索、聚类和相似性比较等任务

(3)输出解析器 (Output Parsers)

输出解析器的作用是将模型输出的文本转换成结构化数据。(如果用户希望获得结构化的信息,则可以使用输出解析器。)


2.2 数据连接 (Data connection)

许多 LLM 应用程序需要用户指定数据,为了完成数据的操作,Langchain提供了加载、转换和查询数据的基础构件。


langchain2.png



2.3 (Chains)

对于复杂的应用程序则需要将多个组件组合在一起,Langchain为这种“链式”应用程序提供了链接口。

例如,我们可以创建一个链:该链接受用户输入,使用提示模板对其进行格式化,然后将格式化的响应传递给LLM。

 示例: llm_chain = LLMChain(llm=llm, prompt=PromptTemplate.from_template(prompt_template))


2.4 记忆 (Memory)

模型是无状态的,为了给每次交互提供上下文功能,Langchain提供了记忆组件,用来在对话过程中存储过去的交互信息。



langchain3.png




2.5 代理 (Agents)

有些应用并不是一开始就确定调用哪些模型,而是依赖于用户输入,代理提供了一套工具,根据用户的输入来决定调用这些工具种的哪一个。其关键组件:

  • 代理

围绕模型的包装器,接收用户输入,决定模型的行为。

  • 工具

是代理调用的方法/函数。(Langchain 提供了一系列的工具供使用,当然也可以自己定义。)

  • 工具集(工具包)

实现特定目标所需的工具集合,一般一个工具集合中会有3-5个工具以供代理调用。

  • 代理执行器

调用代理并执行它选择的操作


2.6 CallBack

CallBack可以帮助连接到LLM应用程序的各个阶段,对日志记录、监视、流式处理等任务非常有用。

 


未完待续。

 

参考文献

https://python.langchain.com/docs/get_started/introduction

【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。