-
Notifications
You must be signed in to change notification settings - Fork 124
Closed
Description
Hello guys, I try to understand what is the different of EmbeddedJsonModel and JsonModel and when to use it, i try some example to clarify but cannot find anything.
from redis.asyncio import Redis
from uuid_extensions import uuid7
from pydantic import AnyUrl, Field, BaseModel
from aredis_om import JsonModel, EmbeddedJsonModel, Migrator, Field as RField
from aredis_om.model.model import model_registry
from typing import Literal
from uuid import UUID
redis = Redis(host='localhost',port=3333,password="ssssss")
class Message(EmbeddedJsonModel):
role: Literal['user', 'system', 'assistant']
content: str
class Meta:
database = redis
class ChatSessionData(EmbeddedJsonModel): # change here
id: str = RField(index=True,primary_key=True)
messages: list[Message] = Field(default_factory=list)
summaries: list[str] = Field(default_factory=list)
urls: list[AnyUrl] = Field(default_factory=list,description="Addition data should be store in object storage and provide url.")
class Meta:
database = redis
class UserData(JsonModel):
username:str = RField(index=True,primary_key=True)
password:str
chat_sessions:list[ChatSessionData] = Field(default_factory=list)
class Meta:
database = redis
await Migrator().run() # create all indexes
chat_id = uuid7()
chat_id_str = str(chat_id)
chat_session_data = ChatSessionData(id = chat_id_str,
messages=[Message(role = "user",content = "this is content")],
summaries=["sum1","sum2"],
urls = ["http://example.com"])
userdata = UserData(username="xxx", password="def",token = uuid7(),chat_sessions = [chat_session_data])
await userdata.save()In the above code, i change EmbeddedJsonModel parent class to both JsonModel and EmbeddedJsonModel. And they store object completely the same in server (monitor in RedisInsight).
Thank you.
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
No labels