/aichat2/conversations) är den nya generationens konversationsgränssnitt och en omfattande uppgraderad version av AI Chat API. Utifrån v1:s enkla, hanterade flerrundskonversationer utökar det med:
- Multimodala användarinmatningar: Skicka text + bild + filblock direkt via det strukturerade fältet
message, utan att först bifoga dem indirekt medreferences. - Agentbaserade verktygsanrop: Inbyggd uppsättning verktyg för webbsökning, hämtning av webbsidor, filläsning med mera, samt möjlighet att ansluta MCP-servrar som användaren har godkänt (Google Drive, Notion, Slack, GitHub osv.). Modellen kan självständigt anropa verktyg över flera rundor i en enda begäran för att slutföra komplexa uppgifter.
- Strukturerade strömmande händelser: Via
accept: text/event-streamellerapplication/x-ndjsonkan du få token-för-token-händelser somtext_delta,tool_use,tool_result,thinking,citation,card,artifactmed mera, vilket gör det enkelt att rendera dem separat i frontend enligt respektive typ. - Avbrytbar / återupptagbar: När modellen behöver att användaren kompletterar information skickar den en
ask_user_question-händelse och pausar. Vid nästa anrop kan den fortsätta genom att fylla i svaret viatool_results. - Nya CRUD-åtgärder: Slutför
retrieve/retrieve_batch/update/deletegenom fältetactionpå samma endpoint, utan ytterligare API för konversationshantering. - En kontinuerligt uppdaterad modellista: Ansluter som standard till moderna modeller som GPT-5.4, Claude Opus 4.8, Claude Sonnet 4.6, Gemini 3.1 Pro, GLM 5.1, DeepSeek V4, Kimi K3 med flera.
model + question (+ valfritt stateful / id / references / preset) kan du få ett {answer, id} JSON-svar som motsvarar v1. Därför behöver du inte skriva om klienten vid migrering från /aichat/conversations; byt bara sökvägen till /aichat2/conversations.
Om du för närvarande använder /aichat/conversations kommer den gamla endpointen fortfarande att behållas, så du kan migrera i din egen takt.
Ansökningsprocess
För att använda AI Chat v2 API går du först till Ace Data Cloud-konsolen för att hämta din API-token och spara den som reserv.
Om du ännu inte har loggat in eller registrerat dig omdirigeras du automatiskt till inloggningssidan, där du uppmanas att registrera dig och logga in. När det är klart återgår du automatiskt till den aktuella sidan.
En API-token kan anropa alla plattformens tjänster, utan att behöva ansöka separat för varje tjänst. Vid första ansökan får du en gratis kvot för kostnadsfri utvärdering; när kvoten är otillräcklig kan du fylla på det gemensamma saldot i konsolen.
📘 Fullständig dokumentation: AI Chat v2 API →
Grundläggande användning
Den enklaste användningen är exakt densamma som i v1: skickamodel + question och få {answer, id}.
CURL-exempel:
model kan ses direkt i rullgardinsmenyn i Try-panelen till höger. Vanliga kategorier omfattar:
- 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-miniosv. - 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-20251001osv. - Google:
gemini-3.1-pro-preview,gemini-3.1-pro-preview,gemini-3.1-flash-image,gemini-3.1-pro-preview,gemini-2.5-flash-liteosv. - xAI:
grok-4osv. - DeepSeek:
deepseek-v4-pro,deepseek-v4.1-flash,deepseek-v4-flash,deepseek-v3.2-exp,deepseek-r1-0528osv. - Moonshot:
kimi-k3.1-pro,kimi-k3,kimi-k2.6,kimi-k2.5osv. - Zhipu:
glm-5.3,glm-5.2,glm-5.1,glm-5,glm-5-turbo,glm-4.7,glm-4.5vosv.
Flerrundskonversationer
Precis som i v1 skickar dustateful: true för att aktivera sparande av konversationen, och API:t returnerar ett id; i efterföljande begäranden behöver du bara skicka tillbaka id för att fortsätta konversationen, utan att själv behöva underhålla meddelandehistoriken.
Första begäran:
id:
statefulär som standardtrue; att utelämna det är likvärdigt med att uttryckligen skickatrue. Om du inte vill att servern ska spara denna samtalsrunda kan du uttryckligen angestateful: false.
Strömmande svar
v2 stöder två strömmande format, som väljs enligtaccept-huvudet:
NDJSON-exempel
text_delta:
SSE-exempel
EventSource i webbläsaren stöder inte anpassade begärandekroppar, så det rekommenderas att använda fetch + manuell tolkning genom uppdelning på \n\n:
Typer av strömmande händelser
För klienter som endast bryr sig om det slutliga svaret är det likvärdigt att sammanfoga
content från alla text_delta med answer i läget application/json.
Multimodal inmatning
Om användarinmatningen innehåller bilder eller filer ska du skickamessage (en array) i stället för question. Varje arrayelement är ett innehållsblock:
text— Vanlig text, fältettextkrävs.image_url— Bild,image_url.urlkrävs.file_url— Fil (PDF, CSV, TXT osv.),file_url.urlkrävs.
Relation till v1 references
För kompatibilitet med äldre klienter känner v2 fortfarande igen fältet references: ["https://...", ...]:
- URL-suffixet är
jpg / jpeg / png / gif / bmp / webp / svg / heic / heif, konvertera automatiskt till ettimage_url-block; - Andra filändelser konverteras till ett
file_url-block; - Om även
questiontillhandahålls samtidigt, placera det först som etttext-block.
/aichat2/conversations, och den ursprungliga användningen av references fungerar som vanligt.
Om mer detaljerad kontroll behövs (till exempel att placera flera bilder mellan texter, eller om ordningen är viktig) använd direkt message-arrayen.
Verktygsanrop och MCP
Den centrala förbättringen i v2 är att modellen självständigt kan anropa verktyg för att slutföra uppgifter i flera steg, detta är aktiverat som standard, och klienten behöver inte göra någon ytterligare konfiguration i begäran. Vanliga scenarier:- Användaren frågar ”Hjälp mig att söka efter vilka nya utställningar som nyligen finns i Shanghai” → Modellen anropar inbyggd web search → Sammanställer resultaten till ett svar.
- Användaren frågar ”Läs den här PDF:en och skriv sedan en sammanfattning” → Modellen anropar file_read → Skriver en sammanfattning.
- Användaren har redan auktoriserat Google Drive / GitHub / Notion osv. i Connections → Modellen kan anropa motsvarande MCP-verktyg för att läsa och skriva dess data.
tool_use och tool_result, till exempel:
tool_use / tool_result / card / citation; modellens slutliga utdata strömmas fortfarande ut via text_delta.
max_turns kan begränsa hur många omgångar modellen som mest får anropa verktyg själv i denna begäran, med intervallet 1–500 och standardvärdet 500 om det utelämnas. Om du sätter det lågt (till exempel max_turns: 1) kan du tvinga fram ett enskilt svar och förbjuda alla verktygsanrop.
Asynkron körning och obevakad auktorisering
Om ditt anrop kommer från en larm-Webhook, CI/CD, ett övervakningssystem eller någon annan bakgrundsuppgift kan du sättaasync: true så att gränssnittet omedelbart returnerar ett uppgifts-ID och fortsätter körningen i bakgrunden:
action: retrieve + id för att hämta konversationsresultatet; du kan också ange callback_url, och när uppgiften är klar kommer plattformen att POST:a { status, answer, usage, error } till din callback-adress. callback_url måste använda http / https, och du får inte ange localhost eller en privat IP-literal direkt.
Det finns vanligtvis ingen som kan klicka för att bekräfta bakgrundsuppgifter. Om du vill att vissa Skills eller MCP Servers ska utföra åtgärder som att skicka, publicera eller skriva i obevakat läge, ska du uttryckligen skicka en lista över förhandsgodkännanden i request body:
allowed_skills är sluggar för anslutna Skills; värdena i allowed_mcp_servers är sluggar för anslutna MCP Servers. Skills / MCP Servers som inte finns med i förhandsgodkännandet kan i obevakat läge fortfarande endast förhandsgranska, köra dry-run eller vägra att utföra skrivåtgärder.
Om mer detaljerad kontroll behövs kan du också använda det likvärdiga objektet unattended_policy:
--unattended-confirm eller motsvarande säkerhetsmekanism; annars fortsätter den med dry-run och utför inte skrivåtgärder direkt.
Återuppta pausade konversationer
Vissa verktyg gör att modellen ”ställer en motfråga till användaren”. Modellen skickar då enask_user_question-händelse, och konversationen fryses i tillståndet awaiting_user_input:
id för att starta nästa begäran och fyll tillbaka svaret via tool_results:
tool_use_id i request body måste vara exakt samma som tool_id när pausen inträffade; om de inte stämmer överens returneras 400. När tool_results samtidigt finns i begäran ignoreras question / message / references.
Om användaren bestämmer sig för att avstå från denna fråga räcker det att direkt skicka en ny question / message, så markerar plattformen automatiskt det pausade verktygsanropet som ”användaren hoppade över”.
Konversationshantering (CRUD)
v2 erbjuder lättviktig konversationshantering på samma endpoint via fältetaction, utan att behöva skapa ett separat API.
action: retrieve —— hämta en konversation
messages-historik, model, title, tools_used osv.).
action: retrieve_batch —— lista konversationssammanfattningar
{ items: [...], total }. Sammanfattningar innehåller inte messages, vilket är lämpligt för sidofältslistor; om användaren öppnar en viss konversation, använd sedan action: retrieve för att hämta dess fullständiga meddelanden separat.
Valfria filterparametrar: user_id, application_id, model_group, model.
action: update —— ändra titel eller skriv om historik
messages kan också skickas, men servern utför strikt schema-validering (måste vara i den hopfällda formen ToolUseContent); annars returneras 400. Generellt rekommenderas det endast för att ändra title.
action: delete —— ta bort en konversation
{ id, success: true }. Borttagning kan inte återställas, bekräfta innan du anropar.
Smidig migrering från v1
Om du redan använder/aichat/conversations kräver migrering till v2 nästan inga kodändringar:
- Ändra URL:en från
https://api.acedata.cloud/aichat/conversationstillhttps://api.acedata.cloud/aichat2/conversations. - Om du tidigare skickade v1-modellnamn (som
gpt-3.5,gpt-4-browsingosv.), rekommenderas det att uppgradera till moderna modeller vid byte till v2 (somgpt-5.4,claude-opus-4-8,gemini-3.1-pro-previewosv.). - Fälten i NDJSON-strömmen förblir bakåtkompatibla: varje
text_delta-händelse innehåller fortfarandedelta_answerochid, så klienter som tidigare tolkardelta_answerrad för rad behöver inte ändras.
message, SSE, verktygsanrop, action CRUD) och gå vidare i lämplig takt.
Felhantering
Felsvar är enhetligt formaterade som:400 bad_request: obligatoriska fält saknas,tool_use_idmatchar inte,messages-schemat är ogiltigt osv.401 invalid_token:authorization-huvudet är felaktigt.404 not_found: konversationen som motsvararidfinns inte vidaction: retrieve / update / delete.429 too_many_requests: hastighetsbegränsningen har utlösts.500 chat_error: uppströms-LLM rapporterar ett fel ellercompletion_tokens=0för denna omgång (behandlas som ej förbrukat och debiteras inte).
{"type":"error","message":"..."}, varefter strömmen omedelbart avslutas.

