# Kronos API 文档 本文档提供有关 Kronos 预测服务的 API 端点的详细信息。 ## 基础 URL 基础 URL 将取决于您的部署环境。 - **本地 Docker**: `http://localhost:7860` - **Hugging Face Spaces**: `https://.hf.space` ## 身份验证 所有端点(`/api/model-status` 除外)都受到保护,需要 API 密钥。密钥必须在请求的 `Authorization` 头中提供。 - **Header**: `Authorization: Bearer ` 未能提供有效密钥将导致 `401 Unauthorized` 错误。 --- ## 端点 ### 1. 获取可用模型列表 获取服务端所有可用模型的详细信息。 - **URL**: `/api/available-models` - **方法**: `GET` - **身份验证**: 不需要。 **成功响应 (200 OK)** ```json { "kronos-mini": { "name": "Kronos-mini", "model_id": "NeoQuasar/Kronos-mini", "tokenizer_id": "NeoQuasar/Kronos-Tokenizer-2k", "context_length": 2048, "params": "4.1M", "description": "Lightweight model, suitable for fast prediction" }, "kronos-small": { "name": "Kronos-small", "model_id": "NeoQuasar/Kronos-small", "tokenizer_id": "NeoQuasar/Kronos-Tokenizer-base", "context_length": 512, "params": "24.7M", "description": "Small model, balanced performance and speed" }, "kronos-base": { "name": "Kronos-base", "model_id": "NeoQuasar/Kronos-base", "tokenizer_id": "NeoQuasar/Kronos-Tokenizer-base", "context_length": 512, "params": "102.3M", "description": "Base model, provides better prediction quality" } } ``` ### 2. 获取当前模型状态 检查当前是否有模型被加载到内存中,并返回其详细信息。 - **URL**: `/api/model-status` - **方法**: `GET` - **身份验证**: 不需要。 **成功响应 (200 OK)** ```json { "status": "loaded", "model_key": "kronos-base", "model_info": { "name": "Kronos-base", "model_id": "NeoQuasar/Kronos-base", "tokenizer_id": "NeoQuasar/Kronos-Tokenizer-base", "context_length": 512, "params": "102.3M", "description": "Base model, provides better prediction quality" } } ``` **模型未加载响应 (200 OK)** ```json { "status": "not_loaded" } ``` ### 3. 加载模型 手动将一个指定的模型加载到内存中。 - **URL**: `/api/load-model` - **方法**: `POST` - **身份验证**: 需要。 **请求体 (Request Body)** ```json { "model_key": "kronos-base", "force_reload": false } ``` - `model_key` (可选): 模型的键名。默认为 `kronos-base`。**该值必须是 `/api/available-models` 端点返回的键之一** (例如, `"kronos-mini"`)。 - `force_reload` (可选): 如果为 `true`,即使请求的模型已在内存中,也会强制重新加载。默认为 `false`。 **成功响应 (200 OK)** ```json { "status": "Model 'Kronos-base' loaded successfully.", "model_info": { "name": "Kronos-base", "model_id": "NeoQuasar/Kronos-base", "tokenizer_id": "NeoQuasar/Kronos-Tokenizer-base", "context_length": 512, "params": "102.3M", "description": "Base model, provides better prediction quality" } } ``` **错误响应 (400 Bad Request)** 如果提供了无效的 `model_key`。 ```json { "error": "Invalid model_key. Please choose from the allowed models.", "allowed_models": [ "kronos-mini", "kronos-small", "kronos-base" ] } ``` ### 4. 获取预测结果 提交 K 线数据并接收预测结果。 - **URL**: `/api/predict_from_data` - **方法**: `POST` - **身份验证**: 需要。 **请求体 (Request Body)** ```json { "k_lines": [ [1711324800000, "18.545", "19.514", "18.385", "19.395", "2080487", ...], [1711411200000, "19.397", "20.759", "19.356", "20.032", "3020519", ...], [1711497600000, "20.030", "20.211", "19.011", "19.303", "2351359", ...] ], "prediction_params": { "pred_len": 120 } } ``` - `k_lines` (必需): 代表 K 线数据的数组的数组。格式应与币安 API 标准响应匹配(时间戳, 开盘价, 最高价, 最低价, 收盘价, 成交量, ...)。模型仅使用前 6 列。 - `prediction_params` (可选): 用于预测参数的字典。 - `pred_len` (可选): 要预测的未来时间步数。默认为 `120`。 **成功响应 (200 OK)** ```json { "success": true, "prediction_params": { "pred_len": 120 }, "prediction_results": [ { "timestamp": "2024-07-01T00:00:00", "open": 150.1, "high": 152.3, "low": 149.8, "close": 151.5, "volume": 100000.0 }, { "timestamp": "2024-07-01T01:00:00", "open": 151.5, "high": 153.0, "low": 151.0, "close": 152.8, "volume": 120000.0 } ] } ``` *(注意: `prediction_results` 是一个示例;实际值会有所不同。)* **错误响应 (400 Bad Request)** 如果模型尚未加载。 ```json { "error": "模型未加载。请先调用 /api/load-model。" }