如何在Python-Flask中为LLM聊天机器人保持多个用户的对话上下文分离
提前道歉,这个问题可能很简单就能解决。我还是编程新手,边学边做。
我正在用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上,并进行测试,确保每个用户都有自己的聊天记录。