type
Post
status
Published
date
Nov 7, 2025
slug
summary
tags
人工智能
prompt
category
技术分享
icon
password
ConversationChain(已废弃)
ConversationChain 是 LangChain 早期用于简化对话管理的类,内部集成了内存(如 ConversationBufferMemory)和提示模板,适合快速构建简单对话应用。
然而,它存在以下问题:
- 灵活性不足:提示模板和内存管理逻辑较为固定,难以支持复杂对话流程。
- 与新 API 不兼容:未针对现代聊天模型(如支持工具调用的模型)优化。
- 架构过时:LangChain 0.3.x 推崇基于 LangChain Expression Language(LCEL)和 Runnable 的模块化设计,ConversationChain 不符合这一理念。
RunnableWithMessageHistory 是 LangChain 推荐的替代方案,优势包括:
- 模块化:允许自由组合提示模板、模型和内存管理逻辑。
- 灵活性:支持自定义对话历史存储(如内存、数据库)和复杂对话流程。
- 兼容性:与 LCEL 和现代聊天模型无缝集成。
- 长期支持:在 LangChain 0.3.x 中稳定,且不会在 1.0 中移除。
RunnableWithMessageHistory:是 LangChain 推荐的conversationChain的替代方案
优势包括:
- 模块化:允许自由组合提示模板、模型和内存管理逻辑。
- 灵活性:支持自定义对话历史存储(如内存、数据库)和复杂对话流程。
- 兼容性:与 LCEL 和现代聊天模型无缝集成。
- 长期支持:在 LangChain 0.3.x 中稳定,且不会在 1.0 中移除。 举例RunnableWithMessageHistory:以promptTemplate为例
代码说明:
- 提示模板:使用 ChatPromptTemplate 显式定义,包含系统消息、MessagesPlaceholder(对话历史)和用户输入。
- Runnable:通过 LCEL(prompt | llm)创建核心对话逻辑。
- ChatMessageHistory:替代 ConversationBufferMemory,存储对话历史。store 是一个简单的内存字典,key 为 session_id。
- RunnableWithMessageHistory:包装 runnable,自动管理对话历史,input_messages_key 和 history_messages_key 对应提示模板中的变量名。
- session_id:用于区分不同用户的会话,类似 LangGraph 的 thread_id。
报错:NotImplementedError: get_num_tokens_from_messages() is not presently implemented for model deepseek-chat. See https://platform.openai.com/docs/guides/text-generation/managing-tokens for information on how messages are converted to tokens.
原因:当 token_counter=llm 时,LangChain 会调用模型对象的 get_num_tokens_from_messages() 方法。由于你使用的是 ChatOpenAI 包装的 DeepSeek,LangChain 的底层代码会尝试用 OpenAI 的 tiktoken 库来计算 Token。但因为模型名称是 deepseek-chat 而不是 gpt-3.5-turbo 等标准名称,tiktoken 无法识别,从而抛出“未实现”的错误。
解决办法:使用tiktoken自定义token计算方法
- Author:guderain
- URL:https://wangguanxi.space/article/2e02b727-a3a3-80dc-84df-e243c3ef25e9
- Copyright:All articles in this blog, except for special statements, adopt BY-NC-SA agreement. Please indicate the source!
Relate Posts


.webp?table=collection&id=92be88af-5f71-4631-9d3e-ee3bd53dcced&t=92be88af-5f71-4631-9d3e-ee3bd53dcced&width=1080&cache=v2)