大语言模型(LLMs)介绍
实际上,大型语言模型(Large Language Models)操作起来相当简单。
你可以提供一个用自然语言的输入给大语言模型:
text
北京有哪些著名景点?
然后模型将返回一个文本:
text
北京的著名经典有故宫、雍王府、颐和园等
LangChain已经与多个大型语言模型(LLMs)进行了集成,包括但不限于:
- AI21:一个由Jurassic-1语言模型驱动的平台,用于构建理解和生成自然语言的AI应用程序。
- GPT4All:一个平台让任何人都可以在无需编码或API密钥的情况下与GPT-3和其他语言模型互动。
- Hugging Face Hub:一个托管数千个预训练自然语言处理任务模型的平台。
- SageMakerEndpoint:一个工具帮助您通过简单几行代码将您的机器学习模型部署在AWS SageMaker上。
- Azure OpenAI:一个云服务(Azure)提供访问OpenAI的GPT-3语言模型的功能。
大语言模型使用
首先要配置LLM模型,需要从langchain.llm模块中导入它。
python
from langchain.llms import OpenAI
- 注意:为了使用OpenAI 模型,你需要安装openai库(
pip install openai
)
接下来,您需要为LLM设置一些基本设置,例如:
model_name
- 要使用的模型 例如,"text-davinci-003"(默认设置)或"text-ada-001" 这些设置会根据llm提供商而有所不同,因此您需要查阅您使用的提供商的API文档以获取模型值n
- 给定提示创建的完成次数(默认为1)streaming
- 结果是否应该"流式"传输(默认为False) 流式传输是指从LLM逐部返回结果,而不是一次性返回整个结果 在开发聊天机器人体验时,这非常有用,因为文本是逐行编写的,而不是一次性返回一个巨大的响应块。temperature
- 这将设置"采样温度"范围为0到1。温度决定输出中的随机程度。温度为0时表示"精确",将选择最可能的输出词。对于给定的提示,它应始终返回相同的输出;温度为1时表示"富有创造力",对于相同的提示,它会产生不同且有时令人惊讶的结果;默认设置为0.7,这仍然具有创造力,但不是完全随机的。
python
llm = OpenAI(model_name="text-davinci-003", n=2, temperature=0.4)
现在你可以通过上面配置llm进行基本的输入输出操作了。
python
llm("中国的首都是哪儿?")
# '\\n\\n北京'
您还可以使用generate函数传入一个提示输入列表,这将生成更丰富的输出,包括诸如令牌使用情况(可用于跟踪令牌和成本)等信息。
python
llm_result = llm.generate(["给我唱首歌", "给我写首诗"])
这种方式可以传入一个数组,用来生成比较复杂的结果。
另一个有用的功能是get_num_tokens,它可以估计文本片段中包含的令牌数量。在需要将总令牌数保持在设定的限制或预算之内时,这个功能会很有用。
python
llm.get_num_tokens("中国的首都是哪儿?")
- 注意:这需要使用tiktoken库进行估计,因此需要安装它才能使用(使用命令:pip install tiktoken)
高阶功能
除了正常的LLM调用以外,langchain还提供了一些LLM的高级用法。
- 异步调用LLM
- 缓存功能,重复的请求不发送到LLM
- 保存LLM配置,把相关参数以文本的形式存储起来
- 流式处理,即只要有response返回,就传输给用户