70 lines
1.6 KiB
Python
70 lines
1.6 KiB
Python
from appPublic.myTE import MyTemplateEngine
|
|
|
|
def default_sysmessage():
|
|
return """{
|
|
"role":"system",
|
|
"content":"{{content}}"
|
|
}"""
|
|
|
|
def default_usrmessage():
|
|
return """{
|
|
"role":"user",
|
|
"content":"{{prompt}}"
|
|
}"""
|
|
|
|
def default_llmmessage():
|
|
return """{
|
|
"role":"assisant",
|
|
"content":"{{content}}"
|
|
}"""
|
|
|
|
class BaseMessages:
|
|
def __init__(self, request, llmid, sys_message, usr_message, llm_message):
|
|
self.request = request
|
|
self.llmid = llmid
|
|
self.sys_message = sys_message
|
|
self.usr_message = usr_message
|
|
self.llm_message = llm_message
|
|
self.te = MyTemplateEngine([])
|
|
|
|
async def append_meessages(self, msg_format, **kw):
|
|
m = self.te.renders(msg_format, kw)
|
|
msgs = await self.get_messages()
|
|
msgs.append(m)
|
|
await self.set_message(msgs)
|
|
return msgs
|
|
|
|
async def append_usr_messages(self, **kw):
|
|
return await self.append_messages(self.usr_message, **kw)
|
|
|
|
async def append_sys_messages(self, **kw):
|
|
return await self.append_messages(self.sys_message, **kw)
|
|
|
|
async def append_llm_messages(self, **kw):
|
|
return await self.append_messages(self.llm_message, **kw)
|
|
|
|
async def get_messages(self):
|
|
return []
|
|
|
|
async def set_messages(self, msgs):
|
|
pass
|
|
|
|
class SessionMessages(BaseMessages):
|
|
async def get_messages(self):
|
|
env = self.request._run_ns
|
|
s = await env.get_session()
|
|
userid = await env.get_user()
|
|
mk = f'{self.llmid}_{userid}_msgs'
|
|
msgs = s[mk]
|
|
if not msgs:
|
|
msgs = []
|
|
return msgs
|
|
|
|
async def set_messages(self, msgs):
|
|
env = self.request._run_ns
|
|
s = await env.get_session()
|
|
userid = await env.get_user()
|
|
mk = f'{self.llmid}_{userid}_msgs'
|
|
s[mk] = msgs
|
|
|