diff --git a/ragna/deploy/_api/core.py b/ragna/deploy/_api/core.py index 2236c0179..dd887e8dc 100644 --- a/ragna/deploy/_api/core.py +++ b/ragna/deploy/_api/core.py @@ -195,7 +195,7 @@ def schema_to_core_chat( session, user=user, id=document.id, - )[1], + ).metadata, ) for document in chat.metadata.documents ], @@ -218,10 +218,12 @@ def schema_to_core_chat( @app.post("/chats") async def create_chat( user: UserDependency, - chat_metadata: schemas.ChatMetadata, + chat_creation_data: schemas.ChatCreationData, ) -> schemas.Chat: with get_session() as session: chat = schemas.Chat(metadata=chat_metadata) + # get documents from DB + database.get_document() # Although we don't need the actual ragna.core.Chat object here, # we use it to validate the documents and metadata. diff --git a/ragna/deploy/_api/schemas.py b/ragna/deploy/_api/schemas.py index 7439f0d5a..4a11b4c0e 100644 --- a/ragna/deploy/_api/schemas.py +++ b/ragna/deploy/_api/schemas.py @@ -18,12 +18,14 @@ class Components(BaseModel): class Document(BaseModel): id: uuid.UUID = Field(default_factory=uuid.uuid4) name: str + metadata: dict @classmethod def from_core(cls, document: ragna.core.Document) -> Document: return cls( id=document.id, name=document.name, + metadata=document.metadata, ) @@ -69,16 +71,20 @@ def from_core(cls, message: ragna.core.Message) -> Message: ) -class ChatMetadata(BaseModel): +class ChatCreationData(BaseModel): name: str + document_ids: list[uuid.UUID] source_storage: str assistant: str params: dict - documents: list[Document] class Chat(BaseModel): id: uuid.UUID = Field(default_factory=uuid.uuid4) - metadata: ChatMetadata + name: str + documents: list[Document] + source_storage: str + assistant: str + params: dict messages: list[Message] = Field(default_factory=list) prepared: bool = False