Merge branch 'feat-memory-opt' into 'mgx_ops'

use long-term memory in rolezero

See merge request pub/MetaGPT!369
This commit is contained in:
林义章 2024-09-25 07:13:41 +00:00
commit e0ec17e6aa
13 changed files with 418 additions and 6 deletions

View file

@ -18,6 +18,7 @@ from __future__ import annotations
import asyncio
import json
import os.path
import time
import uuid
from abc import ABC
from asyncio import Queue, QueueEmpty, wait_for
@ -408,6 +409,12 @@ class Message(BaseModel):
dynamic_class = create_model(class_name, **{key: (value.__class__, ...) for key, value in kvs.items()})
return dynamic_class.model_validate(kvs)
def is_user_message(self) -> bool:
return self.role == "user"
def is_ai_message(self) -> bool:
return self.role == "assistant"
class UserMessage(Message):
"""便于支持OpenAI的消息
@ -955,3 +962,11 @@ class BaseEnum(Enum):
obj._value_ = value
obj.desc = desc
return obj
class LongTermMemoryItem(BaseModel):
message: Message
created_at: Optional[float] = Field(default_factory=time.time)
def rag_key(self) -> str:
return self.message.content