mirror of
https://github.com/xinnan-tech/xiaozhi-esp32-server.git
synced 2026-07-22 23:23:55 +08:00
* 🦄 refactor(web): 修改zhikongtaiweb到web * 🦄 refactor: 重写前端 路由守护尚未写完 * 🦄 refactor: 标准化路由 * update:前端重写,保留后端 * update:添加前端代码 * update:pip转成poetry启动 * update:增加mem0ai包依赖 * update:文档增加mem0ai的描述 * feat: play online mp3 (#181) Co-authored-by: 欣南科技 <huangrongzhuang@xin-nan.com> * 修改前端代码 * update:调整项目目录 * update:优化 * update:配置文件去除8002端口 * update:增加开发说明 * update:更新开发协议 --------- Co-authored-by: kalicyh <34980061+kaliCYH@users.noreply.github.com> Co-authored-by: hrz <1710360675@qq.com> Co-authored-by: freshlife001 <talent@mises.site> Co-authored-by: CGD <3030332422@qq.com>
51 lines
1.5 KiB
Python
51 lines
1.5 KiB
Python
import uuid
|
|
from typing import List, Dict
|
|
from datetime import datetime
|
|
|
|
|
|
class Message:
|
|
def __init__(self, role: str, content: str = None, uniq_id: str = None):
|
|
self.uniq_id = uniq_id if uniq_id is not None else str(uuid.uuid4())
|
|
self.role = role
|
|
self.content = content
|
|
|
|
|
|
class Dialogue:
|
|
def __init__(self):
|
|
self.dialogue: List[Message] = []
|
|
# 获取当前时间
|
|
self.current_time = datetime.now().strftime('%Y-%m-%d %H:%M:%S')
|
|
|
|
def put(self, message: Message):
|
|
self.dialogue.append(message)
|
|
|
|
def get_llm_dialogue(self) -> List[Dict[str, str]]:
|
|
dialogue = []
|
|
for m in self.dialogue:
|
|
dialogue.append({"role": m.role, "content": m.content})
|
|
return dialogue
|
|
|
|
def get_llm_dialogue_with_memory(self, memory_str: str = None) -> List[Dict[str, str]]:
|
|
# 构建带记忆的对话
|
|
dialogue = []
|
|
|
|
# 添加系统提示和记忆
|
|
system_message = next(
|
|
(msg for msg in self.dialogue if msg.role == "system"), None
|
|
)
|
|
|
|
|
|
if system_message:
|
|
enhanced_system_prompt = (
|
|
f"{system_message.content}\n\n"
|
|
f"相关记忆:\n{memory_str}"
|
|
)
|
|
dialogue.append({"role": "system", "content": enhanced_system_prompt})
|
|
|
|
# 添加用户和助手的对话
|
|
for msg in self.dialogue:
|
|
if msg.role != "system": # 跳过原始的系统消息
|
|
dialogue.append({"role": msg.role, "content": msg.content})
|
|
|
|
return dialogue
|