在使用语言模型(如 IBM Granite 模型)时,提示缓存是一种存储并重用已执行提示生成的响应的方法。如果再次遇到相同的输入(提示),应用程序不会发起新的 API 调用,而是从提示缓存中检索先前存储的响应。
可以把提示缓存看作是应用程序的一种“记忆”。系统保留先前查询的结果,不必对相同输入发出重复请求,从而节省计算时间。
提示缓存的重要性在于,它通过对相同的重复提示重用已有响应,从而避免了重复的应用程序编程接口 (API) 调用。这种能力带来了更快的响应时间、一致的输出以及更少的 API 使用量,这有助于保持在速率限制范围内。它还有助于扩展流程,并在故障期间提高系统的弹性。提示缓存是一项关键功能,为任何具备成本效益、高效且用户友好的 AI 应用增添价值。
您需要一个 IBM® Cloud 帐户 才能创建 watsonx.ai项目。
您还需要 Python 版本 3.12.7
虽然您可以选择多种工具,本教程将引导您如何设置 IBM 帐户以使用 Jupyter Notebook。
使用您的 IBM Cloud 帐户登录 watsonx.ai。
创建 watsonx.ai 项目。您可以从项目内部获取项目 ID。单击“管理”选项卡。然后,从“常规”页面中的“详细信息”部分复制项目 ID。您需要此 ID 来完成本教程。
创建一个 Jupyter Notebook。此步骤将打开一个 Jupyter Notebook 环境,您可以在其中复制本教程中的代码。或者,您也可以将该笔记下载到本地系统,再作为资产上传到您的 watsonx.ai 项目中。欲查看更多 IBM® Granite 教程,请访问 IBM Granite 社区。
创建 watsonx.ai 运行时服务实例(选择 Lite 计划,这是一个免费实例)。
生成 API 密钥。
将 watsonx.ai 运行时服务与您在 watsonx.ai 中创建的项目关联。
我们需要库来使用 langchain 框架和 WatsonxLLM。让我们首先安装所需的软件包。本教程使用 Python 3.12.7 构建
注意:如果使用的是旧版本的 pip,可以通过运行命令 pip install --upgrade pip 来轻松安装可能与旧版本不兼容的最新软件包。但如果已经在使用最新版本或最近刚升级过软件包,则可以跳过此命令。
os 模块用于访问环境变量,如项目凭据或 API 密钥。
watsonxLLM 是 langchain_ibm 的一个模块,集成了 IBM Watson LLM,用于从生成式 AI 模型生成输出。
ChatWatsonx 通过 LangChain 使用 IBM watsonx 实现基于聊天的交互。
SimpleDirectoryReader 用于从目录中加载和读取文档,以便使用 LlamaIndex 编制索引。
GenParams 包含用于配置 Watsonx 文本生成参数的元数据键。
SQLitecache 支持设置 local.cache.db SQLite 数据库,以避免冗余 API 调用,加快开发和测试速度。
本教程需要一些库和模块。请确保导入以下库,如果未安装,可以通过快速的 pip 安装来解决。
此代码设置了访问 IBM Watson Machine Learning (WML) API 的凭据,并确保正确配置项目 ID。
以下代码将初始化 IBM Watson LLM 以便在应用程序中使用:
如需了解模型参数(例如最小和最大令牌限制)的更多信息,请参阅文档。
SQLitecache 是 LangChain 提供的持久缓存工具,它将来自 LLM 调用的响应存储在 SQLite 数据库文件中。SQLitecache 通过存储成本高昂的计算来巧妙地减少 CPU 时间,这样它即可专注于检索数据,而不是重新计算数据。它只需从磁盘中提取结果,而无需再次经历整个过程,因此高效、可靠且可重复使用。
图中展示了提示缓存的作用:有了缓存,结果可以立即从磁盘加载;没有缓存,每次查询都要浪费时间进行重复计算。
在这种情况下,CPU 仅工作了 22 毫秒,但实际经过时间为 1.43 秒。
这个例子表明,大部分时间都花在等待上,可能是由于 I/O 操作(例如磁盘读写、网络访问或 API 调用)
现在,让我们使用相同的提示再次运行模型,看看响应时间。
显然,使用 SQLiteCache 时,CPU 仅耗时 7.26 毫秒,但实际挂钟时间却达到 6.15 秒。
这清楚地指向阻止外部依赖关系(比如等待服务器的响应)。
提示缓存可以加速并降低对大语言模型(如 GPT-4o)的 API 请求成本。提示缓存会存储内容,例如输入令牌、输出令牌、嵌入向量以及来自用户、系统提示或函数输出的消息,现在可以使用缓存内容,而无需为新版本发起网络请求。这种方法降低了定价,缩短了响应延迟,并提高了关键绩效指标 (KPI)。
提示缓存技术可为聊天机器人、RAG 系统、模型微调及代码助手等应用场景带来显著效益。包含缓存读取、缓存写入、系统消息、缓存控制以及适当生存时间 (TTL) 等功能的健全缓存策略,将提高缓存命中率并降低缓存未命中率。
一致使用相同的提示令牌、提示前缀,并遵循系统指令,有助于在多轮对话和后续请求中保持提示性能的一致性。无论是使用 Python、SDK,还是与 OpenAI 或其他提供商合作,了解提示缓存的工作原理,都有助于您更好地实施提示缓存,以在众多用例中使用。