@delta-infra/cli 1.0.95 → 1.0.97
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 +471 -467
- package/checksums.txt +5 -5
- package/package.json +1 -1
- package/scripts/install-wizard.js +701 -701
- package/scripts/install.js +442 -442
- package/scripts/run.js +65 -65
- package/skills/delta-sandbox/SKILL.md +356 -345
- package/skills/delta-sandbox/agents/openai.yaml +4 -4
- package/skills/delta-sandbox/references/commands.md +56 -58
- package/skills/delta-sandbox/references/lifecycle.md +92 -98
- package/skills/delta-sandbox/references/recipes.md +133 -138
- package/skills/delta-science/AGENTS.md +49 -49
- package/skills/delta-science/SKILL.md +141 -129
- package/skills/delta-science/agents/openai.yaml +4 -4
- package/skills/delta-science/references/antbo.md +100 -100
- package/skills/delta-science/references/cli-contract.md +53 -53
- package/skills/delta-science/references/delta-bo.md +89 -89
- package/skills/delta-science/references/generated-catalog.md +48 -0
- package/skills/delta-science/references/gsasii.md +116 -116
- package/skills/delta-science/references/lammps.md +66 -66
- package/skills/delta-science/references/ldm-bo.md +129 -129
- package/skills/delta-science/references/ldm.md +73 -73
- package/skills/delta-science/references/materials-design.md +109 -0
- package/skills/delta-science/references/molecule-enrich.md +59 -0
- package/skills/delta-science/references/operation-contracts.md +137 -0
- package/skills/delta-science/references/pubchem.md +126 -126
- package/skills/delta-science/references/pymatgen.md +68 -68
- package/skills/delta-science/references/qe-dft.md +123 -0
- package/skills/delta-science/references/rdkit.md +138 -138
- package/skills/delta-science/references/routing-index.md +35 -26
- package/skills/delta-science/references/services.md +112 -0
- package/skills/delta-science/references/strbo.md +87 -87
- package/skills/delta-science/references/synbo.md +198 -198
- package/skills/delta-science/references/workflows.md +86 -49
- package/skills/delta-science/scripts/catalog.py +92 -0
- package/skills/delta-science/scripts/generated_catalog.py +69 -0
- package/skills/delta-science/scripts/invoke.py +346 -0
- package/skills/delta-shared/SKILL.md +95 -97
- package/skills/delta-shared/agents/openai.yaml +4 -4
- package/skills/manifest.json +19 -19
|
@@ -1,129 +1,129 @@
|
|
|
1
|
-
# LDM-BO 详细规则
|
|
2
|
-
|
|
3
|
-
所有调用直接使用 `delta-cli science invoke`,不是本地 PDF2Dock runner。仅用于小分子 SMILES;
|
|
4
|
-
抗体、CDRH3 或 AntBO 场景必须使用 AntBO 能力边界。
|
|
5
|
-
provider、模型路径、Vina/ReaSyn/GPU/LLM 配置由服务端注入,不放入请求 JSON。
|
|
6
|
-
|
|
7
|
-
## Health
|
|
8
|
-
|
|
9
|
-
operation:`health`,无 body。
|
|
10
|
-
|
|
11
|
-
The response reports whether the adapter can see the mounted PDF2Dock
|
|
12
|
-
interpreter, `bo_api.py`, Vina binary, ReaSyn repo/interpreter/checkpoints, NN
|
|
13
|
-
model files, cache directory, GPU settings, and LLM configuration. Missing LLM
|
|
14
|
-
settings degrade health because LDM methods need them.
|
|
15
|
-
|
|
16
|
-
## One-Step Recommend
|
|
17
|
-
|
|
18
|
-
operation:`recommend`。
|
|
19
|
-
|
|
20
|
-
Wraps `bo_api.recommend_next_smiles`.
|
|
21
|
-
|
|
22
|
-
Typical payload:
|
|
23
|
-
|
|
24
|
-
```json
|
|
25
|
-
{
|
|
26
|
-
"method": "bo-tanimoto",
|
|
27
|
-
"pool": ["CCO", "CCN", "CCC"],
|
|
28
|
-
"history": [
|
|
29
|
-
{"smiles": "CCO", "scores": [-7.1]},
|
|
30
|
-
{"smiles": "CCN", "scores": [-6.8]}
|
|
31
|
-
],
|
|
32
|
-
"batch_size": 1
|
|
33
|
-
}
|
|
34
|
-
```
|
|
35
|
-
|
|
36
|
-
Typical business response inside the documented gateway `data`:
|
|
37
|
-
|
|
38
|
-
```json
|
|
39
|
-
{
|
|
40
|
-
"recommendations": ["CCC"],
|
|
41
|
-
"acquisition_values": [0.12],
|
|
42
|
-
"n_objectives": 1
|
|
43
|
-
}
|
|
44
|
-
```
|
|
45
|
-
|
|
46
|
-
LDM methods may include an `llm` diagnostics object.
|
|
47
|
-
|
|
48
|
-
`acquisition_values` 只能按业务响应原值报告。除非当前业务响应明确给出字段定义,否则
|
|
49
|
-
不得把它描述为预测 Vina、预测 objective、不确定性、置信度、expected improvement,
|
|
50
|
-
也不得自行判断“越大/越小越好”。服务未返回推荐理由时,明确写“服务未返回推荐
|
|
51
|
-
理由”,不得根据分子骨架、杂原子或模型机制补写解释。
|
|
52
|
-
|
|
53
|
-
## Full Trajectory
|
|
54
|
-
|
|
55
|
-
operation:`trajectory`。
|
|
56
|
-
|
|
57
|
-
Wraps `bo_api.run_search_trajectory`.
|
|
58
|
-
|
|
59
|
-
Small smoke payload:
|
|
60
|
-
|
|
61
|
-
```json
|
|
62
|
-
{
|
|
63
|
-
"method": "bo-tanimoto",
|
|
64
|
-
"seed": 42,
|
|
65
|
-
"seed-smiles": "CCO,CCN,CCC",
|
|
66
|
-
"num-evaluations": 4,
|
|
67
|
-
"batch-size": 1,
|
|
68
|
-
"objective": "vina+nn"
|
|
69
|
-
}
|
|
70
|
-
```
|
|
71
|
-
|
|
72
|
-
Typical business response inside the documented gateway `data`:
|
|
73
|
-
|
|
74
|
-
```json
|
|
75
|
-
{
|
|
76
|
-
"config": {},
|
|
77
|
-
"history": [],
|
|
78
|
-
"summary": {}
|
|
79
|
-
}
|
|
80
|
-
```
|
|
81
|
-
|
|
82
|
-
LDM methods may include `llm_trajectory`.
|
|
83
|
-
|
|
84
|
-
## Error Handling
|
|
85
|
-
|
|
86
|
-
The service maps `bo_api` error JSON to an upstream failure. The gateway
|
|
87
|
-
returns a standard error envelope:
|
|
88
|
-
|
|
89
|
-
```json
|
|
90
|
-
{
|
|
91
|
-
"code": 1,
|
|
92
|
-
"message": "AutoDock Vina executable not found...",
|
|
93
|
-
"data": {
|
|
94
|
-
"endpoint": "/v1/trajectory",
|
|
95
|
-
"ldm_bo_response": {
|
|
96
|
-
"error": "...",
|
|
97
|
-
"error_type": "ValueError",
|
|
98
|
-
"traceback": "Traceback ..."
|
|
99
|
-
}
|
|
100
|
-
}
|
|
101
|
-
}
|
|
102
|
-
```
|
|
103
|
-
|
|
104
|
-
Common causes are missing Vina, missing ReaSyn, wrong Python interpreter, CUDA
|
|
105
|
-
device mismatch, missing LLM credentials for LDM methods, or an unwritable Vina
|
|
106
|
-
cache directory.
|
|
107
|
-
|
|
108
|
-
## Provider Settings
|
|
109
|
-
|
|
110
|
-
Do not send provider settings in request JSON. The adapter reads these from
|
|
111
|
-
deployment config and passes them as Python kwargs to `bo_api`:
|
|
112
|
-
|
|
113
|
-
```text
|
|
114
|
-
vina_bin
|
|
115
|
-
vina_cache_dir
|
|
116
|
-
vina_max_workers
|
|
117
|
-
gp_device
|
|
118
|
-
reasyn_repo
|
|
119
|
-
reasyn_python_bin
|
|
120
|
-
reasyn_model_path
|
|
121
|
-
reasyn_devices
|
|
122
|
-
nn_model_path
|
|
123
|
-
nn_metadata_path
|
|
124
|
-
llm_model
|
|
125
|
-
llm_base_url
|
|
126
|
-
llm_api_key
|
|
127
|
-
```
|
|
128
|
-
|
|
129
|
-
The CLI forwards the user payload; `bo_api` owns business defaults and schema behavior.
|
|
1
|
+
# LDM-BO 详细规则
|
|
2
|
+
|
|
3
|
+
所有调用直接使用 `delta-cli science invoke`,不是本地 PDF2Dock runner。仅用于小分子 SMILES;
|
|
4
|
+
抗体、CDRH3 或 AntBO 场景必须使用 AntBO 能力边界。
|
|
5
|
+
provider、模型路径、Vina/ReaSyn/GPU/LLM 配置由服务端注入,不放入请求 JSON。
|
|
6
|
+
|
|
7
|
+
## Health
|
|
8
|
+
|
|
9
|
+
operation:`health`,无 body。
|
|
10
|
+
|
|
11
|
+
The response reports whether the adapter can see the mounted PDF2Dock
|
|
12
|
+
interpreter, `bo_api.py`, Vina binary, ReaSyn repo/interpreter/checkpoints, NN
|
|
13
|
+
model files, cache directory, GPU settings, and LLM configuration. Missing LLM
|
|
14
|
+
settings degrade health because LDM methods need them.
|
|
15
|
+
|
|
16
|
+
## One-Step Recommend
|
|
17
|
+
|
|
18
|
+
operation:`recommend`。
|
|
19
|
+
|
|
20
|
+
Wraps `bo_api.recommend_next_smiles`.
|
|
21
|
+
|
|
22
|
+
Typical payload:
|
|
23
|
+
|
|
24
|
+
```json
|
|
25
|
+
{
|
|
26
|
+
"method": "bo-tanimoto",
|
|
27
|
+
"pool": ["CCO", "CCN", "CCC"],
|
|
28
|
+
"history": [
|
|
29
|
+
{"smiles": "CCO", "scores": [-7.1]},
|
|
30
|
+
{"smiles": "CCN", "scores": [-6.8]}
|
|
31
|
+
],
|
|
32
|
+
"batch_size": 1
|
|
33
|
+
}
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
Typical business response inside the documented gateway `data`:
|
|
37
|
+
|
|
38
|
+
```json
|
|
39
|
+
{
|
|
40
|
+
"recommendations": ["CCC"],
|
|
41
|
+
"acquisition_values": [0.12],
|
|
42
|
+
"n_objectives": 1
|
|
43
|
+
}
|
|
44
|
+
```
|
|
45
|
+
|
|
46
|
+
LDM methods may include an `llm` diagnostics object.
|
|
47
|
+
|
|
48
|
+
`acquisition_values` 只能按业务响应原值报告。除非当前业务响应明确给出字段定义,否则
|
|
49
|
+
不得把它描述为预测 Vina、预测 objective、不确定性、置信度、expected improvement,
|
|
50
|
+
也不得自行判断“越大/越小越好”。服务未返回推荐理由时,明确写“服务未返回推荐
|
|
51
|
+
理由”,不得根据分子骨架、杂原子或模型机制补写解释。
|
|
52
|
+
|
|
53
|
+
## Full Trajectory
|
|
54
|
+
|
|
55
|
+
operation:`trajectory`。
|
|
56
|
+
|
|
57
|
+
Wraps `bo_api.run_search_trajectory`.
|
|
58
|
+
|
|
59
|
+
Small smoke payload:
|
|
60
|
+
|
|
61
|
+
```json
|
|
62
|
+
{
|
|
63
|
+
"method": "bo-tanimoto",
|
|
64
|
+
"seed": 42,
|
|
65
|
+
"seed-smiles": "CCO,CCN,CCC",
|
|
66
|
+
"num-evaluations": 4,
|
|
67
|
+
"batch-size": 1,
|
|
68
|
+
"objective": "vina+nn"
|
|
69
|
+
}
|
|
70
|
+
```
|
|
71
|
+
|
|
72
|
+
Typical business response inside the documented gateway `data`:
|
|
73
|
+
|
|
74
|
+
```json
|
|
75
|
+
{
|
|
76
|
+
"config": {},
|
|
77
|
+
"history": [],
|
|
78
|
+
"summary": {}
|
|
79
|
+
}
|
|
80
|
+
```
|
|
81
|
+
|
|
82
|
+
LDM methods may include `llm_trajectory`.
|
|
83
|
+
|
|
84
|
+
## Error Handling
|
|
85
|
+
|
|
86
|
+
The service maps `bo_api` error JSON to an upstream failure. The gateway
|
|
87
|
+
returns a standard error envelope:
|
|
88
|
+
|
|
89
|
+
```json
|
|
90
|
+
{
|
|
91
|
+
"code": 1,
|
|
92
|
+
"message": "AutoDock Vina executable not found...",
|
|
93
|
+
"data": {
|
|
94
|
+
"endpoint": "/v1/trajectory",
|
|
95
|
+
"ldm_bo_response": {
|
|
96
|
+
"error": "...",
|
|
97
|
+
"error_type": "ValueError",
|
|
98
|
+
"traceback": "Traceback ..."
|
|
99
|
+
}
|
|
100
|
+
}
|
|
101
|
+
}
|
|
102
|
+
```
|
|
103
|
+
|
|
104
|
+
Common causes are missing Vina, missing ReaSyn, wrong Python interpreter, CUDA
|
|
105
|
+
device mismatch, missing LLM credentials for LDM methods, or an unwritable Vina
|
|
106
|
+
cache directory.
|
|
107
|
+
|
|
108
|
+
## Provider Settings
|
|
109
|
+
|
|
110
|
+
Do not send provider settings in request JSON. The adapter reads these from
|
|
111
|
+
deployment config and passes them as Python kwargs to `bo_api`:
|
|
112
|
+
|
|
113
|
+
```text
|
|
114
|
+
vina_bin
|
|
115
|
+
vina_cache_dir
|
|
116
|
+
vina_max_workers
|
|
117
|
+
gp_device
|
|
118
|
+
reasyn_repo
|
|
119
|
+
reasyn_python_bin
|
|
120
|
+
reasyn_model_path
|
|
121
|
+
reasyn_devices
|
|
122
|
+
nn_model_path
|
|
123
|
+
nn_metadata_path
|
|
124
|
+
llm_model
|
|
125
|
+
llm_base_url
|
|
126
|
+
llm_api_key
|
|
127
|
+
```
|
|
128
|
+
|
|
129
|
+
The CLI forwards the user payload; `bo_api` owns business defaults and schema behavior.
|
|
@@ -1,73 +1,73 @@
|
|
|
1
|
-
# LDM 科研工作流
|
|
2
|
-
|
|
3
|
-
这里的 **LDM / 大发现模型** 是用户可见的科研工作流名称,不是可以直接访问网关的
|
|
4
|
-
tool。在线计算必须先按任务语义选择 `ldm-bo`、`strbo` 或 `antbo`,再通过
|
|
5
|
-
`delta-cli science invoke`
|
|
6
|
-
调用 Delta CLI;禁止运行旧 `large-discovery-model` Skill、`run_ldm_loop.py`、gateway
|
|
7
|
-
backend、`stream_widget` 中的联网命令或任何 HTTP 客户端。
|
|
8
|
-
|
|
9
|
-
## 路由
|
|
10
|
-
|
|
11
|
-
| 用户目标 | 实际 tool | 需要同时读取 |
|
|
12
|
-
| --- | --- | --- |
|
|
13
|
-
| 在给定 SMILES 候选池中推荐下一批,或运行 PDF2Dock/Vina+NN 轨迹 | `ldm-bo` | `references/ldm-bo.md` |
|
|
14
|
-
| 围绕服务端固定 KRAS G12D 生成、评估并迭代小分子 | `strbo` | `references/strbo.md` |
|
|
15
|
-
| 为指定抗原生成、评估并迭代 11-aa CDRH3 | `antbo` | `references/antbo.md` |
|
|
16
|
-
|
|
17
|
-
不得因为用户只说“LDM”“药物发现”就自动选择后端。根据实体、已有数据和目标判断;
|
|
18
|
-
仍无法区分时,结束并说明需要用户确认“小分子候选池、KRAS G12D 生成优化或抗体
|
|
19
|
-
CDRH3”中的哪一种。
|
|
20
|
-
|
|
21
|
-
## 最小执行范围
|
|
22
|
-
|
|
23
|
-
- 用户只要求检查参数时,只调用相应 `*-validate` operation。
|
|
24
|
-
- 用户只要求评估已有候选时,只调用 evaluate,不生成新候选。
|
|
25
|
-
- 用户只要求推荐下一批且已经给出历史记录时,只调用 suggest/recommend。
|
|
26
|
-
- 用户明确要求“完整迭代优化”时,才运行初始化、评估、建议、再评估的闭环。
|
|
27
|
-
- 用户未给轮数时,STRBO/AntBO 最多执行一个建议轮次;不得沿用旧 Skill 的 6/8 轮
|
|
28
|
-
隐式默认值。LDM-BO `trajectory` 的评估次数必须来自用户,缺失时先要求确认。
|
|
29
|
-
|
|
30
|
-
生成、评估、建议和 trajectory 都会消耗远端资源。一次自然语言中的“帮我优化”视为
|
|
31
|
-
执行授权,但不得擅自扩大候选数、轮数或切换后端。
|
|
32
|
-
|
|
33
|
-
## STRBO 完整闭环
|
|
34
|
-
|
|
35
|
-
1. 调用 `molecules-init` 或 `molecules-init-job`,取得初始 SMILES。
|
|
36
|
-
2. 调用 `molecules-evaluate` 或对应异步 operation,取得 `[vina, activity]`。
|
|
37
|
-
3. 使用当前成功业务响应中的 SMILES 和 scores 构造 `history_xs/history_ys`。
|
|
38
|
-
4. 调用一次 `molecules-suggest-job`,按 STRBO reference 轮询至成功。
|
|
39
|
-
5. 只评估新建议,并把结果与当前任务内历史合并后返回。
|
|
40
|
-
|
|
41
|
-
提交 operation 不得重试。任一步失败、超时或返回数量不一致,立即结束;不得用旧
|
|
42
|
-
gateway、离线 mock、本地 RDKit/Vina 或模型猜测补全。
|
|
43
|
-
|
|
44
|
-
## AntBO 完整闭环
|
|
45
|
-
|
|
46
|
-
1. 用户必须提供抗原;未提供时不得替用户选择。
|
|
47
|
-
2. 必要时调用一次 `ldm-health`,确认抗原与 CDRH3 长度约束。
|
|
48
|
-
3. 调用 `ldm-init` 取得初始 CDRH3,再调用 `evaluate` 取得结合能。
|
|
49
|
-
4. 使用当前成功业务响应构造一维 `history_ys`,调用一次 `ldm-suggest`。
|
|
50
|
-
5. 只评估新建议,并返回当前任务内的候选与结合能。
|
|
51
|
-
|
|
52
|
-
不得把 AntBO 的一维 score 改成 STRBO 的二维 score,也不得把 CDRH3 交给小分子
|
|
53
|
-
LDM-BO。
|
|
54
|
-
|
|
55
|
-
## 固定候选池与轨迹
|
|
56
|
-
|
|
57
|
-
- 已有候选池和历史分数,要求下一批:使用 `ldm-bo/recommend`。
|
|
58
|
-
- 用户明确要求完整 PDF2Dock/Vina+NN 搜索并给出评估次数:使用
|
|
59
|
-
`ldm-bo/trajectory`。
|
|
60
|
-
- 不得把 `ldm-bo` 的 provider、模型路径、密钥、GPU 或 Vina 配置放进请求;这些由
|
|
61
|
-
Science Server 管理。
|
|
62
|
-
|
|
63
|
-
## 结果与展示
|
|
64
|
-
|
|
65
|
-
只报告当前 Delta CLI 业务响应中真实存在的候选、目标值、warnings、job_id、状态和
|
|
66
|
-
服务端 provenance。不得自行添加相似度阈值、机制解释、湿实验结论或“最优”断言;
|
|
67
|
-
只有在方向明确且比较集合完整时,才能按实际目标值指出当前集合中的最好候选。
|
|
68
|
-
推荐结果中的 acquisition value 不是预测目标值、置信度或推荐理由;除非业务响应
|
|
69
|
-
明确给出语义和方向,否则只作为原始采集函数值报告。
|
|
70
|
-
|
|
71
|
-
LDM 的仪表盘是展示层,不是计算入口。用户明确要求图表时,先完成一次 CLI 计算,
|
|
72
|
-
再让外层使用同一份已验证结果绘图;禁止为了仪表盘再次提交远端任务。普通请求直接
|
|
73
|
-
返回简洁文本。
|
|
1
|
+
# LDM 科研工作流
|
|
2
|
+
|
|
3
|
+
这里的 **LDM / 大发现模型** 是用户可见的科研工作流名称,不是可以直接访问网关的
|
|
4
|
+
tool。在线计算必须先按任务语义选择 `ldm-bo`、`strbo` 或 `antbo`,再通过
|
|
5
|
+
`delta-cli science invoke`
|
|
6
|
+
调用 Delta CLI;禁止运行旧 `large-discovery-model` Skill、`run_ldm_loop.py`、gateway
|
|
7
|
+
backend、`stream_widget` 中的联网命令或任何 HTTP 客户端。
|
|
8
|
+
|
|
9
|
+
## 路由
|
|
10
|
+
|
|
11
|
+
| 用户目标 | 实际 tool | 需要同时读取 |
|
|
12
|
+
| --- | --- | --- |
|
|
13
|
+
| 在给定 SMILES 候选池中推荐下一批,或运行 PDF2Dock/Vina+NN 轨迹 | `ldm-bo` | `references/ldm-bo.md` |
|
|
14
|
+
| 围绕服务端固定 KRAS G12D 生成、评估并迭代小分子 | `strbo` | `references/strbo.md` |
|
|
15
|
+
| 为指定抗原生成、评估并迭代 11-aa CDRH3 | `antbo` | `references/antbo.md` |
|
|
16
|
+
|
|
17
|
+
不得因为用户只说“LDM”“药物发现”就自动选择后端。根据实体、已有数据和目标判断;
|
|
18
|
+
仍无法区分时,结束并说明需要用户确认“小分子候选池、KRAS G12D 生成优化或抗体
|
|
19
|
+
CDRH3”中的哪一种。
|
|
20
|
+
|
|
21
|
+
## 最小执行范围
|
|
22
|
+
|
|
23
|
+
- 用户只要求检查参数时,只调用相应 `*-validate` operation。
|
|
24
|
+
- 用户只要求评估已有候选时,只调用 evaluate,不生成新候选。
|
|
25
|
+
- 用户只要求推荐下一批且已经给出历史记录时,只调用 suggest/recommend。
|
|
26
|
+
- 用户明确要求“完整迭代优化”时,才运行初始化、评估、建议、再评估的闭环。
|
|
27
|
+
- 用户未给轮数时,STRBO/AntBO 最多执行一个建议轮次;不得沿用旧 Skill 的 6/8 轮
|
|
28
|
+
隐式默认值。LDM-BO `trajectory` 的评估次数必须来自用户,缺失时先要求确认。
|
|
29
|
+
|
|
30
|
+
生成、评估、建议和 trajectory 都会消耗远端资源。一次自然语言中的“帮我优化”视为
|
|
31
|
+
执行授权,但不得擅自扩大候选数、轮数或切换后端。
|
|
32
|
+
|
|
33
|
+
## STRBO 完整闭环
|
|
34
|
+
|
|
35
|
+
1. 调用 `molecules-init` 或 `molecules-init-job`,取得初始 SMILES。
|
|
36
|
+
2. 调用 `molecules-evaluate` 或对应异步 operation,取得 `[vina, activity]`。
|
|
37
|
+
3. 使用当前成功业务响应中的 SMILES 和 scores 构造 `history_xs/history_ys`。
|
|
38
|
+
4. 调用一次 `molecules-suggest-job`,按 STRBO reference 轮询至成功。
|
|
39
|
+
5. 只评估新建议,并把结果与当前任务内历史合并后返回。
|
|
40
|
+
|
|
41
|
+
提交 operation 不得重试。任一步失败、超时或返回数量不一致,立即结束;不得用旧
|
|
42
|
+
gateway、离线 mock、本地 RDKit/Vina 或模型猜测补全。
|
|
43
|
+
|
|
44
|
+
## AntBO 完整闭环
|
|
45
|
+
|
|
46
|
+
1. 用户必须提供抗原;未提供时不得替用户选择。
|
|
47
|
+
2. 必要时调用一次 `ldm-health`,确认抗原与 CDRH3 长度约束。
|
|
48
|
+
3. 调用 `ldm-init` 取得初始 CDRH3,再调用 `evaluate` 取得结合能。
|
|
49
|
+
4. 使用当前成功业务响应构造一维 `history_ys`,调用一次 `ldm-suggest`。
|
|
50
|
+
5. 只评估新建议,并返回当前任务内的候选与结合能。
|
|
51
|
+
|
|
52
|
+
不得把 AntBO 的一维 score 改成 STRBO 的二维 score,也不得把 CDRH3 交给小分子
|
|
53
|
+
LDM-BO。
|
|
54
|
+
|
|
55
|
+
## 固定候选池与轨迹
|
|
56
|
+
|
|
57
|
+
- 已有候选池和历史分数,要求下一批:使用 `ldm-bo/recommend`。
|
|
58
|
+
- 用户明确要求完整 PDF2Dock/Vina+NN 搜索并给出评估次数:使用
|
|
59
|
+
`ldm-bo/trajectory`。
|
|
60
|
+
- 不得把 `ldm-bo` 的 provider、模型路径、密钥、GPU 或 Vina 配置放进请求;这些由
|
|
61
|
+
Science Server 管理。
|
|
62
|
+
|
|
63
|
+
## 结果与展示
|
|
64
|
+
|
|
65
|
+
只报告当前 Delta CLI 业务响应中真实存在的候选、目标值、warnings、job_id、状态和
|
|
66
|
+
服务端 provenance。不得自行添加相似度阈值、机制解释、湿实验结论或“最优”断言;
|
|
67
|
+
只有在方向明确且比较集合完整时,才能按实际目标值指出当前集合中的最好候选。
|
|
68
|
+
推荐结果中的 acquisition value 不是预测目标值、置信度或推荐理由;除非业务响应
|
|
69
|
+
明确给出语义和方向,否则只作为原始采集函数值报告。
|
|
70
|
+
|
|
71
|
+
LDM 的仪表盘是展示层,不是计算入口。用户明确要求图表时,先完成一次 CLI 计算,
|
|
72
|
+
再让外层使用同一份已验证结果绘图;禁止为了仪表盘再次提交远端任务。普通请求直接
|
|
73
|
+
返回简洁文本。
|
|
@@ -0,0 +1,109 @@
|
|
|
1
|
+
# Materials Design 详细规则
|
|
2
|
+
|
|
3
|
+
Materials Design 用于从实验或计算材料表格中建立 surrogate、验证模型、定义可行候选空间,
|
|
4
|
+
并生成带不确定性的候选排序。推荐是待验证假设,不是已确认材料、合成方案或实验结果。
|
|
5
|
+
|
|
6
|
+
本 reference 的路由标签是 `materials-design`。`tools.name` 和
|
|
7
|
+
`tool_endpoints.name` 仍以当前 `delta-cli science list` 和
|
|
8
|
+
`delta-cli science endpoints list <tool>` 的返回为准;下列 Gateway 路径只是服务契约,
|
|
9
|
+
不是可以直接拼接或访问的 URL。
|
|
10
|
+
|
|
11
|
+
## 服务边界
|
|
12
|
+
|
|
13
|
+
服务提供以下能力:
|
|
14
|
+
|
|
15
|
+
| 服务路径 | 作用 | 结果边界 |
|
|
16
|
+
| --- | --- | --- |
|
|
17
|
+
| `/chem/materials-design/health` | Gateway 到服务的就绪检查 | `status`、依赖可用性、limits |
|
|
18
|
+
| `/chem/materials-design/v1/capabilities` | 输入格式、模型、验证模式和限制 | 能力目录 |
|
|
19
|
+
| `/chem/materials-design/v1/jobs` | 上传训练/候选表并创建异步作业 | `202`、`job_id`、状态和 links |
|
|
20
|
+
| `/chem/materials-design/v1/jobs/{job_id}` | 查询作业 | `status`、`result_status`、result、warnings |
|
|
21
|
+
| `/chem/materials-design/v1/jobs/{job_id}/cancel` | 请求取消 | 取消请求/终态 |
|
|
22
|
+
| `/chem/materials-design/v1/jobs/{job_id}/artifacts` | 列出产物 | name、size、media_type、SHA-256 |
|
|
23
|
+
| `/chem/materials-design/v1/jobs/{job_id}/artifacts/{path}` | 下载单个产物 | 原始 report/JSON/CSV/figure bytes |
|
|
24
|
+
|
|
25
|
+
所有实时调用都必须走:
|
|
26
|
+
|
|
27
|
+
```text
|
|
28
|
+
delta-cli science invoke --tool TOOL --endpoint ENDPOINT --data JSON
|
|
29
|
+
```
|
|
30
|
+
|
|
31
|
+
只读 query operation 才使用 `--params JSON`。如果新工具尚未出现在目录中,或目录没有
|
|
32
|
+
返回足够的请求 schema,停止并报告未暴露;不要猜测 endpoint 名、body 或兼容别名。
|
|
33
|
+
|
|
34
|
+
## CLI 能力边界
|
|
35
|
+
|
|
36
|
+
`POST /v1/jobs` 的原始服务请求是 `multipart/form-data`,至少包含:
|
|
37
|
+
|
|
38
|
+
```text
|
|
39
|
+
file=<training table>
|
|
40
|
+
candidate_file=<optional candidate table>
|
|
41
|
+
config=<serialized JSON object>
|
|
42
|
+
```
|
|
43
|
+
|
|
44
|
+
当前通用 `delta-cli science invoke` 只接受 JSON object body 和 JSON query 参数,不能表达
|
|
45
|
+
multipart 文件上传,也不能把本地路径或 base64 伪装成文件字段。artifact 下载同样是原始
|
|
46
|
+
bytes,不应当当作普通 JSON 结果。只有 Science Server 目录明确提供等价的文件/adapter
|
|
47
|
+
operation 时,才通过 CLI 调用;否则 Materials Design 的作业提交或文件下载属于当前 CLI
|
|
48
|
+
未暴露能力,未发送远端请求。不得调用 `materials-design-service:8900` 或直连 preflight
|
|
49
|
+
Gateway。
|
|
50
|
+
|
|
51
|
+
## 输入与配置
|
|
52
|
+
|
|
53
|
+
开始建模前必须确认:
|
|
54
|
+
|
|
55
|
+
- `feature_columns`、`controllable_columns`、`target_column` 或 `objectives`;
|
|
56
|
+
- identifier、metadata、leakage、post-measurement、group/time 列及单位;
|
|
57
|
+
- 目标方向、可行性约束、候选表或候选生成规则;
|
|
58
|
+
- 缺失值、重复样本、测量条件、数据来源和验证切分策略。
|
|
59
|
+
|
|
60
|
+
单目标配置的核心字段:
|
|
61
|
+
|
|
62
|
+
```json
|
|
63
|
+
{
|
|
64
|
+
"feature_columns": ["Bi", "In", "Ti"],
|
|
65
|
+
"controllable_columns": ["Bi", "In", "Ti"],
|
|
66
|
+
"identifier_columns": ["sample_id"],
|
|
67
|
+
"target_column": "T",
|
|
68
|
+
"target_direction": "maximize",
|
|
69
|
+
"validation": {"strategy": "kfold", "n_splits": 5},
|
|
70
|
+
"model_names": ["ExtraTrees", "GPR", "Ridge"],
|
|
71
|
+
"random_state": 42,
|
|
72
|
+
"recommendation_count": 10
|
|
73
|
+
}
|
|
74
|
+
```
|
|
75
|
+
|
|
76
|
+
多目标使用 `objectives: [{"target_column": "...", "direction": "maximize|minimize"}]`
|
|
77
|
+
和显式的 Pareto/EHVI 配置。优先传入用户的 `candidate_file`;若服务按观测范围生成
|
|
78
|
+
候选,必须显式保留 steps、hard constraints、composition closure、`max_candidates` 和
|
|
79
|
+
`allow_extrapolation`。禁止优化 identifier、测量后变量、泄漏列或未获授权的域外点,禁止
|
|
80
|
+
为填充候选数而任意外推。
|
|
81
|
+
|
|
82
|
+
## 结果处理
|
|
83
|
+
|
|
84
|
+
作业 `status` 与 `result_status` 必须分开判断:
|
|
85
|
+
|
|
86
|
+
- `status`:`pending`、`running`、`completed`、`failed`、`cancelled`;
|
|
87
|
+
- `result_status`:`complete`、`exploratory`、`readiness_only` 或 `failed`。
|
|
88
|
+
|
|
89
|
+
`202` 只表示服务已接收/排队,不表示模型训练完成;`completed` 也不表示排序可靠。
|
|
90
|
+
只有在 `result_status` 为 `complete` 时才能说数据和验证支持候选排序;`exploratory` 只能
|
|
91
|
+
作为学习假设;`readiness_only` 要读取 readiness 信息并请求缺失输入;`failed` 原样报告。
|
|
92
|
+
始终保留服务返回的 validation、ranking、warnings 和 error。
|
|
93
|
+
|
|
94
|
+
预测结果必须和观测值、交叉验证预测区分。报告至少说明数据覆盖、切分、模型比较、
|
|
95
|
+
不确定性校准、候选可行性、域内/域外状态、EI/PI/UCB 或 Pareto 设置,以及后续实验验证
|
|
96
|
+
计划;不要用模型方差冒充实验误差或把候选预测写成实测值。
|
|
97
|
+
|
|
98
|
+
## Artifact 与错误
|
|
99
|
+
|
|
100
|
+
只有用户要求或工作流需要时才读取 artifacts。按 listing 返回的 `size`、`media_type` 和
|
|
101
|
+
SHA-256 校验下载内容;不能凭文件名猜格式。服务可能产生 `report.html`、`result.json`、
|
|
102
|
+
`data_dictionary.json`、`model_comparison.csv`、OOF/残差/校准文件、`search_space.json`、
|
|
103
|
+
`candidate_predictions.csv`、`shortlist.csv`、`recommendation_views.csv`、
|
|
104
|
+
`pareto_front.csv` 和 `figures/*`。
|
|
105
|
+
|
|
106
|
+
常见终止条件包括配置/文件格式错误、缺目标或候选空间、超出上传/行数/候选数限制、
|
|
107
|
+
后端未就绪、作业不存在和 artifact 不存在。提交超时或连接中断时不要盲目重试:multipart
|
|
108
|
+
上传可能已经创建作业,先检查是否已经得到 `job_id`。失败或空推荐不得用本地回归、GP、
|
|
109
|
+
随机数或人工排序替代。
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
# Molecule Enrichment 详细规则
|
|
2
|
+
|
|
3
|
+
这是一个由 Science Server 编排的联合 workflow:先用 PubChem 批量解析输入,再按服务
|
|
4
|
+
返回的 SMILES 回退顺序调用 RDKit 批量解析/描述符/指纹。它适合用户明确要求“一次拿到
|
|
5
|
+
身份信息和结构计算结果”的场景;推荐结果仍只来自当前 CLI 业务响应。
|
|
6
|
+
|
|
7
|
+
当前 Science Server 的注册标签是 `chemistry`,operation 是 `molecule.enrich`。实际
|
|
8
|
+
名称必须以当前 catalog 返回值为准;该 operation 的存在不能通过直接访问
|
|
9
|
+
`/chem/molecule/enrich` 推断或替代。所有调用都使用:
|
|
10
|
+
|
|
11
|
+
```text
|
|
12
|
+
delta-cli science invoke --tool chemistry --endpoint molecule.enrich --data JSON
|
|
13
|
+
```
|
|
14
|
+
|
|
15
|
+
## Request
|
|
16
|
+
|
|
17
|
+
请求体:
|
|
18
|
+
|
|
19
|
+
```json
|
|
20
|
+
{
|
|
21
|
+
"inputs": ["aspirin", "caffeine"],
|
|
22
|
+
"namespace": "name",
|
|
23
|
+
"pubchem": {
|
|
24
|
+
"properties": ["MolecularFormula", "MolecularWeight", "CanonicalSMILES"],
|
|
25
|
+
"synonym_limit": 5
|
|
26
|
+
},
|
|
27
|
+
"rdkit": {
|
|
28
|
+
"descriptors": true,
|
|
29
|
+
"canonicalize": true,
|
|
30
|
+
"fingerprint": {"type": "morgan", "radius": 2, "n_bits": 2048},
|
|
31
|
+
"sanitize": true
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
```
|
|
35
|
+
|
|
36
|
+
`inputs` 接受 1–100 个字符串;`namespace` 为 `cid`、`name`、`smiles`、`inchi`、
|
|
37
|
+
`inchikey` 或 `formula`。`pubchem.properties` 和 `synonym_limit` 遵循 PubChem reference。
|
|
38
|
+
RDKit 默认执行 descriptors、canonicalize 和 sanitize;`fingerprint` 可为 `false` 或
|
|
39
|
+
Morgan 配置对象,radius 为 1–6,n_bits 为 128–8192。不要把一个服务的字段名改写成
|
|
40
|
+
另一个服务的字段名。
|
|
41
|
+
|
|
42
|
+
## Result
|
|
43
|
+
|
|
44
|
+
成功业务结果通常包含 `valid`、`count`、`failed_count`、`results`、`warnings` 和
|
|
45
|
+
`metadata`。每个 `results[*]` 保留:
|
|
46
|
+
|
|
47
|
+
- 原始输入 `input`;
|
|
48
|
+
- PubChem 的 `valid`、`cid`、`smiles`、`formula`、`properties`、`aliases`、`synonyms`
|
|
49
|
+
和 `error`;
|
|
50
|
+
- 可选 RDKit 的 `valid`、`canonical_smiles`、`descriptors`、`fingerprint_metadata`、
|
|
51
|
+
`on_bits`、`bit_count`、`warnings` 和 `error`。
|
|
52
|
+
|
|
53
|
+
SMILES 回退顺序固定为 `CanonicalSMILES -> ConnectivitySMILES -> SMILES ->
|
|
54
|
+
IsomericSMILES`。PubChem 没有可用 SMILES,或 RDKit 失败时,该条记录保持无效并计入
|
|
55
|
+
`failed_count`;不要用本地 RDKit/PubChem 或人工字符串补齐。
|
|
56
|
+
|
|
57
|
+
只要用户需要单一中间结果,就不要为了使用 workflow 额外调用另一服务。不要主动调用
|
|
58
|
+
health 或保存文件;用户明确要求图片时仍单独使用 RDKit `render`,不要把本 workflow 的
|
|
59
|
+
描述符响应当成图像。
|