aidial_assistant/chain/dialogue.py (19 lines of code) (raw):
from openai.types.chat import ChatCompletionMessageParam
from pydantic import BaseModel
from aidial_assistant.utils.open_ai import assistant_message, user_message
class DialogueTurn(BaseModel):
assistant_message: str
user_message: str
class Dialogue:
def __init__(self):
self.messages: list[ChatCompletionMessageParam] = []
def append(self, dialogue_turn: DialogueTurn):
self.messages.append(assistant_message(dialogue_turn.assistant_message))
self.messages.append(user_message(dialogue_turn.user_message))
def pop(self):
self.messages.pop()
self.messages.pop()
def is_empty(self):
return not self.messages
def dialogue_turn_count(self):
return len(self.messages) // 2