@delta-infra/cli 1.0.76 → 1.0.78
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/README.md +405 -405
- package/checksums.txt +5 -5
- package/package.json +1 -1
- package/scripts/install-wizard.js +610 -596
- package/scripts/install.js +400 -400
- package/scripts/run.js +65 -65
- package/skills/antbo-ldm-guard/SKILL.md +51 -51
- package/skills/antbo-ldm-guard/agents/openai.yaml +4 -4
- package/skills/antbo-service/SKILL.md +71 -71
- package/skills/antbo-service/agents/openai.yaml +4 -4
- package/skills/antbo-service/references/operations.md +45 -45
- package/skills/delta-bo/SKILL.md +28 -28
- package/skills/delta-bo/agents/openai.yaml +4 -4
- package/skills/delta-bo/references/endpoints.md +263 -263
- package/skills/delta-sandbox/SKILL.md +356 -356
- package/skills/delta-sandbox/agents/openai.yaml +4 -4
- package/skills/delta-sandbox/references/commands.md +56 -56
- package/skills/delta-sandbox/references/lifecycle.md +92 -92
- package/skills/delta-sandbox/references/recipes.md +133 -133
- package/skills/delta-science/SKILL.md +163 -163
- package/skills/delta-science/agents/openai.yaml +4 -4
- package/skills/delta-science/references/cli-contract.md +84 -84
- package/skills/delta-science/references/services.md +112 -112
- package/skills/delta-science/references/workflows.md +44 -44
- package/skills/delta-science/scripts/invoke.py +257 -257
- package/skills/delta-shared/SKILL.md +95 -95
- package/skills/delta-shared/agents/openai.yaml +4 -4
- package/skills/gsasii/SKILL.md +34 -34
- package/skills/gsasii/agents/openai.yaml +4 -4
- package/skills/gsasii/references/endpoints.md +130 -130
- package/skills/lammps/SKILL.md +31 -31
- package/skills/lammps/agents/openai.yaml +4 -4
- package/skills/lammps/references/endpoints.md +61 -61
- package/skills/ldm-bo/SKILL.md +27 -27
- package/skills/ldm-bo/agents/openai.yaml +4 -4
- package/skills/ldm-bo/references/endpoints.md +127 -127
- package/skills/pubchem/SKILL.md +85 -85
- package/skills/pubchem/agents/openai.yaml +4 -4
- package/skills/pubchem/references/endpoints.md +122 -122
- package/skills/pubchem/references/operations.md +41 -41
- package/skills/pymatgen/SKILL.md +46 -46
- package/skills/pymatgen/agents/openai.yaml +4 -4
- package/skills/pymatgen/references/endpoints.md +66 -66
- package/skills/rdkit/SKILL.md +104 -104
- package/skills/rdkit/agents/openai.yaml +4 -4
- package/skills/rdkit/references/endpoints.md +133 -133
- package/skills/rdkit/references/operations.md +64 -64
- package/skills/synbo-service/SKILL.md +28 -28
- package/skills/synbo-service/agents/openai.yaml +4 -4
- package/skills/synbo-service/references/endpoints.md +157 -157
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
---
|
|
1
|
+
---
|
|
2
2
|
name: synbo-service
|
|
3
3
|
description: 当用户需要对分类反应条件空间做初始采样,或基于真实历史反应结果使用 SynBO 推荐下一批催化剂、溶剂、碱等条件时使用。支持 health、initialize、optimize;所有调用只走 Delta CLI,重型 optimize 串行执行且超时不自动重试。
|
|
4
4
|
metadata:
|
|
@@ -7,30 +7,30 @@ metadata:
|
|
|
7
7
|
- python_repl
|
|
8
8
|
- step_finish
|
|
9
9
|
---
|
|
10
|
-
|
|
11
|
-
# SynBO 服务
|
|
12
|
-
|
|
13
|
-
## 强制规则
|
|
14
|
-
|
|
15
|
-
- 只用 `python_repl` 执行 `$SKILLS_ROOT/delta-science/scripts/invoke.py`,
|
|
16
|
-
tool=`synbo`;禁止 Bash、路径探测、字面 CLI、直接 HTTP 和本地 SynBO/GP。
|
|
17
|
-
- `python_repl` 工具参数只能包含 `code`,禁止 `deps/dependencies/packages`。
|
|
18
|
-
- 业务结果直接位于 `r["native"]`,禁止 `native.data`。
|
|
19
|
-
- `health` 无 body;`initialize` 和 `optimize` 使用 `--data-json`。
|
|
20
|
-
- 重型调用串行执行;timeout/断连结果未知,不自动重试。
|
|
21
|
-
|
|
22
|
-
## operation 选择
|
|
23
|
-
|
|
24
|
-
- `initialize`:没有 measured previous results 时使用。提供 `condition_dict`、
|
|
25
|
-
`opt_metrics`、方向/range/weight 设置、batch_size、sampling_method 和 seed。
|
|
26
|
-
- `optimize`:只有存在真实历史时使用。每一行必须包含全部 condition 列和全部数值
|
|
27
|
-
metric 列;有界 CPU 测试用 `accuracy:"tiny"`、`device:"cpu"`。
|
|
28
|
-
- descriptors 如提供,键必须与 condition_dict 完全一致,index 列存在且其余为数值。
|
|
29
|
-
|
|
30
|
-
完整成功 payload 见 `references/endpoints.md`。若 optimize 返回数组维度错误、timeout、
|
|
31
|
-
空 recommendations 或后端失败,报告“未产生推荐”,不得用本地 GP、UCB、响应面、
|
|
32
|
-
随机采样或人工排序替代。
|
|
33
|
-
|
|
34
|
-
通过 wrapper 调用一次,显式打印 recommendations/metadata/warnings 或有界错误;成功
|
|
35
|
-
后立即 `step_finish(status="done", summary=<同一 JSON>)`,失败则
|
|
36
|
-
`step_finish(status="failed", summary=<原始错误短摘要>)`。禁止后续工具。
|
|
10
|
+
|
|
11
|
+
# SynBO 服务
|
|
12
|
+
|
|
13
|
+
## 强制规则
|
|
14
|
+
|
|
15
|
+
- 只用 `python_repl` 执行 `$SKILLS_ROOT/delta-science/scripts/invoke.py`,
|
|
16
|
+
tool=`synbo`;禁止 Bash、路径探测、字面 CLI、直接 HTTP 和本地 SynBO/GP。
|
|
17
|
+
- `python_repl` 工具参数只能包含 `code`,禁止 `deps/dependencies/packages`。
|
|
18
|
+
- 业务结果直接位于 `r["native"]`,禁止 `native.data`。
|
|
19
|
+
- `health` 无 body;`initialize` 和 `optimize` 使用 `--data-json`。
|
|
20
|
+
- 重型调用串行执行;timeout/断连结果未知,不自动重试。
|
|
21
|
+
|
|
22
|
+
## operation 选择
|
|
23
|
+
|
|
24
|
+
- `initialize`:没有 measured previous results 时使用。提供 `condition_dict`、
|
|
25
|
+
`opt_metrics`、方向/range/weight 设置、batch_size、sampling_method 和 seed。
|
|
26
|
+
- `optimize`:只有存在真实历史时使用。每一行必须包含全部 condition 列和全部数值
|
|
27
|
+
metric 列;有界 CPU 测试用 `accuracy:"tiny"`、`device:"cpu"`。
|
|
28
|
+
- descriptors 如提供,键必须与 condition_dict 完全一致,index 列存在且其余为数值。
|
|
29
|
+
|
|
30
|
+
完整成功 payload 见 `references/endpoints.md`。若 optimize 返回数组维度错误、timeout、
|
|
31
|
+
空 recommendations 或后端失败,报告“未产生推荐”,不得用本地 GP、UCB、响应面、
|
|
32
|
+
随机采样或人工排序替代。
|
|
33
|
+
|
|
34
|
+
通过 wrapper 调用一次,显式打印 recommendations/metadata/warnings 或有界错误;成功
|
|
35
|
+
后立即 `step_finish(status="done", summary=<同一 JSON>)`,失败则
|
|
36
|
+
`step_finish(status="failed", summary=<原始错误短摘要>)`。禁止后续工具。
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
interface:
|
|
2
|
-
display_name: "SynBO 反应条件优化"
|
|
3
|
-
short_description: "通过 Delta CLI 初始化或优化分类反应条件空间"
|
|
4
|
-
default_prompt: "使用 $synbo-service 根据历史结果推荐下一批反应条件。"
|
|
1
|
+
interface:
|
|
2
|
+
display_name: "SynBO 反应条件优化"
|
|
3
|
+
short_description: "通过 Delta CLI 初始化或优化分类反应条件空间"
|
|
4
|
+
default_prompt: "使用 $synbo-service 根据历史结果推荐下一批反应条件。"
|
|
@@ -1,157 +1,157 @@
|
|
|
1
|
-
# SynBO API Endpoint Reference
|
|
2
|
-
|
|
3
|
-
All paths are relative to `http://111.2.199.31:52317/api/v1`.
|
|
4
|
-
|
|
5
|
-
This reference is for the exposed HTTP gateway. It is not a local SynBO project
|
|
6
|
-
runner.
|
|
7
|
-
|
|
8
|
-
## Health
|
|
9
|
-
|
|
10
|
-
`GET /chem/synbo/health`
|
|
11
|
-
|
|
12
|
-
Reports SynBO import status, Torch/CUDA runtime availability, service limits,
|
|
13
|
-
default device, and visible CUDA devices.
|
|
14
|
-
|
|
15
|
-
Important fields inside gateway `data`:
|
|
16
|
-
|
|
17
|
-
```json
|
|
18
|
-
{
|
|
19
|
-
"status": "ok",
|
|
20
|
-
"synbo_available": true,
|
|
21
|
-
"metadata": {
|
|
22
|
-
"service": "synbo-service",
|
|
23
|
-
"engine": "synbo",
|
|
24
|
-
"version": "0.1.0",
|
|
25
|
-
"synbo_version": "0.1.0",
|
|
26
|
-
"default_device": "cpu",
|
|
27
|
-
"cuda_visible_devices": ""
|
|
28
|
-
},
|
|
29
|
-
"limits": {
|
|
30
|
-
"max_batch_size": 128,
|
|
31
|
-
"max_reaction_space_size": 200000,
|
|
32
|
-
"max_previous_rows": 10000
|
|
33
|
-
},
|
|
34
|
-
"runtime": {
|
|
35
|
-
"torch_available": true,
|
|
36
|
-
"cuda_available": false,
|
|
37
|
-
"cuda_device_count": 0,
|
|
38
|
-
"cuda_device_names": []
|
|
39
|
-
},
|
|
40
|
-
"warnings": []
|
|
41
|
-
}
|
|
42
|
-
```
|
|
43
|
-
|
|
44
|
-
## Initialize
|
|
45
|
-
|
|
46
|
-
`POST /chem/synbo/initialize`
|
|
47
|
-
|
|
48
|
-
Use for initial condition sampling when no measured previous results exist.
|
|
49
|
-
|
|
50
|
-
Request body:
|
|
51
|
-
|
|
52
|
-
```json
|
|
53
|
-
{
|
|
54
|
-
"condition_dict": {
|
|
55
|
-
"catalyst": ["Pd(OAc)2", "Pd(PPh3)4", "Pd2(dba)3"],
|
|
56
|
-
"solvent": ["THF", "Dioxane", "Toluene"],
|
|
57
|
-
"base": ["K2CO3", "NaOEt", "DBU"]
|
|
58
|
-
},
|
|
59
|
-
"opt_metrics": ["yield"],
|
|
60
|
-
"opt_metric_settings": [
|
|
61
|
-
{"opt_direct": "max", "opt_range": [0, 100], "metric_weight": 1.0}
|
|
62
|
-
],
|
|
63
|
-
"batch_size": 3,
|
|
64
|
-
"sampling_method": "random",
|
|
65
|
-
"desc_normalize": "minmax",
|
|
66
|
-
"random_seed": 42
|
|
67
|
-
}
|
|
68
|
-
```
|
|
69
|
-
|
|
70
|
-
Supported `sampling_method` values: `sobol`, `random`, `lhs`, `kmeans`.
|
|
71
|
-
|
|
72
|
-
## Optimize
|
|
73
|
-
|
|
74
|
-
`POST /chem/synbo/optimize`
|
|
75
|
-
|
|
76
|
-
Use after measured experiment rows are available. Each previous row must contain
|
|
77
|
-
all condition columns and all objective metric columns.
|
|
78
|
-
|
|
79
|
-
Request body:
|
|
80
|
-
|
|
81
|
-
```json
|
|
82
|
-
{
|
|
83
|
-
"condition_dict": {
|
|
84
|
-
"catalyst": ["Pd(OAc)2", "Pd(PPh3)4", "Pd2(dba)3"],
|
|
85
|
-
"solvent": ["THF", "Dioxane", "Toluene"],
|
|
86
|
-
"base": ["K2CO3", "NaOEt", "DBU"]
|
|
87
|
-
},
|
|
88
|
-
"opt_metrics": ["yield"],
|
|
89
|
-
"previous_results": [
|
|
90
|
-
{"batch": 0, "catalyst": "Pd(OAc)2", "solvent": "THF", "base": "K2CO3", "yield": 42.0},
|
|
91
|
-
{"batch": 0, "catalyst": "Pd(PPh3)4", "solvent": "Dioxane", "base": "NaOEt", "yield": 55.0},
|
|
92
|
-
{"batch": 0, "catalyst": "Pd2(dba)3", "solvent": "Toluene", "base": "DBU", "yield": 63.0}
|
|
93
|
-
],
|
|
94
|
-
"batch_size": 2,
|
|
95
|
-
"accuracy": "tiny",
|
|
96
|
-
"device": "cpu",
|
|
97
|
-
"random_seed": 42
|
|
98
|
-
}
|
|
99
|
-
```
|
|
100
|
-
|
|
101
|
-
Useful optional fields:
|
|
102
|
-
|
|
103
|
-
- `accuracy`: `tiny`, `low`, `medium`, `high`, or `ultra`.
|
|
104
|
-
- `acq_func`: `EHVI`, `UCB`, `ParEGO`, or `NEI`.
|
|
105
|
-
- `surrogate_model`: `GP`, `RF`, `BNN`, or `BayesianLinear`.
|
|
106
|
-
- `device`: `cpu`, `auto`, `cuda`, or `cuda:0`.
|
|
107
|
-
- `cuda_visible_devices`: request-level CUDA visibility hint. Use only when the
|
|
108
|
-
user explicitly asks for it and `/health` indicates a CUDA-capable runtime.
|
|
109
|
-
- `constraints`: map condition type to prohibited values.
|
|
110
|
-
|
|
111
|
-
## Descriptors
|
|
112
|
-
|
|
113
|
-
If omitted, SynBO uses generated OneHot descriptors. To provide descriptors:
|
|
114
|
-
|
|
115
|
-
```json
|
|
116
|
-
{
|
|
117
|
-
"descriptors": {
|
|
118
|
-
"solvent": [
|
|
119
|
-
{"name": "THF", "polarity": 0.207, "boiling_point_C": 66.0},
|
|
120
|
-
{"name": "Toluene", "polarity": 0.099, "boiling_point_C": 110.6}
|
|
121
|
-
]
|
|
122
|
-
},
|
|
123
|
-
"descriptor_index_col": "name"
|
|
124
|
-
}
|
|
125
|
-
```
|
|
126
|
-
|
|
127
|
-
`descriptors` must contain exactly the same keys as `condition_dict`. Descriptor
|
|
128
|
-
rows must include the configured index column and numeric descriptor columns.
|
|
129
|
-
|
|
130
|
-
## Error Handling
|
|
131
|
-
|
|
132
|
-
Gateway errors have the standard envelope:
|
|
133
|
-
|
|
134
|
-
```json
|
|
135
|
-
{
|
|
136
|
-
"code": 1,
|
|
137
|
-
"message": "SynBO service returned HTTP 400",
|
|
138
|
-
"data": {
|
|
139
|
-
"endpoint": "/synbo/optimize",
|
|
140
|
-
"service_url": "http://synbo-service:8897",
|
|
141
|
-
"synbo_response": {
|
|
142
|
-
"detail": "previous_results is missing metric columns: ['yield']"
|
|
143
|
-
}
|
|
144
|
-
}
|
|
145
|
-
}
|
|
146
|
-
```
|
|
147
|
-
|
|
148
|
-
Common causes are oversized reaction spaces, duplicate condition values,
|
|
149
|
-
non-numeric descriptors, missing previous-result columns, missing numeric metric
|
|
150
|
-
values, and requesting CUDA when no GPU is available.
|
|
151
|
-
|
|
152
|
-
The service also enforces its own per-request time limit that is independent of
|
|
153
|
-
the client HTTP `timeout`. A slow call returns a timeout error such as
|
|
154
|
-
`"SynBO service timed out"`. This is expected for heavy optimizer settings
|
|
155
|
-
(GP + EHVI, higher accuracy) or when a concurrent request is occupying the
|
|
156
|
-
shared GPU. Retry once the service is idle, or lower `accuracy`, narrow the
|
|
157
|
-
reaction space, or use a GPU device.
|
|
1
|
+
# SynBO API Endpoint Reference
|
|
2
|
+
|
|
3
|
+
All paths are relative to `http://111.2.199.31:52317/api/v1`.
|
|
4
|
+
|
|
5
|
+
This reference is for the exposed HTTP gateway. It is not a local SynBO project
|
|
6
|
+
runner.
|
|
7
|
+
|
|
8
|
+
## Health
|
|
9
|
+
|
|
10
|
+
`GET /chem/synbo/health`
|
|
11
|
+
|
|
12
|
+
Reports SynBO import status, Torch/CUDA runtime availability, service limits,
|
|
13
|
+
default device, and visible CUDA devices.
|
|
14
|
+
|
|
15
|
+
Important fields inside gateway `data`:
|
|
16
|
+
|
|
17
|
+
```json
|
|
18
|
+
{
|
|
19
|
+
"status": "ok",
|
|
20
|
+
"synbo_available": true,
|
|
21
|
+
"metadata": {
|
|
22
|
+
"service": "synbo-service",
|
|
23
|
+
"engine": "synbo",
|
|
24
|
+
"version": "0.1.0",
|
|
25
|
+
"synbo_version": "0.1.0",
|
|
26
|
+
"default_device": "cpu",
|
|
27
|
+
"cuda_visible_devices": ""
|
|
28
|
+
},
|
|
29
|
+
"limits": {
|
|
30
|
+
"max_batch_size": 128,
|
|
31
|
+
"max_reaction_space_size": 200000,
|
|
32
|
+
"max_previous_rows": 10000
|
|
33
|
+
},
|
|
34
|
+
"runtime": {
|
|
35
|
+
"torch_available": true,
|
|
36
|
+
"cuda_available": false,
|
|
37
|
+
"cuda_device_count": 0,
|
|
38
|
+
"cuda_device_names": []
|
|
39
|
+
},
|
|
40
|
+
"warnings": []
|
|
41
|
+
}
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
## Initialize
|
|
45
|
+
|
|
46
|
+
`POST /chem/synbo/initialize`
|
|
47
|
+
|
|
48
|
+
Use for initial condition sampling when no measured previous results exist.
|
|
49
|
+
|
|
50
|
+
Request body:
|
|
51
|
+
|
|
52
|
+
```json
|
|
53
|
+
{
|
|
54
|
+
"condition_dict": {
|
|
55
|
+
"catalyst": ["Pd(OAc)2", "Pd(PPh3)4", "Pd2(dba)3"],
|
|
56
|
+
"solvent": ["THF", "Dioxane", "Toluene"],
|
|
57
|
+
"base": ["K2CO3", "NaOEt", "DBU"]
|
|
58
|
+
},
|
|
59
|
+
"opt_metrics": ["yield"],
|
|
60
|
+
"opt_metric_settings": [
|
|
61
|
+
{"opt_direct": "max", "opt_range": [0, 100], "metric_weight": 1.0}
|
|
62
|
+
],
|
|
63
|
+
"batch_size": 3,
|
|
64
|
+
"sampling_method": "random",
|
|
65
|
+
"desc_normalize": "minmax",
|
|
66
|
+
"random_seed": 42
|
|
67
|
+
}
|
|
68
|
+
```
|
|
69
|
+
|
|
70
|
+
Supported `sampling_method` values: `sobol`, `random`, `lhs`, `kmeans`.
|
|
71
|
+
|
|
72
|
+
## Optimize
|
|
73
|
+
|
|
74
|
+
`POST /chem/synbo/optimize`
|
|
75
|
+
|
|
76
|
+
Use after measured experiment rows are available. Each previous row must contain
|
|
77
|
+
all condition columns and all objective metric columns.
|
|
78
|
+
|
|
79
|
+
Request body:
|
|
80
|
+
|
|
81
|
+
```json
|
|
82
|
+
{
|
|
83
|
+
"condition_dict": {
|
|
84
|
+
"catalyst": ["Pd(OAc)2", "Pd(PPh3)4", "Pd2(dba)3"],
|
|
85
|
+
"solvent": ["THF", "Dioxane", "Toluene"],
|
|
86
|
+
"base": ["K2CO3", "NaOEt", "DBU"]
|
|
87
|
+
},
|
|
88
|
+
"opt_metrics": ["yield"],
|
|
89
|
+
"previous_results": [
|
|
90
|
+
{"batch": 0, "catalyst": "Pd(OAc)2", "solvent": "THF", "base": "K2CO3", "yield": 42.0},
|
|
91
|
+
{"batch": 0, "catalyst": "Pd(PPh3)4", "solvent": "Dioxane", "base": "NaOEt", "yield": 55.0},
|
|
92
|
+
{"batch": 0, "catalyst": "Pd2(dba)3", "solvent": "Toluene", "base": "DBU", "yield": 63.0}
|
|
93
|
+
],
|
|
94
|
+
"batch_size": 2,
|
|
95
|
+
"accuracy": "tiny",
|
|
96
|
+
"device": "cpu",
|
|
97
|
+
"random_seed": 42
|
|
98
|
+
}
|
|
99
|
+
```
|
|
100
|
+
|
|
101
|
+
Useful optional fields:
|
|
102
|
+
|
|
103
|
+
- `accuracy`: `tiny`, `low`, `medium`, `high`, or `ultra`.
|
|
104
|
+
- `acq_func`: `EHVI`, `UCB`, `ParEGO`, or `NEI`.
|
|
105
|
+
- `surrogate_model`: `GP`, `RF`, `BNN`, or `BayesianLinear`.
|
|
106
|
+
- `device`: `cpu`, `auto`, `cuda`, or `cuda:0`.
|
|
107
|
+
- `cuda_visible_devices`: request-level CUDA visibility hint. Use only when the
|
|
108
|
+
user explicitly asks for it and `/health` indicates a CUDA-capable runtime.
|
|
109
|
+
- `constraints`: map condition type to prohibited values.
|
|
110
|
+
|
|
111
|
+
## Descriptors
|
|
112
|
+
|
|
113
|
+
If omitted, SynBO uses generated OneHot descriptors. To provide descriptors:
|
|
114
|
+
|
|
115
|
+
```json
|
|
116
|
+
{
|
|
117
|
+
"descriptors": {
|
|
118
|
+
"solvent": [
|
|
119
|
+
{"name": "THF", "polarity": 0.207, "boiling_point_C": 66.0},
|
|
120
|
+
{"name": "Toluene", "polarity": 0.099, "boiling_point_C": 110.6}
|
|
121
|
+
]
|
|
122
|
+
},
|
|
123
|
+
"descriptor_index_col": "name"
|
|
124
|
+
}
|
|
125
|
+
```
|
|
126
|
+
|
|
127
|
+
`descriptors` must contain exactly the same keys as `condition_dict`. Descriptor
|
|
128
|
+
rows must include the configured index column and numeric descriptor columns.
|
|
129
|
+
|
|
130
|
+
## Error Handling
|
|
131
|
+
|
|
132
|
+
Gateway errors have the standard envelope:
|
|
133
|
+
|
|
134
|
+
```json
|
|
135
|
+
{
|
|
136
|
+
"code": 1,
|
|
137
|
+
"message": "SynBO service returned HTTP 400",
|
|
138
|
+
"data": {
|
|
139
|
+
"endpoint": "/synbo/optimize",
|
|
140
|
+
"service_url": "http://synbo-service:8897",
|
|
141
|
+
"synbo_response": {
|
|
142
|
+
"detail": "previous_results is missing metric columns: ['yield']"
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
}
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
Common causes are oversized reaction spaces, duplicate condition values,
|
|
149
|
+
non-numeric descriptors, missing previous-result columns, missing numeric metric
|
|
150
|
+
values, and requesting CUDA when no GPU is available.
|
|
151
|
+
|
|
152
|
+
The service also enforces its own per-request time limit that is independent of
|
|
153
|
+
the client HTTP `timeout`. A slow call returns a timeout error such as
|
|
154
|
+
`"SynBO service timed out"`. This is expected for heavy optimizer settings
|
|
155
|
+
(GP + EHVI, higher accuracy) or when a concurrent request is occupying the
|
|
156
|
+
shared GPU. Retry once the service is idle, or lower `accuracy`, narrow the
|
|
157
|
+
reaction space, or use a GPU device.
|