主要更新内容: - 🚀 飞书多维表格集成,支持工单数据同步 - 🤖 AI建议与人工描述语义相似度计算 - 🎨 前端UI全面优化,现代化设计 - 📊 智能知识库入库策略(AI准确率<90%使用人工描述) - 🔧 代码重构,模块化架构优化 - 📚 完整文档整合和更新 - 🐛 修复配置导入和数据库字段问题 技术特性: - 使用sentence-transformers进行语义相似度计算 - 快速模式结合TF-IDF和语义方法 - 响应式设计,支持移动端 - 加载状态和动画效果 - 配置化AI准确率阈值
111 lines
4.2 KiB
Python
111 lines
4.2 KiB
Python
#!/usr/bin/env python
|
||
# -*- coding: utf-8 -*-
|
||
|
||
"""
|
||
AI准确率配置
|
||
管理AI建议的准确率阈值和相关配置
|
||
"""
|
||
|
||
from dataclasses import dataclass
|
||
from typing import Dict, Any
|
||
|
||
@dataclass
|
||
class AIAccuracyConfig:
|
||
"""AI准确率配置类"""
|
||
|
||
# 相似度阈值配置
|
||
auto_approve_threshold: float = 0.95 # 自动审批阈值(≥95%)
|
||
use_human_resolution_threshold: float = 0.90 # 使用人工描述阈值(<90%)
|
||
manual_review_threshold: float = 0.80 # 人工审核阈值(≥80%)
|
||
|
||
# 置信度配置
|
||
ai_suggestion_confidence: float = 0.95 # AI建议默认置信度
|
||
human_resolution_confidence: float = 0.90 # 人工描述置信度
|
||
|
||
# 入库策略配置
|
||
prefer_human_when_low_accuracy: bool = True # 当AI准确率低时优先使用人工描述
|
||
enable_auto_approval: bool = True # 是否启用自动审批
|
||
enable_human_fallback: bool = True # 是否启用人工描述回退
|
||
|
||
def get_threshold_explanation(self, similarity: float) -> str:
|
||
"""获取相似度阈值的解释"""
|
||
if similarity >= self.auto_approve_threshold:
|
||
return f"相似度≥{self.auto_approve_threshold*100:.0f}%,自动审批使用AI建议"
|
||
elif similarity >= self.manual_review_threshold:
|
||
return f"相似度≥{self.manual_review_threshold*100:.0f}%,建议人工审核"
|
||
elif similarity >= self.use_human_resolution_threshold:
|
||
return f"相似度<{self.use_human_resolution_threshold*100:.0f}%,建议使用人工描述"
|
||
else:
|
||
return f"相似度<{self.use_human_resolution_threshold*100:.0f}%,优先使用人工描述"
|
||
|
||
def should_use_human_resolution(self, similarity: float) -> bool:
|
||
"""判断是否应该使用人工描述"""
|
||
return similarity < self.use_human_resolution_threshold
|
||
|
||
def should_auto_approve(self, similarity: float) -> bool:
|
||
"""判断是否应该自动审批"""
|
||
return similarity >= self.auto_approve_threshold and self.enable_auto_approval
|
||
|
||
def get_confidence_score(self, similarity: float, use_human: bool = False) -> float:
|
||
"""获取置信度分数"""
|
||
if use_human:
|
||
return self.human_resolution_confidence
|
||
else:
|
||
return max(similarity, self.ai_suggestion_confidence)
|
||
|
||
def to_dict(self) -> Dict[str, Any]:
|
||
"""转换为字典格式"""
|
||
return {
|
||
"auto_approve_threshold": self.auto_approve_threshold,
|
||
"use_human_resolution_threshold": self.use_human_resolution_threshold,
|
||
"manual_review_threshold": self.manual_review_threshold,
|
||
"ai_suggestion_confidence": self.ai_suggestion_confidence,
|
||
"human_resolution_confidence": self.human_resolution_confidence,
|
||
"prefer_human_when_low_accuracy": self.prefer_human_when_low_accuracy,
|
||
"enable_auto_approval": self.enable_auto_approval,
|
||
"enable_human_fallback": self.enable_human_fallback
|
||
}
|
||
|
||
@classmethod
|
||
def from_dict(cls, data: Dict[str, Any]) -> 'AIAccuracyConfig':
|
||
"""从字典创建配置"""
|
||
return cls(**data)
|
||
|
||
# 默认配置实例
|
||
DEFAULT_CONFIG = AIAccuracyConfig()
|
||
|
||
# 配置预设
|
||
PRESETS = {
|
||
"conservative": AIAccuracyConfig(
|
||
auto_approve_threshold=0.98,
|
||
use_human_resolution_threshold=0.85,
|
||
manual_review_threshold=0.90,
|
||
human_resolution_confidence=0.95
|
||
),
|
||
"balanced": AIAccuracyConfig(
|
||
auto_approve_threshold=0.95,
|
||
use_human_resolution_threshold=0.90,
|
||
manual_review_threshold=0.80,
|
||
human_resolution_confidence=0.90
|
||
),
|
||
"aggressive": AIAccuracyConfig(
|
||
auto_approve_threshold=0.90,
|
||
use_human_resolution_threshold=0.80,
|
||
manual_review_threshold=0.70,
|
||
human_resolution_confidence=0.85
|
||
)
|
||
}
|
||
|
||
def get_accuracy_config(preset: str = "balanced") -> AIAccuracyConfig:
|
||
"""获取准确率配置"""
|
||
return PRESETS.get(preset, DEFAULT_CONFIG)
|
||
|
||
def update_accuracy_config(config: AIAccuracyConfig) -> bool:
|
||
"""更新准确率配置(可以保存到文件或数据库)"""
|
||
try:
|
||
# 这里可以实现配置的持久化存储
|
||
# 例如保存到配置文件或数据库
|
||
return True
|
||
except Exception:
|
||
return False
|