# Profeto — 足球 LLM 预测服务 **给 LLM 提供数据,让 LLM 预测足球比分。** 与旧项目 `MatchPro`(自研统计模型预测引擎)完全不同: - MatchPro: 160 个 Python 文件,7 套 ML 模型,OOF/校准/Promotion Gate,6 容器 - **Profeto**: ~25 个文件,5 张表,LLM 做预测,2 容器(api + postgres) ## 架构 ``` 前端(单页) → FastAPI → PostgreSQL ↑ LLM (OpenAI-compatible) ↑ bzzoiro / understat ``` ## 快速开始 ### 1. 环境 ```bash # 后端 pip install -e ".[dev]" cp .env.example .env # 编辑 .env: 填 LLM_API_KEY、BZZOIRO_KEY # 数据库 docker compose up -d postgres ``` ### 2. 启动 ```bash # 后端 uvicorn src.api.app:app --reload # 前端(另一个终端) cd frontend && npm install && npm run dev ``` ### 3. 使用 ```bash # 采集数据 curl -X POST http://localhost:8000/api/v1/ingest/bzzoiro \ -H "Content-Type: application/json" \ -d '{"leagues":["E0","SP1"],"date_from":"2026-08-01","date_to":"2026-09-06"}' # 查比赛 curl "http://localhost:8000/api/v1/matches?league=E0&status=scheduled" # LLM 预测 curl -X POST http://localhost:8000/api/v1/predict \ -H "Content-Type: application/json" \ -d '{"match_id": 1}' # 赛后回填 curl -X POST http://localhost:8000/api/v1/eval/settle \ -H "Content-Type: application/json" \ -d '{"prediction_id": 1, "home_goals": 2, "away_goals": 1}' # 评估汇总 curl http://localhost:8000/api/v1/eval/summary ``` 前端访问 `http://localhost:5173`。 ## 核心模块 | 文件 | 作用 | |---|---| | `src/llm/context_builder.py` | **最重要**: 拼 LLM 看到的上下文 | | `src/llm/prompts/match_prediction.md` | prompt 模板(迭代最频繁) | | `src/llm/provider.py` | 多提供商抽象 | | `src/data/bzzoiro.py` | 数据采集(迁移自旧项目) | | `src/data/normalize.py` | 数据清洗契约 | ## 测试 ```bash pytest ``` ## License 个人研究项目,预测结果不构成投注建议。