代码拉取完成,页面将自动刷新
#!/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>'
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。