您的功能请求是否与问题相关?请描述。
我正在使用langchain,并启动了一个GPTCache集成,但在几次尝试后,我确实设法将所有内容配置为我所希望的,然后我开始测试:
ValueError: GPTCache仅支持缓存普通的LLM生成,得到的是<class 'langchain.schema.ChatGeneration'>
我知道这不是一个真正的错误,但从langchain开始建议使用这个模式,它支持文本和嵌入混合。
描述您希望的解决方案。
我跟踪了这个错误到这个函数:
RETURN_VAL_TYPE是一个langchain.schema.Generation,而返回值不是,所以代码按预期工作
def update(self, prompt: str, llm_string: str, return_val: RETURN_VAL_TYPE) -> None:
"""Update cache.
First, retrieve the corresponding cache object using the `llm_string` parameter,
and then store the `prompt` and `return_val` in the cache object.
"""
for gen in return_val:
if not isinstance(return_val, Generation):
raise ValueError(
"GPTCache only supports caching of normal LLM generations, "
f"got {type(gen)}"
)
from gptcache.adapter.api import put
_gptcache = self._get_gptcache(llm_string)
handled_data = json.dumps([generation.dict() for generation in return_val])
put(prompt, handled_data, cache_obj=_gptcache)
return None
我尝试了这些更改:
from langchain.schema import Generation, ChatGeneration
# ....
def update(self, prompt: str, llm_string: str, return_val) -> None:
# ...
if not isinstance(return_val, Generation) and not isnstance(return_val, ChatGeneration):
# ....
But didnt do the trick
描述另一种解决方案。
- 无响应*
其他事项(附加上下文)
感谢您的时间和工作!
6条答案
按热度按时间fv2wmkja1#
其他缓存是否能正常工作,例如SQLite缓存?
44u64gxh2#
我不确定是否是因为langchain修改了某些内容导致缓存无法正常工作,或者是由于其他原因。因为GPTCache之前是基于langchain提供的接口实现的缓存功能,现在可能存在不兼容的情况。
kqqjbcuj3#
对于聊天模型,LangChain是从
langchain.chat_models.base.BaseChatModel
继承而来的,而不是从langchain.llms.base.BaseLLM
继承而来的。9udxz4iz4#
@Sendery 我想检查一下这个问题是否已经解决或修复?
pxq42qpu5#
你的意思是说,现在langchain中的gptcache不能正常工作吗?
参考:https://python.langchain.com/docs/modules/model_io/models/llms/integrations/llm_caching#gptcache
5anewei66#
如果使用这个语言链实现:
那么它可以工作,但是对于更复杂的查询和提示模板的使用:
GPTCache不支持langchain.schema.ChatGeneration。