如何在Python-Flask中为LLM聊天机器人保持多个用户的对话上下文分离

1 投票
1 回答
190 浏览
提问于 2025-04-14 16:53

提前道歉,这个问题可能很简单就能解决。我还是编程新手,边学边做。

我正在用Python Flask、OpenAI的语言模型和LLAMA Index库制作一个聊天机器人。现在这个机器人是托管在AWS上的。

目前,所有使用这个机器人的人,不管用什么设备,都是共享同一个聊天记录。所以,如果有一个人说他的名字是Bob,其他人问“我叫什么名字?”时,机器人会回答“Bob”。我想让每个人都有自己的聊天记录,即使他们在不同的设备之间切换。这样,聊天机器人就能记住和每个用户的对话,而不是把大家的聊天混在一起。

我知道语言模型是无状态的,所以每次调用API时都应该是新的请求。我也知道我在使用Llama Index来传递聊天记录,但我不知道如何为每个设备或用户开始一个新的会话。

我在本地机器上用不同的浏览器测试过这个功能,所以我觉得问题不在于NGINX。

我也尝试过Flask Sessions库,但没有成功。

有没有人做过类似的事情,或者有什么建议可以让我开始?

1 个回答

0

下面是一些可以帮助你实现的功能:

  • 使用Flask会话:Flask自带一个会话管理的功能。你可以用flask.session来存储每个用户特有的数据。
  • 分配会话ID:当一个新用户和你的聊天机器人互动时,给他们分配一个独特的会话ID。你可以用用户的浏览器信息、IP地址,或者随机生成一个字符串来实现。
  • 存储聊天记录:根据会话ID来存储聊天记录。你可以使用一个字典或者一个数据库来完成这个任务。
  • 获取聊天记录:每当用户和聊天机器人互动时,根据他们的会话ID来获取他们的聊天记录。
  • 处理会话过期:会话在一段时间不活动后可能会过期。确保你能妥善处理会话和错误情况。

一旦你实现了会话管理,就可以把你的Flask应用再次部署到AWS上,并进行测试,确保每个用户都有自己的聊天记录。

撰写回答