LangChain 0.0.213 から、ChatModelにもキャッシュがサポートされています。ChatModel用のキャッシュとしては、InMemory キャッシュと SQLAlchemy キャッシュの2種類がサポートされています。
早速ためしてみます。
InMemoryキャッシュの動作 🌵
debugオプションをつけて動きを追ってみます。
import langchain
from langchain.chat_models import ChatOpenAI
langchain.debug=True
llm = ChatOpenAI(temperature=1.0)
キャッシュを使用する場合は、langchain.llm_cache に InMemoryChache()を指定します
from langchain.cache import InMemoryCache
langchain.llm_cache = InMemoryCache()
%time llm.predict("Tell me a joke")
%time llm.predict("Tell me a joke")
同じプロンプト入力に対しては、llm呼び出しは行わず、キャッシュを参照しています。トークン消費もなく、とても高速です。
SQLiteキャッシュの動作 🌵
SQLiteを用いたキャッシュの場合も、In Memoryキャッシュの場合と同様にlangchain.llm_cacheに指定します。
from langchain.cache import SQLiteCache
langchain.llm_cache = SQLiteCache(database_path=".langchain.db")
%time llm.predict("Tell me a joke")
%time llm.predict("Tell me a joke")
キャッシュを利用することで、原理的に出力に変化はなくなってしまいますが、API呼び出し数を減らすことで、高速化、コスト削減が期待できます。地味な機能ですが、用途や利用方法を工夫すればメリットがありそうです。
最後までお読みいただきありがとうございました。 🦜🔗
完全にやってみた系になってしまって、すいません。