refactor: remove weather anim, rewrite AI prompt with graded severity and 6-point fix
This commit is contained in:
+23
-21
@@ -24,46 +24,48 @@ def get_ai_analysis(weather_insights: str, city_name: str, temp_symbol: str) ->
|
||||
headers = {"Authorization": f"Bearer {api_key}", "Content-Type": "application/json"}
|
||||
|
||||
prompt = f"""
|
||||
你是一个专业的天气衍生品(如 Polymarket)交易员。你的任务是分析当前天气特征,判断今日实测最高温是否能达到或超过预报中的【最高值】。
|
||||
你是一个专业的天气衍生品交易员。你的任务是分析当前气象实况,判断今日实测最高温的结算落点。
|
||||
结算基准为合约指定源(通常为 METAR 口径整数四舍五入),以下用"结算值"代替具体源名称。
|
||||
|
||||
请综合以下提供的【{city_name}】气象特征进行深度推理。
|
||||
|
||||
【气象特征与事实】
|
||||
{weather_insights}
|
||||
|
||||
【分析优先级】(按此顺序逐项检查,前置项可推翻后置项的结论)
|
||||
【分析框架】(按此顺序逐项检查,前置项可约束后置项的结论)
|
||||
|
||||
P0 **预报崩盘检测**(最最高优先级):
|
||||
- 如果数据中出现"🚨 预报崩盘"标记,说明所有模型集体严重高估。
|
||||
- 此时你必须:① 直接宣布预报失准/崩盘;② 以实测最高温为结算锚点;③ 分析可能导致崩盘的原因(冷平流、降水、云量压制等);④ 禁止再讨论"冲击"预报值。
|
||||
- 如果峰值窗口已过且实测远低于预报,结算已基本确定,应直接给出结算值。
|
||||
P0 **预报失准检测**:
|
||||
- 若数据含"🚨 预报崩盘"或"⚠️ 预报差距"标记,判定预报失准。
|
||||
- 失准等级:轻(偏差2-3°) / 中(3-5°) / 重(>5°)。
|
||||
- 但"失准"≠"已定局":还需检查近2报斜率是否≤0 且 风向/云量不支持二次抬升,才能判定结算锁定。
|
||||
- 若斜率仍>0或有暖平流迹象,应注明"预报偏高但仍有上行空间"。
|
||||
|
||||
P1 **实况节奏**:
|
||||
- 近2-4条METAR的温度走势:连涨/持平/回落?
|
||||
- 触发阈值:连续2报创新高 → 升温未止;连续2报未创新高且已过峰值窗 → 偏死盘。
|
||||
- 低辐射时段(<100W/m²)仍在升温 → 暖平流驱动,预报往往低估。
|
||||
- 连续2报创新高 → 升温未止;连续2报未创新高且斜率≤0 → 偏死盘。
|
||||
- 升温出现在低辐射时段 → 可能有多因子叠加(平流/混合层/热岛),不可单因子归因。
|
||||
|
||||
P2 **阻碍因子**:
|
||||
- 触发阈值:湿度>80% 且 云量BKN/OVC持续2报 → 判定压温有效。
|
||||
P2 **阻碍因子**(需结合城市特性判断):
|
||||
- 降水已出现(非trace) → 强压温。
|
||||
- 若阻碍条件未满足,不可凭"多云"单因子就判断"升温受限"。
|
||||
- 高湿度+厚云层持续2报以上 → 压温可能有效,但阈值因城市(海洋型 vs 大陆型)而异,不可套用固定数值。
|
||||
- 若仅单因子(如仅多云),不足以断定"升温受限"。
|
||||
|
||||
P3 **数学概率**:
|
||||
- 参考我提供的结算概率分布,但不可用概率去压过 P0/P1 实况。
|
||||
- 概率是辅助判据,实测趋势是主判据。
|
||||
P3 **概率与一致性校验**:
|
||||
- 参考结算概率分布,与 P1 实况做一致性检查。
|
||||
- 若概率分布与实况趋势矛盾,以实况为准并说明偏离原因。
|
||||
- 概率可辅助判断边界进位风险(如 X.5 线附近)。
|
||||
|
||||
P4 **预报背景**(最低优先级):
|
||||
- DEB融合值和预报可用于判断上沿空间和回落节奏。
|
||||
- 但当实测已远低于预报时,预报值已失去参考意义,不可继续引用。
|
||||
- 结算边界:温度处于 X.5 进位线附近时需特别预警。
|
||||
- 可参考 DEB/预报做上沿空间评估。
|
||||
- 当实测已显著偏离预报时,禁止继续引用预报值作为目标。
|
||||
|
||||
【输出要求】
|
||||
1. **禁止废话**,整体控制在 300 字以内。
|
||||
1. 正常场景控制在 300 字左右;异常场景(预报失准/极端走势)可扩展到 450 字。
|
||||
2. 严格按照以下 HTML 格式输出:
|
||||
|
||||
🤖 <b>Groq AI 决策</b>
|
||||
- 🎲 盘口: [若预报崩盘,直接给出"预报集体失准,WU结算锁定X°C"。否则:明确指出最热时段以及博弈焦点。区分"已确认WU底线 X°C"与"仍有概率冲击 Y°C"。禁止在升温未止时使用"锁定"等封顶措辞。若符合死盘条件,请直接给出死盘结论并说明理由。]
|
||||
- 💡 逻辑: [用 3-5 句话深度分析。如果预报崩盘,重点分析崩盘原因和实测偏差。如果正常,分析实测与预报的博弈和动力条件。需包含具体数值。]
|
||||
- 🎲 盘口: [给出结算判断。用"已确认底线 X{temp_symbol}"表示下限确定;用"上沿待确认,关注 Y{temp_symbol}"表示仍有变数。若预报严重失准,注明失准等级和原因。禁止在升温未止时用"锁定"。]
|
||||
- 💡 逻辑: [3-5 句深度分析。含具体数值。预报失准时重点分析偏差成因。正常时分析实测与预报的动态博弈。]
|
||||
- 🎯 置信度: [1-10]/10
|
||||
"""
|
||||
|
||||
@@ -86,7 +88,7 @@ P4 **预报背景**(最低优先级):
|
||||
{"role": "user", "content": prompt},
|
||||
],
|
||||
"temperature": 0.5,
|
||||
"max_tokens": 250,
|
||||
"max_tokens": 400,
|
||||
}
|
||||
|
||||
response = requests.post(
|
||||
|
||||
Reference in New Issue
Block a user