remove:移除tool_use模型,修复Jargon提取问题,修改统计为tool统计
This commit is contained in:
@@ -348,17 +348,11 @@ class MessageSequence:
|
||||
if isinstance(item, TextComponent):
|
||||
return {"type": "text", "data": item.text}
|
||||
elif isinstance(item, ImageComponent):
|
||||
if not item.content:
|
||||
raise RuntimeError("ImageComponent content 未初始化")
|
||||
return {"type": "image", "data": item.content, "hash": item.binary_hash}
|
||||
return {"type": "image", "data": self._ensure_binary_component_content(item, "[图片]"), "hash": item.binary_hash}
|
||||
elif isinstance(item, EmojiComponent):
|
||||
if not item.content:
|
||||
raise RuntimeError("EmojiComponent content 未初始化")
|
||||
return {"type": "emoji", "data": item.content, "hash": item.binary_hash}
|
||||
return {"type": "emoji", "data": self._ensure_binary_component_content(item, "[表情包]"), "hash": item.binary_hash}
|
||||
elif isinstance(item, VoiceComponent):
|
||||
if not item.content:
|
||||
raise RuntimeError("VoiceComponent content 未初始化")
|
||||
return {"type": "voice", "data": item.content, "hash": item.binary_hash}
|
||||
return {"type": "voice", "data": self._ensure_binary_component_content(item, "[语音消息]"), "hash": item.binary_hash}
|
||||
elif isinstance(item, AtComponent):
|
||||
return {
|
||||
"type": "at",
|
||||
@@ -388,6 +382,14 @@ class MessageSequence:
|
||||
logger.warning(f"Unofficial component type: {type(item)}, defaulting to DictComponent")
|
||||
return {"type": "dict", "data": item.data}
|
||||
|
||||
@staticmethod
|
||||
def _ensure_binary_component_content(item: ByteComponent, fallback_text: str) -> str:
|
||||
"""确保二进制组件在序列化时带有稳定的文本占位。"""
|
||||
if item.content:
|
||||
return item.content
|
||||
item.content = fallback_text
|
||||
return item.content
|
||||
|
||||
@classmethod
|
||||
def _dict_2_item(cls, item: Dict[str, Any]) -> StandardMessageComponents:
|
||||
"""内部方法:将单个消息组件的字典格式转换回组件对象"""
|
||||
|
||||
59
src/common/data_models/tool_record_data_model.py
Normal file
59
src/common/data_models/tool_record_data_model.py
Normal file
@@ -0,0 +1,59 @@
|
||||
from datetime import datetime
|
||||
from typing import Dict, Optional
|
||||
|
||||
import json
|
||||
|
||||
from src.common.database.database_model import ToolRecord
|
||||
|
||||
from . import BaseDatabaseDataModel
|
||||
|
||||
|
||||
class MaiToolRecord(BaseDatabaseDataModel[ToolRecord]):
|
||||
"""工具调用记录数据模型。"""
|
||||
|
||||
def __init__(
|
||||
self,
|
||||
tool_id: str,
|
||||
timestamp: datetime,
|
||||
session_id: str,
|
||||
tool_name: str,
|
||||
tool_reasoning: Optional[str] = None,
|
||||
tool_data: Optional[Dict] = None,
|
||||
tool_builtin_prompt: Optional[str] = None,
|
||||
tool_display_prompt: Optional[str] = None,
|
||||
):
|
||||
self.tool_id = tool_id
|
||||
self.timestamp = timestamp
|
||||
self.session_id = session_id
|
||||
self.tool_name = tool_name
|
||||
self.tool_reasoning = tool_reasoning
|
||||
self.tool_data = tool_data or {}
|
||||
self.tool_builtin_prompt = tool_builtin_prompt
|
||||
self.tool_display_prompt = tool_display_prompt
|
||||
|
||||
@classmethod
|
||||
def from_db_instance(cls, db_record: ToolRecord):
|
||||
"""从数据库实例创建数据模型对象。"""
|
||||
return cls(
|
||||
tool_id=db_record.tool_id,
|
||||
timestamp=db_record.timestamp,
|
||||
session_id=db_record.session_id,
|
||||
tool_name=db_record.tool_name,
|
||||
tool_reasoning=db_record.tool_reasoning,
|
||||
tool_data=json.loads(db_record.tool_data) if db_record.tool_data else None,
|
||||
tool_builtin_prompt=db_record.tool_builtin_prompt,
|
||||
tool_display_prompt=db_record.tool_display_prompt,
|
||||
)
|
||||
|
||||
def to_db_instance(self):
|
||||
"""将数据模型对象转换为数据库实例。"""
|
||||
return ToolRecord(
|
||||
tool_id=self.tool_id,
|
||||
timestamp=self.timestamp,
|
||||
session_id=self.session_id,
|
||||
tool_name=self.tool_name,
|
||||
tool_reasoning=self.tool_reasoning,
|
||||
tool_data=json.dumps(self.tool_data) if self.tool_data else None,
|
||||
tool_builtin_prompt=self.tool_builtin_prompt,
|
||||
tool_display_prompt=self.tool_display_prompt,
|
||||
)
|
||||
Reference in New Issue
Block a user