/aichat2/conversations) è la nuova generazione di interfaccia di dialogo, una versione completamente aggiornata dell’AI Chat API. Si basa sulla semplicità e sulla gestione di conversazioni multi-turno della v1, espandendo:
- Input utente multimodale: tramite il campo
messagestrutturato è possibile inviare direttamente testo + immagini + file, senza dover prima allegare indirettamente tramitereferences. - Chiamate a strumenti agent: include un insieme di strumenti per ricerca online, scraping web, lettura di file, e può montare server MCP autorizzati dall’utente (Google Drive, Notion, Slack, GitHub, ecc.), il modello può chiamare autonomamente strumenti in più turni all’interno di una singola richiesta per completare compiti complessi.
- Eventi strutturati in streaming: tramite
accept: text/event-streamoapplication/x-ndjsonè possibile ricevere eventi cometext_delta,tool_use,tool_result,thinking,citation,card,artifact, ecc., facilitando il rendering front-end per tipo corrispondente. - Interrompibile / Recuperabile: il modello emetterà un evento
ask_user_questione si fermerà quando ha bisogno di ulteriori informazioni dall’utente; la prossima chiamata può continuare riempiendo la risposta tramitetool_results. - Nuove azioni CRUD: completare
retrieve/retrieve_batch/update/deletetramite il campoactionsullo stesso endpoint, senza necessità di un’API di gestione delle sessioni aggiuntiva. - Elenco di modelli in continuo aggiornamento: accesso predefinito a GPT-5.4, Claude Opus 4.8, Claude Sonnet 4.6, Gemini 3.1 Pro, GLM 5.1, DeepSeek V4, Kimi K3 e altri modelli contemporanei.
model + question (+ opzionale stateful / id / references / preset) per ottenere una risposta JSON {answer, id} equivalente a v1, quindi non è necessario riscrivere il client per migrare da /aichat/conversations, basta cambiare il percorso in /aichat2/conversations.
Se attualmente stai utilizzando /aichat/conversations, l’interfaccia precedente rimarrà attiva, puoi migrare al tuo ritmo.
Processo di Richiesta
Per utilizzare l’AI Chat v2 API, prima vai al Pannello di Controllo di Ace Data Cloud per ottenere il tuo API Token, da tenere come riserva.
Se non hai ancora effettuato il login o registrato, verrai automaticamente reindirizzato alla pagina di login che ti invita a registrarti e accedere; una volta completato, verrai riportato automaticamente alla pagina corrente.
Un API Token è sufficiente per accedere a tutti i servizi della piattaforma, senza necessità di richiederne uno separato per ogni servizio. La prima richiesta ti darà un credito gratuito, per un’esperienza senza costi; quando il credito è insufficiente, puoi ricaricare il saldo generale nel pannello di controllo.
📘 Documentazione completa: AI Chat v2 API →
Utilizzo di Base
L’uso più semplice è identico a v1: inviamodel + question e ricevi {answer, id}.
Esempio CURL:
model possono essere visualizzati direttamente nel menu a discesa del pannello Try a destra, le categorie comuni includono:
- OpenAI:
gpt-5.4-mini,gpt-5.4-nano,gpt-5.2-pro,gpt-5.1-all,gpt-5-all,gpt-4.1,gpt-4o,gpt-4o-image,o3,o4-mini, ecc. - Anthropic:
claude-opus-4-8,claude-opus-4-7,claude-opus-4-6,claude-opus-4-5-20251101,claude-sonnet-4-6,claude-sonnet-4-5-20250929,claude-haiku-4-5-20251001, ecc. - Google:
gemini-3.1-pro,gemini-3.1-pro-preview,gemini-3.1-flash-image-preview,gemini-3-pro-preview,gemini-2.5-flash-lite, ecc. - xAI:
grok-4, ecc. - DeepSeek:
deepseek-v4-flash,deepseek-v3.2-exp,deepseek-r1-0528, ecc. - Moonshot:
kimi-k3,kimi-k2.6,kimi-k2.5, ecc. - Zhipu:
glm-5.1,glm-5,glm-5-turbo,glm-4.7,glm-4.5v, ecc.
Conversazione Multi-turno
Come per v1, inviastateful: true per attivare il salvataggio della sessione, l’API restituirà un id; le richieste successive devono includere l’id per continuare la conversazione, senza necessità di mantenere la cronologia dei messaggi.
Prima richiesta:
id:
statefulè impostato sutrueper impostazione predefinita; omettere e specificare esplicitamentetrueè equivalente. Se non desideri che il server salvi questo turno di conversazione, puoi impostare esplicitamentestateful: false.
Risposta in streaming
v2 supporta due formati di streaming, a seconda dell’intestazioneaccept:
Esempio NDJSON
text_delta:
Esempio SSE
Il lato browser utilizzaEventSource e non supporta corpi di richiesta personalizzati, si consiglia di utilizzare fetch + analisi manuale per \n\n:
Tipi di eventi in streaming
Per i client che si interessano solo alla risposta finale, concatenare tutti i
content di text_delta è equivalente a answer nel formato application/json.
Input multimodale
Se l’input dell’utente include immagini o file, passaremessage (array) al posto di question. Ogni elemento dell’array è un blocco di contenuto:
text— Testo normale, campotextobbligatorio.image_url— Immagine, campoimage_url.urlobbligatorio.file_url— File (PDF, CSV, TXT, ecc.), campofile_url.urlobbligatorio.
Relazione con references di v1
Per compatibilità con i client più vecchi, v2 riconosce ancora il campo references: ["https://...", ...]:
- L’estensione dell’URL è
jpg / jpeg / png / gif / bmp / webp / svg / heic / heif, si trasforma automaticamente in un bloccoimage_url; - Altre estensioni si trasformano in un blocco
file_url; - Se viene fornita anche una
question, allora la si pone come un bloccotextin precedenza.
/aichat2/conversations, l’uso originale di references continuerà a funzionare.
Per un controllo più preciso (ad esempio, per inserire più immagini tra i testi, o se l’ordine è molto importante) si utilizza direttamente l’array message.
Chiamata degli strumenti e MCP
Il punto centrale del miglioramento di v2 è che il modello può chiamare autonomamente strumenti per completare compiti a più fasi, questo è attivato per impostazione predefinita, non è necessario che il client faccia alcuna configurazione aggiuntiva nella richiesta. Scenari comuni:- L’utente chiede “Aiutami a cercare quali nuove mostre ci sono a Shanghai” → il modello chiama la ricerca web integrata → organizza i risultati in una risposta.
- L’utente chiede “Leggi questo PDF e poi scrivi un riassunto” → il modello chiama file_read → scrive il riassunto.
- L’utente ha già autorizzato Google Drive / GitHub / Notion, ecc. in Connections → il modello può chiamare gli strumenti MCP corrispondenti per leggere e scrivere i suoi dati.
tool_use e tool_result, ad esempio:
tool_use / tool_result / card / citation, l’output finale del modello continuerà a fluire attraverso text_delta.
max_turns può limitare quante volte il modello può chiamare strumenti autonomamente in questa richiesta, il limite predefinito è deciso dalla piattaforma. Impostarlo basso (ad esempio max_turns: 1) può forzare una risposta singola, non consentendo alcuna chiamata agli strumenti.
Esecuzione asincrona e autorizzazione senza supervisione
Se la tua chiamata proviene da un Webhook di allerta, CI/CD, sistema di monitoraggio o altri compiti in background, puoi impostareasync: true per far sì che l’interfaccia restituisca immediatamente l’ID del compito, continuando l’esecuzione in background:
action: retrieve + id per interrogare il risultato della conversazione; puoi anche fornire callback_url, dopo il completamento del compito la piattaforma invierà { status, answer, usage, error } tramite POST al tuo indirizzo di callback. callback_url deve utilizzare http / https, e non può essere direttamente localhost o un indirizzo IP privato.
I compiti in background di solito non possono essere confermati da nessuno. Se desideri che alcune Skill o MCP Server eseguano azioni di invio, pubblicazione, scrittura, ecc. in modalità senza supervisione, specifica esplicitamente l’elenco di autorizzazione nel corpo della richiesta:
allowed_skills sono gli slug delle Skill connesse; i valori in allowed_mcp_servers sono gli slug dei MCP Server connessi. Le Skill / MCP Server non incluse nell’autorizzazione preventiva possono comunque solo visualizzare, eseguire dry-run o rifiutare l’esecuzione delle operazioni di scrittura in modalità senza supervisione.
Se hai bisogno di un controllo più dettagliato, puoi anche utilizzare l’oggetto equivalente unattended_policy:
--unattended-confirm o un meccanismo di sicurezza corrispondente; altrimenti continuerà a eseguire dry-run e non eseguirà direttamente le operazioni di scrittura.
Ripristino di una conversazione sospesa
Alcuni strumenti possono far sì che il modello “riformuli la domanda all’utente”, in questo caso il modello emetterà un eventoask_user_question, la conversazione sarà congelata nello stato awaiting_user_input:
id, riempiendo la risposta tramite tool_results:
tool_use_id deve essere completamente identico a tool_id al momento della sospensione; altrimenti restituirà 400. Quando ci sono tool_results nella richiesta, question / message / references verranno ignorati.
Se l’utente decide di rinunciare a questa domanda, basta inviare una nuova question / message e la piattaforma segnerà automaticamente la chiamata dello strumento sospesa come “saltata dall’utente”.
Gestione delle conversazioni (CRUD)
v2 offre una gestione leggera delle conversazioni attraverso il campoaction sullo stesso endpoint, senza necessità di aprire un’API separata.
action: retrieve —— Recupera una conversazione
messages, model, title, tools_used, ecc.).
action: retrieve_batch —— Elenca i riassunti delle conversazioni
{ items: [...], total }. Il riassunto non include messages, adatto per un elenco laterale; se l’utente apre una conversazione, utilizzare action: retrieve per recuperare i suoi messaggi completi.
Parametri di filtro opzionali: user_id, application_id, model_group, model.
action: update —— Modifica il titolo o riscrivi la cronologia
messages può essere inviato, ma il server eseguirà un rigoroso controllo dello schema (deve essere nella forma ToolUseContent compressa), altrimenti restituirà 400. In generale, si consiglia di utilizzarlo solo per modificare il title.
action: delete —— Elimina una conversazione
{ id, success: true }. Dopo l’eliminazione non può essere ripristinato, si prega di confermare prima di chiamare.
Migrazione fluida da v1
Se stai già utilizzando/aichat/conversations, la migrazione a v2 richiede quasi nessuna modifica al codice:
- Cambia l’URL da
https://api.acedata.cloud/aichat/conversationsahttps://api.acedata.cloud/aichat2/conversations. - Se in precedenza utilizzavi nomi di modelli v1 (come
gpt-3.5,gpt-4-browsing, ecc.), si consiglia di passare a modelli contemporanei (comegpt-5.4,claude-opus-4-8,gemini-3.1-pro, ecc.) durante il passaggio a v2. - I campi del flusso NDJSON rimangono retrocompatibili: ogni evento
text_deltaporta ancoradelta_answereid, quindi i client che analizzanodelta_answerriga per riga non necessitano di modifiche.
message, SSE, chiamate agli strumenti, CRUD action) secondo necessità.
Gestione degli errori
Le risposte di errore sono uniformi:400 bad_request: mancano campi obbligatori,tool_use_idnon corrisponde, schemamessagesnon valido, ecc.401 invalid_token: intestazioneauthorizationnon corretta.404 not_found: duranteaction: retrieve / update / delete, la conversazione corrispondente all’idnon esiste.429 too_many_requests: attivato il limite di velocità.500 chat_error: errore del LLM upstream ocompletion_tokens=0in questo round (trattato come non consumato, non verrà addebitato).
{"type":"error","message":"..."} e subito dopo il flusso terminerà.

