/aichat2/conversations) to nowa generacja interfejsu rozmowy, będąca kompleksową aktualizacją AI Chat API. Rozszerza on funkcjonalności v1, które były proste i obsługiwały wieloetapowe rozmowy, o:
- Wielomodalne wejście użytkownika: poprzez zorganizowane pole
messagemożna bezpośrednio przesyłać tekst + obraz + pliki, bez potrzeby wcześniejszego używaniareferences. - Zautomatyzowane wywołania narzędzi: wbudowany zestaw narzędzi do przeszukiwania sieci, zbierania danych z stron internetowych, odczytu plików itp., z możliwością podłączenia serwera MCP (Google Drive, Notion, Slack, GitHub itp.) z autoryzacją użytkownika, model może w jednym żądaniu wielokrotnie wywoływać narzędzia do realizacji złożonych zadań.
- Strukturalne zdarzenia strumieniowe: poprzez
accept: text/event-streamlubapplication/x-ndjsonmożna uzyskać zdarzenia takie jaktext_delta,tool_use,tool_result,thinking,citation,card,artifactitp., co ułatwia renderowanie w frontendzie według odpowiednich typów. - Możliwość przerywania / wznawiania: model wyśle zdarzenie
ask_user_questioni wstrzyma się, gdy potrzebuje dodatkowych informacji od użytkownika, a następne wywołanie może kontynuować, uzupełniając odpowiedzi przeztool_results. - Nowe akcje CRUD: na tym samym końcowym punkcie można wykonać
retrieve/retrieve_batch/update/deleteza pomocą polaaction, bez potrzeby dodatkowego API do zarządzania sesjami. - Ciągle aktualizowana lista modeli: domyślnie dostępne modele to GPT-5.4, Claude Opus 4.8, Claude Sonnet 4.6, Gemini 3.1 Pro, GLM 5.1, DeepSeek V4, Kimi K3 i inne współczesne modele.
model + question (+ opcjonalnie stateful / id / references / preset), aby uzyskać równoważną odpowiedź JSON {answer, id} jak w v1, więc migracja z /aichat/conversations nie wymaga przepisania klienta, wystarczy zmienić ścieżkę na /aichat2/conversations.
Jeśli obecnie korzystasz z /aichat/conversations, stary interfejs nadal będzie dostępny, możesz migrować we własnym tempie.
Proces aplikacji
Aby korzystać z AI Chat v2 API, najpierw przejdź do konsoli Ace Data Cloud, aby uzyskać swój token API, który należy zachować na przyszłość.
Jeśli nie jesteś zalogowany lub zarejestrowany, automatycznie zostaniesz przekierowany na stronę logowania, aby zarejestrować się i zalogować, a po zakończeniu zostaniesz automatycznie przekierowany z powrotem na bieżącą stronę.
Jeden token API wystarczy do korzystania ze wszystkich usług platformy, nie ma potrzeby składania osobnych wniosków dla każdej usługi. Pierwsze zgłoszenie otrzyma darmowy limit, aby móc korzystać z usługi; w przypadku niewystarczającego limitu można doładować saldo ogólne w konsoli.
📘 Pełna dokumentacja: AI Chat v2 API →
Podstawowe użycie
Najprostszy sposób użycia jest całkowicie zgodny z v1: przekażmodel + question, aby uzyskać {answer, id}.
Przykład CURL:
model można zobaczyć bezpośrednio w rozwijanym menu w panelu Try po prawej stronie, a popularne kategorie obejmują:
- 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-miniitp. - 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-20251001itp. - Google:
gemini-3.1-pro,gemini-3.1-pro-preview,gemini-3.1-flash-image-preview,gemini-3-pro-preview,gemini-2.5-flash-liteitp. - xAI:
grok-4itp. - DeepSeek:
deepseek-v4-flash,deepseek-v3.2-exp,deepseek-r1-0528itp. - Moonshot:
kimi-k3,kimi-k2.6,kimi-k2.5itp. - Zhipu:
glm-5.1,glm-5,glm-5-turbo,glm-4.7,glm-4.5vitp.
Wieloetapowe rozmowy
Podobnie jak w v1, przekażstateful: true, aby włączyć zapisywanie sesji, API zwróci id; w kolejnych żądaniach wystarczy przekazać id, aby kontynuować rozmowę, bez potrzeby samodzielnego zarządzania historią wiadomości.
Pierwsze żądanie:
id:
statefuldomyślnie jesttrue, pominięcie i jawne przekazanietruejest równoważne. Jeśli nie chcesz, aby serwer zapisywał tę rundę rozmowy, możesz jawnie ustawićstateful: false.
Odpowiedź strumieniowa
v2 obsługuje dwa formaty strumieniowe, wybierając według nagłówkaaccept:
Przykład NDJSON
text_delta:
Przykład SSE
Na stronie przeglądarki użycieEventSource nie obsługuje niestandardowego ciała żądania, zaleca się użycie fetch + ręczne dzielenie na \n\n:
Typy zdarzeń strumieniowych
Dla klientów, którzy interesują się tylko ostateczną odpowiedzią, połączenie wszystkich
text_delta content jest równoważne answer w trybie application/json.
Wprowadzenie multimodalne
Jeśli dane wejściowe użytkownika zawierają obrazy lub pliki, przekażmessage (tablica) zamiast question. Każdy element tablicy to blok treści:
text— Zwykły tekst, wymagane poletext.image_url— Obraz, wymagane poleimage_url.url.file_url— Plik (PDF, CSV, TXT itp.), wymagane polefile_url.url.
Związek z v1 references
Aby zapewnić zgodność ze starszymi klientami, v2 nadal rozpoznaje pole references: ["https://...", ...]:
- Sufiks URL to
jpg / jpeg / png / gif / bmp / webp / svg / heic / heif, automatycznie przekształca w blokimage_url; - Inne rozszerzenia przekształca w blok
file_url; - Jeśli jednocześnie dostarczono
question, należy go umieścić jako bloktextna początku.
/aichat2/conversations, a oryginalne użycie references działa jak zwykle.
Aby uzyskać bardziej precyzyjną kontrolę (na przykład umieścić wiele obrazów między tekstem lub gdy kolejność jest bardzo ważna), użyj bezpośrednio tablicy message.
Wywołanie narzędzi i MCP
Głównym punktem wzmocnienia v2 jest to, że model może samodzielnie wywoływać narzędzia do realizacji wieloetapowych zadań, jest to domyślnie włączone, nie wymaga dodatkowej konfiguracji w żądaniu od klienta. Typowe scenariusze:- Użytkownik pyta „Pomóż mi znaleźć nowe wystawy w Szanghaju” → model wywołuje wbudowane wyszukiwanie w sieci → porządkuje wyniki w odpowiedzi.
- Użytkownik pyta „Przeczytaj ten PDF, a następnie napisz streszczenie” → model wywołuje
file_read→ pisze streszczenie. - Użytkownik autoryzował już Google Drive / GitHub / Notion itp. w Connections → model może wywołać odpowiednie narzędzie MCP do odczytu i zapisu danych.
tool_use i tool_result, na przykład:
tool_use / tool_result / card / citation, a ostateczny wynik modelu nadal będzie przekazywany przez text_delta.
max_turns może ograniczyć, ile razy model może samodzielnie wywołać narzędzia w danym żądaniu, domyślny limit ustala platforma. Ustawienie go na małą wartość (na przykład max_turns: 1) może wymusić pojedynczą odpowiedź, bez dozwolonych wywołań narzędzi.
Asynchroniczne wykonanie i autoryzacja bez nadzoru
Jeśli twoje wywołanie pochodzi z webhooka alarmowego, CI/CD, systemu monitorowania lub innych zadań w tle, możesz ustawićasync: true, aby interfejs natychmiast zwrócił identyfikator zadania, a w tle kontynuował wykonanie:
action: retrieve + id, aby sprawdzić wyniki sesji; możesz również podać callback_url, a po zakończeniu zadania platforma wyśle { status, answer, usage, error } na twój adres zwrotny. callback_url musi używać http / https i nie może być bezpośrednio wpisany jako localhost lub prywatny adres IP.
Zadania w tle zazwyczaj nie mają nikogo, kto mógłby kliknąć potwierdzenie. Jeśli chcesz, aby niektóre umiejętności lub serwery MCP wykonywały działania takie jak wysyłanie, publikowanie, zapisywanie itp. w trybie bez nadzoru, proszę wyraźnie przekazać listę wstępnych autoryzacji w ciele żądania:
allowed_skills to slug połączonych umiejętności; wartości w allowed_mcp_servers to slug połączonych serwerów MCP. Umiejętności / serwery MCP, które nie zostały wymienione w wstępnej autoryzacji, w trybie bez nadzoru mogą jedynie przeglądać, wykonywać dry-run lub odrzucać operacje zapisu.
Jeśli potrzebujesz bardziej szczegółowej kontroli, możesz również użyć równoważnego obiektu unattended_policy:
--unattended-confirm lub odpowiedni mechanizm bezpieczeństwa; w przeciwnym razie będzie kontynuować dry-run i nie wykona operacji zapisu.
Wznowienie wstrzymanej rozmowy
Niektóre narzędzia mogą sprawić, że model „zapyta użytkownika”, w tym momencie model wyśle zdarzenieask_user_question, a rozmowa zostanie wstrzymana w stanie awaiting_user_input:
id, aby wysłać kolejne żądanie, wypełniając odpowiedź przez tool_results:
tool_use_id musi być całkowicie zgodny z tool_id w momencie wstrzymania; niezgodność spowoduje zwrócenie 400. Gdy w żądaniu znajdują się jednocześnie tool_results, question / message / references zostaną zignorowane.
Jeśli użytkownik zdecyduje się zrezygnować z tego pytania, wystarczy przesłać nowe question / message, a platforma automatycznie oznaczy wstrzymane wywołanie narzędzia jako „użytkownik pominął”.
Zarządzanie sesjami (CRUD)
v2 oferuje lekkie zarządzanie sesjami na tym samym punkcie końcowym za pomocą polaaction, bez potrzeby otwierania dodatkowego API.
action: retrieve — pobierz sesję
messages, model, title, tools_used itp.).
action: retrieve_batch —— Wypisz podsumowanie rozmów
{ items: [...], total }. Podsumowanie nie zawiera messages, nadaje się do listy w bocznym panelu; jeśli użytkownik otworzy daną rozmowę, użyj action: retrieve, aby pobrać jej pełne wiadomości.
Opcjonalne parametry filtrujące: user_id, application_id, model_group, model.
action: update —— Zmień tytuł lub przepisz historię
messages również można przesłać, ale serwer przeprowadzi rygorystyczną walidację schematu (musi być w formie złożonej ToolUseContent), w przeciwnym razie zwróci 400. Zwykle zaleca się używać tylko do zmiany title.
action: delete —— Usuń rozmowę
{ id, success: true }. Po usunięciu nie można przywrócić, proszę potwierdzić przed wywołaniem.
Płynna migracja z v1
Jeśli już korzystasz z/aichat/conversations, migracja do v2 prawie nie wymaga zmiany kodu:
- Zmień URL z
https://api.acedata.cloud/aichat/conversationsnahttps://api.acedata.cloud/aichat2/conversations. - Jeśli wcześniej przesyłałeś nazwę modelu v1 (np.
gpt-3.5,gpt-4-browsingitp.), przy przejściu na v2 zaleca się aktualizację do współczesnych modeli (np.gpt-5.4,claude-opus-4-8,gemini-3.1-proitp.). - Pola strumienia NDJSON pozostają wstecznie kompatybilne: każde zdarzenie
text_deltanadal zawieradelta_answeriid, więc klienci, którzy wcześniej analizowalidelta_answerw wierszach, nie muszą wprowadzać zmian.
message, SSE, wywołania narzędzi, CRUD action), w miarę potrzeb.
Obsługa błędów
Błąd odpowiedzi jest jednolity:400 bad_request: brak wymaganych pól,tool_use_idniezgodne, nieprawidłowy schematmessagesitp.401 invalid_token: nagłówekauthorizationjest niepoprawny.404 not_found: podczasaction: retrieve / update / deleterozmowa o podanymidnie istnieje.429 too_many_requests: przekroczono limit szybkości.500 chat_error: błąd LLM w górę lub w tej rundziecompletion_tokens=0(traktowane jako niezużyte, nie będzie opłat).
{"type":"error","message":"..."} zdarzenie, a następnie strumień zostanie zakończony.

