通过 bohr CLI 或 open.bohrium.com API 管理 Bohrium 项目。使用时机:用户询问在 Bohrium 上创建/列出/删除项目、管理项目成员...
SPILL: Bohrium 项目管理 概览 管理 运行于 Bohrium 平台 .是一项面向实际任务的技能,主要用于Prefer bohr CLI;仅返回 API 用于 CLI 不支持的操作( 成员管理, 成本 li)。
从功能定位来看,该技能强调把分散的操作要求整理成清晰、可复用的处理流程,使用户能够围绕既定目标快速准备输入、选择执行方式并获得结构化结果。实际使用前应先确认任务范围、数据来源、运行环境、必要权限和关键参数,再依据技能说明逐步执行;
若输入条件不完整,应先补齐信息或采用保守配置,避免因错误假设导致结果偏离需求。执行过程中需要关注工具调用是否成功、接口或依赖是否可用、输出格式是否符合预期,并对异常提示、缺失字段和边界情况进行处理;涉及批量任务时,还应保存进度,避免中断后重复操作。
在 Bohrium 平台上管理项目。优先使用 bohr CLI 工具;仅当 CLI 不支持的操作(如成员管理、成本限额设置、项目重命名)时,才回退至 API。
项目是 Nodes、Jobs、Images 和 Datasets 的组织容器,也是团队协作与成本管理的基本单位。
"bohrium-project": {
"enabled": true,
"apiKey": "YOUR_ACCESS_KEY",
"env": {
"ACCESS_KEY": "YOUR_ACCESS_KEY"
}
}
# macOS /bin/bash -c "$(curl -fsSL https://dp-public.oss-cn-beijing.aliyuncs.com/bohrctl/1.0.0/install_bohr_mac_curl.sh)" # Linux /bin/bash -c "$(curl -fsSL https://dp-public.oss-cn-beijing.aliyuncs.com/bohrctl/1.0.0/install_bohr_linux_curl.sh)" source ~/.bashrc # 或 source ~/.zshrc export PATH="$HOME/.bohrium:$PATH"
bohr project list # 表格格式 bohr project list --json # JSON 格式 bohr project list --csv # CSV 格式
JSON 字段说明:
| 字段 | 说明 |
|---|---|
projectId |
项目 ID |
name |
项目名称 |
bohr project create -n "my-experiment" bohr project create -n "my-experiment" -m 5000 # 月度成本限额 bohr project create -n "my-experiment" -t 10000 # 总成本限额
参数说明:
| 参数 | 简写 | 是否必需 | 说明 |
|---|---|---|---|
--name |
-n |
是 | 项目名称(默认为 "default") |
--month_cost_limit |
-m |
否 | 月度成本限额 |
--total_cost_limit |
-t |
否 | 总成本限额 |
bohr project delete 154
警告:删除项目是不可逆操作——该项目下的所有 Jobs 和 Images 将被彻底清除,无法恢复。
Bohrium 项目包含以下 3 类角色:
| 角色 | 说明 |
|---|---|
| Creator | 项目的创建者;每个项目有且仅有一名 Creator,不可转让 |
| Admin | 由 Creator 指定;可多人担任;可随时撤销权限 |
| Member | 被添加进项目的用户;默认角色 |
| 模块 | 权限 | Creator | Admin | Member |
|---|---|---|---|---|
| Project | 重命名项目 | ✓ | ✓ | ✗ |
| Project | 删除项目 | ✓ | ✗ | ✗ |
| Members | 添加/移除成员 | ✓ | ✓ | ✗ |
| Members | 提升/降级 Admin 权限 | ✓ | ✗ | ✗ |
| Budget | 查看/调整项目及成员预算 | ✓ | ✓ | ✗ |
| Nodes | 查看/管理项目内全部 Nodes | ✓ | ✓ | ✗ |
| Jobs | 查看/管理项目内全部 Jobs | ✓ | ✓ | ✗ |
| Images | 查看/管理项目内全部 Images | ✓ | ✓ | ✗ |
| Billing | 查看/下载账单报表 | ✓ | ✓ | ✗ |
重要提示:成员产生的费用将直接从项目 Creator 的账户余额中扣除。
Creator 和 Admin 可为项目设置总预算(可选)。若未设置,则默认为“无限制”。
当项目累计消费超出预算后,成员将无法提交新 Job 或启动新 Node。
可为每位成员单独设定个人支出限额:
通过 API 设置项目成本限额:
requests.post(f"{BASE}/set_cost_limit", headers=HEADERS_JSON,
json={"projectId": 154, "costLimit": 5000})
每个项目提供 1TB 免费共享存储空间,所有成员均可读写。
/share 目录所有项目成员均可在 Bohrium 镜像中心查看其他成员创建的自定义镜像,便于开发环境快速共享与复用。
| 项目 | 说明 |
|---|---|
| 计算资源 | 按资源实际使用时长计费;价格因配置不同而异 |
| Dev nodes | 运行期间持续计费;闲置时请停止或删除以避免计费 |
| 个人存储(/personal) | 免费提供 500GB;超出部分需另行购买 |
| 项目共享存储(/share) | 免费提供 1TB;超出部分需另行购买 |
| 资源类型 | 限制 |
|---|---|
| 项目数 | 每人最多创建 4 个项目(仅统计自行创建的项目;加入的项目不计入) |
| Nodes 数量 | 每个项目每人最多 4 个 Nodes |
| 并发运行 Jobs 数 | 每人最多 100 个 |
| 自定义镜像数量 | 每个项目最多 10 个 |
| 项目共享磁盘容量 | 每个项目 1TB |
| 个人数据磁盘容量 | 每个项目每人 500GB |
如需提升配额,请联系 Bohrium 技术支持。
以下操作暂未集成至 bohr CLI,需调用 API 实现:
import os, requests
AK = os.environ.get("ACCESS_KEY", "")
BASE = "https://open.bohrium.com/openapi/v1/project"
HEADERS = {"accessKey": AK}
HEADERS_JSON = {**HEADERS, "Content-Type": "application/json"}
# 获取详细项目列表(含成本、成员数等字段)
r = requests.get(f"{BASE}/list", headers=HEADERS)
# 返回:{items: [{id, name, totalCost, monthCost, userCount, projectRole, ...}]}
# 获取轻量项目列表(仅 id + name)
r = requests.get(f"{BASE}/lite_list", headers=HEADERS)
# 重命名项目
requests.post(f"{BASE}/set_name", headers=HEADERS_JSON,
json={"projectId": 154, "name": "new-name"})
# 设置成本限额
requests.post(f"{BASE}/set_cost_limit", headers=HEADERS_JSON,
json={"projectId": 154, "costLimit": 5000})
# 查看项目成员
r = requests.get(f"{BASE}/154/users", headers=HEADERS)
# 返回:{items: [{userId, userName, email, projectRole, cost, ...}]}
# 添加成员(通过邮箱)
requests.post(f"{BASE}/add_user", headers=HEADERS_JSON,
json={"projectId": 154, "email": "user@example.com"})
# 移除成员
requests.post(f"{BASE}/del_user", headers=HEADERS_JSON,
json={"projectId": 154, "userId": 12345})
# 提升/降级 Admin 权限
requests.post(f"{BASE}/manager/add", headers=HEADERS_JSON,
json={"projectId": 154, "userId": 12345})
requests.post(f"{BASE}/manager/del", headers=HEADERS_JSON,
json={"projectId": 154, "userId": 12345})
# 恢复已删除成员
requests.put(f"{BASE}/154/recovery_user", headers=HEADERS_JSON,
json={"userId": 12345})
| projectRole | 含义 |
|---|---|
| 1 | Creator / Admin |
| 3 | 普通成员(Regular member) |
以下接口无法通过 openapi accessKey 访问(返回 404):
| 接口 | 原因 |
|---|---|
POST /project/join |
路由转发路径不匹配 |
POST /project/share_status |
同上 |
GET /project/available |
注册于 AK v2 Group;v1 accessKey 无法访问 |
| 问题 | 原因 | 解决方案 |
|---|---|---|
| 找不到新创建的项目 | 新项目位于列表末尾 | 执行 bohr project list --json 查看完整列表 |
| 移除成员失败 | 提供的 userId 错误 | 先通过 API /{id}/users 获取正确 userId |
| 添加成员无响应 | 邮箱地址不存在 | 确认目标用户已在 Bohrium 完成注册 |
| 项目数量已达上限 | 每人最多创建 4 个项目 | 删除不再使用的项目,或联系技术支持申请扩容 |
| 成员无法提交 Job | 项目预算或成员预算已超限 | 由 Creator 或 Admin 调整对应预算 |
| 余额不足 | 账户余额为零 | 充值后即可恢复服务 |
相关专题
热门下载
相关下载
精品课程
共6课时 | 54.7万人学习
共89课时 | 134.1万人学习
共49课时 | 82.6万人学习
最新文章