使用 LangChain 管理每个用户的有状态对话

问题描述 投票:0回答:1

我正在使用 LangChain 构建一个聊天机器人,它需要与用户进行自然对话以从他们那里收集信息。聊天机器人需要在多个消息和回合中维护每个唯一用户的上下文和状态。

例如,如果聊天机器人在消息 1 中询问姓名,在消息 2 中获取姓名,然后在消息 3 中询问电子邮件,则它需要记住之前的消息和提供的姓名。

使用 LangChain 库为每个用户构建这种类型的持久、有状态对话的正确方法是什么?

每个数据收集任务是否应该是一个单独的链,根据需要调用?如何跨链跨消息在幕后维护对话状态?

Context 对象是否有助于链接对话?或者这个用例还有其他标准模式吗?

我正在寻找使用内存启用多轮对话的最佳实践,而无需在发送消息的客户端中存储状态。目标是使用 LangChain 构造在服务器端保持状态隔离。

我还什么都没有。我只是在调查。

chatbot langchain large-language-model
1个回答
0
投票

我正在寻找启用多轮对话的最佳实践 具有内存,无需在发送消息的客户端中存储状态。这 目标是使用 LangChain 在服务器端保持状态隔离 构造。

您不想在浏览器中存储消息,因为当浏览器刷新时,存储的数据将会丢失

在聊天对话中,我们将聊天内容存储在内存中,并向链提供内存。您可能正在考虑在服务器上创建缓冲区内存。用户提出问题,问题将存储在内存中,然后内存将传递给链,链将请求打开人工智能服务器,收到的任何响应都将发送给用户并保存在聊天中缓冲存储器。

第一个缺点是缓冲存储器存储在计算机内存中。如果主机以某种方式重新启动您的服务器,所有消息都将丢失。 (类似于浏览器刷新)

第二个缺点是你必须为每个用户创建内存。如果用户有不同的聊天框,你也必须创建不同的记忆。这会占用服务器上太多的内存。内存使用过多可能会导致崩溃或不稳定,从而影响服务器的可用性。

真正的持久化方式是将它们存储在数据库中。每个用户都有自己的表。该表必须有

conversationID
role
message
。因为您必须跟踪谁创建了该消息。 “用户”或“ai”。

© www.soinside.com 2019 - 2024. All rights reserved.