Skip to main content
AI Chat v2 API (/aichat2/conversations) — это интерфейс диалогов нового поколения и полностью обновлённая версия AI Chat API. На основе лаконичного v1 с управляемыми многораундовыми диалогами он расширяет возможности:
  • Мультимодальный пользовательский ввод: напрямую передавайте текст + изображения + файловые блоки через структурированное поле message, без необходимости предварительно косвенно прикреплять их с помощью references.
  • Вызовы инструментов в стиле Agent: включает набор инструментов для веб-поиска, извлечения веб-страниц, чтения файлов и т. д., а также позволяет подключать авторизованные пользователем 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-действия: выполняйте retrieve / retrieve_batch / update / delete через поле action на том же endpoint, без необходимости в дополнительном API управления диалогами.
  • Постоянно обновляемый список моделей: по умолчанию подключены современные модели, такие как GPT-5.4, Claude Opus 4.8, Claude Sonnet 4.6, Gemini 3.1 Pro, GLM 5.1, DeepSeek V4, Kimi K3 и другие.
При этом на уровне тела запроса он полностью обратно совместим с v1: достаточно передать только model + question (+ опциональные stateful / id / references / preset), чтобы получить JSON-ответ {answer, id}, эквивалентный v1. Поэтому при миграции с /aichat/conversations не нужно переписывать клиент — достаточно заменить путь на /aichat2/conversations.
Если вы сейчас используете /aichat/conversations, старый интерфейс продолжит обслуживаться, и вы можете мигрировать в удобном для вас темпе.

Процесс получения доступа

Чтобы использовать AI Chat v2 API, сначала получите ваш API Token в консоли Ace Data Cloud и сохраните его для дальнейшего использования. Если вы ещё не вошли в систему или не зарегистрировались, вы будете автоматически перенаправлены на страницу входа, где вам будет предложено зарегистрироваться и войти в систему; после завершения вы автоматически вернётесь на текущую страницу. Один API Token позволяет вызывать все сервисы платформы, не нужно подавать отдельную заявку для каждого сервиса. При первой заявке предоставляется бесплатный лимит, который можно использовать для бесплатного тестирования; при недостатке лимита можно пополнить общий баланс в консоли.
📘 Полная документация: AI Chat v2 API →

Базовое использование

Самый простой способ использования полностью совпадает с v1: передайте model + question и получите {answer, id}. Пример CURL:
Результат ответа:
Пример Python:
Доступные значения model можно напрямую увидеть в выпадающем списке панели Try справа; часто используемые категории включают:
  • 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-preview, gemini-3.1-pro-preview, gemini-3.1-flash-image, gemini-3.1-pro-preview, gemini-2.5-flash-lite и другие
  • xAI: grok-4 и другие
  • DeepSeek: deepseek-v4-pro, deepseek-v4.1-flash, deepseek-v4-flash, deepseek-v3.2-exp, deepseek-r1-0528 и другие
  • Moonshot: kimi-k3, kimi-k2.6, kimi-k2.5 и другие
  • Zhipu: glm-5.3, glm-5.2, glm-5.1, glm-5, glm-5-turbo, glm-4.7, glm-4.5v и другие
Конкретные правила тарификации приведены в карточке Pricing на странице сервиса.

Многораундовый диалог

Как и в v1, передайте stateful: true, чтобы включить сохранение диалога; API вернёт id; в последующих запросах достаточно передавать этот id, чтобы продолжить диалог, без необходимости самостоятельно поддерживать историю messages. Первый запрос:
Ответ:
Второй запрос — передайте тот же id:
Значение stateful по умолчанию — true; его опускание эквивалентно явной передаче true. Если вы не хотите, чтобы сервер сохранял этот раунд диалога, можно явно установить stateful: false.

Потоковый ответ

v2 поддерживает два потоковых формата, выбор осуществляется по заголовку accept:

Пример NDJSON

Каждая строка NDJSON является структурированным событием, наиболее распространённое — text_delta:

Пример SSE

Использование EventSource в браузере не поддерживает пользовательское тело запроса, рекомендуется использовать fetch + ручной разбор по срезам \n\n:

Типы потоковых событий

Для клиентов, которых интересует только окончательный ответ, объединение content всех text_delta эквивалентно answer в режиме application/json.

Мультимодальный ввод

Если ввод пользователя содержит изображения или файлы, передавайте message (массив) вместо question. Каждый элемент массива является блоком содержимого:
Поддерживаемые типы блоков:
  • text — обычный текст, обязательное поле text.
  • image_url — изображение, обязательное поле image_url.url.
  • file_url — файл (PDF, CSV, TXT и т. д.), обязательное поле file_url.url.

Связь с references v1

Для совместимости со старыми клиентами v2 по-прежнему распознаёт поле references: ["https://...", ...]:
  • Если суффикс URL — jpg / jpeg / png / gif / bmp / webp / svg / heic / heif, автоматически преобразовывать в блок image_url;
  • Другие расширения преобразовывать в блок file_url;
  • Если одновременно также предоставлен question, то помещать его впереди как блок text.
Поэтому, если вы хотите только перейти с v1 и не хотите менять тело запроса, достаточно заменить путь на /aichat2/conversations, исходное использование references продолжит работать как обычно. Если нужен более точный контроль (например, размещать несколько изображений между текстами или если порядок очень важен), напрямую используйте массив message.

Вызов инструментов и MCP

Ключевое улучшение v2 состоит в том, что модель может самостоятельно вызывать инструменты для выполнения многошаговых задач, это включено по умолчанию, и клиенту не нужно выполнять какую-либо дополнительную настройку в запросе. Типичные сценарии:
  • Пользователь спрашивает: «Помоги мне поискать, какие новые выставки недавно проходят в Шанхае» → модель вызывает встроенный web search → упорядочивает результаты в ответ.
  • Пользователь спрашивает: «Прочитай этот PDF, а затем напиши краткое содержание» → модель вызывает file_read → пишет краткое содержание.
  • Пользователь уже авторизовал Google Drive / GitHub / Notion и т. д. в Connections → модель может вызывать соответствующие MCP-инструменты для чтения и записи их данных.
В потоках NDJSON / SSE вызовы инструментов представлены двумя типами событий: tool_use и tool_result, например:
Если вы не хотите отображать на фронтенде детали вызовов инструментов, достаточно игнорировать события типов tool_use / tool_result / card / citation, итоговый вывод модели всё равно передаётся через поток text_delta. max_turns может ограничивать, сколько раундов модель может самостоятельно вызывать инструменты в данном запросе, верхний предел по умолчанию определяется платформой. Установив небольшое значение (например, max_turns: 1), можно принудительно ограничить ответ одним разом и не разрешать никакие вызовы инструментов.

Асинхронное выполнение и авторизация без присмотра

Если ваш вызов поступает из Webhook оповещений, CI/CD, системы мониторинга или других фоновых задач, можно установить async: true, чтобы интерфейс немедленно вернул ID задачи, а выполнение продолжилось в фоне:
Пример ответа:
После этого можно использовать action: retrieve + id для запроса результата беседы; также можно предоставить callback_url, и после завершения задачи платформа выполнит POST { status, answer, usage, error } на ваш адрес обратного вызова. callback_url должен использовать http / https и не может напрямую содержать localhost или литеральный адрес частного IP. Для фоновых задач обычно некому нажать подтверждение. Если вы хотите, чтобы определённые Skill или MCP Server выполняли действия отправки, публикации, записи и т. д. в режиме без присмотра, явно передайте в теле запроса список предварительных разрешений:
Значения в allowed_skills — это slug подключённых Skill; значения в allowed_mcp_servers — это slug подключённых MCP Server. Skill / MCP Server, не включённые в предварительную авторизацию, в режиме без присмотра по-прежнему могут только предварительно просматривать, выполнять dry-run или отказываться выполнять операции записи. Если требуется более детальный контроль, также можно использовать эквивалентный объект unattended_policy:
Предварительная авторизация — это сами эти два списка: пустой список означает, что никакие возможности не авторизованы, дополнительные поля-переключатели не требуются. Обратите внимание: предварительная авторизация означает только «в этом запросе этим возможностям разрешено пропустить ручное подтверждение в режиме без присмотра». Конкретный Skill всё равно должен поддерживать --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 предоставляет лёгкое управление диалогами на том же endpoint через поле 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, но сервер выполнит строгую проверку schema (обязательно должна быть свёрнутая форма ToolUseContent); при несоответствии будет возвращён код 400. Обычно рекомендуется использовать это только для изменения title.

action: delete —— удалить одну беседу

Возвращает { id, success: true }. После удаления восстановление невозможно, пожалуйста, подтвердите перед вызовом.

Плавная миграция с v1

Если вы уже используете /aichat/conversations, миграция на v2 практически не требует изменений кода:
  1. Измените URL с https://api.acedata.cloud/aichat/conversations на https://api.acedata.cloud/aichat2/conversations.
  2. Если ранее вы передавали имена моделей v1 (например, gpt-3.5, gpt-4-browsing и т. д.), при переходе на v2 рекомендуется обновиться до современных моделей (например, gpt-5.4, claude-opus-4-8, gemini-3.1-pro-preview и т. д.).
  3. Поля NDJSON-потока сохраняют обратную совместимость: каждое событие text_delta по-прежнему содержит delta_answer и id, поэтому клиентам, которые исходно построчно разбирают delta_answer, не требуется вносить изменения.
После миграции вы можете по мере необходимости включать новые возможности v2 (мультимодальные message, SSE, вызовы инструментов, CRUD через action) и внедрять их в удобном темпе.

Обработка ошибок

Ответ об ошибке имеет единый формат:
Распространённые ошибки:
  • 400 bad_request: отсутствуют обязательные поля, tool_use_id не совпадает, schema 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":"..."}, после чего поток сразу завершается.

Заключение

AI Chat v2 API, сохраняя обратную совместимость с v1, повышает уровень диалогов с «однораундовых / многораундовых вопросов и ответов» до «наблюдаемых Agent-диалогов»: мультимодальный ввод, вызовы инструментов, возможность приостановки / возобновления, потоковые структурированные события, встроенный CRUD. Для новых интеграций рекомендуется сразу использовать v2; существующие интеграции v1 можно плавно переносить поэтапно. Если у вас возникнут какие-либо вопросы, пожалуйста, в любое время свяжитесь с нашей командой технической поддержки.