【LangChain系列 14】语言模型概述

server/2024/9/24 13:16:51/

本文速读

  • LLMs

  • 对话模型

LangChain集成了两种语言模型

  • LLM:输入文本,返回文本

  • 对话模型:基于LLM,输入Message列表,返回一条Message

LLM和对话模型之间有着细微且重要的不同。在LangChain中,LLMs指的是纯文本补全模型,它的API封装是:将字符串prompt作为输入,然后返回一个字符串。GPT-3是作为一个LLM实现的,然后在它的基础上进行调整使其具有对话能力。GPT-4和Claude都是作为对话模型实现的。

在LangChain中,为了将LLMs和对话模型可以互换使用,它们都继承了 基础语言模型 接口,它包含一些公共方法,比如predict, predict messages。

01 LLMs


LLMs(Large Language Models )是LangChain在核心组件,LangChain并不服务于它自己的LLMs,而是提供标准接口来与不同的LLMs交互。

下面我们从OpenAI LLM开始吧。

1. 安装openai

pip install openai

2. 准备API key

注册好OpenAI的帐号后,可以在后台生成key。有两种方式使用API key,一种是通过环境变量的方式:

export OPENAI_API_KEY="..."

然后在代码中就不需要指定key了:

from langchain.llms import OpenAIllm = OpenAI()

另一种方式是直接在代码中指定:

from langchain.llms import OpenAIllm = OpenAI(openai_api_key="...")

3. 使用LLM

最简单的方式是直接调用:

llm("Tell me a joke")
'Why did the chicken cross the road?\n\nTo get to the other side.'

同时也支持批量调用:

llm_result = llm.generate(["Tell me a joke", "Tell me a poem"]*15)
len(llm_result.generations)
30

查看结果:

llm_result.generations[0]
[Generation(text='\n\nWhy did the chicken cross the road?\n\nTo get to the other side!'),Generation(text='\n\nWhy did the chicken cross the road?\n\nTo get to the other side.')]
llm_result.llm_output
{'token_usage': {'completion_tokens': 3903,'total_tokens': 4023,'prompt_tokens': 120}}

02 对话模型


对话模型的底层是LLM,但是它的上层接口和LLM的还是有点不同。LLM的是"text in, text out"相关的API,对话模型接口的输入/输出是Message。

同样地,我们依然以OpenAI为例来介绍对话模型。

1. 安装openai

pip install openai

2. 准备API key

和LLM的方法一致,也支持环境变量和代码中两种指定方式。

from langchain.chat_models import ChatOpenAIchat = ChatOpenAI(openai_api_key="...")

3. 使用对话模型

最简单的使用方式就是传入一条或多条Message,然后返回一条Message.


messages = [SystemMessage(content="You are a helpful assistant that translates English to French."),HumanMessage(content="I love programming.")
]
chat(messages)
AIMessage(content="J'aime programmer.", additional_kwargs={})

同样地,对话模型也支持批量:


batch_messages = [[SystemMessage(content="You are a helpful assistant that translates English to French."),HumanMessage(content="I love programming.")],[SystemMessage(content="You are a helpful assistant that translates English to French."),HumanMessage(content="I love artificial intelligence.")],
]
result = chat.generate(batch_messages)
result
LLMResult(generations=[[ChatGeneration(text="J'aime programmer.", generation_info=None, message=AIMessage(content="J'aime programmer.", additional_kwargs={}))], [ChatGeneration(text="J'aime l'intelligence artificielle.", generation_info=None, message=AIMessage(content="J'aime l'intelligence artificielle.", additional_kwargs={}))]], llm_output={'token_usage': {'prompt_tokens': 57, 'completion_tokens': 20, 'total_tokens': 77}})

查看token信息:

result.llm_output

{'token_usage': {'prompt_tokens': 57,'completion_tokens': 20,'total_tokens': 77}}

本文小结

LangChain集成了LLM和对话模型两类模型,两者上层接口的差别是:LLM是"text in, text out", 而对话模型是"message in, message out"。

 公众号:大白爱爬山


http://www.ppmy.cn/server/24698.html

相关文章

【C++刷题】优选算法——动态规划第六辑

【模板】01背包 状态表示:dp1[i][j]: 表示从前i个物品中挑选总体积不超过j的物品,在所有的选法中,能挑选出的最大价值dp2[i][j]: 表示从前i个物品中挑选总体积正好等于j的物品,在所有的选法中,能挑选出的最大价值 优化:利用滚动数…

spring的CacheManager

org.springframework.cache.CacheManager是Spring框架中的一个接口,用于管理应用程序中的缓存。它提供了一种抽象的方式来访问缓存,使得应用程序可以使用不同的缓存实现(如内存、Redis等)而不需要修改代码。 在Spring Boot项目中…

海外私人IP和原生IP有什么区别,谁更有优势?

海外私人IP和原生IP在定义、特性以及应用场景上均存在显著的差异,各自的优势也因其特性而异。下面将详细探讨这两者的区别及各自的优势。 海外私人IP通常指的是一种位于海外的网络服务,它允许用户通过代理服务器访问海外网络,获取并使用位于…

使用递归方式实现多级菜单树 Java实现

在Java中,使用递归来实现菜单树通常涉及到遍历原始菜单列表,并为每个菜单项找到其对应的子菜单项。这个过程可以通过创建一个方法来完成,该方法会检查每个菜单项的parentId,并将其作为子菜单项添加到具有相应id的父菜单项的childr…

面试中算法(最小栈)

最小栈的实现 实现一个栈,该栈有出栈(pop)、入栈(push)、取最小元素(get_min) 。要保证时间复杂度都是O (1)。 第1步:设原有的栈叫作栈A,额外的“备胎”栈B,用于辅助栈A。 当第1个元素进入栈A时&#xff0c…

小长假来临,企业借助巡检系统做好安全巡查工作

节前节后是安全隐患事故多发期,小长假来了,企业面临着员工离岗、生产活动减少等特殊情况,这可能导致一些安全隐患被忽视。因此,借助巡检系统做好全面安全巡查工作显得尤为重要。巡检系统可以帮助企业实现巡检工作的规范化、标准化…

如何解决Go中uint类型溢出问题

如何解决Go中uint类型溢出问题 Golong的uint类型溢出问题通常会发生在大量的运算中,特别是涉及到大量循环和大数运算中。当uint类型的值超过其最大值时,会发生溢出,从最小值开始循环,一般有如下几种解决办法: 1. 使用…

【源码】纳斯达克微盘系统源码/PHP微交易源码/支持中英文/域名检测/等等功能

源码描述: 这个感觉以前发过也就那样吧,k线好像不行。 值得借鉴学习 具体自己研究吧 CD:获取方式联系小编 微信:uucodes 公众号:资源猿 小编提供资源代找,环境搭建,源码部署调试等业务&#x…