DEB 降级为模型集群中的普通一员,AI 不再照搬 DEB 做预测
此前 DEB 以独立字段 deb.prediction 传给 AI,提示词又要求"必须综合 DEB", 导致 AI 直接输出 DEB 值而非独立判断。改动: - 移除 AI 输入中的独立 deb 字段,DEB 只作为 model_cluster.sources 中的 一条记录 (model: "DEB (fusion)"),与其他模型平等 - 提示词改为:以模型集群集中区间为基线,用报文观测信号独立判断上修/下修/维持 - 流式/非流式提示词均强调"不要直接照搬 DEB 的值,差异是正常的" - 回退路径改用模型集群中位数作为默认预测,DEB 仅作为备选参考
This commit is contained in:
@@ -354,18 +354,18 @@ def _build_city_ai_prompt(data: Dict[str, Any]) -> Dict[str, Any]:
|
||||
"icao": risk.get("icao") or airport_current.get("station_code") or airport_primary.get("station_code"),
|
||||
"distance_km": risk.get("distance_km"),
|
||||
},
|
||||
"deb": {
|
||||
"prediction": ((daily_entry.get("deb") or {}).get("prediction") if isinstance(daily_entry.get("deb"), dict) else None)
|
||||
or ((data.get("deb") or {}).get("prediction") if isinstance(data.get("deb"), dict) else None),
|
||||
"weights_info": ((data.get("deb") or {}).get("weights_info") if isinstance(data.get("deb"), dict) else None),
|
||||
},
|
||||
"model_cluster": {
|
||||
"sources": [
|
||||
{"model": str(name), "value": value}
|
||||
for name, value in (models or {}).items()
|
||||
if _safe_float(value) is not None
|
||||
*([
|
||||
{"model": "DEB (fusion)", "value": ((daily_entry.get("deb") or {}).get("prediction") if isinstance(daily_entry.get("deb"), dict) else None) or ((data.get("deb") or {}).get("prediction") if isinstance(data.get("deb"), dict) else None)}
|
||||
] if (((daily_entry.get("deb") or {}).get("prediction") if isinstance(daily_entry.get("deb"), dict) else None) or ((data.get("deb") or {}).get("prediction") if isinstance(data.get("deb"), dict) else None)) is not None else []),
|
||||
*[
|
||||
{"model": str(name), "value": value}
|
||||
for name, value in (models or {}).items()
|
||||
if _safe_float(value) is not None
|
||||
],
|
||||
],
|
||||
"model_count": len(model_values),
|
||||
"model_count": len(model_values) + (1 if (((daily_entry.get("deb") or {}).get("prediction") if isinstance(daily_entry.get("deb"), dict) else None) or ((data.get("deb") or {}).get("prediction") if isinstance(data.get("deb"), dict) else None)) is not None else 0),
|
||||
"min": min(model_values) if model_values else None,
|
||||
"max": max(model_values) if model_values else None,
|
||||
"spread": (max(model_values) - min(model_values)) if len(model_values) >= 2 else None,
|
||||
|
||||
Reference in New Issue
Block a user