Python SDK(clore-ai)

clore-ai 软件包是官方的 Python SDK,用于 Clore.aiarrow-up-right GPU 市场。它将完整的 REST API 封装为一个简洁、类型安全的接口,内置速率限制、自动重试和结构化错误处理 —— 让你可以专注于租用 GPU,而不是处理 HTTP 细节。


安装

pip install clore-ai

要求: Python 3.9+

该软件包同时安装 Python SDK 和 clore 命令行工具(CLI).


认证

Clore.ai 仪表板arrow-up-rightAPI 部分获取你的 API 密钥。

选项 1:环境变量(推荐)

export CLORE_API_KEY=your_api_key_here

SDK 会自动读取 CLORE_API_KEY —— 无需更改代码。

选项 2:CLI 配置文件

clore config set api_key YOUR_API_KEY

这会将密钥存储在 ~/.clore/config.json.

选项 3:在代码中直接传入

⚠️ 重要: Clore.ai API 使用 auth 头进行认证, 而不是 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

最小内存(GB)

max_price_usd

float | None

None

每小时最高价格(美元)

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

内存(GB)

price_usd

float | None

按需价格(美元)

spot_price_usd

float | None

竞价价格(美元)

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

内存(GB)

status

str

可读的状态: "Online", "Offline", "Disconnected",或 "Not Working"

connected

bool | None

服务器是否已连接

online

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

可用的首个按需美元价格

spot_price

float | None

可用的首个竞价美元价格

specs

ServerSpecs | None

完整硬件规格

connected

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

字段
类型
描述

offers

List[SpotOffer] | None

竞价报价列表(order_id, price, server_id)

server

SpotServerInfo | None

服务器信息(最低定价、可见性、在线状态)

currency_rates_in_usd

Dict[str, float] | None

以美元计的货币汇率


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 笔记本令牌(最多 32 个字符)

command

str

容器启动后要运行的 shell 命令

spot_price

float

仅限竞价

竞价订单的每日价格

required_price

float

锁定特定价格(仅限按需)

autossh_entrypoint

str

使用 Clore.ai SSH 入口点

返回: 订单

速率限制: 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(...)


更新竞价价格

错误处理

错误代码

代码
异常
描述

0

成功

1

DBError

数据库错误

2

InvalidInputError

无效的输入数据

3

AuthError

无效的 API 令牌

4

InvalidEndpointError

无效的端点

5

RateLimitError

超出速率限制

6

FieldError

特定字段的错误(参见 error 响应中的 field)

所有异常类都继承自 CloreAPIError 并包含:

  • e.code — 数字错误代码

  • e.response — 完整的 API 响应字典(如可用)


速率限制

SDK 包含内置速率限制器,会自动强制执行 Clore.ai 的限制:

端点
限制

大多数端点

每秒 1 次请求

create_order

每 5 秒 1 次请求

当 API 返回速率限制错误(代码 5)时,SDK 会应用 指数退避 并重试最多 max_retries 次(默认:3)。您无需在调用之间添加 time.sleep()

工作原理

  1. 在每次请求之前,速率限制器会等待直到最小间隔过去。

  2. create_order 调用会强制额外的 5 秒冷却期。

  3. 在速率限制错误时,SDK 会以指数方式退避:1s → 2s → 4s → ...

  4. max_retries 次失败尝试后,会引发 RateLimitError

自定义重试行为


配置

配置文件

CLI 将配置存储在 ~/.clore/config.json:

解析顺序

SDK 按以下顺序解析 API 密钥:

  1. api_key 传递给构造函数的参数

  2. CLORE_API_KEY 环境变量

  3. api_key 字段位于 ~/.clore/config.json

环境变量

变量
描述

CLORE_API_KEY

用于身份验证的 API 密钥


下一步

最后更新于

这有帮助吗?