#!/usr/bin/env python# -*- coding: utf-8 -*-import reclass 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 = 0for 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 partsdef 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>'
此处可能存在不合适展示的内容,页面不予展示。您可通过相关编辑功能自查并修改。
如您确认内容无涉及 不当用语 / 纯广告导流 / 暴力 / 低俗色情 / 侵权 / 盗版 / 虚假 / 无价值内容或违法国家有关法律法规的内容,可点击提交进行申诉,我们将尽快为您处理。