Skip to main content
AI Chat v2 API (/aichat2/conversations) är den nya generationens konversationsgränssnitt och en omfattande uppgraderad version av AI Chat API. Utifrån v1:s enkla, hanterade flerrundskonversationer har det utökats med:
  • Multimodala användarinmatningar: Skicka text + bild + filblock direkt via det strukturerade message-fältet, utan att först indirekt bifoga dem med references.
  • Agentbaserade verktygsanrop: Inbyggd uppsättning verktyg för internetsökning, webbsideshämtning, filläsning med mera, samt möjlighet att ansluta MCP-servrar som användaren har auktoriserat (Google Drive, Notion, Slack, GitHub med flera). Modellen kan självständigt anropa verktyg flera gånger i en och samma begäran för att slutföra komplexa uppgifter.
  • Strukturerade strömmande händelser: Via accept: text/event-stream eller application/x-ndjson kan du få händelser såsom text_delta, tool_use, tool_result, thinking, citation, card och artifact token för token, vilket underlättar separat rendering i frontend enligt respektive typ.
  • Avbrytbar / återupptagbar: När modellen behöver att användaren kompletterar information skickar den händelsen ask_user_question och pausas. Vid nästa anrop kan du fylla i svaret via tool_results för att fortsätta.
  • Nya CRUD-åtgärder: Utför retrieve / retrieve_batch / update / delete via fältet action på samma endpoint, utan behov av ytterligare API:er för konversationshantering.
  • Kontinuerligt uppdaterad modellista: Ansluter som standard till moderna modeller såsom GPT-5.4, Claude Opus 4.8, Claude Sonnet 4.6, Gemini 3.1 Pro, GLM 5.1, DeepSeek V4 och Kimi K3.
Samtidigt är den på begärandekroppsnivå helt bakåtkompatibel med v1: skicka endast model + question (+ valfria stateful / id / references / preset) för att få ett JSON-svar {answer, id} som motsvarar v1. Därför behöver klienten inte skrivas om 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 det gamla gränssnittet fortfarande att vara i drift, och du kan migrera i din egen takt.

Ansökningsprocess

För att använda AI Chat v2 API, gå 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 för att registrera dig och logga in. När detta är klart återvänder du automatiskt till den aktuella sidan. En API Token kan anropa alla plattformens tjänster, utan att du behöver ansöka separat för varje tjänst. Vid första ansökan får du gratis kredit för att kunna prova tjänsten kostnadsfritt; när krediten inte räcker till kan du fylla på det allmänna saldot i konsolen.
📘 Fullständig dokumentation: AI Chat v2 API →

Grundläggande användning

Den enklaste användningen är helt identisk med v1: skicka model + question och få {answer, id}. CURL-exempel:
Returresultat:
Python-exempel:
Tillgängliga värden för 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-mini med flera
  • 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 med flera
  • 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-lite med flera
  • xAI: grok-4 med flera
  • DeepSeek: deepseek-v4-pro, deepseek-v4.1-flash, deepseek-v4-flash, deepseek-v3.2-exp, deepseek-r1-0528 med flera
  • Moonshot: kimi-k3, kimi-k2.6, kimi-k2.5 med flera
  • Zhipu: glm-5.3, glm-5.2, glm-5.1, glm-5, glm-5-turbo, glm-4.7, glm-4.5v med flera
Se Pricing-kortet på tjänstesidan för specifika prisregler.

Flerrundskonversation

Precis som i v1 skickar du stateful: true för att aktivera konversationssparning, och API:t returnerar ett id; i efterföljande begäranden räcker det att skicka tillbaka id för att fortsätta konversationen, utan att själv behöva underhålla historiken för messages. Första begäran:
Retur:
Andra begäran, med samma id:
stateful är som standard true; att utelämna det är likvärdigt med att uttryckligen skicka true. Om du inte vill att servern ska spara denna samtalsrunda kan du uttryckligen ange stateful: false.

Strömmande svar

v2 stöder två strömmande format, som väljs enligt accept-huvudet:

NDJSON-exempel

Varje rad i NDJSON är en strukturerad händelse, där den vanligaste är text_delta:

SSE-exempel

EventSource i webbläsaren stöder inte anpassade förfrågningskroppar; det rekommenderas att använda fetch + manuell segmentanalys med \n\n:

Typer av strömmande händelser

För klienter som endast bryr sig om det slutliga svaret är det likvärdigt med answer i läget application/json att sammanfoga content från alla text_delta.

Multimodal inmatning

Om användarens inmatning innehåller bilder eller filer skickar du message (en array) i stället för question. Varje element i arrayen är ett innehållsblock:
Blocktyper som stöds:
  • text — Vanlig text, fältet text är obligatoriskt.
  • image_url — Bild, image_url.url är obligatoriskt.
  • file_url — Fil (PDF, CSV, TXT osv.), file_url.url är obligatoriskt.

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, konverteras automatiskt till ett image_url-block;
  • Andra filändelser konverteras till ett file_url-block;
  • Om question också tillhandahålls, placeras det som ett text-block före.
Om du därför bara vill migrera från v1 och inte vill ändra request body, räcker det att byta sökvägen till /aichat2/conversations, så fungerar den ursprungliga användningen av references som vanligt. Om du behöver mer detaljerad kontroll (till exempel att placera flera bilder mellan texter, eller om ordningen är viktig) använder du direkt arrayen message.

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 extra 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 webbsökning → Organiserar 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 deras data.
I NDJSON / SSE-strömmen visas verktygsanrop genom två typer av händelser, tool_use och tool_result, till exempel:
Om du inte vill visa detaljer om verktygsanrop i frontend räcker det att ignorera dessa typer av händelser: tool_use / tool_result / card / citation; modellens slutliga utdata strömmas fortfarande ut via text_delta. max_turns kan begränsa hur många rundor modellen högst får anropa verktyg själv i denna begäran; standardgränsen bestäms av plattformen. Att sätta det lågt (till exempel max_turns: 1) kan tvinga fram ett enstaka svar och inte tillåta några verktygsanrop.

Asynkron körning och obevakad auktorisering

Om ditt anrop kommer från en larm-Webhook, CI/CD, ett övervakningssystem eller andra bakgrundsuppgifter kan du ange async: true så att gränssnittet omedelbart returnerar ett uppgifts-ID och fortsätter körningen i bakgrunden:
Exempel på svar:
Därefter kan du använda action: retrieve + id för att fråga efter konversationsresultatet; du kan också tillhandahålla callback_url, och när uppgiften är klar POST:ar plattformen { status, answer, usage, error } till din callback-adress. callback_url måste använda http / https och får inte direkt ange localhost eller en literal privat IP-adress. För bakgrundsuppgifter finns det vanligtvis ingen som kan klicka för att bekräfta. 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:
Värdena i 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 bara förhandsgranska, köra dry-run eller nekas att utföra skrivåtgärder. Om mer detaljerad kontroll behövs kan du även använda det likvärdiga objektet unattended_policy:
Förhandsgodkännandet består av just dessa två listor: en tom lista innebär att inga funktioner godkänns och kräver inget extra växlingsfält. Observera: förhandsgodkännande innebär endast att ”den här begäran tillåter att dessa funktioner hoppar över manuell bekräftelse i obevakat läge”. Det specifika Skill måste fortfarande stödja --unattended-confirm eller motsvarande säkerhetsmekanism; annars fortsätter det med dry-run och utför inte skrivåtgärder direkt.

Återuppta pausade konversationer

Vissa verktyg får modellen att ”ställa en följdfråga till användaren”. Modellen skickar då en ask_user_question-händelse, och konversationen fryses i statusen awaiting_user_input:
Rendera denna händelse som ett kort i frontend så att användaren kan välja ett svar, och initiera sedan nästa begäran med samma id genom att återfylla svaret via tool_results:
tool_use_id i request body måste vara helt identiskt med tool_id vid pausen; annars returneras 400. När tool_results finns i begäran samtidigt ignoreras question / message / references. Om användaren bestämmer sig för att överge denna fråga räcker det att direkt skicka en ny question / message; plattformen markerar automatiskt det pausade verktygsanropet som ”hoppades över av användaren”.

Konversationshantering (CRUD)

v2 erbjuder lättviktig konversationshantering via fältet action på samma endpoint, utan behov av att öppna ett separat API.

action: retrieve —— Hämta en konversation

Returnerar det fullständiga konversationsdokumentet (inklusive messages-historik, model, title, tools_used osv.).

action: retrieve_batch —— Lista konversationssammanfattningar

Returnerar { items: [...], total }. Sammanfattningar innehåller inte messages, vilket passar för sidofältslistor; om användaren öppnar en konversation använder du sedan action: retrieve för att separat hämta dess fullständiga meddelanden. 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 (det måste vara i den hopfällda ToolUseContent-formen), och returnerar 400 om det inte uppfyller kraven. Generellt rekommenderas det endast för att ändra title.

action: delete —— Ta bort en konversation

Returnerar { id, success: true }. Efter borttagning kan den inte återställas, bekräfta innan du anropar.

Migrera smidigt från v1

Om du redan använder /aichat/conversations kräver migreringen till v2 nästan inga kodändringar:
  1. Ändra URL:en från https://api.acedata.cloud/aichat/conversations till https://api.acedata.cloud/aichat2/conversations.
  2. Om du tidigare skickade v1-modellnamn (såsom gpt-3.5, gpt-4-browsing osv.) rekommenderas det att uppgradera till moderna modeller vid byte till v2 (såsom gpt-5.4, claude-opus-4-8, gemini-3.1-pro-preview osv.).
  3. Fälten i NDJSON-strömmen förblir bakåtkompatibla: varje text_delta-händelse innehåller fortfarande delta_answer och id, så klienter som ursprungligen tolkar delta_answer rad för rad behöver inte ändras.
Efter migreringen kan du vid behov aktivera v2:s nya funktioner (multimodala message, SSE, verktygsanrop, action CRUD) och gå vidare i lämplig takt.

Felhantering

Felsvar har ett enhetligt format:
Vanliga fel:
  • 400 bad_request: Saknade obligatoriska fält, tool_use_id matchar inte, messages-schema är ogiltigt osv.
  • 401 invalid_token: authorization-huvudet är felaktigt.
  • 404 not_found: Konversationen som motsvarar id finns inte vid action: retrieve / update / delete.
  • 429 too_many_requests: Hastighetsbegränsningen har utlösts.
  • 500 chat_error: Uppströms-LLM rapporterade ett fel eller completion_tokens=0 för denna omgång (behandlas som ej förbrukat och debiteras inte).
I strömmande svar skickas fel som händelsen {"type":"error","message":"..."}, varefter strömmen omedelbart avslutas.

Slutsats

AI Chat v2 API uppgraderar, samtidigt som det är bakåtkompatibelt med v1, dialogen från ”enkelrunds- / flerrundsfrågor och svar” till ”observerbara Agent-baserade dialoger”: multimodala indata, verktygsanrop, möjlighet att pausa / återuppta, strömmande strukturerade händelser och inbyggd CRUD. Nya integrationer rekommenderas att använda v2 direkt; befintliga v1-integrationer kan migreras smidigt i etapper. Om du har några frågor, kontakta gärna vårt tekniska supportteam när som helst.