LangChain LLM 답변 캐싱하기
llm 답변 캐싱하기
동일한 질문에 대해서는 캐싱된 답변을 내보내는 것으로 토큰 비용을 줄이는 방법을 말한다. 동일한 질문이 언제 들어올지, 또 동일한 질문이라는건 토씨하나 안틀리고 동일한 질문만을 말하는건지 궁금하기는 하다.
캐싱 방법
애플리케이션에서 캐싱을 위해 사용할 수 있는 방식으로는 인메모리 캐시와 sqlite 캐시가 있다.
- 인메모리 캐시 : 메모리 공간을 활용해 동일한 질문에 대한 답변을 일시적으로 저장함. 동일한 요청이 반복될 경우 캐시된 응답을 즉시 반환. 프로그램 종료시 메모리가 휘발됨 사용자별 맞춤형 질문이나 로그아웃시 초기화가 필요한 경우에 유용. 고객센터, AS 센터 등 자주 반복되는 정형화된 질문과 답변에 적합한 방식
- SQLITE 캐시 : 데이터베이스 파일을 활용해 캐시 데이터를 저장하여 메모리가 휘발되지 않음 ``` from langchain_openai import ChatOpenAI from langchain_core.prompts import PromptTemplate
llm = ChatOpenAI(model_name=”…”)
prompt = PrompotTemplate.from_template(“{country}에 대해서 200자 내외로 요약해줘”)
chain = prompt | llm |
from langchain.globals import set_llm_cache from langchain.cache import InMemoryCache
set_llm_cache(InMemoryCache())
response = chain.invoke({“country”:”korea”})
그리고 나서 캐싱된 답변을 사용하기 위해서도 동일하게 invoke해주면 된다.
response = chain.invoke({“country”:”korea”}) ```