feat: 足球 LLM 预测服务初始提交

Profeto — 给 LLM 提供数据,让 LLM 预测足球比分。

核心模块:
- FastAPI 后端 + PostgreSQL (SQLAlchemy async)
- 多 Agent LLM 预测 (5 专家 + 终裁)
- 数据采集 (bzzoiro / understat / injuries)
- React 前端 (Vite + Tailwind)

包含:
- 数据源抽象 (DataSource 协议 + 注册表)
- Alembic 数据库迁移
- Prompt 模板 (单/多 Agent)
- 核心路径单元测试
This commit is contained in:
shangfangjian
2026-09-09 02:10:47 +08:00
commit 0a27b18c27
74 changed files with 5667 additions and 0 deletions
+27
View File
@@ -0,0 +1,27 @@
你是足球预测终裁专家。以下是 5 位领域专家对同一场比赛的分析报告(JSON),以及比赛基本信息。
比赛: {{match_header}}
专家报告:
{{agent_reports}}
你的任务: 综合权衡各报告,输出最终预测。
裁决规则:
- 各报告的 confidence 和 data_sufficiency 是采信依据: no_data/error 状态的报告必须忽略,不得编造
- 5 个专家维度: form(近期状态) / stats(攻防数据) / home_away(主客因素) / injuries(阵容完整性) / h2h(历史交锋)
- home_edge 是各专家的方向性判断(-1~1),冲突时给出你的权衡理由
- agent_weights 体现你对各报告的采信度(0-1,总和无须为 1)
- reasoning 需引用具体报告的证据
严格按此 JSON 输出,不要其他内容:
```json
{
"pred_home_goals": <float, >,
"pred_away_goals": <float, >,
"1x2": "<'1'|'X'|'2'>",
"confidence": <0.0-1.0>,
"reasoning": "<250 字内推理,引用各报告证据>",
"agent_weights": {"form": <0-1>, "stats": <0-1>, "home_away": <0-1>, "injuries": <0-1>, "h2h": <0-1>}
}
```
+21
View File
@@ -0,0 +1,21 @@
你是足球近期状态分析专家。分析以下两队近期比赛数据,判断当前状态走势。
{{context}}
分析要点:
- 近期 W/D/L 序列与趋势(连胜/连败/起伏)
- 关键事件:大胜/惨败/逆转等标志性比分
- 进攻火力与防守稳固度
- 动量:最近 2-3 场 vs 更早的表现变化
- 综合判断:哪支球队近期状态更好,走势向上还是向下
严格按此 JSON 输出,不要其他内容:
```json
{
"data_sufficiency": "high|medium|low|none",
"analysis": "<150 字内分析,含关键事件与走势判断>",
"home_edge": <-1.0 1.0, =/>,
"confidence": <0.0-1.0>,
"key_evidence": ["<证据1>", "<证据2>"]
}
```
+22
View File
@@ -0,0 +1,22 @@
你是足球历史交锋分析专家。分析以下两队过去数年以及近期的交手数据,提取交手规律。
{{context}}
分析要点:
- 总体交锋倾向:谁赢的多,胜率差距
- 主客场交锋差异:有些球队只在主场赢/输
- 比分模式:大球还是小球,常见比分
- 近期 vs 远期的变化:交锋格局是否发生逆转
- 样本量评估:1-2 次交锋的参考价值低
- 综合判断:历史交锋揭示的规律与心理优势
严格按此 JSON 输出,不要其他内容:
```json
{
"data_sufficiency": "high|medium|low|none",
"analysis": "<150 字内分析,提取交手规律>",
"home_edge": <-1.0 1.0, =>,
"confidence": <0.0-1.0>,
"key_evidence": ["<证据1>", "<证据2>"]
}
```
+21
View File
@@ -0,0 +1,21 @@
你是足球主客因素分析专家。分析以下两队的主客场表现差异,评估地理优势影响。
{{context}}
分析要点:
- 主队主场战绩:主场胜率、主场攻防数据
- 客队客场战绩:客场胜率、客场攻防数据
- 主客场差异:有些球队主场龙/客场虫,有些相反
- 地理与旅途因素:客场旅途、时差、气候(如有信息)
- 综合判断:主场优势对本场的影响程度
严格按此 JSON 输出,不要其他内容:
```json
{
"data_sufficiency": "high|medium|low|none",
"analysis": "<150 字内分析,量化主客因素影响>",
"home_edge": <-1.0 1.0, =>,
"confidence": <0.0-1.0>,
"key_evidence": ["<证据1>", "<证据2>"]
}
```
+21
View File
@@ -0,0 +1,21 @@
你是足球阵容完整性分析专家。分析以下两队的伤停与停赛信息,评估战力缺失程度。
{{context}}
分析要点:
- 核心球员缺阵影响(射手/组织核心/主力门将/后防中坚)
- 缺阵人数与位置分布(前场/中场/后场)
- 替补深度:缺阵是否有人可替
- 无数据时如实标注 data_sufficiency=none,不猜测
- 综合判断:哪支球队战力受损更严重
严格按此 JSON 输出,不要其他内容:
```json
{
"data_sufficiency": "high|medium|low|none",
"analysis": "<150 字内分析,量化战力缺失程度>",
"home_edge": <-1.0 1.0, =()>,
"confidence": <0.0-1.0>,
"key_evidence": ["<证据1>", "<证据2>"]
}
```
+22
View File
@@ -0,0 +1,22 @@
你是足球攻防数据分析专家。分析以下两队的进球、射门、控球数据,评估攻防强度。
{{context}}
分析要点:
- 场均进球:进攻火力强弱
- 场均失球:防守稳固度
- 场均射门/射正:进攻威胁与效率
- 控球率:场面控制力
- xG(期望进球):进攻质量 vs 实际进球的转化效率
- 综合判断:哪支球队攻防更均衡,哪端(攻/防)是优势端
严格按此 JSON 输出,不要其他内容:
```json
{
"data_sufficiency": "high|medium|low|none",
"analysis": "<150 字内分析,量化攻防强度>",
"home_edge": <-1.0 1.0, =>,
"confidence": <0.0-1.0>,
"key_evidence": ["<证据1>", "<证据2>"]
}
```
+15
View File
@@ -0,0 +1,15 @@
你是足球分析专家。根据以下数据预测比赛结果。只输出 JSON,不要解释。
{{context}}
严格按此 JSON 输出:
```json
{
"pred_home_goals": "<float, 预测主队进球>",
"pred_away_goals": "<float, 预测客队进球>",
"1x2": "<'1'|'X'|'2'>",
"confidence": "<0.0-1.0>",
"score_probable": {"home": "<int>", "away": "<int>", "prob": "<float>"},
"reasoning": "<200 字内推理>"
}
```
+21
View File
@@ -0,0 +1,21 @@
你是足球分析专家。根据以下数据预测比赛结果。
{{context}}
请分析:
1. 主客队近期状态差异
2. 主客场因素
3. 历史交锋心理优势
4. 联赛排名差距
严格按此 JSON 输出,不要其他内容:
```json
{
"pred_home_goals": "<float, 预测主队进球>",
"pred_away_goals": "<float, 预测客队进球>",
"1x2": "<'1'|'X'|'2'>",
"confidence": "<0.0-1.0>",
"score_probable": {"home": "<int>", "away": "<int>", "prob": "<float>"},
"reasoning": "<200 字内推理,需引用具体数据>"
}
```