LangChain——通过Memory记住历史对话的内容

langchain主要模块(四):Memory 默认情况下,链式模型和代理模型都是无状态的,这意味着它们将每个传入的查询独立处理(就像底层的 LLMs 和聊天模型本身一样)。在某些应用程序中,比如聊天机器人,记住先前的交互是至关重要的。无论是短期还是长期,都要记住先前的交互。**Memory** 类正是做到了这一点。 LangChain 提供了两种形式的记忆组件。首先,LangChain 提供了用于管理和操作以前的聊天消息的辅助工具。这些工具被设计成模块化的,无论如何使用都很有用。其次,LangChain 提供了将这些工具轻松整合到链式模型中的方法。 阅读详情
AI摘要

本文介绍了LangChain的记忆模块,探讨了对话系统中记忆的重要性及其实现方式,包括如何存储和查询状态,展示了如何使用ConversationBufferMemory类实现简单的对话记忆。

1. Memory 记忆

在这里插入图片描述
大多数LLM应用程序都有对话界面。对话的一个重要组成部分是能够引用先前在对话中介绍的信息。最基本的是,对话系统应该能够直接访问某些过去的信息窗口。更复杂的系统将需要具有一个世界模型,它不断更新,这使它能够维护有关实体及其关系的信息。

我们称这种存储关于过去交互的信息的能力为“记忆”。LangChain为系统添加记忆提供了许多实用工具。这些实用工具可以单独使用,也可以无缝地整合到链中。

记忆系统需要支持两个基本操作:读取和写入。请记住,每个链定义了一些核心执行逻辑,期望某些输入。其中一些输入直接来自用户,但一些输入可以来自记忆。链将在给定运行中两次与其记忆系统交互。

  1. 在接收到初始用户输入但在执行核心逻辑之前,链将从其记忆系统中读取并增强用户输入。
  2. 在执行核心逻辑但在返回答案之前,链将把当前运行的输入和输出写入记忆中,以便在将来的运行中可以引用它们。

2. 将内存构建到系统中

在任何内存系统中的两个核心设计决策是:

  • 状态如何存储
  • 状态如何查询

2.1 存储:聊天消息列表

任何记忆的基础都是所有聊天互动的历史。即使这些并非全部直接使用,也需要以某种形式存储。LangChain记忆模块的关键部分之一是一系列用于存储这些聊天消息的集成,从内存列表到持久性数据库。

2.2 查询:在聊天消息之上的数据结构和算法

保留聊天消息列表相当简单。不太简单的是建立在聊天消息之上的数据结构和算法,以便提供最有用的消息视图。

一个非常简单的记忆系统可能只返回每次运行最近的消息。一个稍微复杂一点的记忆系统可能会返回过去K条消息的简明总结。一个更复杂的系统可能会从存储的消息中提取实体,并且只返回当前运行中涉及的实体信息。

每个应用程序对于如何查询记忆都可能有不同的要求。记忆模块应该让简单的记忆系统易于入门,并且如果需要,也能够编写自定义系统。

3. 代码实现

让我们来看看LangChain中Memory实际上是什么样子。在这里,我们将介绍与任意记忆类互动的基础知识。

让我们来看看如何在链中使用ConversationBufferMemory。ConversationBufferMemory是记忆的一种极其简单的形式,它只是在缓冲区中保留聊天消息的列表,并将其传递到提示模板中。

from langchain.memory import ConversationBufferMemory

memory = ConversationBufferMemory()
memory.chat_memory.add_user_message("hi!")
memory.chat_memory.add_ai_message("what's up?")

在使用链式内存时,有一些关键概念需要理解。请注意,这里我们涵盖了对大多数类型的内存都有用的一般概念。每种个别的内存类型可能都有自己必须理解的参数和概念。

3.1 从内存中返回哪些变量

在进入链之前,会从内存中读取各种变量。这些变量有特定的名称,需要与链期望的变量相匹配。您可以通过调用memory.load_memory_variables({})来查看这些变量是什么。请注意,我们传入的空字典只是真实变量的占位符。如果您使用的内存类型依赖于输入变量,您可能需要传入一些变量。

print(memory.load_memory_variables({}))

输出结果

    {'history': "Human: hi!\nAI: what's up?"}

在这种情况下,您可以看到load_memory_variables返回一个名为history的key。这意味着您的链条(很可能是您的提示)应该期望一个名为history的输入。通常您可以通过内存类的参数来控制这个变量。例如,如果您希望将内存变量返回到键chat_history中,您可以这样做:

from langchain.memory import ConversationBufferMemory

memory = ConversationBufferMemory(memory_key="chat_history")
memory.chat_memory.add_user_message("hi!")
memory.chat_memory.add_ai_message("what's up?")

print(memory.load_memory_variables({}))

输出结果

    {'chat_history': "Human: hi!\nAI: what's up?"}

这些键的控制参数名称可能因内存类型而异,但重要的是要明白:(1)这是可控的,(2)如何控制它。

3.2 Memory是string字符串还是chat list消息列表

最常见的记忆类型之一涉及返回聊天消息列表。这些可以作为单个字符串返回,全部连接在一起(当它们将被传递到LLMs时很有用),或者作为ChatMessages列表返回(当它们被传递到ChatModels时很有用)。

默认情况下,它们作为单个字符串返回。为了返回消息列表,您可以设置return_messages=True

from langchain.memory import ConversationBufferMemory

memory = ConversationBufferMemory(memory_key="chat_history", return_messages=True)
memory.chat_memory.add_user_message("hi!")
memory.chat_memory.add_ai_message("what's up?")

print(memory.load_memory_variables({}))

输出结果

 {'chat_history': [HumanMessage(content='hi!', additional_kwargs={}, example=False),
  AIMessage(content='what's up?', additional_kwargs={}, example=False)]}

3.3 什么Keys保存在内存中

通常情况下,链条会接收或返回多个输入/输出键。在这种情况下,我们如何知道要保存哪些键到聊天消息历史记录中?这通常可以通过内存类型的input_key和output_key参数来控制。这些参数默认为None-如果只有一个输入/输出键,则可以直接使用它。但是,如果有多个输入/输出键,则必须指定要使用哪一个的名称。

最后,让我们来看看如何在一个链中使用这个。我们将使用LLMChain,并展示如何同时使用LLM和ChatModel。

# 导入 Langchain 库的 ChatOpenAI 类,用于与 OpenAI 聊天模型进行交互。
from langchain.chat_models import ChatOpenAI

# 导入 Langchain 库的不同提示模板类,用于构建会话提示。
from langchain.prompts import (
    ChatPromptTemplate,
    MessagesPlaceholder,
    SystemMessagePromptTemplate,
    HumanMessagePromptTemplate,
)

# 导入 Langchain 的 LLMChain 类,用于创建语言模型链。
from langchain.chains import LLMChain

# 导入 Langchain 的 ConversationBufferMemory 类,用于存储和管理会话记忆。
from langchain.memory import ConversationBufferMemory

# 导入 dotenv 库,用于从 .env 文件加载环境变量,管理敏感数据,如 API 密钥。
from dotenv import load_dotenv  

# 调用 load_dotenv 函数来加载 .env 文件中的环境变量。
load_dotenv()  

# 创建 ChatOpenAI 的实例。
llm = ChatOpenAI()

# 创建聊天提示模板,包含一个系统消息、一个聊天历史占位符和一个人类消息模板。
prompt = ChatPromptTemplate(
    messages=[
        SystemMessagePromptTemplate.from_template(
            "You are a nice chatbot having a conversation with a human."
        ),
        MessagesPlaceholder(variable_name="chat_history"),
        HumanMessagePromptTemplate.from_template("{question}")
    ]
)

# 创建一个会话记忆,用于存储和返回会话中的消息。
memory = ConversationBufferMemory(memory_key="chat_history", return_messages=True)

# 创建一个 LLMChain 实例,包括语言模型、提示、详细模式和会话记忆。
conversation = LLMChain(
    llm=llm,
    prompt=prompt,
    verbose=True,
    memory=memory
)

# 使用会话链处理第一个问题,并打印回应。
response = conversation({"question": "hi"})
print(response)

# 使用相同的会话链处理第二个问题,并打印回应。
response = conversation({"question": "how are you?"})
print(response)


输出

zgpeace at zgpeaces-MBP in ~/Workspace/LLM/langchain-llm-app (develop●) (.venv) 
$ python Memory/memory_theory.py

> Entering new LLMChain chain...
Prompt after formatting:
System: You are a nice chatbot having a conversation with a human.
Human: hi

> Finished chain.
{'question': 'hi', 'chat_history': [HumanMessage(content='hi'), AIMessage(content='Hello! How can I assist you today?')], 'text': 'Hello! How can I assist you today?'}

> Entering new LLMChain chain...
Prompt after formatting:
System: You are a nice chatbot having a conversation with a human.
Human: hi
AI: Hello! How can I assist you today?
Human: how are you?

> Finished chain.
{'question': 'how are you?', 'chat_history': [HumanMessage(content='hi'), AIMessage(content='Hello! How can I assist you today?'), HumanMessage(content='how are you?'), AIMessage(content="Thank you for asking! As an AI, I don't have feelings, but I'm here to help you. How can I assist you today?")], 'text': "Thank you for asking! As an AI, I don't have feelings, but I'm here to help you. How can I assist you today?"}

在这里插入图片描述

代码
https://github.com/zgpeace/pets-name-langchain/tree/develop

​

如何学习大模型

现在社会上大模型越来越普及了,已经有很多人都想往这里面扎,但是却找不到适合的方法去学习。

作为一名资深码农,初入大模型时也吃了很多亏,踩了无数坑。现在我想把我的经验和知识分享给你们,帮助你们学习AI大模型,能够解决你们学习中的困难。

我已将重要的AI大模型资料包括市面上AI大模型各大白皮书、AGI大模型系统学习路线、AI大模型视频教程、实战学习,等录播视频免费分享出来,需要的小伙伴可以扫取。

img

一、AGI大模型系统学习路线

很多人学习大模型的时候没有方向,东学一点西学一点,像只无头苍蝇乱撞,我下面分享的这个学习路线希望能够帮助到你们学习AI大模型。

在这里插入图片描述

二、AI大模型视频教程

在这里插入图片描述

三、AI大模型各大学习书籍

在这里插入图片描述

四、AI大模型各大场景实战案例

在这里插入图片描述

五、结束语

学习AI大模型是当前科技发展的趋势,它不仅能够为我们提供更多的机会和挑战,还能够让我们更好地理解和应用人工智能技术。通过学习AI大模型,我们可以深入了解深度学习、神经网络等核心概念,并将其应用于自然语言处理、计算机视觉、语音识别等领域。同时,掌握AI大模型还能够为我们的职业发展增添竞争力,成为未来技术领域的领导者。

再者,学习AI大模型也能为我们自己创造更多的价值,提供更多的岗位以及副业创收,让自己的生活更上一层楼。

因此,学习AI大模型是一项有前景且值得投入的时间和精力的重要选择。

LangChain的Memory的4种用法(一) LangChain是一个基于语言模型开发应用程序的开源框架,用于构建基于大语言模型(LLMs)的端到端语言模型应用。它的核心理念是为各种大语言模型应用提供通用的接口,简化开发过程,并提供一套工具、组件和接口来创建由LLMs和聊天模型支持的应用程序。LangChain提供了多种组件来简化我们开发大语言模型应用的难度,本文来介绍其中Memory的使用方式。 阅读详情

相关推荐

LangChain-记忆系统 (Memory)

在构建对话式AI应用时,能够记住上下文和之前的交互至关重要。存储对话历史:保存之前的消息交换管理上下文窗口:控制传递给模型的上下文量提取相关信息:从历史中选择重要信息处理长期记忆:管理超出上下文窗口的信息# 创建摘要记忆llm=ChatOpenAI(), # 用于生成摘要的模型# 使用摘要记忆summary_memory.chat_memory.add_user_message("你好!我叫李明,我是一名软件工程师。")

1.大规模企业集群服务开发和服务架构设计,性能优化等经验。 2.企业级数据仓库0-1落地经验。 1800

LangChain 16 通过Memory记住历史对话的内容

大多数LLM应用程序都有对话界面。对话的一个重要组成部分是能够引用先前在对话中介绍的信息。最基本的是,对话系统应该能够直接访问某些过去的信息窗口。更复杂的系统将需要具有一个世界模型,它不断更新,这使它能够维护有关实体及其关系的信息。我们称这种存储关于过去交互的信息的能力为“记忆”。LangChain为系统添加记忆提供了许多实用工具。这些实用工具可以单独使用,也可以无缝地整合到链中。记忆系统需要支持两个基本操作:读取和写入。请记住,每个链定义了一些核心执行逻辑,期望某些输入。

AI架构师易筋 5747

Langchain里的“记忆力”,让AI只记住有用的事

今天要讲以下内容:1.ConversationBufferWindowMemory:基于一个固定长度的滑动窗口的“记忆”功能2.ConversationSummaryMemory:总结对话“记忆”功能3.ConversationSummaryBufferMemory:上面两个的结合,超过一定token限制之前以对话形式进行存储,超过之后进行小结存储。4.memory.save_context:有上下文对话,可以通过此插入对话内容,可供后续对话内容。

dfBeautifulLive的博客 2916

【LangChain】Memory

本篇讲解 聊天的历史记录: 如何存储、如何查询。这里是使用类来完成存储和查询的。# 构建一个memory# 关联大模型llm=llm,# 查询# 请注意,我们只是传入“question”变量 - “chat_history”由memory填充公开两种方法和一个属性。它公开的两个方法是和,用于存储来自用户的消息和相应的 AI 响应。它公开的属性是message属性,用于访问所有以前的消息。

山鬼谣的专栏 1866

langchain中memory之短期记忆

memory.save_context(_input, {"output":"牛逼啊"}): 这是一个记忆类,专门用于跟踪和记住对话中提到的实体(如人名、地点等)创建了一个输入字典,包含键"input"和值"hello world"处理一段简单的对话("hello world" -> "牛逼啊")第二个参数是AI的响应({"output":"牛逼啊"})这条消息("output")也会被存储在记忆缓冲区中。这条消息("你好我是人类")会被存储在记忆缓冲区中。,这次传入不同的输入("aaaaaa")

2301_78025635的博客 713

【LangChain学习之旅】—(11) 记忆:通过Memory记住用户上次的对话细节

今天介绍了一种对话链和四种类型的对话记忆机制,那么我们可以通过一个表格对这四种类型的记忆做一个整体比较。四种记忆机制的比较如下:网上还有人总结了一个示意图,体现出了当对话轮次逐渐增加时,各种记忆机制对 Token 的消耗数量。意图向我们表达的是:有些记忆机制,比如说 ConversationSummaryBufferMemory 和 ConversationSummaryMemory,在对话轮次较少的时候可能会浪费一些 Token,但是多轮对话过后,Token 的节省就逐渐体现出来了。

我们都是被分成两半的人,一边热爱生活,一边憎恨生活。面对生活,我们总是在矛盾的两端摇摆,在反复的矛盾和犹豫中,一边踉跄前行,一边重振旗鼓。我渴望改变,渴望变得更好,渴望找到出口……就像一个溺水人的挣扎,就像一个救生圈。我是一个矛盾集合体,想要变得快乐,但是 2156

LangChain快速筑基(带代码)P3-连续对话Memory

摘要 本文介绍了LangChain中的Memory组件功能及其在多轮对话中的应用。Memory通过存储和加载历史对话内容,使大模型能够保持上下文连贯性。文章重点演示了两种基础Memory类型: ConversationBufferMemory - 完整记录所有历史对话,适用于需要完整上下文的场景。代码示例展示了如何初始化内存、创建对话链并进行多轮对话测试。 ConversationBufferWindowMemory - 只保留最近的K轮对话,防止上下文过长。文中提供了转换到窗口内存的方法,但完整代码未展示

啾啾头号大粉丝打工买粮博客 909

Snort源代码编译 _ 采坑之旅(for Windows VS2015)

    系统环境:Windows7 sp1 x64     编译环境:VS2015 SP1     Snort版本:2.9.12     daq版本:2.0.6     Snort官网:https://www.snort.org/downloads#snort-downloads 背景     最近需要实现一个类似网络防火墙的产品,主要参考Snort源码,先花了点时间简单读了下网上比较流行的《...

magictong的专栏 8888

LangChain Memory全攻略:让大模型记住对话历史,打造智能对话系统

本文详细介绍了LangChain中的Memory机制,用于解决大模型无记忆能力的问题。文章从基础概念出发,系统讲解了ChatMessageHistory、RunnableWithMessageHistory、ConversationBufferMemory、ConversationBufferWindowMemory和ConversationEntityMemory等多种Memory实现方式,并通过代码示例展示了如何在单用户和多用户场景中实现记忆功能,帮助开发者构建具有连续对话能力的AI应用。

2401_85325726的博客 1504

手把手教你用FreeModbus RTU协议栈实现STM32与PLC通信(附Keil工程)

本文详细介绍了如何使用FreeModbus RTU协议栈在STM32上实现与PLC的工业通信。从环境搭建、工程配置到关键移植接口实现,提供了Keil工程模板和调试技巧,帮助开发者快速掌握Modbus RTU通信技术,适用于工业自动化领域的设备间通信需求。

weixin_42549037的博客 419

【毕设】基于LoRa的物联网控制器:从原理图到PCB的完整硬件设计指南

本文提供了一份完整的基于LoRa的物联网控制器硬件设计指南,涵盖从系统框图、原理图设计到PCB布局布线的全流程。详细讲解了电源电路、单片机最小系统、信号接口以及LoRa无线模块等核心模块的设计要点与抗干扰技巧,并分享了实用的调试心得,旨在帮助电子、物联网专业学生顺利完成毕业设计,掌握低功耗远距离物联网节点的硬件开发实践。

weixin_42126677的博客 306

LangChain 教程(三):记忆组件(Memory)—— 让大模型记住对话上下文

让我们的模型拥有记忆功能,LangChain 0.2.x 版本的记忆组件通过 RunnableWithMessageHistory 实现了更灵活的会话管理,结合 InMemoryChatMessageHistory、窗口记忆、摘要记忆等工具,可满足从简单对话到复杂场景的记忆需求。核心是根据对话长度和信息重要性选择合适的记忆策略,并通过 session_id 实现多用户隔离。

新人制作,若有问题,请私聊我,或评论区 2122

手把手教你打造CTF动态靶场

公司想搞一个CTF比赛,需要一个竞赛靶场,于是这个任务就落在了我的身上,平台是利用CTFd框架,基于docker搭建的动态靶场,搭建过程中遇到的坑比较多,这里我会把每一个遇到的坑都指出来。我搭建的是CTFd的3.X的版本。第一次搭建的话,搭建的过程会有些痛苦,但是搭建完成后会越来越熟练,这个平台的可用性还是很高的。由于搭建的过程中遇到的坑太多了,各种各样的问题,所以决定写下这篇文章,把所有的坑都指出来,也算为后边想搭这个平台的小伙伴指一条路。Taps:资源来源:星海安全实验室如果你也对网络安全&黑客。

Python栈 4934

Langchain Memory组件深度剖析:从对话基础到高级链式应用

Langchain框架中的Memory组件是构建智能对话系统的基石,它们不仅存储和管理对话信息,还促进上下文理解和对话连续性。本文深入探讨Memory组件的多样类型,如ChatMessageHistory记录对话历史,ConversationBufferMemory管理对话缓冲区,ConversationKGMemory通过知识图谱增强智能。同时,长时记忆机制在Langchain中占据重要地位,助力AI系统实现持续学习和记忆。

啊猪是的读来过倒的博客 2807

【python数据处理】python实现vlookup字符串模糊匹配及在实战中的应用(FuzzyWuzzy库)

利用FuzzyWuzzy库匹配字符串1. 背景前言2. FuzzyWuzzy库介绍2.1 安装2.1 fuzz模块2.1.1 简单匹配(Ratio)2.1.2 非完全匹配(Partial Ratio)2.1.3 忽略顺序匹配(Token Sort Ratio)2.1.4 去重子集匹配(Token Set Ratio)2.2 process模块2.2.1 extract提取多条数据2.2.2 extractOne提取一条数据3. pandas实战应用3.1 公司名称字段模糊匹配3.1.1 参数讲解:3.1.2

lys_828的博客 8322

LeRobot 入门教程(十六)Isaac Lab LeIsaac 叠衣服、夹橙子仿真环境

LeRobotEnvHub现已支持通过LeIsaac进行机器人模仿学习,提供摘橙子、搬立方体等日常任务仿真环境。用户可通过HuggingFace共享环境,使用一行代码加载任务,支持随机动作测试和远程操控。系统提供云端仿真方案,无需本地GPU即可运行。当前支持4种任务环境,通过make_env函数切换,其中折叠布料任务需先调用initialize()函数。该平台集成了数据采集、转换和训练全流程,为机器人学习提供便捷工具链。

2506_90492529的博客 1483

如何在LangChain的agent中记录对话历史

LangChain在早期曾推迟过Memory模块,但Memory模块目前被官方标记为beta版本,说是并为这边好投入生产,而且也不支持最新的LCEL语法,但是ChatMessageHistory这个功能是个例外,它已经支持LCEL并且基本可以用在生产上了,所以我们今天说下如何使用ChatMessageHistory让我们的agent记录下对话历史,实现多轮对话。首先还是来创建基本的agent,这里我们就创建一个简单的对话agent,如果你想创建具备某些功能的复杂agent,可以参考我之前两篇实践文章。

xindoo 4109

YOLOv8改进策略【卷积层】| CVPR-2023 部分卷积 PConv 轻量化卷积,降低内存占用

本文记录的是利用优化的目标检测方法研究。深度可分离卷积可以减少FLOPs,但会导致更高的内存访问,引起延迟并减慢整体计算。部分卷积利用逐点卷积处理通道冗余,减少模型计算量和内存访问量。Run, Don’t Walk: Chasing Higher FLOPS for Faster Neural Networks及其改进的实现代码如下: 四、创新模块 4.1 改进点⭐ 模块改进方法:直接加入(第五节讲解添加步骤)。模块加入如下:模块改进方法:基于的(第五节讲解添加步骤)。第二种改进方法是对中的进行改进,并将

Limiiiing的博客 1016

LangChain之Memory

在 LangChain 中,Memory(记忆) 是用于在多轮对话或连续任务中保存和管理上下文信息的核心组件。它解决了大模型 “无状态” 的问题 —— 默认情况下,模型无法记住前序对话内容,而 Memory 能将历史交互数据(如用户提问、模型回答)存储起来,供后续步骤调用,从而实现连贯的多轮对话或任务上下文依赖。 例如,在聊天机器人场景中,用户说 “帮我推荐一本科幻小说”,模型推荐《三体》后,用户接着问 “它的作者是谁”——Memory 会保存 “推荐《三体》” 的历史,让模型知道 “它” 指《三体》,而非

weixin_53231049的博客 2077

常用元器件使用方法13:物理层接口芯片DP83848的使用方法

介绍: DP83848是以太网物理层接口芯片,具有多种型号,从便于焊接角度考虑LQFP-48封装较为合适,采用LQFP-48封装的芯片,有2种型号,分别为DP83848I和DP83848C,如下图所示。 其主要区别是使用温度不同,如下图所示。 这2种芯片芯片网上均有销售,按理说DP83848C价格应该更加便宜,实际不然,DP83848I的价格低于DP83848C,考虑或与芯片的出货量...

snmplink的博客 1万+

IEM模型,地表粗糙度模拟

利用微波反演土壤水分时候,利用IEM模型可以实现对随机地表的模拟

Langchain学习笔记(十二):Memory机制与对话管理

在构建智能对话系统时,记忆功能是至关重要的。想象一下,如果每次与AI对话都像第一次见面一样,无法记住之前的交流内容,这样的体验将是多么糟糕。LangChain的Memory机制正是为了解决这个问题而设计的,它让AI能够"记住"对话历史,从而提供更加连贯和个性化的交互体验。Memory(记忆)在LangChain中是一个核心概念,它就像人类的记忆系统一样,负责在对话过程中存储、管理和检索历史信息。Memory的核心作用。

zhangsan0933的博客 1107

文档:亲测可用解决vnc灰屏,黑屏,鼠标大黑叉情况

主要解决vnc-viewer灰屏,黑屏,鼠标大黑叉等现象,详细见文档。

【收藏必备】LangChain Memory全面解析:实现LLM对话历史管理的6种方法

本文介绍了LangChain中的Memory机制,包括ChatMessageHistory、RunnableWithMessageHistory等多种实现方式,用于存储和管理对话历史数据。通过代码示例展示了如何利用这些机制实现LLM的多轮对话、状态跟踪和个性化体验。文章详细讲解了如何初始化聊天模型、设置提示词模板、管理单用户/多用户对话历史,以及使用RunnableWithMessageHistory自动记录对话历史。这些功能使无记忆的LLM能够记住历史交互,提供更连贯、智能的对话服务。 (149字)

优快云_224022的博客 676

老版QQ原生表情gif动态

这是老版的QQ表情,不过全是动态的的,Windows照片查看器是不会动的,可以右击用浏览器打开查看,再说一遍是老版的,只是分享给宁愿用老版也要动态的人。

廖雪峰Python教程[完整版]

廖雪峰的python教程整理的,已经排好版了,而且还是完整的,适合小白

LangChain手记 Memory

使用open ai的API调用GPT都是单次调用,所以模型并不记得之前的对话,多轮对话的实现其实是将前面轮次的对话过程保留,在下次对话时作为输入的message数组的一部分,再将新一轮对话的提问也放入message数组,再发起一次API调用,即构手动建对话流(以上笔者注)。方法构建对话历史(笔者注:此时对话历史中AI的回答是人为指定的,不是真实的GPT回复,这里是为了演示,实际使用时不推荐这么做,GPT的真实回复可能和指定的不同,并没有完全使用GPT)。内存储了所有的对话历史,不含输入提示词的其他部分。

Steve Wang's blog 4458

进阶篇-LangChain篇-5--记忆机制(Memory)——多轮对话的秘密,LangChain Memory详解

本文详细解析了LangChain的Memory模块在多轮对话中的核心作用。文章通过咖啡点餐的生动类比,揭示了大模型"健忘症"的本质问题,并系统介绍了四种记忆策略(Buffer、Window、Summary、SummaryBuffer)的适用场景与性能对比。核心内容包括:Memory的存储/加载机制、与Chain的集成方式、持久化实现方案,以及新手常见陷阱。特别强调了通过智能记忆管理来平衡对话效果与Token消耗的关键技巧,为开发者提供了从原理到实践的完整指南。

weisian的博客 7665

学习路程十一 langchain核心组件 Memory

langchain核心组件Memry的简单使用。记录对话历史消息。让AI能“正常聊天”

分享各种测试中的用到的内容,一起学习 1199

LangChain之Memory模块,实现大模型对话记忆的5种方法

本文详细介绍LangChain中的Memory模块,解决LLM无记忆问题。涵盖ChatMessageHistory管理对话历史、RunnableWithMessageHistory自动添加记忆、ConversationBufferMemory缓冲记忆、ConversationBufferWindowMemory解决Token限制、ConversationEntityMemory实体记忆等实现方法。

Androiddddd的博客 1339
上一篇: 详细比较LlamaIndex和LangChain,选择适合你的大模型RAG框架
下一篇: LangChain——模型Model I/O:输入提示、调用模型、解析输出
AI程序猿人
博客等级 码龄3年 6517粉丝 561原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值