/aichat2/conversations) є новим поколінням діалогового інтерфейсу, що є повним оновленням AI Chat API. Він розширює v1, що є простим і підтримує багатократні діалоги, наступними можливостями:
- Багатомодальний ввід користувача: через структуроване поле
messageможна безпосередньо передавати текст + зображення + файли, без необхідності спочатку використовуватиreferencesдля непрямого додавання. - Інструменти для виклику агентів: вбудований набір інструментів для пошуку в Інтернеті, веб-скрапінгу, читання файлів тощо, а також можливість підключення до серверів MCP, авторизованих користувачем (Google Drive, Notion, Slack, GitHub тощо), модель може самостійно викликати інструменти для виконання складних завдань в одному запиті.
- Структуровані потокові події: через
accept: text/event-streamабоapplication/x-ndjsonможна отримати подіїtext_delta,tool_use,tool_result,thinking,citation,card,artifactтощо, що полегшує рендеринг на фронтенді за відповідними типами. - Можливість переривання / відновлення: модель надсилає подію
ask_user_questionі призупиняється, коли їй потрібна додаткова інформація від користувача, наступний виклик може продовжити черезtool_results, заповнивши відповідь. - Нові CRUD дії: на одному й тому ж кінцевому пункті через поле
actionможна виконатиretrieve/retrieve_batch/update/delete, без необхідності додаткового API для управління сесіями. - Постійно оновлюваний список моделей: за замовчуванням підключено GPT-5.4, Claude Opus 4.8, Claude Sonnet 4.6, Gemini 3.1 Pro, GLM 5.1, DeepSeek V4, Kimi K3 та інші сучасні моделі.
model + question (+ необов’язкові stateful / id / references / preset), щоб отримати еквівалентну {answer, id} JSON відповідь, тому для міграції з /aichat/conversations не потрібно переписувати клієнт, достатньо змінити шлях на /aichat2/conversations.
Якщо ви наразі використовуєте /aichat/conversations, старий інтерфейс залишиться доступним, ви можете мігрувати у своєму темпі.
Процес подачі заявки
Щоб використовувати AI Chat v2 API, спочатку перейдіть до консолі Ace Data Cloud, щоб отримати ваш API Token, зберігайте його на всяк випадок.
Якщо ви ще не увійшли в систему або не зареєстровані, вас автоматично перенаправлять на сторінку входу, щоб запросити реєстрацію та вхід, після чого ви будете автоматично повернені на поточну сторінку.
Один API Token дозволяє викликати всі послуги платформи, не потрібно окремо подавати заявку на кожну послугу. Перший запит на отримання токена надає безкоштовний ліміт, щоб ви могли безкоштовно протестувати; при недостатньому ліміті ви можете поповнити загальний баланс в консолі.
📘 Повна документація: AI Chat v2 API →
Основне використання
Найпростіший спосіб використання повністю ідентичний v1: передайтеmodel + question, отримайте {answer, id}.
CURL приклад:
model можна безпосередньо побачити у випадаючому меню панелі спроби праворуч, поширені категорії включають:
- 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тощо - 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тощо - 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тощо - xAI:
grok-4тощо - DeepSeek:
deepseek-v4-flash,deepseek-v3.2-exp,deepseek-r1-0528тощо - Moonshot:
kimi-k3,kimi-k2.6,kimi-k2.5тощо - Zhipu:
glm-5.1,glm-5,glm-5-turbo,glm-4.7,glm-4.5vтощо
Багатократні діалоги
Як і в v1, передайтеstateful: true, щоб увімкнути збереження сесії, API поверне id; подальші запити просто передайте id, щоб продовжити діалог, без необхідності самостійно підтримувати історію повідомлень.
Перше запит:
id:
statefulза замовчуванням єtrue, пропуск і явна передачаtrueє еквівалентними. Якщо ви не хочете, щоб сервер зберігав цей раунд розмови, ви можете явно встановитиstateful: false.
Потокова відповідь
v2 підтримує два формати потокового обміну, вибираючи за заголовкомaccept:
Приклад NDJSON
text_delta:
Приклад SSE
На стороні браузера використанняEventSource не підтримує налаштування тіла запиту, рекомендується використовувати fetch + ручне розділення за \n\n:
Типи потокових подій
Для клієнтів, які цікавляться лише остаточною відповіддю, об’єднання всіх
text_delta content буде еквівалентним answer в режимі application/json.
Багатомодальний вхід
Якщо вхід користувача містить зображення або файл, передайтеmessage (масив) замість question. Кожен елемент масиву є блоком вмісту:
text— звичайний текст, обов’язкове полеtext.image_url— зображення, обов’язкове полеimage_url.url.file_url— файл (PDF, CSV, TXT тощо), обов’язкове полеfile_url.url.
Взаємозв’язок з v1 references
Для сумісності зі старими клієнтами, v2 все ще розпізнає поле references: ["https://...", ...]:
- URL закінчення
jpg / jpeg / png / gif / bmp / webp / svg / heic / heif, автоматично перетворюється на блокimage_url; - Інші розширення перетворюються на блок
file_url; - Якщо також надано
question, то його слід розглядати як блокtextпопередньо.
/aichat2/conversations, оригінальне використання references працює як зазвичай.
Для більш детального контролю (наприклад, щоб розмістити кілька зображень між текстами або порядок був важливим) використовуйте масив message.
Виклик інструментів та MCP
Основна перевага v2 полягає в тому, що модель може самостійно викликати інструменти для виконання багатоступеневих завдань, це за замовчуванням увімкнено, клієнту не потрібно робити жодних додаткових налаштувань у запиті. Звичайні сценарії:- Користувач запитує «Допоможи мені знайти нові виставки в Шанхаї» → модель викликає вбудований веб-пошук → організовує результати у відповідь.
- Користувач запитує «Прочитай цей PDF, а потім напиши резюме» → модель викликає file_read → пише резюме.
- Користувач вже авторизував Google Drive / GitHub / Notion тощо в Connections → модель може викликати відповідні інструменти MCP для читання та запису його даних.
tool_use та tool_result, наприклад:
tool_use / tool_result / card / citation, модель виведе остаточний результат через text_delta.
max_turns може обмежити, скільки разів модель може самостійно викликати інструменти в цьому запиті, максимальний ліміт визначається платформою. Зменшивши його (наприклад, max_turns: 1), ви можете примусити одноразову відповідь, не дозволяючи жодних викликів інструментів.
Асинхронне виконання та безлюдне авторизація
Якщо ваш виклик походить з вебхука сповіщень, CI/CD, систем моніторингу або інших фонових завдань, ви можете встановитиasync: true, щоб інтерфейс негайно повернув ID завдання, а фонова частина продовжила виконання:
action: retrieve + id для запиту результату сесії; також можна надати callback_url, після завершення завдання платформа надішле { status, answer, usage, error } на вашу адресу зворотного виклику. callback_url повинен використовувати http / https, і не може бути безпосередньо вказаним як localhost або приватна IP адреса.
Фонові завдання зазвичай не мають можливості натискати підтвердження. Якщо ви хочете, щоб деякі навички або MCP сервери виконували дії надсилання, публікації, запису тощо в безлюдному режимі, будь ласка, явно передайте список попередньої авторизації в тілі запиту:
allowed_skills - це slug підключеної навички; значення в allowed_mcp_servers - це slug підключеного MCP сервера. Навички / MCP сервери, які не включені до попередньої авторизації, в безлюдному режимі можуть лише переглядати, виконувати dry-run або відмовлятися від виконання запису.
Якщо потрібен більш детальний контроль, також можна використовувати еквівалентний об’єкт unattended_policy:
--unattended-confirm або відповідний механізм безпеки; в іншому випадку вона продовжить dry-run, не виконуючи безпосередньо операцію запису.
Відновлення призупиненої розмови
Деякі інструменти можуть змусити модель «запитати користувача», у цей момент модель видасть подіюask_user_question, розмова буде призупинена в стані awaiting_user_input:
id, щоб надіслати наступний запит, заповнивши відповідь через tool_results:
tool_use_id повинен повністю збігатися з tool_id під час призупинення; невідповідність призведе до помилки 400. Коли в запиті одночасно присутні tool_results, question / message / references будуть проігноровані.
Якщо користувач вирішить відмовитися від цього питання, просто передайте нове question / message, платформа автоматично позначить призупинений виклик інструменту як «пропущений користувачем».
Управління сесією (CRUD)
v2 на тому ж кінцевому пункті пропонує легке управління сесією через полеaction, без необхідності відкривати додатковий API.
action: retrieve — отримати сесію
messages, model, title, tools_used тощо).
action: retrieve_batch —— Перелік підсумків розмов
{ items: [...], total }. Підсумок не містить messages, підходить для списку в бічній панелі; якщо користувач відкриє певну розмову, то знову використовуйте action: retrieve, щоб окремо отримати її повні повідомлення.
Додаткові параметри фільтрації: user_id, application_id, model_group, model.
action: update —— Змінити заголовок або переписати історію
messages також можна передати, але сервер проведе сувору перевірку схеми (повинен бути у формі згорнутого ToolUseContent), невідповідність призведе до повернення 400. Зазвичай рекомендується використовувати лише для зміни title.
action: delete —— Видалити розмову
{ id, success: true }. Після видалення відновити не можна, будь ласка, підтвердіть перед викликом.
Плавний перехід з v1
Якщо ви вже використовуєте/aichat/conversations, перехід на v2 майже не потребує змін у коді:
- Змініть URL з
https://api.acedata.cloud/aichat/conversationsнаhttps://api.acedata.cloud/aichat2/conversations. - Якщо ви раніше передавали назви моделей v1 (наприклад,
gpt-3.5,gpt-4-browsingтощо), при переході на v2 рекомендується оновити до сучасних моделей (наприклад,gpt-5.4,claude-opus-4-8,gemini-3.1-proтощо). - Поля потоку NDJSON залишаються зворотно сумісними: кожна подія
text_deltaвсе ще міститьdelta_answerтаid, тому клієнти, які раніше аналізувалиdelta_answerпо рядках, не потребують змін.
message, SSE, виклики інструментів, CRUD action), просуваючись у своєму темпі.
Обробка помилок
Помилки відповіді єдині:400 bad_request: відсутні обов’язкові поля,tool_use_idне відповідає, схемаmessagesнедійсна тощо.401 invalid_token: заголовокauthorizationнеправильний.404 not_found: під часaction: retrieve / update / deleteрозмова з відповіднимidне існує.429 too_many_requests: спрацьовує обмеження швидкості.500 chat_error: помилка на стороні LLM або в цьому раундіcompletion_tokens=0(обробляється як не спожите, не буде стягнено плату).
{"type":"error","message":"..."} подія, після чого потік закінчується.

