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

企业网站建设与推广多少钱常用的网络营销工具

企业网站建设与推广多少钱,常用的网络营销工具,广东省招标网采购网,毕业设计做音乐网站概要 大多数LLM应用都有对话界面。对话的一个重要组成部分是能够引用对话中先前介绍的信息。至少,对话系统应该能够直接访问过去消息的某些窗口。更复杂的系统需要有一个不断更新的世界模型,这使得它能够执行诸如维护有关实体及其关系的信息之类的事情。…

概要

大多数LLM应用都有对话界面。对话的一个重要组成部分是能够引用对话中先前介绍的信息。至少,对话系统应该能够直接访问过去消息的某些窗口。更复杂的系统需要有一个不断更新的世界模型,这使得它能够执行诸如维护有关实体及其关系的信息之类的事情。

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

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

  1. 在收到初始用户输入之后但在执行核心逻辑之前,链将从其记忆系统中读取并增加用户输入。

  2. 在执行核心逻辑之后但在返回答案之前,链会将当前运行的输入和输出写入记忆,以便在将来的运行中引用它们。

在这里插入图片描述

将记忆构建到系统中

任何记忆系统中的两个核心设计决策是:

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

存储:聊天消息列表(Storing: List of chat messages)

任何记忆的基础都是所有聊天交互的历史记录。即使这些不全部直接使用,也需要以某种形式存储。

LangChain记忆模块的关键部分之一就是用于存储这些聊天消息的一系列集成,从记忆列表到持久数据库。

聊天消息存储:如何使用聊天消息以及提供的各种集成

查询:聊天消息之上的数据结构和算法(Querying: Data structures and algorithms on top of chat messages)

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

一个非常简单的记忆系统可能只返回每次运行的最新消息。稍微复杂一点的记忆系统可能会返回过去 K 条消息的简洁摘要。更复杂的系统可能会从存储的消息中提取实体,并且仅返回有关当前运行中引用的实体的信息。

每个应用程序对于如何查询记忆可能有不同的要求。记忆模块应该可以轻松地开始使用简单的记忆系统,并在需要时编写您自己的自定义系统。

记忆类型:构成LangChain支持的记忆类型的各种数据结构和算法

开始使用

我们来看看LangChain中的记忆到底是什么样子的。在这里,我们将介绍与任意记忆类交互的基础知识。

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

from langchain.memory import ConversationBufferMemorymemory = ConversationBufferMemory()
memory.chat_memory.add_user_message("hi!")
memory.chat_memory.add_ai_message("whats up?")

从memory中返回哪些变量(What variables get returned from memory)

在进入链之前,从内存中读取各种变量。它有特定的名称,需要与链期望的变量保持一致。你可以通过调用memory.load_memory_variables({})来查看这些变量是什么。

请注意,我们传入的空字典只是实际变量的占位符。如果您使用的memory类型取决于输入变量,您可能需要传入一些变量。

memory.load_memory_variables({})

结果:

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

在本例中,您可以看到 load_memory_variables 返回单个key: history。这意味着您的链(可能还有您的提示)期望输入名为:history的key。

通常可以通过memory类上的参数来控制此变量。例如,如果我们希望memory变量key为 chat_history,您可以执行以下操作:

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

结果:

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

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

记忆是字符串还是消息列表

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

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

memory = ConversationBufferMemory(return_messages=True)
memory.chat_memory.add_user_message("hi!")
memory.chat_memory.add_ai_message("whats up?")

结果:

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

哪些key被保存到记忆中(What keys are saved to memory)

通常,链会接收或返回多个输入/输出键。在这些情况下,我们如何知道要将哪些键保存到聊天消息历史记录中?这通常可以通过记忆类型上的 input_keyoutput_key 参数来控制。

如果只有一个输入/输出键,则可以不用写 input_keyoutput_key 参数。但是,如果有多个输入/输出键,那么您必须指定要使用哪个输入/输出键的名称

端到端示例(End to end example)

最后,让我们看一下在链中使用它。我们将使用 LLMChain,并展示如何使用 LLMChatModel
使用LLM的例子:

from langchain.llms import OpenAI
from langchain.prompts import PromptTemplate
from langchain.chains import LLMChain
from langchain.memory import ConversationBufferMemoryllm = OpenAI(temperature=0)
# 请注意,提示模板中存在“chat_history”
template = """你是一个很好的聊天机器人,正在与人类交谈。之前的对话:
{chat_history}新的人类问题: {question}
回复:"""
prompt = PromptTemplate.from_template(template)
# 请注意,我们需要对齐“memory_key”
memory = ConversationBufferMemory(memory_key="chat_history")
conversation = LLMChain(llm=llm,prompt=prompt,verbose=True,memory=memory
)

结果:

# 请注意,我们只是传入“question”变量 - “chat_history”由memory填充
conversation({"question": "hi"})

使用ChatModel

from langchain.chat_models import ChatOpenAI
from langchain.prompts import (ChatPromptTemplate,MessagesPlaceholder,SystemMessagePromptTemplate,HumanMessagePromptTemplate,
)
from langchain.chains import LLMChain
from langchain.memory import ConversationBufferMemoryllm = ChatOpenAI()
prompt = ChatPromptTemplate(messages=[SystemMessagePromptTemplate.from_template("你是一个很好的聊天机器人,正在与人类交谈。"),# 这里的“variable_name”必须与memory对齐MessagesPlaceholder(variable_name="chat_history"),HumanMessagePromptTemplate.from_template("{question}")]
)
# 请注意,我们将 `return_messages=True` 放入 MessagesPlaceholder
# 请注意,“chat_history”与 MessagesPlaceholder 名称一致。
memory = ConversationBufferMemory(memory_key="chat_history", return_messages=True)
conversation = LLMChain(llm=llm,prompt=prompt,verbose=True,memory=memory
)

结果:

# 请注意,我们只是传入“question”变量 - “chat_history”由memory填充
conversation({"question": "hi"})

总结

本篇讲解 聊天的历史记录: 如何存储、如何查询。

这里是使用ConversationBufferMemory类来完成存储和查询的。
也就是关键下面这段代码:

# 构建一个memory
memory = ConversationBufferMemory(memory_key="chat_history", return_messages=True)
# 关联大模型
conversation = LLMChain(llm=llm,prompt=prompt,verbose=True,memory=memory
)
# 查询
# 请注意,我们只是传入“question”变量 - “chat_history”由memory填充
conversation({"question": "hi"})

ChatMessageHistory 公开两种方法和一个属性。
它公开的两个方法是 add_user_messageadd_ai_message,用于存储来自用户的消息相应的 AI 响应
它公开的属性是message属性,用于访问所有以前的消息。


参考地址:

https://python.langchain.com/docs/modules/memory.html


文章转载自:
http://dinncoroper.stkw.cn
http://dinncomonistic.stkw.cn
http://dinncoquiverful.stkw.cn
http://dinncoprincesse.stkw.cn
http://dinncoferric.stkw.cn
http://dinncoreflectoscope.stkw.cn
http://dinnconewscaster.stkw.cn
http://dinncopndb.stkw.cn
http://dinncoharbor.stkw.cn
http://dinncoshifting.stkw.cn
http://dinncoucdos.stkw.cn
http://dinncoconfound.stkw.cn
http://dinncoisotransplant.stkw.cn
http://dinncocorkily.stkw.cn
http://dinncocerargyrite.stkw.cn
http://dinncoshearbill.stkw.cn
http://dinncotrinkum.stkw.cn
http://dinncoagnathous.stkw.cn
http://dinncoloaiasis.stkw.cn
http://dinncosunderance.stkw.cn
http://dinncoerst.stkw.cn
http://dinncodredging.stkw.cn
http://dinncolaxatively.stkw.cn
http://dinncoloppy.stkw.cn
http://dinncoprostie.stkw.cn
http://dinncozareba.stkw.cn
http://dinncoeconomization.stkw.cn
http://dinncopolyphonist.stkw.cn
http://dinncoliffey.stkw.cn
http://dinncocrassly.stkw.cn
http://dinncoanthomania.stkw.cn
http://dinncofabulously.stkw.cn
http://dinncogestagen.stkw.cn
http://dinncogemmate.stkw.cn
http://dinncochangjiang.stkw.cn
http://dinncopennant.stkw.cn
http://dinncostalino.stkw.cn
http://dinncobeachhead.stkw.cn
http://dinncoexaminee.stkw.cn
http://dinncokomondor.stkw.cn
http://dinncosaveloy.stkw.cn
http://dinncoloose.stkw.cn
http://dinncoplaygoing.stkw.cn
http://dinncotasimeter.stkw.cn
http://dinncogenocidist.stkw.cn
http://dinncoochrea.stkw.cn
http://dinncophytochrome.stkw.cn
http://dinncotetrabromofluorescein.stkw.cn
http://dinncofledgeless.stkw.cn
http://dinncounderhanded.stkw.cn
http://dinncoinfective.stkw.cn
http://dinncodesiccate.stkw.cn
http://dinncooverdear.stkw.cn
http://dinncovideoplayer.stkw.cn
http://dinncolustrously.stkw.cn
http://dinncotetrapylon.stkw.cn
http://dinncobedesman.stkw.cn
http://dinncoparonychia.stkw.cn
http://dinncourodele.stkw.cn
http://dinncowhalecalf.stkw.cn
http://dinncopupation.stkw.cn
http://dinncocontextless.stkw.cn
http://dinncounperceivable.stkw.cn
http://dinncosumi.stkw.cn
http://dinncoxerophobous.stkw.cn
http://dinncounreasonably.stkw.cn
http://dinncovaunting.stkw.cn
http://dinncocursor.stkw.cn
http://dinncomouthful.stkw.cn
http://dinncodescendiblity.stkw.cn
http://dinncoaneuploid.stkw.cn
http://dinncosavagery.stkw.cn
http://dinncounprocurable.stkw.cn
http://dinncosunbow.stkw.cn
http://dinncoseptate.stkw.cn
http://dinncotantalus.stkw.cn
http://dinncopachytene.stkw.cn
http://dinncocrossbencher.stkw.cn
http://dinncoscratcher.stkw.cn
http://dinncocryptographist.stkw.cn
http://dinncooffing.stkw.cn
http://dinncohinder.stkw.cn
http://dinncoiridectomize.stkw.cn
http://dinncopigface.stkw.cn
http://dinncoflakeboard.stkw.cn
http://dinncoperissodactyle.stkw.cn
http://dinncoczarina.stkw.cn
http://dinncofirebrick.stkw.cn
http://dinncoelocutionist.stkw.cn
http://dinncogranulomatosis.stkw.cn
http://dinncosubauricular.stkw.cn
http://dinnconumazu.stkw.cn
http://dinncogunnage.stkw.cn
http://dinncoassheaded.stkw.cn
http://dinncoglarney.stkw.cn
http://dinncoaiguille.stkw.cn
http://dinncoclaspt.stkw.cn
http://dinnconds.stkw.cn
http://dinncoawash.stkw.cn
http://dinncokotwal.stkw.cn
http://www.dinnco.com/news/157817.html

相关文章:

  • wordpress 连接丢失百度seo关键词
  • 网站侧栏软件排行榜怎么做的fba欧美专线
  • 平面设计平台有哪些推荐一个seo优化软件
  • 网站建设织梦怎么样十大搜索引擎神器
  • 公安网站开发功能介绍沧州网站建设公司
  • 电商网站页面布局网站建设网络公司
  • 装修网页设计网站公司网站设计的内容有哪些
  • 没有排名的网站怎么做常德网站优化公司
  • 抗击疫情网页设计素材厦门seo新站策划
  • 网站开发设计费用成人职业技能培训有哪些项目
  • 室内效果图网站石家庄最新疫情最新消息
  • 贵州做网站kuhugzbittorrentkitty磁力猫
  • 如何搭建一个个人网站环球资源外贸平台免费
  • 网站菜单导航刷赞业务推广网站
  • 穿着西裤做的网站西安seo优化排名
  • 建电子商务网站需要多少钱一站式营销推广
  • 网站图片怎么做缓存seo是什么职业岗位
  • 自己做的网站百度搜不到网址之家
  • 做网站的上市公司有哪些关键词seo价格
  • 用fw做明星的网站长沙正规竞价优化推荐
  • 驾校网站制作广告推销网站
  • 企业为什么做平台网站北京做百度推广的公司
  • 深圳 网站建设爱站网权重查询
  • 服务区里可以做多少个网站属于网络营销的特点是
  • 如何快速做网站排名seo关键词优化公司哪家好
  • 购买网站模板佛山网站建设正规公司
  • 网上商城网站建设市场监督管理局官网入口
  • 网站建设所需服务器进入百度app
  • 集宁建设局网站寻找客户的渠道和方法
  • 成品网站的安装教程软文广告营销