Subclass chat messages from Document (#86)

This commit is contained in:
ian_Cin
2023-11-27 10:38:19 +07:00
committed by GitHub
parent 3ac277cc0b
commit 0dede9c82d
7 changed files with 36 additions and 10 deletions

View File

@@ -2,7 +2,9 @@ from __future__ import annotations
from typing import TYPE_CHECKING, Any, Optional, TypeVar
from langchain.schema.messages import AIMessage
from langchain.schema.messages import AIMessage as LCAIMessage
from langchain.schema.messages import HumanMessage as LCHumanMessage
from langchain.schema.messages import SystemMessage as LCSystemMessage
from llama_index.bridge.pydantic import Field
from llama_index.schema import Document as BaseDocument
@@ -63,11 +65,28 @@ class Document(BaseDocument):
return str(self.content)
class BaseMessage(Document):
def __add__(self, other: Any):
raise NotImplementedError
class SystemMessage(BaseMessage, LCSystemMessage):
pass
class AIMessage(BaseMessage, LCAIMessage):
pass
class HumanMessage(BaseMessage, LCHumanMessage):
pass
class RetrievedDocument(Document):
"""Subclass of Document with retrieval-related information
Attributes:
score (float): score of the document (from 0.0 to 1.0)
score (float): score of the document (from 0.0 to 1.0)
retrieval_metadata (dict): metadata from the retrieval process, can be used
by different components in a retrieved pipeline to communicate with each
other
@@ -77,7 +96,7 @@ class RetrievedDocument(Document):
retrieval_metadata: dict = Field(default={})
class LLMInterface(Document):
class LLMInterface(AIMessage):
candidates: list[str] = Field(default_factory=list)
completion_tokens: int = -1
total_tokens: int = -1