这篇文章分析 Generative Agents 中的 感知 Perceive 模块,是 Persona 类认知链 Perceive → Retrieve → Plan → Reflect → Execute 中的第一环。主要功能如下:

  • 空间感知:识别角色周围可见的瓦片(tiles),并更新其空间记忆树。
  • 事件感知:识别角色视野范围内正在发生的事件,并判断是否为新事件。
  • 记忆存储:将新感知到的事件写入联想记忆(associative memory)。
  • 重要性评分:通过 GPT 模型对事件进行“显著性”(poignancy)评分,用于后续行为决策。

主要函数详解

1. generate_poig_score

def generate_poig_score(persona, event_type, description):
  • 作用:根据事件类型和描述,使用 GPT 模型计算事件的重要性分数。
  • 逻辑
    • 如果是空闲状态(如 "is idle"),返回固定值 1
    • 如果是普通事件(event),调用 run_gpt_prompt_event_poignancy() 获取评分。
    • 如果是聊天事件(chat),调用 run_gpt_prompt_chat_poignancy() 获取评分。

2. perceive

输入:

  1. persona: 当前角色实例。
  2. maze: 地图实例,提供位置与事件信息。

输出:

ret_events: 一组感知到的新事件,每个事件是一个 <ConceptNode> 对象。

def perceive(persona, maze):

这是整个模块的核心函数,负责完成以下任务:

A. 空间感知
nearby_tiles = maze.get_nearby_tiles(persona.scratch.curr_tile, persona.scratch.vision_r)
  • 获取当前角色视野范围内的所有瓦片。
  • 更新角色的空间记忆树(s_mem.tree),记录世界、区域、场景、游戏对象等信息。
B. 事件感知
for tile in nearby_tiles:
  ...
  • 遍历所有附近瓦片,收集其中的事件。
  • 过滤掉重复事件(一个事件可能跨多个瓦片)。
  • 根据距离排序,保留最近的 <att_bandwidth> 个事件。
C. 事件处理与记忆更新
latest_events = persona.a_mem.get_summarized_latest_events(...)
if p_event not in latest_events
    
# 调用 openai 模型能力 gpt_structure.py
event_embdding = get_embedding(deesc_embedding_in)

# 调用 openai 模型能力。Get event poignancy. 
event_poignancy = generate_poig_score(persona, 
                                            "event", 
                                            desc_embedding_in)   

chat_poignancy = generate_poig_score(persona, "chat", 
                                             persona.scratch.act_description)

# 调用 openai 模型能力 gpt_structure.py
def generate_poig_score(persona, event_type, description): 
  if "is idle" in description: 
    return 1

  if event_type == "event": 
    return run_gpt_prompt_event_poignancy(persona, description)[0]
  elif event_type == "chat": 
    return run_gpt_prompt_chat_poignancy(persona, 
                           persona.scratch.act_description)[0]
D. 记忆写入
persona.a_mem.add_chat(...)
persona.a_mem.add_event(...)
  • 将新聊天/事件写入联想记忆。
  • 更新角色临时记忆中的重要性阈值(importance_trigger_curr)。

设计亮点

多层级空间记忆

  • 使用树状结构存储世界、区域、场景、物体,便于快速定位。
  • 支持动态扩展,适用于复杂环境。

距离优先的注意力机制

  • 使用 <att_bandwidth> 控制最大感知事件数。
  • 优先感知距离近的事件,避免信息过载。

显著性评分机制

  • 利用 GPT 模型评估事件重要性。
  • 分别支持普通事件与聊天事件的评分模型。

记忆去重机制

  • 使用集合(set())过滤重复事件。
  • 保证每次只处理真正的新事件。

关键参数说明

参数 描述
vision_r 角色视野半径(单位:tile)
att_bandwidth 最多感知的事件数量
retention 用于判断是否为新事件的时间窗口(步数)

这些参数控制角色的感知能力,可用于模拟不同性格或能力的角色。

  零基础入门AI大模型

今天贴心为大家准备好了一系列AI大模型资源,包括AI大模型入门学习思维导图、精品AI大模型学习书籍手册、视频教程、实战学习等录播视频免费分享出来。

1.学习路线图

在这里插入图片描述

第一阶段: 从大模型系统设计入手,讲解大模型的主要方法;

第二阶段: 在通过大模型提示词工程从Prompts角度入手更好发挥模型的作用;

第三阶段: 大模型平台应用开发借助阿里云PAI平台构建电商领域虚拟试衣系统;

第四阶段: 大模型知识库应用开发以LangChain框架为例,构建物流行业咨询智能问答系统;

第五阶段: 大模型微调开发借助以大健康、新零售、新媒体领域构建适合当前领域大模型;

第六阶段: 以SD多模态大模型为主,搭建了文生图小程序案例;

第七阶段: 以大模型平台应用与开发为主,通过星火大模型,文心大模型等成熟大模型构建大模型行业应用。

2.视频教程

网上虽然也有很多的学习资源,但基本上都残缺不全的,这是我自己整理的大模型视频教程,上面路线图的每一个知识点,我都有配套的视频讲解。

 

 

(都打包成一块的了,不能一一展开,总共300多集)

3.技术文档和电子书

这里主要整理了大模型相关PDF书籍、行业报告、文档,有几百本,都是目前行业最新的。

4.LLM面试题和面经合集

这里主要整理了行业目前最新的大模型面试题和各种大厂offer面经合集。

 

👉学会后的收获:👈

• 基于大模型全栈工程实现(前端、后端、产品经理、设计、数据分析等),通过这门课可获得不同能力;

• 能够利用大模型解决相关实际项目需求: 大数据时代,越来越多的企业和机构需要处理海量数据,利用大模型技术可以更好地处理这些数据,提高数据分析和决策的准确性。因此,掌握大模型应用开发技能,可以让程序员更好地应对实际项目需求;

• 基于大模型和企业数据AI应用开发,实现大模型理论、掌握GPU算力、硬件、LangChain开发框架和项目实战技能, 学会Fine-tuning垂直训练大模型(数据准备、数据蒸馏、大模型部署)一站式掌握;

• 能够完成时下热门大模型垂直领域模型训练能力,提高程序员的编码能力: 大模型应用开发需要掌握机器学习算法、深度学习框架等技术,这些技术的掌握可以提高程序员的编码能力和分析能力,让程序员更加熟练地编写高质量的代码。

1.AI大模型学习路线图
2.100套AI大模型商业化落地方案
3.100集大模型视频教程
4.200本大模型PDF书籍
5.LLM面试题合集
6.AI产品经理资源合集

5.免费获取(扫下方二v码即可100%领取)

Logo

一座年轻的奋斗人之城,一个温馨的开发者之家。在这里,代码改变人生,开发创造未来!

更多推荐