Saltar para o conteúdo principal
Use o recurso Extract quando quiser que a API MKA1 transforme um documento ou imagem enviado em JSON estruturado. Você pode definir o schema inline para uma requisição avulsa, ou salvar um template de schema reutilizável primeiro.

Criar um schema reutilizável

Salve um template de schema quando quiser executar a mesma estrutura de extração várias vezes.
import { SDK } from '@meetkai/mka1';

const mka1 = new SDK({
  apiKey: '<mka1-api-key>',
  headers: { 'X-On-Behalf-Of': '<end-user-id>' },
});

const schema = await mka1.llm.extract.createSchema({
  name: 'Invoice extraction',
  description: 'Extract invoice header fields from PDF invoices',
  schema: {
    type: 'object',
    properties: {
      invoice_number: { type: 'string' },
      vendor_name: { type: 'string' },
      total_amount: { type: 'number' },
      date: { type: 'string', format: 'date' },
    },
    required: ['invoice_number', 'total_amount'],
  },
  metadata: {
    document_type: 'invoice',
  },
});

console.log(schema.id); // e.g. "schema_invoice_123"
Isso retorna um ID de schema como schema_invoice_123.

Extrair com o schema salvo

Use o ID do schema salvo para extrair dados de um arquivo. A especificação OpenAPI suporta multipart/form-data para esta requisição.
const file = Bun.file('./invoice.pdf');

const result = await mka1.llm.extract.extractWithSchema({
  schemaId: 'schema_invoice_123',
  extractWithSchemaRequestBody: {
    model: 'meetkai:functionary-urdu-mini-pak',
    prompt: 'Extract the structured invoice fields.',
    file,
  },
});

console.log(result.data);
Uma resposta bem-sucedida retorna um objeto JSON com:
  • success
  • data contendo os campos extraídos
  • metadata sobre a execução da extração

Usar um schema inline para trabalhos avulsos

Se você não precisa reutilizar o schema, chame POST /api/v1/llm/extract em vez disso. Forneça seu JSON Schema inline junto com os campos da requisição de extração. Nota: na especificação OpenAPI, este endpoint é definido como application/json (o campo file é enviado como uma string codificada em binário).
const file = Bun.file('./invoice.pdf');

const result = await mka1.llm.extract.extract({
  model: 'meetkai:functionary-urdu-mini-pak',
  prompt: 'Extract the invoice number and total.',
  schema: {
    type: 'object',
    properties: {
      invoice_number: { type: 'string' },
      total_amount: { type: 'number' },
    },
    required: ['invoice_number', 'total_amount'],
  },
  file,
});

console.log(result.data);
Use o fluxo de schema reutilizável quando quiser um contrato estável para vários arquivos.

Gerenciar schemas salvos

O recurso Extract também permite que você:
  • Obtenha um schema salvo pelo ID.
  • Atualize um schema salvo.
  • Exclua um schema salvo.
Use esses endpoints quando seu contrato de extração mudar ao longo do tempo e você precisar manter o schema sincronizado.