优化: AI Chat全栈多批审查修复与架构清理(risk_level清理/路由解耦/工具渲染/测试补测/死代码)
This commit is contained in:
@@ -8,12 +8,12 @@
|
||||
//! 路由(Lite 智力, 无 tool_use, 标准成本上限)兜底 `default_model`。失败返 `Err`,
|
||||
//! 调用方按场景降级(手动压缩报错给用户;自动压缩降级为原裁剪行为)。
|
||||
|
||||
use df_ai::provider::{ChatMessage, CompletionRequest, LlmProvider, MessageRole};
|
||||
use df_ai::provider::{ChatMessage, CompletionRequest, LlmProvider};
|
||||
// F-15: 压缩路由 — TaskRequirements(Standard 智力即可,无需工具)。压缩是结构化
|
||||
// 摘要任务,选 Standard 智力保摘要质量;不传 tools(纯文本出,避免 LLM 调工具跑偏)。
|
||||
// 池空/无匹配兜底 default_model(与 title.rs 一致,行为可预期)。
|
||||
use df_ai::router::{
|
||||
select_model_id, CostTier, IntelligenceTier, Modality, TaskRequirements,
|
||||
select_model_id, Modality, TaskRequirements,
|
||||
};
|
||||
use df_storage::models::AiProviderRecord;
|
||||
|
||||
@@ -31,7 +31,7 @@ use super::prompt::compress_prompt;
|
||||
/// - 输出:`Result<String, String>` — `Ok` 为 LLM 生成的摘要文本(已 trim);
|
||||
/// `Err` 为 provider 调用失败(底层 `anyhow::Error` 转 String,调用方降级不阻塞)。
|
||||
///
|
||||
/// 模型选择:`select_model_id(TaskRequirements{Standard 智力, Medium 成本上限, 无 tool_use})`,
|
||||
/// 模型选择:`select_model_id(TaskRequirements{无 tool_use})`,
|
||||
/// 池空/无匹配兜底 `default_model`(与 `generate_title_via_llm` 一致)。
|
||||
///
|
||||
/// 限流:复用 `LlmConcurrency` 双层 Semaphore(压缩属独立 LLM 调用,纳入全局 + 单对话限流,
|
||||
@@ -54,13 +54,11 @@ pub(crate) async fn compress_via_llm(
|
||||
return Err("无可压缩消息(active 消息为空)".to_string());
|
||||
}
|
||||
|
||||
// 路由选模型:Standard 智力够摘要,无 tool_use,Medium 成本上限。
|
||||
// 路由选模型:无 tool_use(纯文本摘要)。
|
||||
// None(池空/无匹配)→ 兜底 default_model(行为不变)。
|
||||
let compress_req = TaskRequirements {
|
||||
modalities: vec![Modality::Text],
|
||||
needs_tool_use: false,
|
||||
min_intelligence: IntelligenceTier::Standard,
|
||||
max_cost: Some(CostTier::Medium),
|
||||
estimated_context: 0,
|
||||
};
|
||||
let model = select_model_id(&compress_req, &provider_config.model_configs)
|
||||
|
||||
Reference in New Issue
Block a user