A Chat API é uma interface assíncrona do DAS Agent que oferece suporte a perguntas e respostas baseadas em conhecimento, diagnósticos de desempenho e conversas com múltiplas interações. Ela retorna o processo de raciocínio do agente e a resposta final como um fluxo de Server-Sent Events (SSE). Este tópico descreve como integrar a Chat API usando os SDKs Java, Python e Go, com exemplos completos para análise de eventos SSE e conversas de múltiplas interações.
Pré-requisitos
O DAS Agent está ativado, a região da instância gerenciada corresponde ao país ou região do DAS Agent e a instância está vinculada ao DAS Agent.
Instale a versão mais recente do Alibaba Cloud DAS SDK.
Defina a região como
cn-shanghaie o endpoint comodas.cn-shanghai.aliyuncs.com.Configure as variáveis de ambiente
ALIBABA_CLOUD_ACCESS_KEY_IDeALIBABA_CLOUD_ACCESS_KEY_SECRETou utilize a cadeia de credenciais padrão da Alibaba Cloud.
A Chat API é uma interface paga, com faturamento baseado no número de caracteres de entrada e saída. Para obter mais informações, consulte Faturamento do DAS Agent.
Eventos principais
O fluxo SSE segue o protocolo ag-ui. A tabela a seguir descreve os principais tipos de eventos.
|
Tipo de evento |
Campos principais |
Descrição |
|
|
|
Indica o início da tarefa e marca o começo da sessão de chat. |
|
|
|
Sinaliza o término da tarefa. Nenhum outro evento é gerado após este. |
|
|
|
Assinala o começo de uma mensagem de texto. |
|
|
|
Contém um fragmento de texto incremental. Concatene os valores de |
|
|
|
Marca o fim da mensagem de texto. |
|
|
|
Evento de heartbeat ou status do agente, como |
|
|
|
Mostra que o agente iniciou uma chamada de ferramenta, como |
|
|
|
Transmite parâmetros da ferramenta como fragmentos de texto JSON. Concatene os valores de |
|
|
|
Indica que todos os parâmetros da ferramenta foram enviados e a execução está prestes a começar. |
|
|
|
Retorna o resultado da execução da ferramenta. O campo |
Sequência típica de eventos
O exemplo a seguir utiliza o prompt "Apply SQL throttling to instance rm-uf63bopu77b***" para ilustrar a sequência completa de eventos SSE.
1. Início da tarefa
Ao receber a solicitação, o servidor envia um evento RUN_STARTED que marca o início da sessão. Use esse evento para iniciar um temporizador ou inicializar a UI no cliente.
{"Type":"RUN_STARTED","RunId":"58abc22e-5742-4e9b-802e-5f060a0ca2e3"}
2. Eco da entrada do usuário (ignorável)
O servidor ecoa a mensagem do usuário como uma mensagem de texto com Role=user. Normalmente, o cliente não precisa exibir essa mensagem. Filtre por Role para ignorá-la.
{"Type":"TEXT_MESSAGE_START","Role":"user","MessageId":"20d2bc27-1644-47e5-8816-b0e764e84a6e"}
{"Type":"TEXT_MESSAGE_CONTENT","MessageId":"20d2bc27-1644-47e5-8816-b0e764e84a6e","Delta":"Apply SQL throttling to instance rm-uf63bopu77b*******"}
{"Type":"TEXT_MESSAGE_END","MessageId":"20d2bc27-1644-47e5-8816-b0e764e84a6e"}
3. Heartbeat do agente (ignorável)
Durante a fase de raciocínio do modelo, os eventos ACTIVITY_DELTA funcionam como sinais de heartbeat. Ignore esses eventos no cliente.
{"Type":"ACTIVITY_DELTA","ActivityType":"waiting_for_agent_thinking","Patch":[],"MessageId":""}
4. Saída da análise do agente (Role=assistant)
O modelo transmite seu raciocínio por meio de eventos TEXT_MESSAGE_CONTENT.Delta. Concatene os valores de Delta para o mesmo MessageId para montar a resposta completa.
{"Type":"TEXT_MESSAGE_START","Role":"assistant","MessageId":"36aaafdb-ea7f-4475-bad7-136e12117959"}
{"Type":"TEXT_MESSAGE_CONTENT","MessageId":"36aaafdb-ea7f-4475-bad7-136e12117959","Delta":"I need to check the SQL execution status of this instance first to determine which SQL statements require throttling. Let me query the recent SQL audit logs.\n\n"}
{"Type":"TEXT_MESSAGE_END","MessageId":"36aaafdb-ea7f-4475-bad7-136e12117959"}
5. Chamada de ferramenta pelo agente
Quando o agente invoca uma ferramenta externa, como das_api, os eventos seguem esta sequência: TOOL_CALL_START → múltiplos TOOL_CALL_ARGS → TOOL_CALL_END → TOOL_CALL_RESULT.
Início da chamada
{"Type":"TOOL_CALL_START","ToolCallId":"call_0fd4d07290b54dd7b7064cc2","ToolCallName":"das_api","ParentMessageId":"36aaafdb-ea7f-4475-bad7-136e12117959"}
Parâmetros transmitidos em fluxo
Concatene múltiplos eventos TOOL_CALL_ARGS.Delta agrupados por ToolCallId. Após a concatenação, analise o resultado como um objeto JSON completo:
{
"command": "execute",
"api_name": "getdassqlloghotdata",
"parameters": {
"instance_id": "rm-uf63bopu77b*******",
"start": "2026-03-05T15:54:16+08:00",
"end": "2026-03-05T16:54:16+08:00",
"max_records_per_page": 10,
"include_fields": ["sql_text", "execution_count", "avg_consume"],
"security_risk": "LOW"
}
}
Fim dos parâmetros e resultado da execução
{"Type":"TOOL_CALL_END","ToolCallId":"call_0fd4d07290b54dd7b7064cc2"}
{"Type":"TOOL_CALL_RESULT","ToolCallId":"call_0fd4d07290b54dd7b7064cc2","MessageId":"36aaafdb-ea7f-4475-bad7-136e12117959","Content":"API call succeeded. Response: ..."}
6. Término da tarefa
Um evento RUN_FINISHED sinaliza o fim do fluxo SSE. Nesse momento, pare o temporizador e feche a conexão no cliente.
{"Type":"RUN_FINISHED","RunId":"58abc22e-5742-4e9b-802e-5f060a0ca2e3"}
Exemplos de SDK
Observações de uso
Em conversas com múltiplas interações, sempre passe o mesmo
SessionId. Caso contrário, o modelo não conseguirá manter o contexto das interações anteriores.O fluxo SSE inclui eventos de heartbeat (
ACTIVITY_DELTA). Ignore esses eventos no cliente.O faturamento da Chat API baseia-se na quantidade de caracteres de entrada e saída. Durante o desenvolvimento, comece com consultas de teste simples para evitar cobranças inesperadas.