/aichat2/conversations) é a nova geração da interface de diálogo, uma versão totalmente aprimorada da AI Chat API. Ela expande sobre a simplicidade e a hospedagem de diálogos múltiplos da v1:
- Entrada de usuário multimodal: através do campo estruturado
message, é possível enviar texto + imagem + bloco de arquivo diretamente, sem a necessidade de anexar indiretamente comreferences. - Chamadas de ferramentas como Agente: inclui um conjunto de ferramentas para busca na web, captura de páginas, leitura de arquivos, etc., e pode montar servidores MCP autorizados pelo usuário (Google Drive, Notion, Slack, GitHub, etc.), permitindo que o modelo chame ferramentas de forma autônoma em uma única solicitação para completar tarefas complexas.
- Eventos estruturados em fluxo: através de
accept: text/event-streamouapplication/x-ndjson, é possível obter eventos comotext_delta,tool_use,tool_result,thinking,citation,card,artifact, etc., facilitando a renderização no front-end por tipo correspondente. - Interrupção / Recuperação: o modelo emitirá um evento
ask_user_questione pausará quando precisar de informações adicionais do usuário; na próxima chamada, basta preencher a resposta comtool_resultspara continuar. - Novas ações CRUD: no mesmo endpoint, é possível realizar
retrieve/retrieve_batch/update/deleteatravés do campoaction, sem a necessidade de uma API de gerenciamento de sessão adicional. - Lista de modelos em constante atualização: por padrão, conecta-se a 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 outros.
model + question (+ opcionalmente stateful / id / references / preset) para obter uma resposta JSON {answer, id} equivalente à v1, portanto, a migração de /aichat/conversations não requer reescrita do cliente, apenas troque o caminho para /aichat2/conversations.
Se você está atualmente usando /aichat/conversations, a interface antiga ainda estará disponível, permitindo que você migre no seu próprio ritmo.
Processo de Solicitação
Para usar a AI Chat v2 API, primeiro acesse o Painel de Controle da Ace Data Cloud para obter seu Token de API, que deve ser guardado.
Se você ainda não estiver logado ou registrado, será redirecionado automaticamente para a página de login, onde poderá se registrar e fazer login; após isso, você será retornado à página atual.
Um Token de API é suficiente para acessar todos os serviços da plataforma, não sendo necessário solicitar um para cada serviço. A primeira solicitação oferece um crédito gratuito para que você possa experimentar; quando o crédito acabar, você pode recarregar o saldo geral no painel de controle.
📘 Documentação completa: AI Chat v2 API →
Uso Básico
A forma mais simples de uso é idêntica à v1: enviemodel + question e receba {answer, id}.
Exemplo de CURL:
model podem ser vistos diretamente no painel de teste à direita, com categorias comuns incluindo:
- 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 Múltiplo
Assim como na v1, enviestateful: true para ativar a preservação da sessão, e a API retornará um id; nas solicitações subsequentes, basta incluir o id para continuar a conversa, sem a necessidade de manter o histórico de mensagens.
Primeira solicitação:
id:
statefulétruepor padrão, omitir e passartrueexplicitamente é equivalente. Se você não deseja que o servidor salve esta rodada de conversa, pode definir explicitamentestateful: false.
Resposta em fluxo
v2 suporta dois formatos de fluxo, escolhidos de acordo com o cabeçalhoaccept:
Exemplo NDJSON
text_delta:
Exemplo SSE
No lado do navegador, oEventSource não suporta corpo de requisição personalizado, recomenda-se usar fetch + divisão manual por \n\n:
Tipos de eventos em fluxo
Para clientes que se preocupam apenas com a resposta final, concatenar todos os
content de text_delta é equivalente ao answer no modo application/json.
Entrada multimodal
Se a entrada do usuário contiver imagens ou arquivos, passemessage (array) em vez de question. Cada elemento do array é um bloco de conteúdo:
text— Texto comum, campotexté obrigatório.image_url— Imagem, campoimage_url.urlé obrigatório.file_url— Arquivo (PDF, CSV, TXT, etc.), campofile_url.urlé obrigatório.
Relação com references da v1
Para compatibilidade com clientes antigos, a v2 ainda reconhece o campo references: ["https://...", ...]:
- O sufixo da URL é
jpg / jpeg / png / gif / bmp / webp / svg / heic / heif, automaticamente se transforma em um blocoimage_url; - Outros tipos de extensão se transformam em um bloco
file_url; - Se também for fornecida uma
question, ela deve ser colocada como um blocotextna frente.
/aichat2/conversations, o uso original de references continuará funcionando.
Para um controle mais refinado (por exemplo, colocar várias imagens entre textos, ou se a ordem for muito importante), use diretamente o array message.
Chamada de ferramentas e MCP
O ponto central da v2 é que o modelo pode chamar ferramentas de forma autônoma para completar tarefas em várias etapas, isso está ativado por padrão, não sendo necessário que o cliente faça nenhuma configuração adicional na solicitação. Cenários comuns:- O usuário pergunta “Ajude-me a procurar quais novas exposições estão acontecendo em Xangai” → o modelo chama a pesquisa web embutida → organiza os resultados em uma resposta.
- O usuário pergunta “Leia este PDF e escreva um resumo” → o modelo chama
file_read→ escreve o resumo. - O usuário já autorizou Google Drive / GitHub / Notion, etc., em Connections → o modelo pode chamar as ferramentas MCP correspondentes para ler e escrever seus dados.
tool_use e tool_result, por exemplo:
tool_use / tool_result / card / citation, a saída final do modelo ainda será apresentada através de text_delta.
max_turns pode limitar quantas vezes o modelo pode chamar ferramentas em uma única solicitação, o limite padrão é determinado pela plataforma. Defini-lo baixo (por exemplo, max_turns: 1) pode forçar uma única resposta, não permitindo nenhuma chamada de ferramenta.
Execução assíncrona e autorização sem supervisão
Se sua chamada vem de um Webhook de alerta, CI/CD, sistema de monitoramento ou outras tarefas em segundo plano, você pode definirasync: true para que a interface retorne imediatamente o ID da tarefa, enquanto o backend continua a execução:
action: retrieve + id para consultar o resultado da conversa; também pode fornecer callback_url, e após a conclusão da tarefa, a plataforma enviará { status, answer, usage, error } via POST para o seu endereço de callback. callback_url deve usar http / https, e não pode ser preenchido diretamente com localhost ou endereços IP privados.
Tarefas em segundo plano geralmente não têm ninguém para clicar em confirmar. Se você deseja que algumas Skills ou MCP Server executem ações de envio, publicação, escrita, etc., em modo sem supervisão, forneça explicitamente a lista de pré-autorização no corpo da solicitação:
allowed_skills são os slugs das Skills conectadas; os valores em allowed_mcp_servers são os slugs dos MCP Servers conectados. Skills / MCP Servers não listados na pré-autorização ainda poderão apenas visualizar, fazer dry-run ou recusar a execução de operações de escrita em modo sem supervisão.
Se precisar de um controle mais detalhado, você também pode usar o objeto equivalente unattended_policy:
--unattended-confirm ou mecanismos de segurança correspondentes; caso contrário, continuarão a fazer dry-run e não executarão operações de escrita diretamente.
Retomar conversas pausadas
Algumas ferramentas farão com que o modelo “pergunte ao usuário”, e nesse momento o modelo emitirá um eventoask_user_question, congelando a conversa no estado awaiting_user_input:
id, inicie a próxima solicitação, preenchendo a resposta através de tool_results:
tool_use_id no corpo da solicitação deve ser exatamente o mesmo que o tool_id no momento da pausa; se não for, retornará 400. Quando tool_results estiver presente na solicitação, question / message / references serão ignorados.
Se o usuário decidir desistir dessa pergunta, basta enviar uma nova question / message, e a plataforma marcará automaticamente a chamada da ferramenta pausada como “pulada pelo usuário”.
Gerenciamento de sessões (CRUD)
A v2 oferece gerenciamento leve de sessões no mesmo endpoint através do campoaction, sem necessidade de abrir uma API separada.
action: retrieve — Recuperar uma sessão
messages, model, title, tools_used, etc.).
action: retrieve_batch —— Listar resumos de conversas
{ items: [...], total }. O resumo não inclui messages, adequado para uma lista de barra lateral; se o usuário abrir uma conversa, use action: retrieve para buscar suas mensagens completas separadamente.
Parâmetros de filtragem opcionais: user_id, application_id, model_group, model.
action: update —— Alterar título ou reescrever histórico
messages também pode ser enviado, mas o servidor fará uma verificação rigorosa do schema (deve estar na forma de ToolUseContent colapsada), não conformidades retornarão 400. Geralmente, recomenda-se usar apenas para alterar o title.
action: delete —— Deletar uma conversa
{ id, success: true }. Após a exclusão, não pode ser recuperado, por favor, confirme antes de chamar.
Migração suave do v1
Se você já está usando/aichat/conversations, a migração para o v2 quase não requer alteração de código:
- Altere a URL de
https://api.acedata.cloud/aichat/conversationsparahttps://api.acedata.cloud/aichat2/conversations. - Se você estava usando nomes de modelos v1 (como
gpt-3.5,gpt-4-browsing, etc.), ao mudar para v2, recomenda-se atualizar para modelos contemporâneos (comogpt-5.4,claude-opus-4-8,gemini-3.1-pro, etc.). - Os campos do fluxo NDJSON permanecem compatíveis: cada evento
text_deltaainda trazdelta_answereid, portanto, os clientes que originalmente analisavamdelta_answerlinha por linha não precisam ser alterados.
message, SSE, chamadas de ferramentas, CRUD de action), avançando no seu próprio ritmo.
Tratamento de erros
As respostas de erro são unificadas como:400 bad_request: campos obrigatórios ausentes,tool_use_idnão correspondente, schema demessagesinválido, etc.401 invalid_token: cabeçalhoauthorizationincorreto.404 not_found: ao usaraction: retrieve / update / delete, a conversa correspondente aoidnão existe.429 too_many_requests: limite de taxa acionado.500 chat_error: erro do LLM upstream oucompletion_tokens=0nesta rodada (tratado como não consumido, não haverá cobrança).
{"type":"error","message":"..."} e, em seguida, o fluxo será encerrado.

