remove:移除tool_use模型,修复Jargon提取问题,修改统计为tool统计

This commit is contained in:
SengokuCola
2026-03-29 16:26:34 +08:00
parent 868438e3c1
commit 82bbf0fd52
25 changed files with 906 additions and 311 deletions

View File

@@ -3,7 +3,7 @@ from contextlib import contextmanager
from pathlib import Path
from typing import Generator, TYPE_CHECKING
from sqlalchemy import event
from sqlalchemy import event, text
from sqlalchemy.engine import Engine
from sqlalchemy.orm import sessionmaker
from sqlmodel import SQLModel, Session, create_engine
@@ -57,6 +57,41 @@ SessionLocal = sessionmaker(
_db_initialized = False
def _migrate_action_records_to_tool_records() -> None:
"""将旧的 ``action_records`` 历史数据迁移到 ``tool_records``。"""
migration_sql = text(
"""
INSERT INTO tool_records (
tool_id,
timestamp,
session_id,
tool_name,
tool_reasoning,
tool_data,
tool_builtin_prompt,
tool_display_prompt
)
SELECT
action_id,
timestamp,
session_id,
action_name,
action_reasoning,
action_data,
action_builtin_prompt,
action_display_prompt
FROM action_records
WHERE NOT EXISTS (
SELECT 1
FROM tool_records
WHERE tool_records.tool_id = action_records.action_id
)
"""
)
with engine.begin() as connection:
connection.execute(migration_sql)
def initialize_database() -> None:
global _db_initialized
if _db_initialized:
@@ -65,6 +100,7 @@ def initialize_database() -> None:
import src.common.database.database_model # noqa: F401
SQLModel.metadata.create_all(engine)
_migrate_action_records_to_tool_records()
_db_initialized = True

View File

@@ -134,6 +134,27 @@ class ActionRecord(SQLModel, table=True):
action_display_prompt: Optional[str] = Field(default=None) # 最终输入到Prompt的内容
class ToolRecord(SQLModel, table=True):
"""存储工具调用记录"""
__tablename__ = "tool_records" # type: ignore
id: Optional[int] = Field(default=None, primary_key=True) # 自增主键
# 元信息
tool_id: str = Field(index=True, max_length=255) # 工具调用ID
timestamp: datetime = Field(default_factory=datetime.now, sa_column=Column(DateTime, index=True)) # 记录时间戳
session_id: str = Field(index=True, max_length=255) # 对应的 ChatSession session_id
# 调用信息
tool_name: str = Field(index=True, max_length=255) # 工具名称
tool_reasoning: Optional[str] = Field(default=None) # 工具调用推理过程
tool_data: Optional[str] = Field(default=None) # 工具数据JSON格式存储
tool_builtin_prompt: Optional[str] = Field(default=None) # 内置工具提示
tool_display_prompt: Optional[str] = Field(default=None) # 最终输入到 Prompt 的内容
class CommandRecord(SQLModel, table=True):
"""记录命令执行情况"""