news 2026/5/16 11:28:12

ChatMessageHistory组件

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
ChatMessageHistory组件

BaseChatMessageHistory

把记忆功能集成到LLM应用中,会设计到两个核心问题:存储的历史信息是什么?如何检索与处理历史信息?
在Langchain中,一个记忆类是由历史消息的存储与记忆的处理逻辑两个部分组成。

LangChain封装了一个管理历史信息的基类—BaseChatMessageHistory,这是一个抽象类。用于管理历史消息,涵盖了对消息的多种管理:添加消息、消息历史信息、查看历史消息列表、查看历史消息文本等。

并且所有扩展的消息历史组件均继承BaseChatMessageHistory(包括自定义消息历史组件)。

BaseChatMessageHistory及子类如下,其中InMemoryChatMessageHistory是langchain_core包中内置对话消息历史类,可以将对话消息存储到临时内存中,而其他第三方集成的聊天消息历史组件均通过langchain_community包进行导入。


第三方 ChatMessageHistory 组件集成: https://python.langchain.com/v0.2/docs/integrations/memory/

聊天消息历史组件实现记忆功能

FileChatMessageHistory会将对话历史存储到本地的文件中,可以使用这个记忆组件结合源生的OpenAi SDK来实现命令行界面实现带有记忆功能的对话功能,并且关闭某次对话,下次运行代码,读取到对应的文件时,仍然可以记忆之前的对话的内容

实现代码:

importdotenvfromopenaiimportOpenAIfromlangchain_community.chat_message_historiesimportFileChatMessageHistoryfromlangchain_core.messagesimportHumanMessage,AIMessage HUMAN_MESSAGE=HumanMessage dotenv.load_dotenv()# 1. 创建客户端&记忆client=OpenAI(base_url='https://api.xty.app/v1')chat_history=FileChatMessageHistory('./memory.txt')# 转换历史消息格式defconvert_history():openai_messages=[]formsginchat_history.messages:ifisinstance(msg,HUMAN_MESSAGE):openai_messages.append({"role":"user","content":msg.content})elifisinstance(msg,AIMessage):openai_messages.append({"role":"assistant","content":msg.content})returnopenai_messages# 2. 循环对话whileTrue:# 3.获取用户输入query=input('Human:')# 4.检测用户是否退出对话ifquery=='q':exit(0)# 5.发起聊天对话print("AI:",flush=True,end="")history_messages=convert_history()messages=[{"role":"system","content":"你是OpenAI开发的ChatGPT聊天机器人,可以根据上下文回复用户信息。"},*history_messages,# 展开历史对话{"role":"user","content":query}]response=client.chat.completions.create(model='gpt-3.5-turbo-16k',messages=messages,stream=True,)ai_content=""forchunkinresponse:content=chunk.choices[0].delta.contentifcontentisNone:breakai_content+=contentprint(content,flush=True,end="")chat_history.add_user_message(query)chat_history.add_ai_message(ai_content)print("")
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/5/16 11:20:44

VS Code AI编程实战:Codeium插件从安装到复杂算法生成

1. Codeium插件安装与配置 第一次接触Codeium时,我被它"基于边缘计算的代码AI工具"这个描述吸引了。作为一个经常在VS Code里折腾各种插件的开发者,我决定亲自试试这个支持70多种编程语言的智能助手。安装过程比想象中简单得多,完全…

作者头像 李华
网站建设 2026/5/16 11:20:12

芯片测试背后的精密工艺:老化座与测试座定制新趋势

半导体行业在不断突破技术瓶颈,对芯片测试的要求也越来越高。在这个过程中,芯片测试座和老化座作为关键设备,扮演着至关重要的角色。本文将深入探讨芯片测试座和老化座的最新发展趋势,并通过具体案例和数据来展示深圳德诺嘉电子有…

作者头像 李华
网站建设 2026/5/16 11:20:12

“有手就行“幻觉:AI红利为什么让更多人更焦虑了

斯坦福这门课"现代软件开发者"Vibe Coding课程,在课程表曝光后,很多人失望了:prompt engineering、context engineering、代码审查、安全攻防—— 全是硬课。不是"不用学",是"换了一种学"。不是不用…

作者头像 李华
网站建设 2026/5/16 11:19:08

FPGA并行FIR滤波器设计:50MHz实时信号处理与Verilog实现

1. 项目概述与设计目标在数字信号处理(DSP)的硬件实现领域,FIR(有限长单位冲激响应)滤波器因其绝对稳定性和易于实现线性相位的特性,成为工程师手中的一把“瑞士军刀”。无论是通信系统中的信道均衡、音频处…

作者头像 李华