File size: 4,946 Bytes
64cd325
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
# Kronos API 文档

本文档提供有关 Kronos 预测服务的 API 端点的详细信息。

## 基础 URL

基础 URL 将取决于您的部署环境。
-   **本地 Docker**: `http://localhost:7860`
-   **Hugging Face Spaces**: `https://<your-space-name>.hf.space`

## 身份验证

所有端点(`/api/model-status` 除外)都受到保护,需要 API 密钥。密钥必须在请求的 `Authorization` 头中提供。

-   **Header**: `Authorization: Bearer <YOUR_API_KEY>`

未能提供有效密钥将导致 `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。"
}