使用月之暗面存储摘要历史记录时报错

使用月之暗面存储摘要历史记录时报错

问题描述:

我在调用ConversationSummaryBufferMemory时用的月之暗面模型,在保存历史信息时报这个错误:get_num_tokens_from_messages() is not presently implemented for model cl100k_base.不知道是什么情况


相关截图:

https://img1.sycdn.imooc.com/climg/66fe96a6094951e114280397.jpg

正在回答

登陆购买课程后可参与讨论,去登陆

2回答

这是因为tiktoken并没有针对所有的大语言模型都配置了词表,在LLM的底层_get_encoding_model()找不到对应的词表导致的错误,如果想解决这个问题,可以重写下_get_encoding_model()这个方法,例如:

def _get_encoding_model(self) -> Tuple[str, tiktoken.Encoding]:
    model = "cl100k_base"
    encoding = tiktoken.get_encoding(model)
    return model, encoding

这样就可以解决问题啦(本质上是LangChain封装不完善+很多LLM没有提供词表导致的bug)~

慕婉清1503426 2025-03-23 22:26:34

可以重写ConversationSummaryBufferMemory类中的prune方法,改成以下这种,注意导入tiktoken,HumanMessage,AIMessage

() -> :
    buffer = .chat_memory.messages
    text = .join(msg.content msg buffer (msg, (HumanMessage, AIMessage)))
    encoding = tiktoken.get_encoding()
    curr_buffer_length = (encoding.encode(text))
    curr_buffer_length > .max_token_limit:
        pruned_memory = []
        curr_buffer_length > .max_token_limit:
            pruned_memory.append(buffer.pop())
            curr_buffer_length = .llm.get_num_tokens_from_messages(buffer)
        .moving_summary_buffer = .predict_new_summary(
            pruned_memory, .moving_summary_buffer
        )


  • 更正

    () -> :
        buffer = .chat_memory.messages
        text = .join(msg.content msg buffer (msg, (HumanMessage, AIMessage)))
        encoding = tiktoken.get_encoding()
        curr_buffer_length = (encoding.encode(text))
        curr_buffer_length > .max_token_limit:
            pruned_memory = []
            curr_buffer_length > .max_token_limit:
                pruned_memory.append(buffer.pop())
                text = .join(msg.content msg buffer (msg, (HumanMessage, AIMessage)))
                curr_buffer_length = (encoding.encode(text))
            .moving_summary_buffer = .predict_new_summary(
                pruned_memory, .moving_summary_buffer
            )


    2025-03-23 22:45:28
问题已解决,确定采纳
还有疑问,暂不采纳

恭喜解决一个难题,获得1积分~

来为老师/同学的回答评分吧

0 星
AI Agent 全栈开发工程师
  • 参与学习       500    人
  • 解答问题       404    个

全流程打造你自己的(Coze/Dify)低代码智能体开发平台;2025年入行正当时,企业急需,人才稀缺,竞争小;无论入行还是转行,首选口碑好课,门槛低、成长高

了解课程
请稍等 ...
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号

在线咨询

领取优惠

免费试听

领取大纲

扫描二维码,添加
你的专属老师