POST
/api/special/run-algorithm/{algorithmName}
统一算法网关协议 (Gateway Protocol)
所有业务算法服务均通过此统一端点以 RPC 方式调用。请求头需携带 Authorization: <token>,底层入参统一包装在 params 数组中,计算结果统一由 results 返回。
💻 通用 cURL 调用模板
curl -X POST "https://algorithm.yue-lin-tech.com/api/special/run-algorithm/{algorithmName}" \
-H "Content-Type: application/json" \
-H "Authorization: YOUR_JWT_TOKEN" \
-d '{
"params": [...],
"nargout": 1,
"instanceId": ""
}'
📥 公共请求体 (Request JSON 规范)
{
// 【必填】业务参数数组 (array)
// 网关将数组按索引 params[0], params[1]... 映射为底层函数的顺序入参
"params": [
[12.5, 14.1, 15.3, ...], // params[0]: 脑电采样切片或标签序列
250 // params[1]: 采样率或其它配置项
],
// 【必填】期望返回参数数量 (number)
// 单返回值算法填 1;多元状态算法(如入睡指数)填 3 或 5
"nargout": 1,
// 【可选】实例会话保持句柄 (string)
// 传空字符串 "" 随机分配;传已有 ID 可复用常驻热实例,避免冷启动
"instanceId": ""
}
📤 公共响应体 (Response JSON 规范)
{
// 【固定】接口执行状态 (string)
// 计算正常完成时固定返回 "success"
"status": "success",
// 【透传】承载本次计算的虚拟实例 ID (string)
// 后续高频连续请求可将其传入请求体 instanceId,避免冷启动延迟
"instanceId": "i-0a1b2c3d4e",
// 【核心】算法计算结果 (number | array)
// • 当 nargout == 1 时:直接返回标量数值或一层特征数组
// • 当 nargout > 1 时:返回多输出数组 [out1, out2, out3...]
"results": ...
}
💡 实例生命周期与并发指南:
1. 冷启动与休眠:算法实例闲置 120 秒后会自动休眠。冷启动首次耗时约 3~8 秒,实例唤醒后后续请求进入毫秒级响应(约 50~200ms)。
2. 单线程隔离:每个专属实例为单线程执行。多用户高并发生产环境建议不锁定单一自定义 ID,或按用户 Session 隔离分配。
1. 冷启动与休眠:算法实例闲置 120 秒后会自动休眠。冷启动首次耗时约 3~8 秒,实例唤醒后后续请求进入毫秒级响应(约 50~200ms)。
2. 单线程隔离:每个专属实例为单线程执行。多用户高并发生产环境建议不锁定单一自定义 ID,或按用户 Session 隔离分配。
📥 0. 测试数据源 (仅用于脑龄/入睡指数)
在调用算法前,请先下载脑电测试数据。该数据包含一个大的浮点数数组。
状态: 未加载
POST/api/resource/InnerToken/post
通过用户名密码换取 JWT Token。成功后会自动填充上方 Token 栏。
Request Info
Waiting...
Response Data
Waiting...
GET/api/resource/InnerToken/getone
Request Info
Waiting...
Response Data
Waiting...
POST/api/special/run-algorithm/plus
Instance ID 机制说明:
1. 冷启动优化:算法服务器闲置 120s 后会休眠。使用
2. 单线程限制:每个算法实例是单线程的。高并发生产环境建议不传 ID 或为每个用户分配唯一 ID,防止阻塞。
3. 不传 ID (空):进入默认负载均衡池(可能每次都遇到冷启动)。
1. 冷启动优化:算法服务器闲置 120s 后会休眠。使用
instanceId
可以保持会话,避免频繁冷启动带来的高延迟。2. 单线程限制:每个算法实例是单线程的。高并发生产环境建议不传 ID 或为每个用户分配唯一 ID,防止阻塞。
3. 不传 ID (空):进入默认负载均衡池(可能每次都遇到冷启动)。
⚠️ 费用警告:
如果您传递大量不同的自定义字符串作为 ID,系统会创建对应数量的虚拟服务器实例,可能导致高额费用。请根据业务权衡。
如果您传递大量不同的自定义字符串作为 ID,系统会创建对应数量的虚拟服务器实例,可能导致高额费用。请根据业务权衡。
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| 📥 请求参数 (Request Body) | |||
params |
number[] | 是 | 固定为 [0, 0] |
nargout |
number | 是 | 期望的返回值数量,固定为 1 |
instanceId |
string | 否 | 实例ID,用于保持会话,空字符串表示随机分配 |
| 📤 响应结果 (Response Body) | |||
results |
number | - | 预热成功固定返回 0 |
instanceId |
string | - | 云端分配或确认的实例ID,后续业务请求需带上以复用实例 |
status |
string | - | 接口调用状态,如 "success" |
curl -X POST "https://algorithm.yue-lin-tech.com/api/special/run-algorithm/plus" \
-H "Content-Type: application/json" \
-H "Authorization: YOUR_TOKEN" \
-d '{
"params": [0, 0],
"nargout": 1,
"instanceId": ""
}'
Request Info
Waiting...
Response Data
Waiting...
POST/api/special/run-algorithm/YLBA_mainfunction
传递全量数据进行分析。
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| 📥 请求参数 (Request Body) | |||
params[0] |
number[] | 是 | 单通道完整脑电数据,建议至少10秒以上的有效数据 |
params[1] |
number | 是 | 采样率,通常为 250 |
params[2] |
number | 是 | 用户的真实年龄(数值类型) |
| 📤 响应结果 - 基础神经状态评分 (Basic Neuro Scores) | |||
results[0][0] |
number | - | 实际年龄 |
results[0][1] |
number | - | 预测脑龄 |
results[0][2] |
number | - | 专注度评分(百分制) |
results[0][3] |
number | - | 放松度评分(百分制) |
results[0][4] |
number | - | 疲劳度评分(百分制) |
| 📤 响应结果 - 核心指标对比 (用户自身 vs 同龄段均值) | |||
results[0][5] |
number | - | 用户 Alpha 频段相对功率 (%) |
results[0][6] |
number | - | 同龄段 Alpha 频段相对功率均值 (%) |
results[0][7] |
number | - | 用户 Gamma 频段相对功率 (%) |
results[0][8] |
number | - | 同龄段 Gamma 频段相对功率均值 (%) |
results[0][9] |
number | - | 用户 Alpha/Theta 频段功率比值 |
results[0][10] |
number | - | 同龄段 Alpha/Theta 功率比值均值 |
results[0][11] |
number | - | 用户 Beta/Theta 频段功率比值 |
results[0][12] |
number | - | 同龄段 Beta/Theta 功率比值均值 |
results[0][13] |
number | - | 用户 IAF (个体 Alpha 峰值频率, Hz) |
results[0][14] |
number | - | 同龄段 IAF 均值 (Hz) |
results[0][15] |
number | - | 用户 Gamma 频段维纳熵 (谱平坦度) |
results[0][16] |
number | - | 同龄段 Gamma 频段维纳熵均值 |
results[0][17] |
number | - | 用户 信号干扰指数 (Beta 频段相对功率, %) |
results[0][18] |
number | - | 同龄段 信号干扰指数均值 (%) |
results[0][19] |
number | - | 睡眠障碍风险指数 (SDRI) |
curl -X POST "https://algorithm.yue-lin-tech.com/api/special/run-algorithm/YLBA_mainfunction" \
-H "Content-Type: application/json" \
-H "Authorization: YOUR_TOKEN" \
-d '{
"params": [
[12.1, 14.5, 13.8, "...(完整脑电数据,>=10秒)..."],
250,
35
],
"nargout": 1,
"instanceId": ""
}'
Request Info (数组过大时,显示已折叠)
Waiting...
Response Data
Waiting...
POST/api/special/run-algorithm/YL_getSOI
滑动窗口机制:
每次请求需要 10秒 (2500点) 的数据。通过设置步进时间(Overlap)来控制调用频率。
例如:步进 1秒 = 90% 重叠 (0-10s, 1-11s...); 步进 5秒 = 50% 重叠 (0-10s, 5-15s...)。
注:需将上一次返回的 State (results[2]) 传回。
每次请求需要 10秒 (2500点) 的数据。通过设置步进时间(Overlap)来控制调用频率。
例如:步进 1秒 = 90% 重叠 (0-10s, 1-11s...); 步进 5秒 = 50% 重叠 (0-10s, 5-15s...)。
注:需将上一次返回的 State (results[2]) 传回。
(每点一次按钮前进的时间)
当前窗口范围: 0 - 0 (Total:
0)
窗口大小: 10s (2500 pts)
历史状态 (State):
无 (Initial)
执行结果历史
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| 📥 请求参数 (Request Body) | |||
params[0] |
number[] | 是 | 单 epoch 原始脑电信号(例如 10秒窗口 共 2500 个点) |
params[1] |
number | 是 | 采样率数值,固定为 250.0 |
params[2] |
number | number[] | 否 |
上一阶段的平滑状态。首次请求传空数组
[]
|
| 📤 响应结果 (Response Body) | |||
results[0] |
number | - | 当前 epoch 的入睡指数 (SOI) 评分,范围约 0-100,越高越接近入睡 |
results[1][0] |
number[] | - | 提取的 8 维脑电特征向量 (包含 Delta/Theta 相对功率等) |
results[2] |
number | - |
更新后的平滑 SOI 值 (状态),需保存并在下一次请求作为
params[2] 传入
|
curl -X POST "https://algorithm.yue-lin-tech.com/api/special/run-algorithm/YL_getSOI" \
-H "Content-Type: application/json" \
-H "Authorization: YOUR_TOKEN" \
-d '{
"params": [
[14.2, 13.8, 15.1, "...(2500 floats)..."],
250.0,
[]
],
"nargout": 3,
"instanceId": ""
}'
Request Info (显示 10s 数据切片)
Waiting...
Response Data
Waiting...
POST/api/special/run-algorithm/YL_getSleepScore
计算睡眠评分。参数 1:睡眠分期数组(可编辑);参数
2:入睡时间(0-23点)。
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| 📥 请求参数 (Request Body) | |||
params[0] |
number[] | 是 | 睡眠分期标签序列 (0=Wake, 1=Light, 2=Deep, 3=REM),每点代表30秒 |
params[1] |
number | 是 | 记录开始时刻 (0-23小时) |
| 📤 响应结果 (Response Body) | |||
results[0][0] |
number | - | 综合睡眠质量得分 (0-100,四舍五入) |
results[0][1] |
number | - | 总睡眠时长 (分钟) |
results[0][2] |
number | - | 中途清醒时长 (分钟) |
results[0][3] |
number | - | 浅睡时长 (分钟) |
results[0][4] |
number | - | 浅睡占比 (0-1) |
results[0][5] |
number | - | 深睡时长 (分钟) |
results[0][6] |
number | - | 深睡占比 (0-1) |
results[0][7] |
number | - | REM 时长 (分钟) |
results[0][8] |
number | - | REM 占比 (0-1) |
results[0][9] |
number | - | 入睡时刻 (当天累计秒数) |
results[0][10] |
number | - | 终末清醒时刻 (当天累计秒数) |
curl -X POST "https://algorithm.yue-lin-tech.com/api/special/run-algorithm/YL_getSleepScore" \
-H "Content-Type: application/json" \
-H "Authorization: YOUR_TOKEN" \
-d '{
"params": [
[0, 0, 1, 2, 3, 2, 1, 1, 2, 3],
3
],
"nargout": 1,
"instanceId": ""
}'
Request Info
Waiting...
Response Data
Waiting...
POST
/api/special/run-algorithm/YL_getSOI_simplify
简化版 SOI (YL_getSOI_simplify):输入 1
秒级底层评分特征
[Attention, Relaxation, Fatigue],通过推断引擎输出 4
个离散睡眠阶段(1=清醒、2=放松/过渡、3=浅睡、4=稳定睡眠)及状态句柄。
状态流转说明:
1. 按秒调用:外层按 1 秒间隔调用本接口,传入当前特征数组
2. 上下文句柄透传:首次调用时
3. nargout 设置:请求 Body 中的
1. 按秒调用:外层按 1 秒间隔调用本接口,传入当前特征数组
params[0]。2. 上下文句柄透传:首次调用时
params[1] ~
params[4] 全部传空数组
[]。后续调用时,需将上一次接口吐出的
results[1] ~ results[4] 原样透传回对应的
params[1] ~ params[4]。3. nargout 设置:请求 Body 中的
nargout 必须固定设置为 5。
实时特征输入 (1 秒):
快速预设:
记忆体状态:
无 (Initial)
当前推断阶段:
未计算
平滑状态:
未计算
推断日志历史
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| 📥 请求参数 (Request Body) | |||
params[0] |
number[] | 是 |
包含当前 1 秒内底层 3 个指标:
[Attention, Relaxation, Fatigue] (0-100)
|
params[1] |
number[] | 否 |
算法概率状态句柄。首次调用传 [],后续透传上一次的
results[1]
|
params[2] |
number[][] | 否 |
算法缓冲队列句柄。首次调用传 [],后续透传上一次的
results[2]
|
params[3] |
number | number[] | 否 |
算法平滑状态句柄。首次调用传 [],后续透传上一次的
results[3]
|
params[4] |
number[] | 否 |
算法防抖状态句柄。首次调用传 [],后续透传上一次的
results[4]
|
nargout |
number | 是 | 期望返回参数数量,固定为 5 |
instanceId |
string | 否 | 算法服务端实例 ID |
| 📤 响应结果 (Response Results) | |||
results[0] |
number | - |
推断睡眠阶段:1 = 清醒
(Wake)2 = 放松/过渡 (Relax/Transition)3
= 浅睡 (Light Sleep)4 = 稳定睡眠 (Stable
Sleep)
|
results[1] |
number[] | - | 概率状态句柄,下一次原样透传回 params[1] |
results[2] |
number[][] | - | 缓冲队列句柄,下一次原样透传回 params[2] |
results[3] |
number | - |
平滑状态句柄,下一次原样透传回 params[3]
|
results[4] |
number[] | - | 防抖状态句柄,下一次原样透传回 params[4] |
curl -X POST "https://algorithm.yue-lin-tech.com/api/special/run-algorithm/YL_getSOI_simplify" \
-H "Content-Type: application/json" \
-H "Authorization: YOUR_TOKEN" \
-d '{
"params": [
[20.0, 80.0, 75.0],
[],
[],
[],
[]
],
"nargout": 5,
"instanceId": ""
}'
Request Info
Waiting...
Response Data
Waiting...
POST
/api/special/run-algorithm/YLSS_sleepStage
单通道 EEG 自动睡眠分期 (YLSS_sleepStage):输入 30 秒原始单通道脑电数据切片(在 250Hz 采样率下为 7500 个采样点数值),结合整夜 Epoch 序号和上一阶段分期标签,输出当前 Epoch 的离散睡眠分期标签(
0=Wake 清醒、1=Light Sleep 浅睡、2=Deep Sleep 深睡、3=REM 快速眼动)。
当前切片范围: 0 - 7500 (单 Epoch 窗口: 30s / 7500 点)
当前 Epoch 序号:
#1
上一阶段标签:
0 (初始默认)
当前推断分期 (results):
未计算
已累积分期序列长度:
0
分期推断日志历史 (最新在最前)
📈 睡眠时相时序图 (Hypnogram Timeline)
0-清醒 (Wake)
1-浅睡 (Light)
2-深睡 (Deep)
3-REM
| 字段 | 类型 | 必填 | 说明 |
|---|---|---|---|
| 📥 请求参数 (Request Body) | |||
params[0] |
number[] | 是 | 单个 30 秒 Epoch 的原始单通道脑电采样数值序列(250Hz 下为 7500 个数值) |
params[1] |
number | 是 | 采样率数值,固定为 250 |
params[2] |
number | 是 |
当前 Epoch 在整夜序列中的位置序号(从 1 开始计数的正整数:第 1 个 30 秒传 1,第 2 个传 2,以此类推)
|
params[3] |
number | 是 |
上一个 Epoch 的睡眠分期标签。首次调用传 0(清醒),后续调用透传上一次接口返回的 results
|
nargout |
number | 是 | 期望返回参数数量,固定为 1 |
instanceId |
string | 否 | 算法服务端实例 ID |
| 📤 响应结果 (Response Body) | |||
results |
number | - |
当前 30 秒 Epoch 的睡眠分期标签:0 = 清醒 (Wake)1 = 浅睡 (Light Sleep)2 = 深睡 (Deep Sleep)3 = 快速眼动 (REM)
|
instanceId |
string | - | 云端分配或确认的实例 ID |
status |
string | - | 接口调用状态,成功时固定为 "success" |
curl -X POST "https://algorithm.yue-lin-tech.com/api/special/run-algorithm/YLSS_sleepStage" \
-H "Content-Type: application/json" \
-H "Authorization: YOUR_TOKEN" \
-d '{
"params": [
[12.5, 14.1, 15.3, 11.2, 8.7, "...(7500 floats)..."],
250,
1,
0
],
"nargout": 1,
"instanceId": ""
}'
Request Info (展示当前 30s 数据切片信息)
Waiting...
Response Data
Waiting...