@acedatacloud/sdk är Ace Data Clouds officiella TypeScript / JavaScript SDK, som kapslar in alla tjänster på api.acedata.cloud i typade metoder som client.openai.chat.completions.create(...), client.images.generate(...), client.search.google(...) med inbyggd SSE-strömning, återförsök med backoff och typade undantag.
Det kan användas i Node.js, Deno, Bun och moderna webbläsare (med bundler).
Källkod och paketadress:
- SDK-repo: https://github.com/AceDataCloud/SDK
- npm SDK: https://www.npmjs.com/package/@acedatacloud/sdk
Installation
- Paketversionen är
2026.504.2(CalVer, den 504:e ISO-veckan 2026, den 2:a revisionen). AceDataCloudär huvudklassen för att konstruera klienten, som kan nås från standardexporten.
Förbered API-token
Referera till SDK-översikt - Ansök om API-token för att få token, och exportera den i shell:apiToken, kommer SDK automatiskt att läsa ACEDATACLOUD_API_TOKEN miljövariabeln. Om din miljö redan har ACEDATACLOUD_API_KEY (projektets föreskrift), kan du explicit ange: new AceDataCloud({ apiToken: process.env.ACEDATACLOUD_API_KEY }).
Exempel 1: chat.completions (icke-strömmande)
id chatcmpl-DldCcLvkTFaioST8e6SjOl0wJScQAär OpenAI-kompatibel svar-ID, som kan hittas i konsolens användningshistorik.content ADC_TS_SDK_OKär den verkliga fasta identifieraren som modellen returnerade, vilket bevisar att svaret inte har manipulerats av SDK.- En chat completion förbrukar cirka 22 token, baserat på gpt-4o-mini:s enhetskostnad.
- SDK deklarerar svaret som
Record<string, unknown>, och vid körning är det ett JSON-objekt; punktåtkomst som.id/.choices[0].message.contentfungerar i.mjs, Node REPL, Bun; strikt TypeScript-projekt kan behöva(res as any).ideller stänga avnoImplicitAnyi tsconfig.
Exempel 2: chat.completions (SSE-strömmande)
Genom att öppnastream: true returnerar create en asynkron iterator, där varje ram är en ChatCompletionChunk.
- Första ramens fördröjning på 2481 ms är tiden det tog för modellen att generera den första token; de följande 12 ramarna kom alla inom 135 ms.
- 13 ramar tillsammans ger
"1 2 3 4 5", där varje token är en egen ram + den sista ramen harfinish_reason. - Strömmande är inte mer token-effektivt än icke-strömmande, men fördröjningen för första token är betydligt lägre, vilket är lämpligt för realtidsanvändargränssnitt.
Exempel 3: images.generate (NanoBanana)
client.images.generate({ provider: 'nano-banana', ... }) returnerar direkt synkront, behöver inte ange wait-parametern — NanoBanana API är i sig synkront.
image_urlär en stabil adress på CDN, som kan användas direkt med<img src />eller laddas ner.- Under 16,6 sekunder är det mesta av tiden modellens inferens, och lokala SDK-kostnader kan ignoreras.
trace_idär en begäran-ID som tilldelas av plattformen; om det uppstår problem kan du ge detta ID till kundsupport för snabbast möjliga lokalisering.- För asynkrona tjänster (Midjourney, Sora, Veo etc.) krävs TaskHandle-polling, se SDK-uppgiftspolling och strömmande svar.
Exempel 4: Typad felhantering
SDK kommer att kasta fel som specifika underklasser (AuthenticationError / BadRequestError / RateLimitError / InternalServerError / APIConnectionError etc.) baserat på HTTP-status, vilket gör att du kan använda instanceof för att exakt grena.
- 401 automatiskt mappas till
AuthenticationError, affärskoden kan användainstanceofför exakt grening. code: invalid_tokenkommer från PlatformGateway, vilket underlättar jämförelse med backend-loggar.- På samma sätt 429 →
RateLimitError, 400 →BadRequestError, 5xx →InternalServerError.
Exempel 5: Flera modellrutter
Samma klient kan fritt växla mellan flera tjänster, så länge modellnamnen är desamma.- En kod, en token, täcker OpenAI / Google / DeepSeek / xAI fyra typer av modellservicer.
gemini-2.5-flashreturnerade inteADC_OKdenna gång, vilket beror på modellens egna utdata stilskillnader - SDK har inte tyst tagit bort något, utan har troget vidarebefordrat modellens ord till affären.- Priserna debiteras baserat på varje modells verkliga token-pris, vägen passerar bara en gång genom PlatformGateway.
Exempel 6: Google Sök
- En begäran ger 10 organiska resultat, fältnamnet
organic(inteorganic_results). - Sökningen går genom Serp-tjänsten och debiteras per gång.
- Samma klientinstans kan både chatta och söka, en token räcker.
Konfigurationsalternativ
Användning i webbläsare
@acedatacloud/sdk är ett ESM + ISO (isomorfiskt) paket, som kan importeras direkt i moderna webbläsare med bundler. Observera: hårdkoda inte API-token i frontend-koden. Rekommenderas för frontend:
- Använd X402
paymentHandler- användarplånbok betalar per gång med USDC, ingen token behövs. - Eller använd SDK på din egen server, webbläsaren anropar bara din egen backend.
Avancerat: Uppgiftspolling och strömmande svar
- Tjänster av uppgiftstyp (Midjourney, Sora, Veo, Suno): använd
TaskHandleför polling, enheter, timeout och omförsöksdetaljer se SDK uppgiftspolling och strömmande svar. - Strömmande chat: exempel 2 på denna sida har visat; strömmande ljud / video stöds också.
Avancerat: X402 betalningshook
Om du inte vill ansöka om API-token och vill betala per gång på kedjan, kan du användapaymentHandler:
createX402PaymentHandleraccepterar i TypeScript{ network, evmProvider, evmAddress, preferScheme? }(EVM-kedja) eller{ network: 'solana', solanaWallet }(Solana). Node-servern har intewindow.ethereum, använd dåviem’screateWalletClient(baserat på privat nyckel) för att kapsla in en EIP-1193 kompatibel provider och skicka in den; detaljerad metod och verkliga resultat på kedjan se SDK + X402 betalningshook.

