Перейти к основному содержанию
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-действия: используйте поле action на том же endpoint для выполнения 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 и другие.
При этом на уровне тела запроса он полностью обратно совместим с 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.1-pro, 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 может ограничивать максимальное число раундов самостоятельного вызова инструментов моделью в этом запросе, диапазон — 1–500, по умолчанию при пропуске — 500. Установка малого значения (например, max_turns: 1) может принудительно задать однократный ответ и запретить любые вызовы инструментов.

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

Если ваш вызов поступает из Webhook предупреждений, CI/CD, системы мониторинга или других фоновых задач, можно установить async: true, чтобы интерфейс немедленно вернул ID задачи, а выполнение продолжилось в фоне:
Пример ответа:
После этого можно использовать action: retrieve + id для запроса результата беседы; также можно указать callback_url, и после завершения задачи платформа отправит { status, answer, usage, error } методом POST на ваш адрес обратного вызова. 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 предоставляет облегчённое управление беседами через поле action в том же endpoint, без необходимости открывать отдельный 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 могут плавно мигрировать поэтапно. Если у вас возникнут какие-либо вопросы, пожалуйста, свяжитесь с нашей командой технической поддержки в любое время.