1. LLMs 介绍
大语言模型(LLMs)是LangChain的核心组件,LangChain本身不提供大语言模型能力,LangChain封装了各种常见的大语言模型,提供一套操作大语言模型的标准接口,方便开发者。
目前LangChain封装不少大语言模型,也支持自定义模型,开发者可以自己封装新的模型接口。
- 提示:目前开源大模型和商业大模型有很多,考虑到成本&模型能力的差异,大家会有不同的选择,同时也可能会经常换模型,但是换模型又不想改动太多业务代码,这个时候LangCain的价值就体现出来了。
2. 设置
2.1 安装
要在LangChain中使用OpenAI LLM,用户需要通过运行以下命令来安装OpenAI Python包:
pip install openai
2.2 API密钥设置
访问OpenAI API需要一个API密钥,可以通过在OpenAI平台上创建账户来获取。一旦获得API密钥,可以通过以下命令将其设置为环境变量:
export OPENAI_API_KEY="your-api-key"
另外,如果不希望设置环境变量,也可以在初始化OpenAI LLM类时直接传递API密钥,示例如下:
from langchain_openai import OpenAI
llm = OpenAI(openai_api_key="your-api-key")
3. LCEL 实现
在LangChain中,LLMs实现了LangChain表达式语言(LCEL)的可运行接口。这意味着它们支持各种函数调用,如invoke
、stream
、batch
等。
LLMs接受字符串输入或可以强制转换为字符串提示的对象,包括List[BaseMessage]
和PromptValue
。
4. LLM使用示例
$ 4.1 调用
要使用特定提示词(prompt)调用LLM,可以使用invoke
函数,示例如下:
llm.invoke("在这里为LLM提供提示(prompt)")
4.2 流式处理
从LLMs中实时获取并处理文本输出的方法称为流式处理。以下是使用LLM进行流式处理的示例:
for chunk in llm.stream("在这里为LLM流处理提供提示(prompt)"):
print(chunk, end="", flush=True)
4.3 批处理
批处理能够实现对LLMs的多个输入进行并行处理。您可以像这样处理一批提示(prompt):
llm.batch(["prompt 1", "prompt 2", "prompt 3"])
4.4 异步操作
为了提高效率,可以使用异步操作与LLMs一起工作。异步操作如ainvoke
、astream
、abatch
和astream_log
可以实现异步执行。以下是使用LLM进行异步流处理的示例:
async for chunk in llm.astream("在这里提供异步LLM流处理的提示(prompt)"):
print(chunk, end="", flush=True)
这些示例展示了在LangChain框架中利用LLMs进行自然语言处理任务的多样化方式。