LangChain 大型语言模型(LLMs)基础与核心功能详解
本文详细介绍了 LangChain 框架中大型语言模型(LLMs)的基础知识与核心功能。内容包括如何初始化 LLM 实例,使用 generate 方法生成文本和批量处理输入,以及如何获取 token 使用情况和元数据。此外,文章还补充了模型参数配置(如 temperature、max_tokens)、流式输出实现方式以及基础的错误处理机制。通过掌握这些基本操作,开发者可以构建基于大模型的各类应用程序。

本文详细介绍了 LangChain 框架中大型语言模型(LLMs)的基础知识与核心功能。内容包括如何初始化 LLM 实例,使用 generate 方法生成文本和批量处理输入,以及如何获取 token 使用情况和元数据。此外,文章还补充了模型参数配置(如 temperature、max_tokens)、流式输出实现方式以及基础的错误处理机制。通过掌握这些基本操作,开发者可以构建基于大模型的各类应用程序。


微信公众号「极客日志」,在微信中扫描左侧二维码关注。展示文案:极客日志 zeeklog
使用加密算法(如AES、TripleDES、Rabbit或RC4)加密和解密文本明文。 在线工具,加密/解密文本在线工具,online
生成新的随机RSA私钥和公钥pem证书。 在线工具,RSA密钥对生成器在线工具,online
基于 Mermaid.js 实时预览流程图、时序图等图表,支持源码编辑与即时渲染。 在线工具,Mermaid 预览与可视化编辑在线工具,online
解析常见 curl 参数并生成 fetch、axios、PHP curl 或 Python requests 示例代码。 在线工具,curl 转代码在线工具,online
将字符串编码和解码为其 Base64 格式表示形式即可。 在线工具,Base64 字符串编码/解码在线工具,online
将字符串、文件或图像转换为其 Base64 表示形式。 在线工具,Base64 文件转换器在线工具,online
大型语言模型(LLMs)是 LangChain 的核心组件。LangChain 本身不提供大型语言模型,而是提供了一个标准接口,通过该接口我们可以与各种 LLMs 进行交互。LLM 类是专为与 LLM 接口设计的类。有许多 LLM 提供者(如 OpenAI、Cohere、Hugging Face),此类旨在为所有 LLM 提供一个标准接口。
在本文中,我们将专注于通用的 LLM 功能,并演示如何使用 OpenAI LLM 包装器,其功能对于所有 LLM 类型都是通用的。
首先,需要导入 OpenAI 类并实例化一个 LLM 对象。可以通过指定模型名称、温度参数等来配置行为。
from langchain.llms import OpenAI
llm = OpenAI(model_name="text-ada-001", n=2, best_of=2)
生成文本(Generate Text)是 LLM 最基本的功能,其传入一个字符串并返回一个字符串:
llm("Tell me a joke")
输出示例:
\n\nWhy did the chicken cross the road?\n\nTo get to the other side.
我们还可以用一个输入列表来调用它,得到比仅输入文本更完整的响应。这个完整的响应包括多个顶级响应,以及 LLM 供应商特定的信息。
llm_result = llm.generate(["Tell me a joke", "Tell me a poem"] * 15)
print(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.')]
我们还可以访问返回的特定于服务提供商的信息,这些信息在不同的服务提供商之间并不标准化,例如 Token 使用情况。
llm_result.llm_output
输出:
{'token_usage': {'completion_tokens': 3903, 'total_tokens': 4023, 'prompt_tokens': 120}}
Number of Tokens:我们还可以估算在该模型中一段文本将包含多少 tokens。这很有用,因为模型有一个上下文长度,并且对于更多 tokens 的成本更高,这意味着我们需要知道传入的文本有多长。按默认设置,使用 tiktoken 估计 tokens:
llm.get_num_tokens("what a joke")
输出:
3
在实际应用中,调整模型参数对于控制输出质量至关重要。常见的参数包括:
示例配置:
llm = OpenAI(
model_name="text-davinci-003",
temperature=0.7,
max_tokens=500,
top_p=1.0
)
为了提升用户体验,特别是在生成长文本时,可以使用流式输出(Streaming)。这样可以逐步展示生成内容,而不是等待整个响应完成。
for chunk in llm.stream("Tell me a short story about AI"):
print(chunk, end="", flush=True)
流式输出允许用户实时看到进展,减少等待焦虑,同时也能更快地开始处理部分结果。
在使用 LLM 时,网络波动或 API 限制可能导致请求失败。建议在代码中加入基本的异常捕获机制。
try:
response = llm("Generate text")
except Exception as e:
print(f"Error occurred: {e}")
本文介绍了 LangChain 中 LLM 类的基础用法,包括初始化、文本生成、批量处理、Token 统计以及参数配置。掌握这些基础知识是使用 LangChain 构建复杂应用的前提。后续章节将深入探讨聊天模型(Chat Models)、提示模板(Prompts)及记忆(Memory)等高级功能。