Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[HUGE PR] Chat Messages for ChatModels #783

Merged
merged 7 commits into from
May 10, 2024
40 changes: 35 additions & 5 deletions core/cat/convo/messages.py
Original file line number Diff line number Diff line change
@@ -1,29 +1,59 @@





from typing import List, Dict
from cat.utils import BaseModelDict
from langchain_core.messages import BaseMessage, AIMessage, HumanMessage

#class WorkingMemory(BaseModelDict):
# history : List = []


class MessageWhy(BaseModelDict):
"""Class for wrapping message why

Variables:
input (str): input message
intermediate_steps (List): intermediate steps
memory (dict): memory
"""
input: str
intermediate_steps: List
memory: dict


class CatMessage(BaseModelDict):
"""Class for wrapping cat message

Variables:
content (str): cat message
user_id (str): user id
"""
type: str
content: str
user_id: str
why: MessageWhy


class UserMessage(BaseModelDict):
"""Class for wrapping user message

Variables:
text (str): user message
user_id (str): user id
"""
text: str
user_id: str



def convert_to_Langchain_message(messages: List[UserMessage | CatMessage] ) -> List[BaseMessage]:
messages = []
for m in messages:
if isinstance(m, CatMessage):
messages.append(HumanMessage(content=m.content, response_metadata={"userId": m.user_id}))
else:
messages.append(AIMessage(content=m.text, response_metadata={"userId": m.user_id}))
return messages

def convert_to_Cat_message(cat_message: AIMessage, why: MessageWhy) -> CatMessage:
return CatMessage(content=cat_message.content, user_id=cat_message.response_metadata["userId"], why=why)