Python SDK (clore-ai)
यह clore-ai पैकेज आधिकारिक Python SDK है Clore.ai GPU मार्केटप्लेस। यह पूरे REST API को एक साफ, टाइप-सुरक्षित इंटरफेस में समेटता है, जिसमें अंतर्निहित rate limiting, स्वचालित retries, और संरचित error handling शामिल हैं — ताकि आप GPU किराए पर लेने पर ध्यान दें, HTTP plumbing पर नहीं।
स्थापना
pip install clore-aiआवश्यकताएँ: Python 3.9+
पैकेज Python SDK और clore CLI.
प्रमाणीकरण
अपना API key प्राप्त करें 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 प्रमाणीकरण के लिए
authहेडर का उपयोग करता है, नहींAuthorization: Bearer. SDK इसे स्वचालित रूप से संभालता है।
त्वरित शुरुआत
सिंक क्लाइंट (CloreAI)
कंस्ट्रक्टर
क्लाइंट स्वचालित सफाई के लिए संदर्भ प्रबंधकों का समर्थन करता है:
wallets()
अपने वॉलेट बैलेंस और जमा पते प्राप्त करें।
लौटाता है: List[Wallet]
नाम
str
मुद्रा का नाम (उदा. "bitcoin", "CLORE-Blockchain", "USD-Blockchain")
शेष राशि
float | None
वर्तमान शेष राशि
जमा
str | None
जमा पता
withdrawal_fee
float | None
निकासी शुल्क
marketplace()
वैकल्पिक क्लाइंट-पक्ष फ़िल्टरों के साथ GPU मार्केटप्लेस खोजें।
पैरामीटर:
gpu
str | None
None
GPU मॉडल के आधार पर फ़िल्टर करें (केस-इन्सेंसिटिव उपस्ट्रिंग मिलान)
min_gpu_count
int | None
None
GPUs की न्यूनतम संख्या
min_ram_gb
float | None
None
GB में न्यूनतम RAM
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
GPUs की संख्या (from gpu_array)
ram_gb
float | None
GB में RAM
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()endpoint सार्वजनिक है — यह API key के बिना काम करता है।
my_servers()
वे सर्वर सूचीबद्ध करें जिन्हें आप Clore.ai मार्केटप्लेस पर प्रदान कर रहे हैं।
लौटाता है: List[MyServer]
id
int
सर्वर ID
नाम
str | None
सर्वर नाम
gpu_model
str | None
प्राथमिक GPU विवरण
ram_gb
float | None
GB में RAM
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
नाम
str | None
सर्वर नाम
gpu_model
str | None
प्राथमिक GPU विवरण
mrl
int | None
घंटों में अधिकतम किराये की अवधि
on_demand_price
float | None
पहली उपलब्ध ऑन-डिमांड USD कीमत
spot_price
float | None
पहली उपलब्ध स्पॉट USD कीमत
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
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 token (अधिकतम 32 वर्ण)
command
str
नहीं
कंटेनर शुरू होने के बाद चलाने के लिए शेल कमांड
spot_price
float
केवल स्पॉट
स्पॉट ऑर्डरों के लिए प्रति दिन मूल्य
required_price
float
नहीं
एक विशिष्ट मूल्य लॉक करें (केवल ऑन-डिमांड)
autossh_entrypoint
str
नहीं
Clore.ai SSH प्रवेशबिंदु का उपयोग करें
gpu_count
int
नहीं
केवल N GPU उन सर्वरों पर किराये पर लें जिनमें आंशिक किराया (केवल ऑन-डिमांड); पूरे रिग को किराये पर लेने के लिए छोड़ दें
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(...)
मार्केटप्लेस पर आपके होस्ट किए गए सर्वर की सेटिंग्स अपडेट करें।
पैरामीटर:
नाम
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 कॉल्स की आवश्यकता हो या आप किसी async एप्लिकेशन के भीतर काम कर रहे हों, तब इसका उपयोग करें।
बुनियादी उपयोग
समानांतर संचालन
के साथ कई 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 token
4
InvalidEndpointError
अमान्य एंडपॉइंट
5
RateLimitError
रेट लिमिट पार हो गई
6
FieldError
विशिष्ट फ़ील्ड में त्रुटि (देखें error प्रतिक्रिया में field)
सभी अपवाद वर्ग विरासत में लेते हैं CloreAPIError और इनमें शामिल हैं:
e.code— संख्यात्मक त्रुटि कोडe.response— पूर्ण API response dict (जब उपलब्ध हो)
रेट लिमिटिंग
SDK में एक अंतर्निहित रेट लिमिटर शामिल है जो Clore.ai की सीमाओं को स्वचालित रूप से लागू करता है:
अधिकांश एंडपॉइंट
1 अनुरोध/सेकंड
create_order
1 अनुरोध/5 सेकंड
जब API एक रेट-लिमिट त्रुटि (code 5) लौटाती है, तो SDK लागू करता है घातीय बैकऑफ़ और तक पुनः प्रयास करता है max_retries बार (डिफ़ॉल्ट: 3)। आपको जोड़ने की आवश्यकता नहीं है time.sleep() कॉल्स के बीच।
यह कैसे काम करता है
प्रत्येक अनुरोध से पहले, रेट लिमिटर न्यूनतम अंतराल समाप्त होने तक प्रतीक्षा करता है.
create_orderकॉल्स एक अतिरिक्त 5-सेकंड कूलडाउन लागू करती हैं.रेट-लिमिट त्रुटियों पर, SDK घातीय रूप से पीछे हटता है: 1s → 2s → 4s → ...
के बाद
max_retriesविफल प्रयासों के बाद, एकRateLimitErrorफेंका जाता है.
पुनः प्रयास व्यवहार अनुकूलित करें
कॉन्फ़िगरेशन
कॉन्फ़िग फ़ाइल
CLI कॉन्फ़िगरेशन को इसमें संग्रहीत करता है ~/.clore/config.json:
समाधान क्रम
SDK API key को इस क्रम में हल करता है:
api_keyकन्स्ट्रक्टर को पास किया गया आर्गुमेंटCLORE_API_KEYपर्यावरण चरapi_keyमें फ़ील्ड~/.clore/config.json
पर्यावरण चर
CLORE_API_KEY
प्रमाणीकरण के लिए API key
अगले चरण
CLI संदर्भ — अपने टर्मिनल से Clore.ai का उपयोग करें
REST API — कस्टम इंटीग्रेशन के लिए कच्चा API दस्तावेज़
ऑन-डिमांड बनाम स्पॉट — मूल्य निर्धारण मॉडल समझें
उपलब्ध Docker इमेज — GPU वर्कलोड के लिए पूर्व-निर्मित इमेज
अंतिम अपडेट
क्या यह उपयोगी था?