如果让 25 个 AI Agent 在一个虚拟小镇里生活,会发生什么?
它们会交流、交友、组织活动、传播八卦,甚至自发地策划一场情人节派对——这正是斯坦福大学 2023 年论文《Generative Agents: Interactive Simulacra of Human Behavior》的真实实验。
这篇论文开创性地展示了:LLM + 记忆系统 + 社交互动 = 涌现的人类行为。
本文要点
- 论文背景与核心贡献
- 系统架构:感知-记忆-反思-规划循环
- 记忆流(Memory Stream)设计原理
- 反思机制(Reflection)与重要性评估
- 规划系统(Planning)与层级化计划
- 虚拟小镇沙盒实验与案例分析
- 论文局限性分析
- 与现代 Agent 架构的对比
一、论文背景与核心贡献
1.1 研究动机
传统 AI Agent 面临两大挑战:
┌─────────────────────────────────────────────────────────────┐│ 传统 Agent 的困境 │├─────────────────────────────────────────────────────────────┤│ ││ 1. 记忆缺失 ││ ├── 无法记住过去的经历 ││ ├── 每次交互都是「白纸一张」 ││ └── 缺乏连贯性和个性化 ││ ││ 2. 社交缺失 ││ ├── 大多数研究聚焦单 Agent ││ ├── 忽视 Agent 间的互动 ││ └── 无法模拟真实社会行为 ││ │└─────────────────────────────────────────────────────────────┘论文的核心问题:能否用 LLM 创建可信的人类行为模拟?
1.2 核心贡献
三大技术突破:
| 突破点 | 描述 | 意义 |
|---|---|---|
| Memory Stream | 长期记忆存储 + 智能检索 | Agent 拥有了「记忆」 |
| Reflection | 定期反思形成高层认知 | Agent 能够「思考」 |
| Planning | 从长期目标到即时行动的层级规划 | Agent 能够「规划」 |
二、系统架构:感知-记忆-反思-规划
2.1 整体架构
2.2 核心循环
感知(Perceive)→ 记忆(Retrieve)→ 反思(Reflect)→ 规划(Plan)→ 行动(Act)每个时刻,Agent 执行以下流程:
- 感知:观察周围环境,提取重要事件
- 记忆检索:从 Memory Stream 检索相关记忆
- 反思(定期):形成更高层次的认知
- 规划:基于记忆和反思,生成行动计划
- 行动:执行具体行动,影响环境
2.3 与传统架构的对比
| 维度 | 传统 Agent | Generative Agent |
|---|---|---|
| 记忆 | 无/短期上下文 | 长期 Memory Stream |
| 认知 | 无 | 定期反思形成高层认知 |
| 规划 | 即时反应 | 层级化计划 |
| 行为连贯性 | 差 | 强 |
| 社交能力 | 无/简单交互 | 复杂社交行为 |
三、记忆流(Memory Stream)设计
3.1 核心概念
Memory Stream 是 Agent 的长期记忆存储系统,记录 Agent 的所有经历。
┌─────────────────────────────────────────────────────────────┐│ Memory Stream 结构 │├─────────────────────────────────────────────────────────────┤│ ││ 每条记忆包含: ││ ┌─────────────────────────────────────────────────────┐ ││ │ 内容(Content):"John 在咖啡厅遇到了 Maria" │ ││ │ 时间戳(Timestamp):2024-03-15 14:30:00 │ ││ │ 重要性(Importance):0.8 │ ││ │ 访问次数(Access Count):3 │ ││ │ 创建时间(Created):2024-03-15 14:30:05 │ ││ └─────────────────────────────────────────────────────┘ ││ ││ 记忆按时间顺序存储,支持智能检索 ││ │└─────────────────────────────────────────────────────────────┘3.2 记忆存储
from dataclasses import dataclassfrom datetime import datetimefrom typing import List, Optionalimport json
@dataclassclass Memory: """单条记忆""" content: str # 记忆内容 timestamp: datetime # 事件发生时间 created_at: datetime # 记忆创建时间 importance: float # 重要性评分 (0-1) access_count: int = 0 # 访问次数 embedding: List[float] = None # 向量嵌入(用于检索)
def to_dict(self) -> dict: return { "content": self.content, "timestamp": self.timestamp.isoformat(), "created_at": self.created_at.isoformat(), "importance": self.importance, "access_count": self.access_count }
class MemoryStream: """记忆流:Agent 的长期记忆系统"""
def __init__(self, embedding_model=None): self.memories: List[Memory] = [] self.embedding_model = embedding_model
def add_memory(self, content: str, importance: float = 0.5): """添加新记忆""" now = datetime.now() memory = Memory( content=content, timestamp=now, created_at=now, importance=importance, embedding=self._get_embedding(content) if self.embedding_model else None ) self.memories.append(memory) return memory
def _get_embedding(self, text: str) -> List[float]: """获取文本嵌入向量""" if self.embedding_model: return self.embedding_model.embed(text) return []3.3 智能检索机制
论文设计了三维评分的检索算法:
三维评分详解:
import numpy as npfrom datetime import datetime, timedelta
class MemoryStreamWithRetrieval(MemoryStream): """带智能检索的记忆流"""
def retrieve(self, query: str, top_k: int = 10) -> List[Memory]: """检索相关记忆""" query_embedding = self._get_embedding(query)
scored_memories = [] for memory in self.memories: # 计算三维评分 relevance = self._calculate_relevance(query_embedding, memory) recency = self._calculate_recency(memory) importance = memory.importance
# 综合评分(论文中的权重) score = ( 0.5 * relevance + 0.3 * recency + 0.2 * importance ) scored_memories.append((memory, score))
# 排序并返回 Top-K scored_memories.sort(key=lambda x: x[1], reverse=True)
# 更新访问计数 for memory, _ in scored_memories[:top_k]: memory.access_count += 1
return [m for m, s in scored_memories[:top_k]]
def _calculate_relevance(self, query_embedding: List[float], memory: Memory) -> float: """计算相关性:查询与记忆的语义相似度""" if memory.embedding is None or query_embedding is None: return 0.5
# 余弦相似度 dot_product = np.dot(query_embedding, memory.embedding) norm = np.linalg.norm(query_embedding) * np.linalg.norm(memory.embedding) return dot_product / norm if norm > 0 else 0
def _calculate_recency(self, memory: Memory) -> float: """计算时近性:记忆越新,分数越高""" hours_ago = (datetime.now() - memory.timestamp).total_seconds() / 3600 # 指数衰减 decay_factor = 0.99 ** hours_ago return decay_factor
def _calculate_importance(self, memory: Memory) -> float: """重要性已在存储时计算""" return memory.importance3.4 重要性评估
论文使用 LLM 评估记忆的重要性:
def assess_importance(llm, event: str) -> float: """使用 LLM 评估事件重要性""" prompt = f""" On the scale of 1 to 10, where 1 is purely mundane (e.g., brushing teeth, making bed) and 10 is extremely poignant (e.g., a break up, college acceptance), rate the likely poignancy of the following piece of memory.
Memory: {event}
Rating (1-10): """
response = llm.generate(prompt) # 提取数字并归一化到 0-1 try: rating = float(response.strip()) return min(max(rating / 10, 0), 1) except: return 0.5 # 默认中等重要性
# 示例events = [ "John 在咖啡厅买了一杯拿铁", # 重要性 ~0.2 "John 和 Maria 开始约会", # 重要性 ~0.8 "John 决定参加市议会选举", # 重要性 ~0.9 "John 刷了牙", # 重要性 ~0.1]
for event in events: importance = assess_importance(llm, event) print(f"事件:{event}") print(f"重要性:{importance:.2f}\n")四、反思机制(Reflection)
4.1 为什么需要反思?
核心洞察:单纯记忆事件不足以产生智能行为,需要反思来形成更高层次的认知。
4.2 反思触发条件
┌─────────────────────────────────────────────────────────────┐│ 反思触发条件 │├─────────────────────────────────────────────────────────────┤│ ││ 条件 1:累计记忆达到阈值 ││ - 当 Agent 累积了 100 条新记忆 ││ - 触发一次反思 ││ ││ 条件 2:时间间隔 ││ - 每隔一定时间(如虚拟世界的几小时) ││ - 触发反思 ││ ││ 反思结果存储到 Memory Stream ││ - 作为特殊记忆类型 ││ - 重要性通常较高 ││ │└─────────────────────────────────────────────────────────────┘4.3 反思流程
4.4 反思实现
from typing import List, Tuple
class ReflectionEngine: """反思引擎"""
def __init__(self, llm, memory_stream: MemoryStream): self.llm = llm self.memory_stream = memory_stream
def reflect(self, agent_name: str) -> List[str]: """执行反思过程""" # 步骤 1:检索最近的记忆 recent_memories = self.memory_stream.retrieve_recent(n=100)
# 步骤 2:生成反思问题 questions = self._generate_questions(recent_memories)
# 步骤 3:对每个问题生成洞察 insights = [] for question in questions: # 检索与问题相关的记忆 relevant_memories = self.memory_stream.retrieve(question, top_k=20)
# 生成洞察 insight = self._generate_insight(question, relevant_memories) insights.append(insight)
# 存储洞察到记忆流 self.memory_stream.add_memory( content=f"[Reflection] {insight}", importance=0.9 # 反思结果重要性高 )
return insights
def _generate_questions(self, memories: List[Memory]) -> List[str]: """基于记忆生成反思问题""" memory_texts = "\n".join([f"- {m.content}" for m in memories])
prompt = f""" Given only the information above, what are 3 most salient high-level questions we can answer about the subjects in the statements?
Statements: {memory_texts}
Questions (1, 2, 3): """
response = self.llm.generate(prompt) # 解析问题 questions = self._parse_questions(response) return questions
def _generate_insight(self, question: str, memories: List[Memory]) -> str: """针对问题生成洞察""" memory_texts = "\n".join([f"- {m.content}" for m in memories])
prompt = f""" Statements about John: {memory_texts}
Question: {question}
What is a high-level insight or inference you can draw from these statements in 2 sentences or less? """
insight = self.llm.generate(prompt) return insight.strip()
def _parse_questions(self, response: str) -> List[str]: """解析 LLM 返回的问题列表""" questions = [] for line in response.strip().split("\n"): # 移除编号 line = line.strip() if line and line[0].isdigit(): line = line.split(".", 1)[-1].strip() if line: questions.append(line) return questions[:3] # 最多 3 个问题4.5 反思示例
Agent:John
=== 最近记忆 ===- John 在图书馆看到了 Maria- John 主动和 Maria 搭话- John 问 Maria 是否愿意一起学习- John 送了 Maria 一本书- John 在提到 Maria 时会微笑
=== 生成的反思问题 ===1. John 对 Maria 的态度是什么?2. John 最近的行为有什么共同点?3. John 和 Maria 的关系正在如何发展?
=== 生成的洞察 ===1. John 对 Maria 有明显的好感,他主动接近她并创造相处机会。2. John 正在尝试与 Maria 建立更亲密的关系。3. John 可能正在发展一段浪漫关系。
=== 存储到记忆流 ===[Reflection] John 对 Maria 有好感,正在主动追求她。五、规划系统(Planning)
5.1 层级化规划
论文设计了从长期目标到即时行动的层级规划:
5.2 规划生成流程
5.3 规划实现
from dataclasses import dataclassfrom typing import List, Optionalfrom datetime import datetime, timedelta
@dataclassclass Plan: """计划""" description: str # 计划描述 start_time: datetime # 开始时间 end_time: datetime # 结束时间 sub_plans: List['Plan'] # 子计划 status: str = "pending" # pending/ongoing/completed
class PlanningEngine: """规划引擎"""
def __init__(self, llm, memory_stream: MemoryStream): self.llm = llm self.memory_stream = memory_stream self.current_plan: Optional[Plan] = None
def create_daily_plan(self, agent_name: str, current_time: datetime) -> Plan: """创建日计划""" # 检索相关记忆和反思 memories = self.memory_stream.retrieve( f"What should {agent_name} do today?", top_k=20 )
# 检索反思结果 reflections = [ m for m in self.memory_stream.memories if "[Reflection]" in m.content ][-5:] # 最近 5 条反思
# 构建提示词 prompt = self._build_plan_prompt( agent_name, current_time, memories, reflections )
# 生成计划 response = self.llm.generate(prompt)
# 解析计划 daily_plan = self._parse_plan(response, current_time) self.current_plan = daily_plan
return daily_plan
def _build_plan_prompt(self, agent_name: str, current_time: datetime, memories: List[Memory], reflections: List[Memory]) -> str: """构建规划提示词""" memory_texts = "\n".join([f"- {m.content}" for m in memories]) reflection_texts = "\n".join([f"- {m.content}" for m in reflections])
prompt = f""" Name: {agent_name} Current time: {current_time.strftime("%Y-%m-%d %H:%M")}
Recent memories: {memory_texts}
Reflections about self: {reflection_texts}
Today is {current_time.strftime("%A, %B %d, %Y")}. Here is {agent_name}'s plan for the day:
1. [Time] Activity 2. [Time] Activity ...
Please create a detailed schedule for the entire day. """ return prompt
def refine_plan(self, plan: Plan, current_time: datetime) -> Plan: """细化计划到小时级别""" prompt = f""" Current plan: {plan.description} Current time: {current_time.strftime("%H:%M")}
Please refine this plan into specific 1-hour segments:
Hour | Activity ---- | -------- {current_time.hour}:00 | {current_time.hour + 1}:00 | ... """
response = self.llm.generate(prompt) refined_plan = self._parse_hourly_plan(response, current_time) return refined_plan
def get_next_action(self, agent_name: str, current_time: datetime) -> str: """获取下一个具体行动""" if self.current_plan is None: self.create_daily_plan(agent_name, current_time)
# 找到当前应该执行的计划 current_activity = self._find_current_activity( self.current_plan, current_time )
if current_activity is None: return "idle"
# 生成具体行动 prompt = f""" Current activity: {current_activity.description} Current location: {current_activity.location if hasattr(current_activity, 'location') else 'home'}
What is the immediate next action {agent_name} should take? Answer in one sentence, starting with an action verb. """
action = self.llm.generate(prompt) return action.strip()
def _find_current_activity(self, plan: Plan, current_time: datetime) -> Optional[Plan]: """找到当前应该执行的活动""" for sub_plan in plan.sub_plans: if sub_plan.start_time <= current_time < sub_plan.end_time: return sub_plan return None
def _parse_plan(self, response: str, current_time: datetime) -> Plan: """解析 LLM 返回的计划""" lines = response.strip().split("\n") sub_plans = []
for line in lines: if line.strip() and line[0].isdigit(): # 解析格式如 "1. [09:00] Morning routine" parts = line.split("]", 1) if len(parts) == 2: time_str = parts[0].split("[")[-1] activity = parts[1].strip()
# 创建子计划 hour = int(time_str.split(":")[0]) start = current_time.replace(hour=hour, minute=0) end = start + timedelta(hours=1)
sub_plans.append(Plan( description=activity, start_time=start, end_time=end, sub_plans=[] ))
return Plan( description=f"Daily plan for {current_time.strftime('%Y-%m-%d')}", start_time=current_time.replace(hour=0, minute=0), end_time=current_time.replace(hour=23, minute=59), sub_plans=sub_plans )
def _parse_hourly_plan(self, response: str, current_time: datetime) -> Plan: """解析小时级别计划""" # 类似 _parse_plan 的实现 pass5.4 规划示例
Agent:John日期:2024-03-15
=== 日计划 ===09:00 - 起床,洗漱10:00 - 去图书馆学习12:00 - 和 Maria 一起午餐13:00 - 下午课程15:00 - 继续在图书馆研究17:00 - 去 Hobbs Cafe 喝咖啡18:00 - 准备晚餐19:00 - 晚间阅读21:00 - 休息
=== 当前时间 14:30 ===当前活动:下午课程(13:00-15:00)下一步行动:继续听课
=== 当前时间 15:00 ===当前活动:继续在图书馆研究(15:00-17:00)下一步行动:走向图书馆六、虚拟小镇沙盒实验
6.1 实验设置
实验配置:
| 要素 | 设置 |
|---|---|
| Agent 数量 | 25 个 |
| 环境 | 沙盒小镇(宿舍、商店、咖啡馆、图书馆等) |
| 时间 | 模拟 2 天游戏时间 |
| Agent 类型 | 学生、店主、医生、教师等 |
| 初始设定 | 每个 Agent 有背景故事、性格、关系 |
6.2 Agent 初始化
@dataclassclass AgentProfile: """Agent 初始设定""" name: str age: int occupation: str personality: List[str] # 性格特征 background: str # 背景故事 relationships: Dict[str, str] # 与其他 Agent 的关系 current_location: str
# 示例 Agentjohn_profile = AgentProfile( name="John Lin", age=25, occupation="PhD student in computer science", personality=["friendly", "curious", "hardworking"], background=""" John Lin is a PhD student in computer science at Stanford University. He is passionate about AI research. He lives in a dorm with his roommate Sam. """, relationships={ "Sam Moore": "roommate and close friend", "Maria Lopez": "lab partner, potential romantic interest" }, current_location="dorm")6.3 涌现行为案例
案例一:情人节派对
关键观察:
- Isabella 自发决定举办派对
- 信息通过社交网络传播
- 没有「脚本」设定派对情节
- Agent 们自发组织、传播、参与
案例二:信息传播实验
论文设计了信息传播测试:
┌─────────────────────────────────────────────────────────────┐│ 信息传播实验 │├─────────────────────────────────────────────────────────────┤│ ││ 初始信息: ││ Sam 告诉 John:"我打算参加明年的市长选举" ││ ││ 信息传播链: ││ John → Maria → Tom → ... → 其他 Agent ││ ││ 结果测量: ││ - 多少 Agent 知道这个消息? ││ - 信息准确性如何? ││ - 传播需要多长时间? ││ ││ 实验发现: ││ - 2 天后,约 50% 的 Agent 知道此消息 ││ - 信息保持较高准确性 ││ - 传播路径符合真实社交网络特征 ││ │└─────────────────────────────────────────────────────────────┘6.4 评估方法
论文使用三种评估方式:
评估结果:
| 评估维度 | 人类评分 (1-7) | 说明 |
|---|---|---|
| 整体可信度 | 4.85 | 高于基线方法 |
| 行为连贯性 | 4.77 | 记忆系统贡献显著 |
| 计划合理性 | 4.53 | 规划系统有效 |
| 反应适当性 | 4.62 | 反思机制有贡献 |
6.5 消融实验结果
移除记忆流:Agent 行为失去连贯性,重复同样问题移除反思:Agent 缺乏长期目标,行为短视移除规划:Agent 行为随机,没有日程感
完整系统表现最佳,三个组件相互配合七、论文局限性分析
7.1 技术局限
7.2 具体问题分析
1. 计算成本
每次 Agent 行动需要的 LLM 调用:├── 感知:1 次调用(提取事件)├── 记忆检索:1-2 次调用(生成嵌入、排序)├── 规划:1-3 次调用(生成计划、细化)├── 行动:1 次调用└── 反思(定期):3-5 次调用
25 个 Agent × 每天约 100 次行动 × 多次调用= 大量 API 成本2. 记忆检索效率
# 当前实现的问题class MemoryStream: def retrieve(self, query: str, top_k: int = 10): # 线性扫描所有记忆 for memory in self.memories: # O(n) 复杂度 score = self._calculate_score(query, memory) ...
# 问题:随着时间推移,记忆数量持续增长# 长期运行后检索变慢3. 规划的刚性
计划执行中的问题:┌─────────────────────────────────────────────────────────────┐│ ││ Agent 制定了计划,但环境可能变化: ││ ││ 计划:下午 3 点去图书馆 ││ 变化:图书馆临时关闭 ││ 问题:Agent 如何动态调整? ││ ││ 论文的解决方案有限,主要依赖重新规划 ││ 缺乏细粒度的反应式调整机制 ││ │└─────────────────────────────────────────────────────────────┘7.3 未解决的问题
1. 记忆遗忘机制 - 记忆只会增加,不会遗忘 - 不符合人类记忆特点 - 长期运行后记忆库膨胀
2. 情感建模 - Agent 的情感表达较为表面 - 缺乏深层的情感状态变化 - 情感对决策的影响有限
3. 学习能力 - Agent 不会真正「学习」新技能 - 知识来源于 LLM,不会积累 - 无法超出 LLM 的能力边界
4. 社会规范 - Agent 对社会规范的理解有限 - 可能产生不符合伦理的行为 - 缺乏价值观引导机制八、与现代 Agent 架构的对比
8.1 与 LangGraph 的对比
| 维度 | Generative Agents | LangGraph |
|---|---|---|
| 记忆管理 | 内置 Memory Stream | 需要手动集成 |
| 状态管理 | 记忆流 + 反思 | 显式 State Graph |
| 控制流 | 感知-反思-规划循环 | 自定义图结构 |
| 扩展性 | 需要修改核心架构 | 高度可定制 |
| 适用场景 | 模拟、角色扮演 | 通用 Agent 构建 |
8.2 与 CrewAI 的对比
# Generative Agents 风格agent = GenerativeAgent( name="John", profile=john_profile, memory_stream=MemoryStream(), reflection_engine=ReflectionEngine(), planning_engine=PlanningEngine())agent.live() # Agent 自主生活
# CrewAI 风格agent = Agent( role="Researcher", goal="Research AI topics", backstory="Expert in AI research")task = Task(description="...", agent=agent)crew = Crew(agents=[agent], tasks=[task])crew.kickoff() # 执行特定任务关键区别:
- Generative Agents:面向模拟,Agent 自主生活
- CrewAI:面向任务,Agent 协作完成目标
8.3 启发的现代设计
Generative Agents 论文对现代 Agent 系统产生了深远影响:
┌─────────────────────────────────────────────────────────────┐│ 论文启发的现代设计 │├─────────────────────────────────────────────────────────────┤│ ││ 1. 记忆系统成为标配 ││ ├── MemGPT:显式的记忆管理架构 ││ ├── LangChain Memory:多种记忆类型 ││ └── 向量数据库:长期记忆的标准实现 ││ ││ 2. 反思机制被广泛采用 ││ ├── Reflexion 论文:将反思系统化 ││ ├── Self-RAG:检索增强的反思 ││ └── 多轮对话中的自我修正 ││ ││ 3. 规划系统的发展 ││ ├── Plan-and-Execute:显式规划架构 ││ ├── ReAct:思考-行动循环 ││ └── Tree of Thoughts:多路径规划 ││ ││ 4. Multi-Agent 系统 ││ ├── AutoGen:微软的多 Agent 框架 ││ ├── CrewAI:角色扮演协作 ││ └── MetaGPT:软件公司模拟 ││ │└─────────────────────────────────────────────────────────────┘常见问题 FAQ
Q1:Generative Agents 和传统的 NPC 有什么区别?
A:传统 NPC 是脚本驱动的,行为预先设定。Generative Agents 基于记忆和反思自主决策,行为是「涌现」的而非「编写」的。
Q2:论文的核心创新是什么?
A:三个创新点——Memory Stream(长期记忆)、Reflection(反思机制)、Planning(层级规划)。三者结合产生了可信的行为连贯性。
Q3:如何在实际项目中应用这些概念?
A:
- 记忆系统:使用向量数据库 + 时间衰减 + 重要性评分
- 反思机制:定期用 LLM 总结历史行为,生成洞察
- 规划系统:从目标分解到具体行动
Q4:论文的开源代码在哪里?
A:斯坦福已开源:https://github.com/joonspk-research/generative_agents
Q5:计算成本这么高,怎么优化?
A:
- 批量处理:合并多个 Agent 的 LLM 调用
- 缓存:相似查询复用结果
- 稀疏反思:降低反思频率
- 近似检索:使用近似最近邻加速
小结
Generative Agents 论文展示了 LLM + 记忆 + 反思 + 规划 = 可信的人类行为模拟。
核心贡献:
| 组件 | 作用 | 启示 |
|---|---|---|
| Memory Stream | 长期记忆存储与智能检索 | 记忆是 Agent 的基础 |
| Reflection | 定期反思形成高层认知 | 反思产生智能 |
| Planning | 从目标到行动的层级规划 | 规划使行为连贯 |
对 Agent 开发的启示:
- 记忆不是可选项——没有记忆,Agent 无法形成连贯行为
- 反思提升智能——单纯的反应不够,需要总结和抽象
- 规划需要层级——从长期目标到即时行动
- 社交产生涌现——Multi-Agent 互动产生复杂行为
论文价值:
虽然存在计算成本、规模限制等问题,但论文开创性地展示了 AI Agent 模拟人类行为的可能性,为后续的 Agent 研究奠定了基础。
下篇预告
理解了记忆、反思、规划的原理,如何在生产环境中高效实现?
参考资料
- Generative Agents: Interactive Simulacra of Human Behavior(Park et al., 2023)
- Stanford Generative Agents GitHub
- ReAct: Synergizing Reasoning and Acting in Language Models(Yao et al., 2022)
- Reflexion: Language Agents with Verbal Reinforcement Learning(Shinn et al., 2023)
- MemGPT: Towards LLMs as Operating Systems(Packer et al., 2023)
支持与分享
如果这篇文章对你有帮助,欢迎支持作者或分享给更多人
部分信息可能已经过时






