优化: 缓存命中字段解析与提示词前缀稳定化
- openai 兼容口径补解析嵌套 cached_tokens - cache 显示区分无数据与真零,估算轮不渲染 - 轨迹展开折叠空过程记录行降噪 - token 统计行恒完整可见不截断 - openai_compat 纳入 system 稳定易变拆分 - 系统警示与主题标记改尾部注入不位移前缀 - 工具结果视图压缩按入库时刻冻结 - 会话内工具集冻结仅增不减 - anthropic 缓存补消息级断点,设置页加开关 - 补 intent 测试对 Agent domain 覆盖
This commit is contained in:
@@ -498,11 +498,24 @@ async fn build_custom_section(state: &AppState) -> String {
|
||||
String::new()
|
||||
}
|
||||
|
||||
/// 读取 Anthropic prompt caching 开关(AppState settings KV,默认关)并同步 df-ai 进程级开关。
|
||||
/// 当前 provider 是否支持 prompt caching 拆分(同一 settings 开关下的两类受益方):
|
||||
/// - anthropic / anthropic_compat:显式缓存(system+消息级 cache_control 断点);
|
||||
/// - openai_compat:自动前缀缓存(DeepSeek/GLM/Qwen 等,无需 cache_control 标记,
|
||||
/// 只要求前缀字节稳定,拆分后易变段挪到消息流末尾即命中)。
|
||||
pub(crate) fn cache_split_provider_type(provider_type: &str) -> bool {
|
||||
matches!(
|
||||
provider_type,
|
||||
"anthropic" | "anthropic_compat" | "openai_compat"
|
||||
)
|
||||
}
|
||||
|
||||
/// 读取 prompt caching 拆分开关(AppState settings KV `df-ai-anthropic-cache`,默认关)
|
||||
/// 并同步 df-ai 进程级显式缓存开关。
|
||||
///
|
||||
/// 值语义:非 "true"/"1"(含缺省/空)一律视为关——默认关、用户对支持的 anthropic 端点显式开启。
|
||||
/// 值语义:非 "true"/"1"(含缺省/空)一律视为关——默认关、用户对支持的端点显式开启。
|
||||
/// 同步:anthropic_compat::convert_request 读取同一进程级开关决定 system 形态
|
||||
/// (数组+cache_control / 纯字符串),保证开关关时非官方网关零风险。
|
||||
/// 键名保持历史名(向后兼容,已有键不换名),语义已扩展覆盖 openai_compat 前缀稳定拆分。
|
||||
pub(crate) async fn cache_enabled(state: &AppState) -> bool {
|
||||
let v = state
|
||||
.settings
|
||||
@@ -526,8 +539,8 @@ pub(crate) async fn cache_enabled(state: &AppState) -> bool {
|
||||
/// 首条 user:任何 system 之后的消息级缓存断点都在易变段之前,每日/每请求变化的易变内容
|
||||
/// 不会失效已缓存前缀(跨天缓存仍命中)。
|
||||
///
|
||||
/// 注意:调用方须先按「开关开 AND 当前 provider 为 anthropic 类型」gate 再传 `cache_enabled`,
|
||||
/// 保证 OpenAI 路径零影响(开关开也不改动 openai 请求结构)。
|
||||
/// 注意:调用方须先按「开关开 AND 当前 provider 支持缓存拆分(anthropic 系/openai_compat)」
|
||||
/// gate 再传 `cache_enabled`,保证开关关时全部 provider 零影响(逐字等价旧路径)。
|
||||
pub(crate) async fn build_system_prompt_parts(
|
||||
state: &AppState,
|
||||
lang: &str,
|
||||
|
||||
Reference in New Issue
Block a user