/aichat2/conversations) es la nueva generación de la interfaz de conversación, una versión completamente mejorada de AI Chat API. Se basa en la simplicidad de v1 y la gestión de diálogos múltiples, y se ha ampliado con:
- Entrada de usuario multimodal: a través del campo estructurado
message, se puede enviar texto + imágenes + bloques de archivos directamente, sin necesidad de adjuntar indirectamente conreferences. - Llamadas a herramientas como agente: incluye un conjunto de herramientas para búsqueda en línea, raspado web, lectura de archivos, etc., y puede montar servidores MCP autorizados por el usuario (Google Drive, Notion, Slack, GitHub, etc.), permitiendo que el modelo llame a herramientas de forma autónoma en una sola solicitud para completar tareas complejas.
- Eventos estructurados en flujo: a través de
accept: text/event-streamoapplication/x-ndjson, se pueden obtener eventos comotext_delta,tool_use,tool_result,thinking,citation,card,artifact, etc., lo que facilita la renderización en el frontend según el tipo correspondiente. - Interrumpible / recuperable: el modelo emitirá un evento
ask_user_questiony se pausará cuando necesite información adicional del usuario; la próxima llamada puede continuar rellenando la respuesta a través detool_results. - Nuevas acciones CRUD: en el mismo endpoint, se pueden realizar
retrieve/retrieve_batch/update/deletea través del campoaction, sin necesidad de una API de gestión de sesiones adicional. - Lista de modelos en constante actualización: por defecto, se conectan modelos contemporáneos como GPT-5.4, Claude Opus 4.8, Claude Sonnet 4.6, Gemini 3.1 Pro, GLM 5.1, DeepSeek V4, Kimi K3, entre otros.
model + question (+ opcionalmente stateful / id / references / preset) para obtener una respuesta JSON {answer, id} equivalente a v1, por lo que la migración desde /aichat/conversations no requiere reescribir el cliente, solo cambiar la ruta a /aichat2/conversations.
Si actualmente estás utilizando /aichat/conversations, la interfaz antigua seguirá disponible, puedes migrar a tu propio ritmo.
Proceso de Solicitud
Para usar AI Chat v2 API, primero ve a Ace Data Cloud Console para obtener tu API Token, guárdalo como respaldo.
Si aún no has iniciado sesión o registrado, serás redirigido automáticamente a la página de inicio de sesión que te invitará a registrarte e iniciar sesión; una vez completado, volverás automáticamente a la página actual.
Un API Token es suficiente para acceder a todos los servicios de la plataforma, no es necesario solicitar uno por cada servicio. La primera solicitud incluirá un crédito gratuito para que puedas probar; si el crédito es insuficiente, puedes recargar el saldo general en la consola.
📘 Documentación completa: AI Chat v2 API →
Uso Básico
La forma más simple de uso es completamente idéntica a v1: envíamodel + question y obtén {answer, id}.
Ejemplo de CURL:
model se pueden ver directamente en el panel de prueba a la derecha, las categorías comunes incluyen:
- 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, etc. - 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, etc. - 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, etc. - xAI:
grok-4, etc. - DeepSeek:
deepseek-v4-flash,deepseek-v3.2-exp,deepseek-r1-0528, etc. - Moonshot:
kimi-k3,kimi-k2.6,kimi-k2.5, etc. - Zhipu:
glm-5.1,glm-5,glm-5-turbo,glm-4.7,glm-4.5v, etc.
Diálogo Multiturno
Al igual que en v1, envíastateful: true para habilitar el almacenamiento de la sesión, la API devolverá un id; las solicitudes posteriores deben incluir el id para continuar la conversación, sin necesidad de mantener el historial de mensajes.
Primera solicitud:
id:
statefulpor defecto estrue, omitirlo y pasartruees equivalente. Si no deseas que el servidor guarde esta ronda de conversación, puedes establecer explícitamentestateful: false.
Respuesta en flujo
v2 soporta dos formatos de flujo, seleccionados según el encabezadoaccept:
Ejemplo de NDJSON
text_delta:
Ejemplo de SSE
El lado del navegador usaEventSource y no soporta un cuerpo de solicitud personalizado, se recomienda usar fetch + análisis manual por \n\n:
Tipos de eventos en flujo
Para los clientes que solo se preocupan por la respuesta final, concatenar todos los
content de text_delta es equivalente a answer en modo application/json.
Entrada multimodal
Si la entrada del usuario incluye imágenes o archivos, pasamessage (array) en lugar de question. Cada elemento del array es un bloque de contenido:
text— Texto normal, el campotextes obligatorio.image_url— Imagen, el campoimage_url.urles obligatorio.file_url— Archivo (PDF, CSV, TXT, etc.), el campofile_url.urles obligatorio.
Relación con references de v1
Para compatibilidad con clientes antiguos, v2 aún reconoce el campo references: ["https://...", ...]:
- La extensión de la URL es
jpg / jpeg / png / gif / bmp / webp / svg / heic / heif, se convierte automáticamente en un bloqueimage_url; - Otras extensiones se convierten en un bloque
file_url; - Si también se proporciona una
question, se coloca como un bloquetextal principio.
/aichat2/conversations, el uso original de references seguirá funcionando.
Si necesitas un control más fino (por ejemplo, colocar varias imágenes entre textos, o si el orden es muy importante), utiliza directamente el array message.
Llamadas a herramientas y MCP
El punto central de mejora de v2 es que el modelo puede llamar a herramientas de forma autónoma para completar tareas de múltiples pasos, esto está habilitado por defecto, no se requiere que el cliente haga ninguna configuración adicional en la solicitud. Escenarios comunes:- El usuario pregunta “Ayúdame a buscar qué nuevas exposiciones hay en Shanghái” → el modelo llama a la búsqueda web incorporada → organiza los resultados en una respuesta.
- El usuario pregunta “Lee este PDF y luego escribe un resumen” → el modelo llama a file_read → escribe el resumen.
- El usuario ya ha autorizado en Connections Google Drive / GitHub / Notion, etc. → el modelo puede llamar a las herramientas MCP correspondientes para leer y escribir sus datos.
tool_use y tool_result, por ejemplo:
tool_use / tool_result / card / citation, la salida final del modelo seguirá fluyendo a través de text_delta.
max_turns puede limitar cuántas veces el modelo puede llamarse a sí mismo en esta solicitud, el límite predeterminado es decidido por la plataforma. Establecerlo bajo (por ejemplo, max_turns: 1) puede forzar una respuesta única, sin permitir ninguna llamada a herramientas.
Ejecución asíncrona y autorización sin supervisión
Si tu llamada proviene de un Webhook de alerta, CI/CD, sistema de monitoreo u otra tarea en segundo plano, puedes establecerasync: true para que la interfaz devuelva inmediatamente el ID de la tarea, continuando la ejecución en segundo plano:
action: retrieve + id para consultar el resultado de la conversación; también puedes proporcionar callback_url, y una vez que la tarea esté completa, la plataforma enviará { status, answer, usage, error } a tu dirección de callback. callback_url debe usar http / https, y no se puede ingresar directamente localhost o direcciones IP privadas.
Las tareas en segundo plano generalmente no pueden ser confirmadas por nadie. Si deseas que ciertas habilidades o servidores MCP realicen acciones de envío, publicación, escritura, etc., en modo sin supervisión, proporciona explícitamente la lista de preautorización en el cuerpo de la solicitud:
allowed_skills son los slug de las habilidades conectadas; los valores en allowed_mcp_servers son los slug de los servidores MCP conectados. Las habilidades / servidores MCP no incluidos en la preautorización solo podrán previsualizar, realizar pruebas o rechazar operaciones de escritura en modo sin supervisión.
Si necesitas un control más detallado, también puedes usar el objeto equivalente unattended_policy:
--unattended-confirm o mecanismos de seguridad correspondientes; de lo contrario, continuará en modo de prueba y no ejecutará directamente operaciones de escritura.
Recuperar conversaciones pausadas
Algunas herramientas harán que el modelo “pregunte al usuario”, en este momento el modelo emitirá un eventoask_user_question, y la conversación se congelará en estado awaiting_user_input:
id para iniciar la siguiente solicitud, rellenando la respuesta a través de tool_results:
tool_use_id en el cuerpo de la solicitud debe coincidir exactamente con el tool_id en el momento de la pausa; de lo contrario, se devolverá un 400. Cuando hay tool_results en la solicitud, se ignorarán question / message / references.
Si el usuario decide abandonar esta pregunta, simplemente envía una nueva question / message, y la plataforma marcará automáticamente la llamada a la herramienta pausada como “saltada por el usuario”.
Gestión de sesiones (CRUD)
v2 proporciona gestión de sesiones ligera a través del campoaction en el mismo endpoint, sin necesidad de abrir una API adicional.
action: retrieve — Obtener una sesión
messages, model, title, tools_used, etc.).
action: retrieve_batch —— Listar resúmenes de conversaciones
{ items: [...], total }. El resumen no incluye messages, es adecuado para hacer una lista en la barra lateral; si el usuario abre una conversación, se puede usar action: retrieve para obtener sus mensajes completos.
Parámetros de filtrado opcionales: user_id, application_id, model_group, model.
action: update —— Cambiar el título o reescribir el historial
messages, pero el servidor realizará una verificación estricta del esquema (debe ser en la forma de ToolUseContent colapsado), si no cumple, devolverá 400. Generalmente se recomienda usarlo solo para cambiar el title.
action: delete —— Eliminar una conversación
{ id, success: true }. Una vez eliminada, no se puede recuperar, por favor confirma antes de llamar.
Migración suave desde v1
Si ya estás utilizando/aichat/conversations, migrar a v2 casi no requiere cambios en el código:
- Cambia la URL de
https://api.acedata.cloud/aichat/conversationsahttps://api.acedata.cloud/aichat2/conversations. - Si anteriormente usabas nombres de modelos v1 (como
gpt-3.5,gpt-4-browsing, etc.), al cambiar a v2 se recomienda actualizar a modelos contemporáneos (comogpt-5.4,claude-opus-4-8,gemini-3.1-pro, etc.). - Los campos del flujo NDJSON se mantienen compatibles hacia atrás: cada evento
text_deltaaún llevadelta_answereid, por lo que los clientes que originalmente analizabandelta_answerpor línea no necesitan cambios.
message, SSE, llamadas a herramientas, CRUD de action), avanzando a tu propio ritmo.
Manejo de errores
Las respuestas de error son uniformes:400 bad_request: falta un campo obligatorio,tool_use_idno coincide, esquema demessagesno válido, etc.401 invalid_token: el encabezadoauthorizationno es correcto.404 not_found: al usaraction: retrieve / update / delete, la conversación correspondiente alidno existe.429 too_many_requests: se activó el límite de velocidad.500 chat_error: error del LLM de upstream o en esta rondacompletion_tokens=0(se maneja como no consumido, no se cobrará).
{"type":"error","message":"..."} y a continuación el flujo se detendrá.

