当前位置: 首页 > news >正文

钓鱼网页在线生成网站泰兴市城乡住房建设局网站

钓鱼网页在线生成网站,泰兴市城乡住房建设局网站,做海报的免费网站,深圳苍松大厦 网站建设内存中的短时记忆#xff0c;在 LangChain 中通常指 ConversationBufferMemory 这类“对话缓冲记忆”工具。它的作用是#xff1a;在内存中保存最近的对话历史#xff0c;让大模型能理解上下文#xff0c;实现连续对话。 对话缓冲记忆”工具 主要特点 只保留最近的对话内容…内存中的短时记忆在 LangChain 中通常指 ConversationBufferMemory 这类“对话缓冲记忆”工具。它的作用是在内存中保存最近的对话历史让大模型能理解上下文实现连续对话。 对话缓冲记忆”工具 主要特点 只保留最近的对话内容如最近N轮不会无限增长节省内存和token。适合短对话、上下文关联不深的场景。支持多种变体如窗口记忆ConversationBufferWindowMemory只保留最近k轮、消息对象记忆等。 典型用法示例 from langchain.memory import ConversationBufferMemory# 创建对话缓冲记忆对象 memory ConversationBufferMemory()# 添加用户消息 memory.chat_memory.add_user_message(你好我是Alex) # 添加AI回复 memory.chat_memory.add_ai_message(你好我是AI助手请问有什么可以帮助你的吗)# 加载当前记忆变量 memory.load_memory_variables({}) 结果 {history: Human: 你好我是Alex\nAI: 你好我是AI助手请问有什么可以帮助你的吗}窗口记忆示例 # 实现一个最近的对话窗口超过窗口条数的对话将被删除from langchain.memory import ConversationBufferWindowMemory# 创建一个只保留最近1轮对话的记忆窗口 memory ConversationBufferWindowMemory(k1)# 保存第一轮对话 memory.save_context({input: 你好我是Alex}, {output: 你好我是AI助手请问有什么可以帮助你的吗}) # 保存第二轮对话第一轮会被移除只保留最近一轮 memory.save_context({input: 我想学习绘画。}, {output: 好的我帮你找一些绘画的资料。})# 加载当前窗口内的记忆变量只会返回最近一轮对话 memory.load_memory_variables({})结果 {history: Human: 我想学习绘画。\nAI: 好的我帮你找一些绘画的资料。}关键点说明 短时记忆让对话更自然模型能“记住”最近的上下文。适合闲聊、问答、连续指令等场景。若需长时记忆可结合向量数据库等工具。内存中的短时记忆让大模型能“记住”最近的对话内容实现自然流畅的多轮对话体验。构建记忆实体概念清单 ConversationEntityMemory 是 LangChain 中的一种“实体记忆”工具专门用于在对话中自动识别、追踪和存储“实体”如人名、地名、组织、专有名词等让大模型能在多轮对话中持续理解和引用这些实体的相关信息。 主要特点 自动抽取实体每轮对话后自动识别输入中的实体如“小王”“三剑客”等。为每个实体建立独立记忆存储与实体相关的描述、上下文便于后续引用。适合多角色、多对象、多主题的复杂对话场景。 典型用法示例 from langchain_openai import ChatOpenAI from langchain.memory import ConversationEntityMemory from pydantic import SecretStr import os import dotenv# 加载环境变量 dotenv.load_dotenv()# 初始化腾讯混元大模型 llm ChatOpenAI(modelhunyuan-lite,temperature0,api_keySecretStr(os.environ.get(HUNYUAN_API_KEY, )),base_urlhttps://api.hunyuan.cloud.tencent.com/v1, )# 创建实体记忆对象 memory ConversationEntityMemory(llmllm)# 输入包含多个实体的对话 _input {input: 小王、小李和小黄经常结伴同游三人合称“三剑客”。, }# 加载当前记忆变量此时还未存储上下文 memory.load_memory_variables(_input)# 保存对话上下文输入和AI回复 memory.save_context(_input, {output: 看起来很好玩我也想加入他们} )# 查询实体记忆提取“三剑客”分别是谁 memory.load_memory_variables({input:请从上文中找出‘三剑客’分别是谁}) 结果 {history: Human: 小王、小李和小黄经常结伴同游三人合称“三剑客”。\nAI: 看起来很好玩我也想加入他们,entities: {三剑客: ,小王: 小王、小李和小黄经常结伴同游三人合称“三剑客”。,小李: 小李与小王、小黄结伴同游三人合称“三剑客”。,小黄: 小黄是小王、小李和小黄三人中的其中一人他们经常一起游玩并合称为“三剑客”。}}关键点说明 ConversationEntityMemory 让模型能“记住”并追踪对话中的所有重要实体。支持实体的动态更新和多实体并行管理。适合需要追踪多角色、多对象信息的对话系统、智能助理等场景。ConversationEntityMemory 让大模型在多轮对话中“认得人、记得事”实现更智能、更有记忆力的对话体验。使用知识图谱构建记忆 ConversationKGMemory 是 LangChain 中的“知识图谱记忆”工具。它的作用是在对话过程中自动抽取知识三元组subject, predicate, object构建和维护对话中的知识图谱让大模型能理解和追踪事实关系实现更智能的多轮推理和问答。 主要特点 自动抽取三元组每轮对话后自动识别“谁-做了什么-对象是什么”结构的信息如“Lisa holds my phone.” → Lisa-holds-my phone。构建知识图谱将三元组存入内存形成结构化的知识网络。支持实体关系追踪、事实推理适合需要理解复杂关系的对话场景。 典型用法示例 代码 from langchain_openai import ChatOpenAI from langchain.memory import ConversationKGMemory from pydantic import SecretStr import os import dotenv# 加载环境变量 dotenv.load_dotenv()# 初始化腾讯混元大模型 llm ChatOpenAI(modelhunyuan-lite,temperature0,api_keySecretStr(os.environ.get(HUNYUAN_API_KEY, )),base_urlhttps://api.hunyuan.cloud.tencent.com/v1, )# 创建知识图谱记忆对象 memory ConversationKGMemory(llmllm)# 保存第一轮对话上下文 memory.save_context({input:Where is Lisa?},{output:She is in the meeting room. What do you want to know about her?} )# 保存第二轮对话上下文 memory.save_context({input:My phone is in her hand.},{output:I will tell her.} )# 查询记忆变量获取与输入相关的知识图谱信息 memory.load_memory_variables({input:Where is Lisa?}) 结果 {history: On Lisa: Lisa is in the meeting room. Lisa holds phone.}代码 # 获取当前对话中的实体信息 memory.get_current_entities(Who holds my phone?)结果 [Lisa]代码 # 获取输入句子的知识三元组 memory.get_knowledge_triplets(Lisa holds my phone.)结果 [KnowledgeTriple(subjectLisa, predicateholds, object_my phone)]关键点说明 ConversationKGMemory 让对话系统具备“事实关系追踪”能力能自动构建和利用知识图谱。适合需要多轮推理、事实问答、关系追踪的智能对话场景。支持与 LLM 结合动态扩展知识图谱。ConversationKGMemory 让大模型在对话中自动“画知识图谱”实现更强的事实理解和多轮推理能力。长对话在内存中的处理方式: 总结摘要以及token计算 这段代码演示了如何使用 LangChain 框架结合腾讯混元大模型hunyuan-lite实现对话摘要记忆功能。主要流程包括加载环境变量获取 API 密钥初始化混元大模型作为对话生成器然后用 ConversationSummaryMemory 记录多轮对话的上下文输入和输出最后通过 load_memory_variables 方法获取当前对话的摘要内容。整体实现了对多轮对话内容的自动总结与记忆。 代码 # 导入所需库 from langchain.memory import ConversationSummaryMemory from langchain_openai import ChatOpenAI from pydantic import SecretStr import os import dotenv# 加载环境变量 dotenv.load_dotenv()# 初始化腾讯混元大模型 llm ChatOpenAI(modelhunyuan-lite,temperature0,api_keySecretStr(os.environ.get(HUNYUAN_API_KEY, )),base_urlhttps://api.hunyuan.cloud.tencent.com/v1, )# 创建对话摘要记忆对象 memory ConversationSummaryMemory(llmllm)# 保存第一轮对话上下文 memory.save_context({input: Where is Lisa?},{output: She is in the meeting room. What do you want to know about her?} )# 保存第二轮对话上下文 memory.save_context({input: My phone is in her hand.},{output: I will tell her.} )# 加载记忆变量摘要 memory.load_memory_variables({})结果 {history: The human asks where Lisa is. The AI informs that Lisa is in the meeting room and inquires about her. The human then tells the AI that his phone is in Lisas hand. The AI promises to tell Lisa.}代码 # 获取当前对话历史消息 messages memory.chat_memory.messages # 基于历史消息生成新的对话摘要 memory.predict_new_summary(messages, )结果 The human asks where Lisa is. The AI informs the human that Lisa is in the meeting room and asks if there is anything specific they want to know about her. The human mentions that Lisas phone is in her hand. The AI promises to tell Lisa.使用ChatMessageHistory来快速获得对话摘要 ChatMessageHistory 是 LangChain 框架中用于管理和存储对话消息历史的一个类。它可以用来记录用户和 AI 之间的每一句对话包括用户消息和 AI 回复并以结构化的方式保存。常见用法包括 创建 ChatMessageHistory 对象后可以通过 add_user_message 和 add_ai_message 方法分别添加用户和 AI 的消息。这些消息可以作为对话记忆传递给如 ConversationSummaryMemory 等记忆类实现对话内容的总结、回溯或上下文管理。结合大模型如腾讯混元时可以基于 ChatMessageHistory 里的历史消息生成摘要或用于后续推理。简单来说ChatMessageHistory 主要用于“原始对话内容的存储与管理”为对话记忆和上下文处理提供底层支持。代码 # 使用ChatMessageHistory来快速获得对话摘要from langchain.memory import ChatMessageHistory # 导入对话消息历史类 from langchain_openai import ChatOpenAI # 导入腾讯混元大模型接口 from pydantic import SecretStr import os import dotenvdotenv.load_dotenv() # 加载环境变量# 初始化腾讯混元大模型 llm ChatOpenAI(modelhunyuan-lite,temperature0,api_keySecretStr(os.environ.get(HUNYUAN_API_KEY, )),base_urlhttps://api.hunyuan.cloud.tencent.com/v1, )history ChatMessageHistory() # 创建对话历史对象# 添加用户和AI的对话消息 history.add_user_message(你好我是Alex) history.add_ai_message(你好我是AI助手请问有什么可以帮助你的吗)# 基于历史消息创建对话摘要记忆对象 memory ConversationSummaryMemory.from_messages(llmllm,chat_memoryhistory,return_messagesTrue )memory.buffer # 查看当前摘要内容结果 The human introduces themselves as Alex and greets the AI assistant. The AI assistant responds with a friendly welcome and inquires about the assistance the human needs.代码 # 使用ChatMessageHistory来快速获得对话摘要from langchain.memory import ChatMessageHistory # 导入对话消息历史类 from langchain_openai import ChatOpenAI # 导入腾讯混元大模型接口 from pydantic import SecretStr import os import dotenvdotenv.load_dotenv() # 加载环境变量# 初始化腾讯混元大模型 llm ChatOpenAI(modelhunyuan-lite, # 指定混元模型temperature0, # 设定温度参数api_keySecretStr(os.environ.get(HUNYUAN_API_KEY, )), # 从环境变量获取API密钥base_urlhttps://api.hunyuan.cloud.tencent.com/v1, # 腾讯混元API地址 )history ChatMessageHistory() # 创建对话历史对象# 添加用户和AI的对话消息 history.add_user_message(你好我是Alex) history.add_ai_message(你好我是AI助手请问有什么可以帮助你的吗)# 基于历史消息创建对话摘要记忆对象 memory ConversationSummaryMemory.from_messages(llmllm,chat_memoryhistory,return_messagesTrue,buffer\nThe AI asks if there is anything else it can help with. # 初始摘要内容 )memory.load_memory_variables({}) # 加载记忆变量摘要 结果 {history: [SystemMessage(contentThe AI asks if there is anything else it can help with. The human introduces themselves as Alex and asks if the AI can assist him.)]}ConversationSummaryBufferMemory ConversationSummaryBufferMemory 是 LangChain 框架中一种结合“对话摘要”与“窗口缓冲”机制的记忆类。它的核心作用是在对话历史较长时自动对超出窗口长度的旧对话进行摘要只保留最近的若干轮详细对话内容从而兼顾上下文完整性与效率。 主要特点和用法 自动摘要当对话历史累计的 token 数超过设定阈值时自动调用大模型对较早的对话内容进行总结生成摘要文本节省内存和上下文长度。窗口缓冲始终保留最近的 k 条完整对话如最近 3 轮保证最新对话的细节不会丢失。上下文融合在后续对话中模型会同时参考“对话摘要”和“最近详细对话”提升长对话场景下的连贯性和效率。典型用法适合对话轮数较多、但又希望节省 token 或上下文长度的场景。例如智能客服、长对话机器人等。 # 当对话持续进行且对话内容很多的时候可以使用ConversationSummaryBufferMemory来存储对话摘要 # 这是一种非常有用的方式它会根据token的数量来自动判断是否需要进行摘要 # 当token数量超过阈值的时候会自动进行摘要 # 在缓冲区中会保留最近的k条对话 # 比较久的对话会被删除在删除前会进行摘要from langchain.memory import ConversationSummaryBufferMemory from langchain_openai import ChatOpenAI from pydantic import SecretStr import os import dotenv dotenv.load_dotenv()class PatchedChatOpenAI(ChatOpenAI):def get_num_tokens_from_messages(self, messages):# 兼容各种 content 类型简单估算 token 数text .join(str(item)for m in messagesfor item in (m.content if isinstance(m.content, list) else [m.content]))return len(text) # 你也可以除以2或其它方式粗略估算# 用 PatchedChatOpenAI 替换 ChatOpenAI llm PatchedChatOpenAI(modelhunyuan-lite,temperature0,api_keySecretStr(os.environ.get(HUNYUAN_API_KEY, )),base_urlhttps://api.hunyuan.cloud.tencent.com/v1, )memory ConversationSummaryBufferMemory(llmllm,max_token_limit100,return_messagesTrue )memory.save_context({input:Where is Lisa?},{output:She is in the meeting room. What do you want to know about her?} )memory.save_context({input:My phone is in her hand.},{output:I will tell her.} )memory.save_context({input:I need her help too. Can you reach to her now?},{output:I will try my best.} )memory.load_memory_variables({})结果 {history: [SystemMessage(contentThe human asks where Lisa is. The AI responds that Lisa is in the meeting room and inquires about the purpose of the question. The human explains that Lisas phone is in her hand.),AIMessage(contentI will tell her.),HumanMessage(contentI need her help too. Can you reach to her now?),AIMessage(contentI will try my best.)]}ConversationSummaryBufferMemory 让对话系统既能记住长历史又不会因历史过长而丢失上下文或超出 token 限制是长对话场景下非常实用的记忆工具。Conversation Token Buffer使用token长度来决定什么时候刷新内存 ConversationTokenBufferMemory 是 LangChain 框架中一种基于 token 数量进行对话历史管理的记忆类。它的主要作用是只保留最近一段 token 数量不超过设定上限的对话内容超出部分会被自动丢弃从而有效控制上下文长度防止超出大模型的 token 限制。 主要特点和用法 按 token 数量裁剪不是按轮数或消息条数而是根据所有历史消息的 token 总数动态裁剪只保留最新、总 token 数不超过 max_token_limit 的对话内容。适合长对话当对话内容较多时自动丢弃最早的消息始终保证传递给大模型的上下文不会超长。高效节省资源适合对 token 长度敏感、需要严格控制上下文长度的场景比如大模型推理、API 调用有 token 限制时。 from langchain.memory import ConversationTokenBufferMemory from langchain_openai import ChatOpenAI from pydantic import SecretStr import os import dotenv dotenv.load_dotenv()class PatchedChatOpenAI(ChatOpenAI):def get_num_tokens_from_messages(self, messages):# 兼容各种 content 类型简单估算 token 数text .join(str(item)for m in messagesfor item in (m.content if isinstance(m.content, list) else [m.content]))return len(text) # 你也可以除以2或其它方式粗略估算# 用 PatchedChatOpenAI 替换 ChatOpenAI llm PatchedChatOpenAI(modelhunyuan-lite,temperature0,api_keySecretStr(os.environ.get(HUNYUAN_API_KEY, )),base_urlhttps://api.hunyuan.cloud.tencent.com/v1, )memory ConversationTokenBufferMemory(llmllm,max_token_limit100,return_messagesTrue )memory.save_context({input:Where is Lisa?},{output:She is in the meeting room. What do you want to know about her?} )memory.save_context({input:My phone is in her hand.},{output:I will tell her.} )memory.save_context({input:I need her help too. Can you reach to her now?},{output:I will try my best.} )memory.save_context({input:I do not need to find her anymore},{output:Okay. I got it.} )memory.load_memory_variables({}) 结果 {history: [AIMessage(contentI will try my best.),HumanMessage(contentI do not need to find her anymore),AIMessage(contentOkay. I got it.)]}ConversationTokenBufferMemory 通过 token 数量动态裁剪历史消息保证上下文长度始终在安全范围内非常适合需要严格控制 token 长度的对话应用。
http://www.pierceye.com/news/991241/

相关文章:

  • 淘宝客网站如何让做量化交易网站开发
  • 青岛市城市建设管理局网站网络营销师培训费用是多少
  • 南昌建站模板深圳全网推广效果如何
  • 做网站的好公司wordpress大前端模板下载
  • 建设网站的申请信用卡吗下载百度免费
  • 徐州企业网站设计做瑜伽网站
  • 网站开发就是ssh吗.net 网站开发书籍
  • 网站名称没有排名上海工商网查询企业章程
  • 网站建设方案报价费用明细价格免费开店的电商平台
  • 济南网络建站模板用c 做的网站怎么打开
  • 网站建设培训课程好人一生平安网站哪个好
  • seo怎么做网站的tdk网站优化的核心不包括
  • 如何做一份网站的数据分析网站营销案例
  • 中小企业网站建设公司个人微信号做网站行吗
  • 网站无法连接服务器哪些国家网站无须备案
  • 重庆做网站设计培训机构排名全国十大教育机构排名
  • 做网站建设销售网络营销推广技巧
  • 南宁网站制作定制北京网站seo服务
  • 门户网站网页设计规范willin kan 让你的wordpress飞起来
  • 建设银行广州招聘网站wordpress dz
  • 如何介绍自己做的网站东莞回收网站设计
  • 北京驾校网站建设厦门网页设计培训班
  • 网络公司给我做网站我有没有源代码版权吗我怎么做个人网站
  • 免费建站网站一站式做网站需要懂那些软件
  • 做新网站怎样提交360寻找销售团队外包
  • 重庆市建设网站wordpress 新闻模版
  • 国内网站建设推荐手工做的网站
  • 深圳罗湖做网站的公司网站建设与管理案例教程第三版课后答案
  • 有关网站招标商务标书怎么做做终端客户网站
  • c 网站做微信收款功能青岛网站建设定制