From 647a61e3103cb2e54b7c5bc2da5df1e2906b059b Mon Sep 17 00:00:00 2001 From: Blake Rosenthal Date: Mon, 10 Jun 2024 15:06:54 -0700 Subject: [PATCH 1/6] load message history to core chat from schema chat --- ragna/deploy/_api/core.py | 8 +++----- ragna/deploy/_api/schemas.py | 25 +++++++++++++++++++++++++ 2 files changed, 28 insertions(+), 5 deletions(-) diff --git a/ragna/deploy/_api/core.py b/ragna/deploy/_api/core.py index 5346b048..53522da2 100644 --- a/ragna/deploy/_api/core.py +++ b/ragna/deploy/_api/core.py @@ -233,11 +233,9 @@ def schema_to_core_chat( chat_name=chat.metadata.name, **chat.metadata.params, ) - # FIXME: We need to reconstruct the previous messages here. Right now this is - # not needed, because the chat itself never accesses past messages. However, - # if we implement a chat history feature, i.e. passing past messages to - # the assistant, this becomes crucial. - core_chat._messages = [] + core_chat._messages = [ + schemas.Message.to_core(message) for message in chat.messages + ] core_chat._prepared = chat.prepared return core_chat diff --git a/ragna/deploy/_api/schemas.py b/ragna/deploy/_api/schemas.py index 53957a74..53fadc4d 100644 --- a/ragna/deploy/_api/schemas.py +++ b/ragna/deploy/_api/schemas.py @@ -26,6 +26,13 @@ def from_core(cls, document: ragna.core.Document) -> Document: name=document.name, ) + @classmethod + def to_core(cls, document: Document) -> ragna.core.Document: + return ragna.core.Document( + id=document.id, + name=document.name, + ) + class DocumentUpload(BaseModel): parameters: ragna.core.DocumentUploadParameters @@ -50,6 +57,16 @@ def from_core(cls, source: ragna.core.Source) -> Source: num_tokens=source.num_tokens, ) + @classmethod + def to_core(cls, source: Source) -> ragna.core.Source: + return ragna.core.Source( + id=source.id, + document=Document.to_core(source.document), + location=source.location, + content=source.content, + num_tokens=source.num_tokens, + ) + class Message(BaseModel): id: uuid.UUID = Field(default_factory=uuid.uuid4) @@ -66,6 +83,14 @@ def from_core(cls, message: ragna.core.Message) -> Message: sources=[Source.from_core(source) for source in message.sources], ) + @classmethod + def to_core(cls, message: Message) -> ragna.core.Message: + return ragna.core.Message( + content=message.content, + role=message.role, + sources=[Source.to_core(source) for source in message.sources], + ) + class ChatMetadata(BaseModel): name: str From 666ba674213caea54d2516addece5539ee562014 Mon Sep 17 00:00:00 2001 From: Blake R Date: Tue, 11 Jun 2024 11:55:09 -0700 Subject: [PATCH 2/6] Change to_core to instance method Co-authored-by: Philip Meier --- ragna/deploy/_api/schemas.py | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-) diff --git a/ragna/deploy/_api/schemas.py b/ragna/deploy/_api/schemas.py index 53fadc4d..73acd717 100644 --- a/ragna/deploy/_api/schemas.py +++ b/ragna/deploy/_api/schemas.py @@ -83,12 +83,11 @@ def from_core(cls, message: ragna.core.Message) -> Message: sources=[Source.from_core(source) for source in message.sources], ) - @classmethod - def to_core(cls, message: Message) -> ragna.core.Message: + def to_core(self) -> ragna.core.Message: return ragna.core.Message( - content=message.content, - role=message.role, - sources=[Source.to_core(source) for source in message.sources], + content=self.content, + role=self.role, + sources=[source.to_core() for source in self.sources], ) From 27240b647f390c1cec96d2327c2e1f37010e678e Mon Sep 17 00:00:00 2001 From: Blake R Date: Tue, 11 Jun 2024 11:55:39 -0700 Subject: [PATCH 3/6] Change to_core to instance method Co-authored-by: Philip Meier --- ragna/deploy/_api/core.py | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ragna/deploy/_api/core.py b/ragna/deploy/_api/core.py index 53522da2..a0c7f8c3 100644 --- a/ragna/deploy/_api/core.py +++ b/ragna/deploy/_api/core.py @@ -234,7 +234,7 @@ def schema_to_core_chat( **chat.metadata.params, ) core_chat._messages = [ - schemas.Message.to_core(message) for message in chat.messages + message.to_core() for message in chat.messages ] core_chat._prepared = chat.prepared From 8a984a6a5245e6b3daf75ba4c13474a244f812cf Mon Sep 17 00:00:00 2001 From: Blake Rosenthal Date: Tue, 11 Jun 2024 12:18:01 -0700 Subject: [PATCH 4/6] don't keep sources --- ragna/deploy/_api/core.py | 4 +--- ragna/deploy/_api/schemas.py | 19 +------------------ 2 files changed, 2 insertions(+), 21 deletions(-) diff --git a/ragna/deploy/_api/core.py b/ragna/deploy/_api/core.py index a0c7f8c3..2a95ae96 100644 --- a/ragna/deploy/_api/core.py +++ b/ragna/deploy/_api/core.py @@ -233,9 +233,7 @@ def schema_to_core_chat( chat_name=chat.metadata.name, **chat.metadata.params, ) - core_chat._messages = [ - message.to_core() for message in chat.messages - ] + core_chat._messages = [message.to_core() for message in chat.messages] core_chat._prepared = chat.prepared return core_chat diff --git a/ragna/deploy/_api/schemas.py b/ragna/deploy/_api/schemas.py index 73acd717..e01d5953 100644 --- a/ragna/deploy/_api/schemas.py +++ b/ragna/deploy/_api/schemas.py @@ -26,13 +26,6 @@ def from_core(cls, document: ragna.core.Document) -> Document: name=document.name, ) - @classmethod - def to_core(cls, document: Document) -> ragna.core.Document: - return ragna.core.Document( - id=document.id, - name=document.name, - ) - class DocumentUpload(BaseModel): parameters: ragna.core.DocumentUploadParameters @@ -57,16 +50,6 @@ def from_core(cls, source: ragna.core.Source) -> Source: num_tokens=source.num_tokens, ) - @classmethod - def to_core(cls, source: Source) -> ragna.core.Source: - return ragna.core.Source( - id=source.id, - document=Document.to_core(source.document), - location=source.location, - content=source.content, - num_tokens=source.num_tokens, - ) - class Message(BaseModel): id: uuid.UUID = Field(default_factory=uuid.uuid4) @@ -87,7 +70,7 @@ def to_core(self) -> ragna.core.Message: return ragna.core.Message( content=self.content, role=self.role, - sources=[source.to_core() for source in self.sources], + sources=[], ) From a17fd560d75ba4755699e860e5f568e7ffd4826d Mon Sep 17 00:00:00 2001 From: Blake Rosenthal Date: Wed, 12 Jun 2024 17:10:08 -0700 Subject: [PATCH 5/6] Revert "don't keep sources" This reverts commit 8a984a6a5245e6b3daf75ba4c13474a244f812cf. --- ragna/deploy/_api/core.py | 4 +++- ragna/deploy/_api/schemas.py | 19 ++++++++++++++++++- 2 files changed, 21 insertions(+), 2 deletions(-) diff --git a/ragna/deploy/_api/core.py b/ragna/deploy/_api/core.py index 2a95ae96..a0c7f8c3 100644 --- a/ragna/deploy/_api/core.py +++ b/ragna/deploy/_api/core.py @@ -233,7 +233,9 @@ def schema_to_core_chat( chat_name=chat.metadata.name, **chat.metadata.params, ) - core_chat._messages = [message.to_core() for message in chat.messages] + core_chat._messages = [ + message.to_core() for message in chat.messages + ] core_chat._prepared = chat.prepared return core_chat diff --git a/ragna/deploy/_api/schemas.py b/ragna/deploy/_api/schemas.py index e01d5953..73acd717 100644 --- a/ragna/deploy/_api/schemas.py +++ b/ragna/deploy/_api/schemas.py @@ -26,6 +26,13 @@ def from_core(cls, document: ragna.core.Document) -> Document: name=document.name, ) + @classmethod + def to_core(cls, document: Document) -> ragna.core.Document: + return ragna.core.Document( + id=document.id, + name=document.name, + ) + class DocumentUpload(BaseModel): parameters: ragna.core.DocumentUploadParameters @@ -50,6 +57,16 @@ def from_core(cls, source: ragna.core.Source) -> Source: num_tokens=source.num_tokens, ) + @classmethod + def to_core(cls, source: Source) -> ragna.core.Source: + return ragna.core.Source( + id=source.id, + document=Document.to_core(source.document), + location=source.location, + content=source.content, + num_tokens=source.num_tokens, + ) + class Message(BaseModel): id: uuid.UUID = Field(default_factory=uuid.uuid4) @@ -70,7 +87,7 @@ def to_core(self) -> ragna.core.Message: return ragna.core.Message( content=self.content, role=self.role, - sources=[], + sources=[source.to_core() for source in self.sources], ) From 6011a4f50de0daa7fd24607524bb669825c9d2f8 Mon Sep 17 00:00:00 2001 From: Blake Rosenthal Date: Thu, 13 Jun 2024 10:49:19 -0700 Subject: [PATCH 6/6] appease mypy --- ragna/deploy/_api/core.py | 4 +--- ragna/deploy/_api/schemas.py | 26 ++++++++++++++------------ 2 files changed, 15 insertions(+), 15 deletions(-) diff --git a/ragna/deploy/_api/core.py b/ragna/deploy/_api/core.py index a0c7f8c3..2a95ae96 100644 --- a/ragna/deploy/_api/core.py +++ b/ragna/deploy/_api/core.py @@ -233,9 +233,7 @@ def schema_to_core_chat( chat_name=chat.metadata.name, **chat.metadata.params, ) - core_chat._messages = [ - message.to_core() for message in chat.messages - ] + core_chat._messages = [message.to_core() for message in chat.messages] core_chat._prepared = chat.prepared return core_chat diff --git a/ragna/deploy/_api/schemas.py b/ragna/deploy/_api/schemas.py index 73acd717..37471c69 100644 --- a/ragna/deploy/_api/schemas.py +++ b/ragna/deploy/_api/schemas.py @@ -26,11 +26,14 @@ def from_core(cls, document: ragna.core.Document) -> Document: name=document.name, ) - @classmethod - def to_core(cls, document: Document) -> ragna.core.Document: - return ragna.core.Document( - id=document.id, - name=document.name, + def to_core(self) -> ragna.core.Document: + return ragna.core.LocalDocument( + id=self.id, + name=self.name, + # TEMP: setting an empty metadata dict for now. + # Will be resolved as part of the "managed ragna" work: + # https://github.com/Quansight/ragna/issues/256 + metadata={}, ) @@ -57,14 +60,13 @@ def from_core(cls, source: ragna.core.Source) -> Source: num_tokens=source.num_tokens, ) - @classmethod - def to_core(cls, source: Source) -> ragna.core.Source: + def to_core(self) -> ragna.core.Source: return ragna.core.Source( - id=source.id, - document=Document.to_core(source.document), - location=source.location, - content=source.content, - num_tokens=source.num_tokens, + id=self.id, + document=self.document.to_core(), + location=self.location, + content=self.content, + num_tokens=self.num_tokens, )