Loading [MathJax]/jax/output/CommonHTML/config.js
前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >LangChain手记 Memory

LangChain手记 Memory

作者头像
Steve Wang
发布于 2023-10-12 01:40:35
发布于 2023-10-12 01:40:35
3630
举报
文章被收录于专栏:从流域到海域从流域到海域

整理并翻译自DeepLearning.AI×LangChain的官方课程:Memory(源码可见)

Memory

使用open ai的API调用GPT都是单次调用,所以模型并不记得之前的对话,多轮对话的实现其实是将前面轮次的对话过程保留,在下次对话时作为输入的message数组的一部分,再将新一轮对话的提问也放入message数组,再发起一次API调用,即构手动建对话流(以上笔者注)。

构建对话流(LangChain称作对话链)可以使用LangChain提供的memory(记忆)这个组件来实现,本节就是例子:

设置verbose标志为true能看到完整的对话链:

能看出LangChain的ConversationChain其实默认提供了一个提示词,该提示词简单设定了对话场景和GPT扮演的角色AI,并要求GPT在不知晓问题答案时老老实实回答不知道以杜绝幻觉现象。

继续提问第二个问题“What is 1+1”

继续提问第三个问题“What is my name?”

可以看到,对话历史不断累积,输入也变得越来越长

memory.buffer内存储了所有的对话历史,不含输入提示词的其他部分。

使用memoryload_memory_variables()方法可以看到,memory维护一个变量字典,其中有一个名为history的变量存储了对话历史。

可以直接使用memorysave_context方法构建对话历史(笔者注:此时对话历史中AI的回答是人为指定的,不是真实的GPT回复,这里是为了演示,实际使用时不推荐这么做,GPT的真实回复可能和指定的不同,并没有完全使用GPT)。

Memory(记忆)

大语言模型是无状态的

  • 每一个对话都是独立的 对话机器人表现出记忆能力其实是因为实现的时候将整个对话作为上下文输入给了大语言模型

LangChain提供了多种类型的memory来存储和累积对话。

ConversationBufferWindowMemory可以指定memory的的缓存大小(以对话轮数为单位):

k=1仅存储一轮对话作为历史,上上轮对话将会丢失:

ConversationTokenBufferMemory可以指定memory的token数量(笔者注:这个比较实用,因为GPT有最大token数限制,同时也是按token数计费的)。

ConversationSummaryBufferMemory可以将对话以摘要的形式存储:

上图中max_token_limit=400,足够存储整个对话历史,如果我们将max_token_limit=100,将会触发以摘要形式存储对话历史来满足最大token数限制:

尝试使用摘要对话历史提问:

可以回答的不错,查看对话历史:

发现LangChian将提问内容摘要在System角色里面(和GPT API的system不是同一个,但使用了同样的名称)以满足最大token数限制。

Memory类型

ConversationBufferMemory

  • 该类型memory在一个变量中存储和提取对话信息

ConversationBufferWindowMemory

  • 该类型memory存储将随时间进行的对话交互以列表的形式存储,但仅存储k轮对话

ConversationTokenBufferMemory

  • 该类型memory存储最近的对话交互,并且使用token长度而不是对话论述来决定是否刷新对话交互历史

ConversationSummaryMemory

  • 该类型memory存储随时间进行的对话的摘要
更多memory类型

Vector data memory(向量数据memory)

  • 在一个向量数据库中存储从对话(或者其他途径)获得的文本,查询时检索和文本最相关的块

Entity memory(实体memory)

  • 使用一个LLM,它可以记住某个实体的详细信息

可以同时使用多种memory,例:对话memory + 实体memory来回忆个人信息

也可以将对话保存在传统数据库中,比如key-value存储或者SQL。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-08-16,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
LangChain学习:memory
learn from https://learn.deeplearning.ai/langchain/lesson/3/memory
Michael阿明
2023/07/21
6450
LangChain学习:memory
【LangChain系列5】【Memory模块详解】
总结: LangChain是一个用于开发由LLM支持的应用程序的框架,通过提供标准化且丰富的模块抽象,构建LLM的输入输出规范,主要是利用其核心概念chains,可以灵活地链接整个应用开发流程。(即,其中的每个模块抽象,都是源于对大模型的深入理解和实践经验,由许多开发者提供出来的标准化流程和解决方案的抽象,再通过灵活的模块化组合,才得到了langchain)
知冷煖
2025/01/09
2690
0【LangChain系列】第六节:内存管理
聊天机器人和虚拟助手正变得越来越普遍,在对话中保持上下文和连续性的能力很重要。想象一下,你正在与聊天机器人进行有趣的对话,结果对方却在对话中完全忘记了上下文,不过不要害怕,LangChain的内存管理功能为您提供了支持。内存管理允许对话式 AI 应用程序保留和回忆过去的交互,从而实现无缝和连贯的对话。LangChain提供不同类型的内存类型,每种类型都是为满足特定需求和优化性能而量身定制的。
Freedom123
2024/05/23
2230
轻松上手的LangChain学习说明书
如今各类AI模型层出不穷,百花齐放,大佬们开发的速度永远遥遥领先于学习者的学习速度。。为了解放生产力,不让应用层开发人员受限于各语言模型的生产部署中..LangChain横空出世界。
腾讯技术工程官方号
2024/03/22
3.2K0
轻松上手的LangChain学习说明书
为你的LLM应用增加记忆能力
我们都知道,大模型本身是无状态、无记忆的。默认情况下,我们向大模型发起的每次提问,在其内部都会被视为一次全新的调用。尽管诸如 ChatGPT 等聊天应用内置了部分记忆功能,可以记录用户最近几轮的聊天信息,但它仍然存在上下文长度限制,对话历史超过一定长度后,就会强制开启新一轮对话。
张申傲
2024/09/06
7040
为你的LLM应用增加记忆能力
LLM远不仅仅是Chat Model——LangChain基本概念与使用示例
一图胜千言,LangChain已经成为当前LLM应用框架的事实标准,这篇文章就来对LangChain基本概念以及其具体使用场景做一个整理
Kevinello
2023/09/06
2.5K0
LLM远不仅仅是Chat Model——LangChain基本概念与使用示例
📘 教程:理解 LangChain + Vue/React 搭建 LLM 对话系统的理论基础
在构建 LLM 对话系统时,很多初学者会选择 Gradio 或 Streamlit 快速搭建。但随着需求的复杂化,例如支持多轮记忆、调用外部插件、检索知识库、界面交互精美、支持多模型等,这些轻量级方案便力不从心。
IT蜗壳-Tango
2025/04/06
3050
LangChain:打造自己的LLM应用
导读 随着LLM的技术发展,其在业务上的应用越来越关键,通过LangChain大大降低了LLM应用开发的门槛。本文通过介绍LangChain是什么,LangChain的核心组件以及LangChain在实际场景下的使用方式,希望帮助大家能快速上手LLM应用的开发。
京东技术
2023/11/05
2.1K0
LangChain:打造自己的LLM应用
LangChain手记 Question Answer 问答系统
本节介绍使用LangChian构建文档上的问答系统,可以实现给定一个PDF文档,询问关于文档上出现过的某个信息点,LLM可以给出关于该信息点的详情信息。这种使用方式比较灵活,因为并没有使用PDF上的文本对模型进行训练就可以实现文档上的信息点问答。本节介绍的Chain也比较常用,它涉及到了嵌入(embedding)和向量存储(vector store)。
Steve Wang
2023/10/12
4610
LangChain手记 Question Answer 问答系统
AI大模型全栈工程师课程笔记 - LangChain
LangChain 也是面向LLM的开发框架SDK,有 python 和 js 版的 https://python.langchain.com/docs/get_started
Michael阿明
2023/12/21
1.5K0
AI大模型全栈工程师课程笔记 - LangChain
基于langchain+千帆sdk的一个基于文档的QA问答Demo
百度智能云千帆大模型平台官方SDK正式对外发布:https://pypi.org/project/qianfan/。同步支持langchain接入千帆api。 本文重点介绍基于langchain+千帆sdk的一个基于文档的QA问答Demo。
淼学派对
2024/05/30
4050
基于langchain+千帆sdk的一个基于文档的QA问答Demo
畅享无缝支持:LangChain与ChatGPT重塑AI客服服务
LangChain 是一个用于开发由语言模型驱动的应用程序的框架,LangChain 灵活的抽象和广泛的工具包使开发人员能够利用 LLM 的力量。由于其版本迭代的太快,作者也是在不断的探索。
朝雾轻寒
2023/09/06
1K0
畅享无缝支持:LangChain与ChatGPT重塑AI客服服务
深入解析 LangChain 的核心理念与实际应用
LangChain 是一个旨在帮助开发者更高效地构建与大语言模型(LLMs)交互的框架。它的目标是通过提供一系列工具与模块化功能,使得开发者能够更加轻松地在复杂应用场景中管理语言模型的能力。这种框架特别适合构建与 GPT 系列模型等深度学习模型紧密交互的应用。
编程小妖女
2025/01/25
1720
深入解析 LangChain 的核心理念与实际应用
一文入门最热的LLM应用开发框架LangChain
LangChain 的作者是 Harrison Chase,最初是于 2022 年 10 月开源的一个项目,在 GitHub 上获得大量关注之后迅速转变为一家初创公司。2017 年 Harrison Chase 还在哈佛上大学,如今已是硅谷的一家热门初创公司的 CEO,这对他来说是一次重大而迅速的跃迁。Insider 独家报道,人工智能初创公司 LangChain 在种子轮一周后,再次获得红杉领投的 2000 万至 2500 万美元融资,估值达到 2 亿美元。
腾讯技术工程官方号
2023/08/18
3.4K1
一文入门最热的LLM应用开发框架LangChain
洞悉LangChain:LangChain工程化设计,从API到智能Agent的全面探索
LangChain 是 2022 年 10 月底,由哈佛大学的 Harrison Chase 发起的基于开源大语言模型的 AI 工程开发框架。当然也可以问一下 AI:
汀丶人工智能
2024/07/25
1.2K0
洞悉LangChain:LangChain工程化设计,从API到智能Agent的全面探索
LangChain 完整指南:使用大语言模型构建强大的应用程序
嗨,你好!让我向你介绍LangChain,这是一个非常棒的库,它能让开发者利用大型语言模型(LLMs)和其他计算资源来构建强大的应用。在这份指南中,我将快速概述LangChain的工作原理,并探讨一些很酷的使用案例,例如问答系统、聊天机器人和智能代理。我还会带你走过一个快速启动指南,帮助你开始使用。让我们开始吧!
山行AI
2023/06/14
3.4K0
LangChain 完整指南:使用大语言模型构建强大的应用程序
从API到Agent:万字长文洞悉LangChain工程化设计
我想做一个尝试,看看能不能用尽量清晰的逻辑,给“AI外行人士”(当然,我也是……)引入一下LangChain,试着从工程角度去理解LangChain的设计和使用。同时大家也可以将此文档作为LangChain的“10分钟快速上手”手册,本意是希望帮助需要的同学实现AI工程的Bootstrap。
GeaFlow
2024/03/18
1.2K1
从API到Agent:万字长文洞悉LangChain工程化设计
用 LangChain 构建文档问答助手
随着大语言模型(LLM)的广泛应用,越来越多企业和个人希望利用它来实现“基于文档的智能问答”功能。例如:
IT蜗壳-Tango
2025/04/09
1240
LangChain 学习路线图:从入门到实战的完整指南
在大型语言模型(LLM)如 ChatGPT、Claude 等快速发展的今天,开发者不仅希望能“使用”这些模型,还希望能将它们灵活集成到自己的应用中,实现更强大的对话能力、搜索增强问答(RAG)、工具调用(Tool Calling)、多轮推理等功能。
IT蜗壳-Tango
2025/04/08
8080
LangChain对象关系梳理
BaseModel是python中用于数据接口定义检查与设置管理的库(pydantic库)。pedantic在运行时强制执行类型提示,并在数据无效时提供友好的错误。参考:https://www.cnblogs.com/dyl0/articles/16896330.html
码之有理
2023/05/15
2.9K0
推荐阅读
相关推荐
LangChain学习:memory
更多 >
领券
💥开发者 MCP广场重磅上线!
精选全网热门MCP server,让你的AI更好用 🚀
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档