项目文件夹

文件
2024-10-23 14:58:17 +08:00

58 行
1.5 KiB
Python

import json
import re
from loguru import logger
class Message:
def __init__(self, content: str):
self.content = content
self.role = None
def get_content(self):
raise NotImplementedError("get_content() not implemented")
class SystemMessage(Message):
def __init__(self, content: str):
super().__init__(content)
self.role = "system"
def get_content(self):
return self.content
class UserMessage(Message):
def __init__(self, content: str):
super().__init__(content)
self.role = "user"
def get_content(self):
return self.content
class AssistantMessage(Message):
def __init__(self, content: str, is_json: bool = False):
super().__init__(content)
self.is_json = is_json
self.role = "assistant"
def get_content(self):
json_patterns = [r"```json\s*(\{.*?\})\s*```", r"```json\s*(\[.*?\])\s*```"]
for pattern in json_patterns:
match = re.search(pattern, self.content, re.DOTALL)
if match:
formatted_json = match.group(1)
try:
return json.loads(formatted_json)
except Exception as e:
logger.exception(f"Failed to parse JSON content: {e}")
if self.is_json:
try:
return json.loads(self.content)
except Exception as e:
logger.exception(f"Failed to parse JSON content: {e}")
return {}
return self.content