Saltar para o conteúdo principal
A AI Chat v2 API (/aichat2/conversations) é a nova geração da interface de conversação e uma versão totalmente atualizada da AI Chat API. Com base na simplicidade e no gerenciamento de conversas com múltiplas rodadas da v1, ela expande:
  • Entrada de usuário multimodal: envie diretamente blocos de texto + imagens + arquivos pelo campo estruturado message, sem precisar anexá-los indiretamente primeiro usando references.
  • Chamada de ferramentas com Agent: inclui um conjunto de ferramentas como pesquisa online, extração de páginas da web e leitura de arquivos, e permite montar servidores MCP autorizados pelo usuário (Google Drive, Notion, Slack, GitHub etc.). O modelo pode chamar ferramentas autonomamente em múltiplas rodadas dentro de uma única solicitação para concluir tarefas complexas.
  • Eventos estruturados de streaming: por meio de accept: text/event-stream ou application/x-ndjson, é possível obter eventos como text_delta, tool_use, tool_result, thinking, citation, card e artifact, token por token, facilitando a renderização separada de cada tipo no frontend.
  • Interrompível / recuperável: quando o modelo precisar que o usuário forneça informações adicionais, ele emitirá um evento ask_user_question e pausará. Na próxima chamada, basta preencher a resposta por meio de tool_results para continuar.
  • Novas ações CRUD: conclua retrieve / retrieve_batch / update / delete por meio do campo action no mesmo endpoint, sem necessidade de uma API adicional de gerenciamento de conversas.
  • Lista de modelos continuamente atualizada: integra por padrão 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 etc.
Ao mesmo tempo, ela é totalmente compatível de forma retroativa com a v1 no nível do corpo da solicitação: basta enviar model + question (+ opcionalmente stateful / id / references / preset) para obter uma resposta JSON {answer, id} equivalente à v1. Portanto, ao migrar de /aichat/conversations, não é necessário reescrever o cliente; basta alterar o caminho para /aichat2/conversations.
Se você estiver usando atualmente /aichat/conversations, a interface antiga continuará em serviço, e você pode migrar no seu próprio ritmo.

Processo de solicitação

Para usar a AI Chat v2 API, primeiro obtenha seu API Token no console Ace Data Cloud e guarde-o para uso posterior. Se você ainda não tiver feito login ou se registrado, será redirecionado automaticamente para a página de login, onde será convidado a se registrar e entrar. Após a conclusão, você retornará automaticamente à página atual. Um único API Token pode chamar todos os serviços da plataforma, sem necessidade de solicitar um separadamente para cada serviço. A primeira solicitação concede créditos gratuitos para uma experiência sem custo; quando os créditos forem insuficientes, você poderá recarregar saldo universal no console.
📘 Documentação completa: AI Chat v2 API →

Uso básico

O uso mais simples é exatamente igual ao da v1: envie model + question e obtenha {answer, id}. Exemplo CURL:
Resultado retornado:
Exemplo Python:
Os valores disponíveis para model podem ser vistos diretamente no menu suspenso do painel Try à direita, e as categorias comuns incluem:
  • 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-preview、gemini-3.1-pro-preview、gemini-3.1-flash-image、gemini-3.1-pro-preview、gemini-2.5-flash-lite etc.
  • xAI: grok-4 etc.
  • DeepSeek: deepseek-v4-pro、deepseek-v4.1-flash、deepseek-v4-flash、deepseek-v3.2-exp、deepseek-r1-0528 etc.
  • Moonshot: kimi-k3.1-pro、kimi-k3、kimi-k2.6、kimi-k2.5 etc.
  • Zhipu: glm-5.3、glm-5.2、glm-5.1、glm-5、glm-5-turbo、glm-4.7、glm-4.5v etc.
Para regras específicas de cobrança, consulte o cartão Pricing na página do serviço.

Conversa com múltiplas rodadas

Assim como na v1, envie stateful: true para ativar o salvamento da conversa. A API retornará um id; basta incluir o id nas solicitações posteriores para continuar a conversa, sem precisar manter o histórico de mensagens por conta própria. Primeira solicitação:
Retorno:
Segunda solicitação, inclua o mesmo id:
stateful é true por padrão; omiti-lo é equivalente a passar explicitamente true. Se você não quiser que o servidor salve esta rodada de conversa, pode definir explicitamente stateful: false.

Resposta em fluxo

A v2 oferece suporte a dois formatos de fluxo, selecionados de acordo com o cabeçalho accept:

Exemplo de NDJSON

Cada linha do NDJSON é um evento estruturado, sendo o mais comum text_delta:

Exemplo de SSE

No navegador, o uso de EventSource não oferece suporte a corpos de solicitação personalizados; recomenda-se usar fetch + análise manual por fatias de \n\n:

Tipos de eventos em fluxo

Para clientes que se preocupam apenas com a resposta final, concatenar o content de todos os text_delta é equivalente a answer no modo application/json.

Entrada multimodal

Se a entrada do usuário incluir imagens ou arquivos, passe message (um array) em vez de question. Cada elemento do array é um bloco de conteúdo:
Tipos de blocos compatíveis:
  • text — Texto comum, o campo text é obrigatório.
  • image_url — Imagem, image_url.url é obrigatório.
  • file_url — Arquivo (PDF, CSV, TXT etc.), file_url.url é obrigatório.

Relação com references da v1

Para compatibilidade com clientes antigos, a v2 ainda reconhece o campo references: ["https://...", ...]:
  • Sufixos de URL jpg / jpeg / png / gif / bmp / webp / svg / heic / heif são automaticamente convertidos em blocos image_url;
  • Outras extensões são convertidas em blocos file_url;
  • Se question também for fornecido, ele será colocado antes como um bloco text.
Portanto, se você quiser apenas migrar da v1 sem alterar o corpo da requisição, basta trocar o caminho para /aichat2/conversations, e o uso original de references continuará funcionando normalmente. Se precisar de um controle mais refinado (por exemplo, colocar várias imagens entre textos, ou quando a ordem for muito importante), use diretamente o array message.

Chamada de ferramentas e MCP

O principal aprimoramento da v2 é que o modelo pode chamar ferramentas de forma autônoma para concluir tarefas em várias etapas, isso é ativado por padrão, não sendo necessária nenhuma configuração adicional pelo cliente na requisição. Cenários comuns:
  • O usuário pergunta: “Pesquise para mim quais exposições novas existem recentemente em Xangai” → o modelo chama a busca web integrada → organiza os resultados em uma resposta.
  • O usuário pergunta: “Leia este PDF e depois 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 gravar seus dados.
No fluxo NDJSON / SSE, as chamadas de ferramentas são apresentadas por meio de dois tipos de eventos, tool_use e tool_result, por exemplo:
Se você não quiser exibir os detalhes das chamadas de ferramentas no frontend, basta ignorar os eventos tool_use / tool_result / card / citation; a saída final do modelo continuará sendo transmitida por text_delta. max_turns pode limitar o número máximo de rodadas em que o modelo chama ferramentas por conta própria nesta requisição, com intervalo de 1–500 e padrão de 500 quando omitido. Defini-lo como um valor pequeno (por exemplo, max_turns: 1) pode forçar uma resposta única e não permitir nenhuma chamada de ferramenta.

Execução assíncrona e autorização não supervisionada

Se sua chamada vier de Webhooks de alerta, CI/CD, sistemas de monitoramento ou outras tarefas em segundo plano, você pode definir async: true para fazer a interface retornar imediatamente o ID da tarefa e continuar a execução em segundo plano:
Exemplo de retorno:
Depois, você pode usar action: retrieve + id para consultar o resultado da conversa; também é possível fornecer callback_url, e após a conclusão da tarefa a plataforma enviará por POST { status, answer, usage, error } ao seu endereço de callback. callback_url deve usar http / https e não pode preencher diretamente localhost ou um endereço IP privado literal. Em geral, não há ninguém que possa clicar para confirmar em tarefas em segundo plano. Se desejar que determinados Skills ou MCP Servers executem ações como envio, publicação e gravação no modo não supervisionado, transmita explicitamente uma lista de pré-autorização no corpo da requisição:
Os valores em allowed_skills são os slugs dos Skills conectados; os valores em allowed_mcp_servers são os slugs dos MCP Servers conectados. Skills / MCP Servers não incluídos na pré-autorização ainda só podem visualizar, fazer dry-run ou recusar a execução de operações de gravação no modo não supervisionado. Se for necessário um controle mais detalhado, também é possível usar o objeto equivalente unattended_policy:
A pré-autorização consiste nessas duas listas: uma lista vazia não autoriza nenhuma capacidade, sem necessidade de campos de ativação adicionais. Observação: a pré-autorização significa apenas que “esta requisição permite que essas capacidades ignorem a confirmação humana no modo não supervisionado”. O Skill específico ainda deve oferecer suporte a --unattended-confirm ou ao mecanismo de segurança correspondente; caso contrário, ele continuará em dry-run e não executará diretamente operações de gravação.

Retomar conversas pausadas

Algumas ferramentas fazem o modelo “perguntar de volta ao usuário”; nesse momento, o modelo emitirá um evento ask_user_question, e a conversa ficará congelada no estado awaiting_user_input:
No frontend, renderize esse evento como um cartão para que o usuário escolha uma resposta e, em seguida, inicie a próxima requisição com o mesmo id, preenchendo a resposta por meio de tool_results:
O tool_use_id no corpo da requisição deve ser exatamente igual ao tool_id no momento da pausa; caso seja diferente, será retornado 400. Quando tool_results existir simultaneamente na requisição, question / message / references serão todos ignorados. Se o usuário decidir abandonar essa pergunta, basta transmitir um novo question / message, e a plataforma marcará automaticamente a chamada de ferramenta pausada como “ignorada pelo usuário”.

Gerenciamento de conversas (CRUD)

A v2 fornece gerenciamento leve de conversas no mesmo endpoint por meio do campo action, sem necessidade de abrir outra API.

action: retrieve —— Recuperar uma conversa

Retorna o documento completo da conversa (incluindo o histórico de messages, model, title, tools_used etc.).

action: retrieve_batch —— Listar resumos de conversas

Retorna { items: [...], total }. Os resumos não incluem messages, sendo adequados para listas de barra lateral; se o usuário abrir uma conversa, use então action: retrieve para recuperar separadamente suas mensagens completas. Parâmetros de filtro opcionais: user_id, application_id, model_group, model.

action: update —— Alterar o título ou reescrever o histórico

messages também pode ser enviado, mas o servidor realizará uma validação rigorosa do schema (deve estar no formato ToolUseContent recolhido); caso não esteja em conformidade, retornará 400. Em geral, recomenda-se usá-lo apenas para alterar o title.

action: delete —— Excluir uma conversa

Retorna { id, success: true }. Após a exclusão, não será possível recuperar a conversa; confirme antes de chamar.

Migração tranquila a partir da v1

Se você já estiver usando /aichat/conversations, a migração para a v2 quase não requer alterações no código:
  1. Altere a URL de https://api.acedata.cloud/aichat/conversations para https://api.acedata.cloud/aichat2/conversations.
  2. Se você anteriormente passava nomes de modelos v1 (como gpt-3.5, gpt-4-browsing etc.), ao mudar para a v2 é recomendável atualizar para modelos contemporâneos (como gpt-5.4, claude-opus-4-8, gemini-3.1-pro-preview etc.).
  3. Os campos do fluxo NDJSON permanecem compatíveis com versões anteriores: cada evento text_delta ainda inclui delta_answer e id, portanto os clientes que originalmente analisavam delta_answer linha a linha não precisam ser alterados.
Após a migração, você pode habilitar conforme necessário as novas capacidades da v2 (message multimodal, SSE, chamadas de ferramentas, CRUD de action) e avançar no seu próprio ritmo.

Tratamento de erros

As respostas de erro são padronizadas como:
Erros comuns:
  • 400 bad_request: campos obrigatórios ausentes, tool_use_id não corresponde, schema de messages inválido etc.
  • 401 invalid_token: o cabeçalho authorization está incorreto.
  • 404 not_found: a conversa correspondente ao id não existe ao usar action: retrieve / update / delete.
  • 429 too_many_requests: o limite de taxa foi acionado.
  • 500 chat_error: erro do LLM upstream ou completion_tokens=0 nesta rodada (tratado como não consumido, sem cobrança).
Em respostas de streaming, os erros são emitidos como eventos {"type":"error","message":"..."}, e o fluxo será encerrado logo em seguida.

Conclusão

A API AI Chat v2, ao mesmo tempo que mantém compatibilidade retroativa com a v1, atualiza as conversas de «perguntas e respostas de uma única rodada / múltiplas rodadas» para «conversas observáveis orientadas a Agent»: entrada multimodal, chamadas de ferramentas, pausável / retomável, eventos estruturados em streaming e CRUD integrado. Recomenda-se que novas integrações utilizem diretamente a v2; integrações v1 existentes podem migrar tranquilamente em etapas. Se tiver qualquer dúvida, entre em contato com nossa equipe de suporte técnico a qualquer momento.