Python SDK(clore-ai)
该 clore-ai 软件包是用于以下内容的官方 Python SDK: Clore.ai GPU 市场。它将整个 REST API 封装为一个简洁、类型安全的接口,并内置速率限制、自动重试和结构化错误处理——让你可以专注于租用 GPU,而不是处理 HTTP 细节。
安装
pip install clore-ai需求: Python 3.9+
该软件包同时安装 Python SDK 和 clore CLI.
身份验证
从以下位置获取你的 API 密钥: Clore.ai 控制台 → API 部分。
选项 1:环境变量(推荐)
export CLORE_API_KEY=your_api_key_hereSDK 会自动读取 CLORE_API_KEY 自动读取——无需修改代码。
选项 2:CLI 配置文件
clore config set api_key YOUR_API_KEY这会将密钥存储在 ~/.clore/config.json.
选项 3:在代码中直接传入
⚠️ 重要: Clore.ai API 使用
authheader 进行身份验证, 不是Authorization: Bearer。SDK 会自动处理。
快速开始
同步客户端(CloreAI)
构造函数
该客户端支持上下文管理器以便自动清理:
wallets()
获取你的钱包余额和充值地址。
返回值: List[Wallet]
name
str
货币名称(例如 "bitcoin", "CLORE-Blockchain", "USD-Blockchain")
balance
float | None
当前余额
deposit
str | None
充值地址
withdrawal_fee
float | None
提现手续费
marketplace()
使用可选的客户端过滤条件搜索 GPU 市场。
参数:
gpu
str | None
None
按 GPU 型号过滤(不区分大小写的子串匹配)
min_gpu_count
int | None
None
GPU 最少数量
min_ram_gb
float | None
None
最小 RAM(GB)
max_price_usd
float | None
None
每小时最高价格(USD)
available_only
bool
True
仅返回可租用的服务器
返回值: List[MarketplaceServer]
每个 MarketplaceServer 都提供了便捷属性以访问最常用字段,并可访问完整的嵌套数据:
id
int
服务器唯一 ID
gpu_model
str | None
主 GPU 描述(例如 "1x NVIDIA GeForce RTX 4090")
gpu_count
int
GPU 数量(来自 gpu_array)
ram_gb
float | None
RAM(GB)
price_usd
float | None
按需价格(USD)
spot_price_usd
float | None
现货价格(USD)
available
bool
服务器是否可用(未出租)
location
str | None
来自网络规格的国家代码
对于高级用例,你可以访问完整的嵌套结构:
specs
ServerSpecs | None
完整硬件规格(specs.gpu, specs.ram, specs.cpu, specs.disk, specs.net,等等)
price
ServerPrice | None
完整价格对象(price.usd.on_demand_usd, price.usd.spot, price.on_demand,等等)
rented
bool | None
服务器当前是否已出租
reliability
float | None
服务器可靠性评分
rating
ServerRating | None
服务器评分(rating.avg, rating.cnt)
注意: 该
marketplace()该端点是公开的——无需 API 密钥即可使用。
my_servers()
列出你提供到 Clore.ai 市场的服务器。
返回值: List[MyServer]
id
int
服务器 ID
name
str | None
服务器名称
gpu_model
str | None
主 GPU 描述
ram_gb
float | None
RAM(GB)
status
str
人类可读状态: "Online", "Offline", "Disconnected",或 "Not Working"
已连接
bool | None
服务器是否已连接
在线
bool | None
服务器是否在线
visibility
str | None
"public" 或 "private"
server_config(server_name)
获取你托管的特定服务器配置。
参数:
server_name
str
服务器名称
返回值: ServerConfig
name
str | None
服务器名称
gpu_model
str | None
主 GPU 描述
mrl
int | None
最大租用时长(小时)
on_demand_price
float | None
首个可用的按需 USD 价格
spot_price
float | None
首个可用的现货 USD 价格
specs
ServerSpecs | None
完整硬件规格
已连接
bool | None
服务器是否已连接
visibility
str | None
"public" 或 "private"
my_orders(include_completed)
获取你当前的订单,可选包含已完成/已过期订单。
参数:
include_completed
bool
False
包含已完成/已过期订单
返回值: List[Order]
id
int
订单唯一 ID
server_id
int | None
服务器 ID
type
str
"on-demand" 或 "spot"
status
str | None
订单状态
image
str | None
Docker 镜像
currency
str | None
支付货币
price
float | None
每日订单价格
pub_cluster
str | None
用于访问的公网主机名/IP
tcp_ports
dict | None
TCP 端口映射
spot_marketplace(server_id)
查看特定服务器的现货市场报价。
参数:
server_id
int
要检查的服务器 ID
返回值: SpotMarket
报价
List[SpotOffer] | None
现货报价列表(order_id, price, server_id)
server
SpotServerInfo | None
服务器信息(最低价格、可见性、在线状态)
currency_rates_in_usd
Dict[str, float] | None
以 USD 表示的货币汇率
create_order(...)
创建新的按需或现货订单。这就是租用 GPU 的方式。
按需订单
现货订单
参数:
server_id
int
是
要租用的服务器 ID
image
str
是
Docker 镜像(例如 "cloreai/ubuntu22.04-cuda12")
type
str
是
"on-demand" 或 "spot"
currency
str
是
支付货币(例如 "bitcoin")
ssh_password
str
否
SSH 密码(字母数字,最多 32 个字符)
ssh_key
str
否
SSH 公钥(最多 3072 个字符)
ports
dict
否
端口映射,例如 {"22": "tcp", "8888": "http"}
env
dict
否
环境变量
jupyter_token
str
否
Jupyter notebook 令牌(最多 32 个字符)
command
str
否
容器启动后运行的 Shell 命令
spot_price
float
仅限现货
现货订单的每日价格
required_price
float
否
锁定特定价格(仅适用于按需)
autossh_entrypoint
str
否
使用 Clore.ai SSH 入口点
gpu_indices
list[int]
否
来自以下的精确 GPU 插槽 partial_gpu_rental.free_indices;长度必须等于 gpu_count;省略则自动选择
返回值: 原始 API 响应({"code": 0} 成功时);可通过以下方式获取已创建的订单: my_orders()
速率限制:
create_order在调用之间有一个特殊的 5 秒冷却时间。SDK 会自动强制执行。
cancel_order(order_id, issue)
取消一个活动订单或现货报价。可选地向服务器报告问题。
参数:
order_id
int
是
要取消的订单 ID
issue
str
否
取消原因 / 问题报告(最多 2048 个字符)
返回值: Dict[str, Any]
set_server_settings(...)
更新你在市场上托管的服务器设置。
参数:
name
str
是
服务器名称
availability
bool
否
服务器是否可被租用
mrl
int
否
最大租用时长(小时)
on_demand
float
否
按需每日价格
spot
float
否
每日最低现货价格
返回值: Dict[str, Any]
set_spot_price(order_id, price)
更新你在现货市场上的报价价格。
参数:
order_id
int
现货订单/报价 ID
price
float
新的每日价格
返回值: Dict[str, Any]
注意: 你每 600 秒只能降低一次现货价格,而且只能按有限的步长调整。如果你超过这些限制,API 会返回
code: 6并附带详细信息。
异步客户端(AsyncCloreAI)
该 AsyncCloreAI 客户端提供与 CloreAI相同的方法,但所有方法都返回协程。当你需要并发 API 调用或在异步应用中工作时使用它。
基本用法
并发操作
使用 asyncio.gather:
可用方法
AsyncCloreAI 支持与 CloreAI:
await wallets()
获取钱包余额
await marketplace(...)
搜索市场
await my_servers()
列出你托管的服务器
await server_config(name)
获取服务器配置
await my_orders(...)
列出你的订单
await spot_marketplace(server_id)
获取现货市场报价
await create_order(...)
创建新订单
await cancel_order(...)
取消订单
await set_server_settings(...)
更新服务器设置
await set_spot_price(...)
更新现货价格
错误处理
SDK 为每个 API 错误代码都提供了结构化异常类。
错误代码
0
—
成功
1
DBError
数据库错误
2
InvalidInputError
无效输入数据
3
AuthError
无效的 API 令牌
4
InvalidEndpointError
无效端点
5
RateLimitError
超出速率限制
6
FieldError
特定字段中的错误(请参见 error 响应中的字段)
所有异常类都继承自 CloreAPIError 并包含:
e.code— 数字错误代码e.response— 完整的 API 响应字典(如可用)
速率限制
SDK 包含内置速率限制器,会自动强制执行 Clore.ai 的限制:
大多数端点
1 次请求/秒
create_order
1 次请求/5 秒
当 API 返回速率限制错误(代码 5)时,SDK 会应用 指数退避 并最多重试 max_retries 次(默认:3)。你无需添加 time.sleep() 在调用之间。
工作原理
在每次请求之前,速率限制器会等待直到最小间隔已过去。
create_order调用会额外强制执行 5 秒冷却时间。在速率限制错误时,SDK 会指数退避:1 秒 → 2 秒 → 4 秒 → ...
在
max_retries失败尝试后,会抛出一个RateLimitError异常。
自定义重试行为
配置
配置文件
CLI 会将配置存储在 ~/.clore/config.json:
解析顺序
SDK 按以下顺序解析 API 密钥:
api_key传递给构造函数的参数CLORE_API_KEY环境变量api_key中的字段~/.clore/config.json
环境变量
CLORE_API_KEY
用于身份验证的 API 密钥
下一步
CLI 参考 — 在终端中使用 Clore.ai
REST API — 用于自定义集成的原始 API 文档
按需与现货 — 了解定价模式
可用的 Docker 镜像 — 用于 GPU 工作负载的预构建镜像
最后更新于
这有帮助吗?