赞
踩
LLMs
对话模型
LangChain集成了两种语言模型:
LLM:输入文本,返回文本
对话模型:基于LLM,输入Message列表,返回一条Message
LLM和对话模型之间有着细微且重要的不同。在LangChain中,LLMs指的是纯文本补全模型,它的API封装是:将字符串prompt作为输入,然后返回一个字符串。GPT-3是作为一个LLM实现的,然后在它的基础上进行调整使其具有对话能力。GPT-4和Claude都是作为对话模型实现的。
在LangChain中,为了将LLMs和对话模型可以互换使用,它们都继承了 基础语言模型 接口,它包含一些公共方法,比如predict, predict messages。
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 OpenAI
-
- llm = OpenAI()
另一种方式是直接在代码中指定:
- from langchain.llms import OpenAI
-
- llm = 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}
- }
对话模型的底层是LLM,但是它的上层接口和LLM的还是有点不同。LLM的是"text in, text out"相关的API,对话模型接口的输入/输出是Message。
同样地,我们依然以OpenAI为例来介绍对话模型。
1. 安装openai
pip install openai
2. 准备API key
和LLM的方法一致,也支持环境变量和代码中两种指定方式。
- from langchain.chat_models import ChatOpenAI
-
- chat = 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"。
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。