• K_KKiki

    最近 jev 的讨论挺多,我们把它接进了「斯坦福小镇」的 agent 模拟世界,做了一个小实验。

    虽然它用了像素风游戏的表现形式,但这个世界里没有玩家角色。人类只能观察,不能控制居民。画面中所有会移动的角色,都是 agent 依靠 jev 自己决定要去哪里、找谁,以及什么时候停下来。

    目前场景里有 20 个居民。每个人都有自己的身份、性格、当前状态和对世界的共同认知。

    世界运行后,他们会不断经历这样一个循环:

    观察当前环境 → 决定下一步做什么 → 移动 → 发起互动 → 对话 → 更新状态和记忆

    这次主要实验的是:能不能让 jev 来负责 agent 最频繁的「下一步做什么」决策( repo 里面有录屏)

    我们的做法不是让模型自由生成一段 JSON ,而是先由引擎计算出当前合法的候选动作,例如:

    - 现在可以接近哪些人或物体

    - 可以走向哪些地点

    - 是否值得主动接触某个目标

    - 如果不行动,应该短暂停留还是等待更久

    然后把这些候选项交给 Jev 。一次请求里会同时询问 seek 、target 、roam 、place 和 idle_length ,再由代码按照固定规则组合成最终动作。

    这样做主要解决了一个之前比较麻烦的问题:普通对话模型即使被要求输出 JSON ,仍然可能选择一个根本不存在、或者当前不可达的目标。Jev 的 Choice 问题只能从引擎提供的候选项里选择,相当于让非法动作从结构上就无法被表达。

    同时,它还会返回每个选项的概率和置信度,所以右侧观察面板里可以看到类似这样的记录:

    seek 0.83 · talk to Ovid p=0.62 c=0.70

    这比让模型事后生成一句“我为什么这么做”,更方便观察 Agent 的真实决策过程。

    当然,Jev 目前并没有负责整个 Agent 。

    它只替换了动作决策这一环。人物对话、长期状态描述和记忆仍然由对话模型与 Embedding 完成。Jev 不生成文本,所以它很适合从有限选项中快速做决定,但不适合直接承担人物对白。

    技术上目前是 TypeScript + React + PixiJS 。模拟本身运行在浏览器中,Node 代理只负责保存模型凭证和转发请求。默认运行 20 个 agent ,也可以调整到 50 个,用来观察多人场景下的行为和调用压力。

    当前版本还有不少限制:

    - 只有一个主要观察场景

    - 默认刷新页面会重新开始一个世界

    - Agent 数量增加后,对话模型的调用成本仍然比较明显

    - Jev 不生成 intent 和动作描述,人物接近目标后的行为有时会显得比较直接

    - 这仍然是一个 Agent loop 的实验,不是完整的虚拟社会

    这里说的「斯坦福小镇」,主要指 Generative Agents / Smallville 这一类“观察数字居民自主生活”的方向,并不是对原项目的完整复刻。项目的早期工程基础来自 a16z 的 AI Town ,我们在上面继续做了自己的世界、像素场景和决策层实验。

    主楼
  • 竭泽之鱼

    你这是从哪来的?

    #1
  • K_KKiki

    代码和运行方式放在这里:

    github.com

    图片

    GitHub - NevaMind-AI/JevTown: jev based AI town simulation

    jev based AI town simulation

    #2
  • QYY

    说不定哪一天就能创造一个和真实世界一样的虚拟世界,如果实现了,那说明人类可能原本就是一个更大的虚拟世界

    #3
  • K_KKiki

    我们团队自己做的呢,评论区指路了链接

    #4
  • tito1

    佬可以github放点动画看看

    #5
  • first

    有点意思,不过与其200倍速度,不如改为200倍规模

    #6
  • kooo13579

    想看小鎮的人一言不合就打架的動畫

    #7
  • LKM1729

    怎么有点像黑客帝国的设定 ^-^

    #8
  • K_KKiki

    哈哈哈好的收到,也在优化当中,确实现在的行为比较简单^-^

    #9
  • K_KKiki

    很酷!搓搓小人,墨镜安排下 ^-^

    #10
  • K_KKiki

    这个场景的话得安排大点跑了 ^-^

    #11
  • K_KKiki

    录屏太大了^-^,也是在苦恼当中ing

    #12
  • kooo13579

    血條 憤怒值 這些可以嗎

    #13
  • umbrella

    - 普通对话模型即使被要求输出 JSON ,仍然可能选择一个根本不存在、或者当前不可达的目标。

    这个按理说应该可以被 Structured Outputs 输出模式完美解决吧,除非你给到的 json schema 一开始就具有表达出非法操作的可能性,那同样地,jev也不可能规避这一点。

    #14
  • 风铃铛

    传到B站上,github里挂个视频嵌入

    #15

发表回复

登录后回复