Saltar para o conteúdo principal
Use o modo background quando uma resposta pode demorar para ser concluida, como no uso de ferramentas em multiplas etapas ou tarefas de geracao extensas. A API retorna imediatamente com uma resposta enfileirada, e voce obtem o resultado depois por polling ou streaming.

Criar uma resposta em segundo plano

Defina background como true e stream como false. A API cria a resposta, inicia o processamento de forma assincrona e retorna imediatamente com status: "queued".
import { SDK } from '@meetkai/mka1';

const mka1 = new SDK({
  bearerAuth: `Bearer ${YOUR_API_KEY}`,
});

const result = await mka1.llm.responses.create({
  model: 'meetkai:functionary-urdu-mini-pak',
  input: 'Write a 500-word essay about the history of the internet.',
  background: true,
  stream: false,
}, { headers: { 'X-On-Behalf-Of': '<end-user-id>' } });

const response = result.createResponseResponse;
console.log(response.id, response.status); // resp_abc123 queued
Salve o id para obter o resultado posteriormente.

Consultar o resultado por polling

Chame GET /responses/{response_id} ate que o status alcance um estado terminal.
let polled = await mka1.llm.responses.get({ responseId: response.id });

while (polled.status === 'queued' || polled.status === 'in_progress') {
  await new Promise(r => setTimeout(r, 2000));
  polled = await mka1.llm.responses.get({ responseId: response.id });
}

console.log(polled.status); // completed
console.log(polled.output);
Uma resposta passa pelos seguintes status conforme e processada:
StatusSignificado
queuedA requisicao esta aguardando para ser processada
in_progressO modelo esta gerando a saida
completedA geracao foi concluida com sucesso
failedOcorreu um erro durante o processamento
incompleteA resposta foi interrompida (ex.: limite de tokens)
cancelledA resposta foi cancelada antes de ser concluida
Faca polling em um intervalo razoavel (por exemplo, a cada dois segundos) ate que o status nao seja mais queued ou in_progress.

Transmitir eventos de uma resposta em segundo plano

Se voce quiser atualizacoes em tempo real em vez de polling, obtenha a resposta com stream definido como true. A API retorna eventos server-sent conforme a resposta e processada.
const stream = await openai.responses.retrieve(response.id, {
  stream: true,
});

for await (const event of stream) {
  console.log(event.type);
}
Os eventos chegam conforme sao produzidos. O stream e encerrado apos um evento terminal como response.completed ou response.failed. Se a resposta ja tiver sido concluida quando voce chamar esse endpoint, voce recebera um unico evento terminal com a resposta final e o stream sera encerrado imediatamente.

Transmitir eventos no momento da criacao

Voce tambem pode transmitir eventos diretamente ao criar uma resposta em segundo plano, definindo tanto background quanto stream como true.
const stream = await openai.responses.create({
  model: 'meetkai:functionary-urdu-mini-pak',
  input: 'Write a 500-word essay about the history of the internet.',
  background: true,
  stream: true,
});

for await (const event of stream) {
  console.log(event.type);
  // response.queued → response.created → ... → response.completed
}
O primeiro evento e response.queued, seguido por response.created, eventos intermediarios como response.output_text.delta e, por fim, um evento terminal como response.completed. Isso e util quando voce quer mostrar o progresso em uma interface enquanto o trabalho e executado em segundo plano. Se o cliente desconectar, a resposta continua sendo processada e pode ser obtida posteriormente.

Cancelar uma resposta em segundo plano

Se voce nao precisar mais do resultado, cancele uma resposta enfileirada ou em andamento.
const cancelled = await mka1.llm.responses.cancel({
  responseId: response.id,
});

console.log(cancelled.status); // cancelled
O status da resposta muda para cancelled. Respostas que ja foram concluidas ou falharam nao podem ser canceladas.

Proximos passos