过去几个月,我和朋友一起开发了一个文本基于的生活模拟游戏,我们很快就遇到了人工智能游戏最大的障碍:语境窗口。如果只将游戏包围在一个聊天机器人上,AI 最终会忘记玩家的道具,幻想死掉的NPC 回到生命状态,整体上完全失去了剧本。

我们意识到,只有这样才能让它工作,即叙事文本不能成为真实的源头。我们需要一个引擎,所有行动和发展都始终按照时间线发生,并且将其记住,以便过去的决定可以影响未来。

我们的解决方案是完全从LLM中切分模拟。

我们将规范游戏状态储存入PostgreSQL数据库,使用Prisma与不同人工智能代理分开管理游戏每个方面的编辑,代替每次重写整个游戏状态或需要在一个聊天机器人上运行。

当玩家输入一个自由形式的动作时,特设的决策AI根据他们的结构化统计(如谈判或潜行)判定成功,更新数据库。

只有当状态变化之后,一张单独的叙事GM生成文本,以说明发生了什么。

这相当于一个天疼的头痛,还在处理边界情况,world逻辑不匹配的BUG会随时渗透出来。对于正在与LLM合作的开发者们,各位如何处理ersistent状态?您是否使用结构化输出的全部,还是使用向量数据库来实现记忆功能?