2 Star 1 Fork 2

幽灵代码/LoveNLP

加入 Gitee
与超过 1400万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
克隆/下载
message_processor.py 2.21 KB
一键复制 编辑 原始数据 按行查看 历史
幽灵代码 提交于 2026-02-06 14:51 +08:00 . ## 1. 聊天记录格式问题
#!/usr/bin/env python
# -*- coding: utf-8 -*-
import re
class MessageProcessor:
"""
消息处理器类,负责消息的解析、分割和格式化
"""
def __init__(self):
self.cmd_pattern = r'nlpexec\([^)]*\)'
def split_message(self, msg_str):
"""
将包含系统命令的消息分割为多个部分
例如:"老板,您好!nlpexec(异常端口信息)好的,已获取异常端口信息。"
会被分割为:
["老板,您好!", "nlpexec(异常端口信息)", "好的,已获取异常端口信息。"]
"""
parts = []
# 查找所有系统命令
cmd_matches = list(re.finditer(self.cmd_pattern, msg_str))
if cmd_matches:
# 如果有系统命令,进行分割
last_end = 0
for match in cmd_matches:
start, end = match.span()
# 添加命令前的文本
if start > last_end:
text_part = msg_str[last_end:start].strip()
if text_part:
parts.append(text_part)
# 添加系统命令
parts.append(msg_str[start:end])
last_end = end
# 添加命令后的文本
if last_end < len(msg_str):
text_part = msg_str[last_end:].strip()
if text_part:
parts.append(text_part)
else:
# 没有系统命令,检查是否包含多个句子
# 使用正则表达式分割句子
sentences = re.split(r'[。!?]', msg_str)
for sentence in sentences:
if sentence.strip():
parts.append(sentence.strip() + '。')
return parts
def format_message(self, role_name, content, timestamp=None):
"""
格式化消息,添加角色名和时间戳
"""
if timestamp:
return f"{timestamp}\n{role_name}: {content}\n"
else:
return f"{role_name}: {content}\n"
def is_end_of_stream(self, msg):
"""
检查消息是否是流式输出结束标记
"""
return msg == '<END>'
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Python
1
https://gitee.com/ghostcode/LoveNLP.git
git@gitee.com:ghostcode/LoveNLP.git
ghostcode
LoveNLP
LoveNLP
master

搜索帮助