Skip to main content
@acedatacloud/sdk è l’SDK ufficiale TypeScript / JavaScript di Ace Data Cloud, che incapsula tutti i servizi su api.acedata.cloud in metodi tipizzati come client.openai.chat.completions.create(...), client.images.generate(...), client.search.google(...), ecc., con supporto per flussi SSE, retry backoff e eccezioni tipizzate. Può essere utilizzato in Node.js, Deno, Bun e nei moderni browser (con bundler). Indirizzi del codice sorgente e del pacchetto:

Installazione

Se è necessario pagare sulla catena X402 (senza percorso API Token), installare anche:
Output del controllo della versione di un progetto npm pulito:
Spiegazione dei risultati:
  • La versione del pacchetto è 2026.504.2 (CalVer, 2° aggiornamento della 504ª settimana ISO del 2026).
  • AceDataCloud è la classe principale utilizzata per costruire il client, accessibile dall’esportazione predefinita.

Preparare il Token API

Fare riferimento a Panoramica SDK - Richiesta Token API per ottenere il token, quindi in shell export:
Quando si costruisce il client, non passare apiToken, l’SDK leggerà automaticamente la variabile d’ambiente ACEDATACLOUD_API_TOKEN. Se nel tuo ambiente è già presente ACEDATACLOUD_API_KEY (convenzione del repository del progetto), puoi passarlo esplicitamente: new AceDataCloud({ apiToken: process.env.ACEDATACLOUD_API_KEY }).

Esempio 1: chat.completions (non in streaming)

Risultato dell’esecuzione del programma:
Spiegazione dei risultati:
  • id chatcmpl-DldCcLvkTFaioST8e6SjOl0wJScQA è l’ID della risposta compatibile con OpenAI, che può essere cercato nel registro delle attività della console.
  • content ADC_TS_SDK_OK è l’identificativo fisso restituito dal modello, che dimostra che la risposta non è stata alterata dall’SDK.
  • Una chat completion consuma circa 22 token, addebitati secondo il prezzo di gpt-4o-mini.
  • L’SDK dichiara la risposta come Record<string, unknown>, a runtime è un oggetto JSON, l’accesso tramite punti come .id / .choices[0].message.content funziona in .mjs, Node REPL, Bun; in progetti TypeScript rigorosi potrebbe essere necessario (res as any).id o disabilitare noImplicitAny in tsconfig.

Esempio 2: chat.completions (streaming SSE)

Attivando stream: true, create restituisce un iteratore asincrono, ogni frame è un ChatCompletionChunk.
Risultato dell’esecuzione del programma:
Spiegazione dei risultati:
  • Il ritardo del primo frame di 2481 ms è il tempo impiegato dal modello per generare il primo token; i successivi 12 frame sono arrivati tutti entro 135 ms.
  • I 13 frame insieme formano "1 2 3 4 5", ogni token è un frame separato + l’ultimo frame con finish_reason.
  • Lo streaming non consuma più token rispetto al non streaming, ma il ritardo del primo token è significativamente ridotto, adatto per interfacce utente in tempo reale.

Esempio 3: images.generate (NanoBanana)

client.images.generate({ provider: 'nano-banana', ... }) restituisce direttamente in modo sincrono, non è necessario passare il parametro wait — l’API di NanoBanana genera già in modo sincrono.
Risultato dell’esecuzione del programma:
Spiegazione dei risultati:
  • image_url è un indirizzo stabile su CDN, può essere utilizzato direttamente in <img src /> o per il download.
  • La maggior parte del tempo di 16,6 secondi è dedicata all’inferenza del modello, il costo dell’SDK locale è trascurabile.
  • trace_id è l’ID della richiesta assegnato dalla piattaforma, se ci sono problemi, fornire questo ID al supporto clienti può aiutare a localizzare rapidamente il problema.
  • Per i servizi di tipo asincrono (Midjourney, Sora, Veo, ecc.) è necessario il polling di TaskHandle, vedere Polling dei task SDK e risposte in streaming.

Esempio 4: gestione degli errori tipizzati

L’SDK solleverà errori specifici in base allo stato HTTP (come AuthenticationError / BadRequestError / RateLimitError / InternalServerError / APIConnectionError, ecc.), che possono essere gestiti con instanceof per diramazioni precise.
Risultato dell’esecuzione del programma:
Descrizione del risultato:
  • 401 mappato automaticamente come AuthenticationError, il codice aziendale può utilizzare instanceof per ramificare con precisione.
  • code: invalid_token proviene da PlatformGateway, utile per il confronto con i log di backend.
  • Analogamente 429 → RateLimitError, 400 → BadRequestError, 5xx → InternalServerError.

Esempio 5: Routing multi-modello

Lo stesso client può passare liberamente tra più servizi, basta che il nome del modello sia coerente.
Risultato dell’esecuzione del programma:
Descrizione del risultato:
  • Un codice, un token, copre i servizi di modelli OpenAI / Google / DeepSeek / xAI.
  • gemini-2.5-flash questa volta non ha restituito ADC_OK, è una differenza nello stile di output del modello—l’SDK non ha silenziosamente assorbito nulla, ha trasmesso fedelmente le parole originali del modello all’azienda.
  • I prezzi sono calcolati in base al prezzo reale per token, il percorso passa solo una volta attraverso PlatformGateway.

Esempio 6: Ricerca Google

Risultato dell’esecuzione del programma:
Descrizione del risultato:
  • Una richiesta ha restituito 10 risultati organici, il nome del campo è organic (non organic_results).
  • La ricerca è stata effettuata tramite il servizio Serp, con addebito per ogni richiesta.
  • Lo stesso client può sia chattare che cercare, un solo token è sufficiente.

Opzioni di configurazione

Utilizzo nel browser

@acedatacloud/sdk è un pacchetto ESM + ISO (isomorfico), può essere importato direttamente in browser moderni con bundler. Nota: non codificare in modo rigido il token API nel codice front-end. Raccomandato per il front-end:
  1. Utilizzare X402 paymentHandler — il portafoglio utente paga in USDC per richiesta, senza necessità di token.
  2. Oppure utilizzare l’SDK sul proprio server, il browser chiama solo il proprio backend.

Avanzato: Polling delle attività e risposta in streaming

  • Servizi di tipo attività (Midjourney, Sora, Veo, Suno): utilizzare TaskHandle per il polling, dettagli su unità, timeout e ripetizioni possono essere trovati in SDK Polling delle attività e Streaming.
  • Chat in streaming: l’esempio 2 di questa pagina è già stato dimostrato; audio / video in streaming sono supportati allo stesso modo.

Avanzato: Hook di pagamento X402

Se non si desidera richiedere un token API e si desidera pagare per richiesta sulla blockchain, è possibile utilizzare paymentHandler:
createX402PaymentHandler accetta nel lato TypeScript { network, evmProvider, evmAddress, preferScheme? } (EVM chain) o { network: 'solana', solanaWallet } (Solana). Se il server Node non ha window.ethereum, utilizzare viem’s createWalletClient (basato su chiave privata) per incapsulare un provider compatibile con EIP-1193 da passare; dettagli e risultati reali sulla blockchain possono essere trovati in SDK + Hook di pagamento X402.

Come controllare il saldo rimanente

Attraverso Ace Data Cloud Console - Elenco delle applicazioni, è possibile controllare il saldo rimanente attuale dell’account. Attraverso Ace Data Cloud Console - Storico utilizzi è possibile visualizzare tutta la cronologia degli utilizzi e i dettagli delle spese.

Scopri di più