GPTCache 增强功能:支持langchain.schema.ChatGeneration,

30byixjq  于 2个月前  发布在  其他
关注(0)|答案(6)|浏览(46)

您的功能请求是否与问题相关?请描述。

我正在使用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

描述另一种解决方案。

  • 无响应*

其他事项(附加上下文)

感谢您的时间和工作!

fv2wmkja

fv2wmkja1#

其他缓存是否能正常工作,例如SQLite缓存?

44u64gxh

44u64gxh2#

我不确定是否是因为langchain修改了某些内容导致缓存无法正常工作,或者是由于其他原因。因为GPTCache之前是基于langchain提供的接口实现的缓存功能,现在可能存在不兼容的情况。

kqqjbcuj

kqqjbcuj3#

对于聊天模型,LangChain是从langchain.chat_models.base.BaseChatModel继承而来的,而不是从langchain.llms.base.BaseLLM继承而来的。

9udxz4iz

9udxz4iz4#

@Sendery 我想检查一下这个问题是否已经解决或修复?

pxq42qpu

pxq42qpu5#

你的意思是说,现在langchain中的gptcache不能正常工作吗?
参考:https://python.langchain.com/docs/modules/model_io/models/llms/integrations/llm_caching#gptcache

5anewei6

5anewei66#

如果使用这个语言链实现:

import langchain
from langchain.llms import OpenAI

# To make the caching really obvious, lets use a slower model.
llm = OpenAI(model_name="text-davinci-002", n=2, best_of=2)

#####

langchain.llm_cache = GPTCache(init_gptcache)

llm("Tell me a joke") # simple query to the llm
# This query uses/returns  langchain.schema.Generation

那么它可以工作,但是对于更复杂的查询和提示模板的使用:

import langchain

chat_chain=langchain.LLMChain(
    llm=ChatOpenAI(model="gpt-3.5-turbo",temperature=0,cache=True), 
    prompt=prompt_template, 
    verbose=True, 
)

langchain.llm_cache= GPTCache(init_gptcache)
chat_chain.predict(prompt_template_input_text_1="Tell me a joke",
                                 prompt_temlpate_input_text_2=contex_embeddings) # More 'complex' query
# This query uses/returns langchain.schema.ChatGeneration

GPTCache不支持langchain.schema.ChatGeneration。

相关问题