import { createFlow, parse, extract } from '@docloai/flows';
import { createOCRProvider } from '@docloai/providers-datalab';
import { createVLMProvider } from '@docloai/providers-llm';
const ocrProvider = createOCRProvider({
endpoint: 'https://www.datalab.to/api/v1/ocr',
apiKey: process.env.DATALAB_API_KEY!
});
const llmProvider = createVLMProvider({
provider: 'anthropic',
model: 'anthropic/claude-sonnet-4.5',
apiKey: process.env.OPENROUTER_API_KEY!,
via: 'openrouter'
});
const invoiceSchema = {
type: 'object',
properties: {
invoiceNumber: { type: 'string' },
date: { type: 'string' },
total: { type: 'number' },
lineItems: {
type: 'array',
items: {
type: 'object',
properties: {
description: { type: 'string' },
amount: { type: 'number' }
}
}
}
}
};
const flow = createFlow()
.step('parse', parse({ provider: ocrProvider }))
.step('extract', extract({
provider: llmProvider,
schema: invoiceSchema
}))
.build();
const result = await flow.run({
base64: 'data:application/pdf;base64,...'
});
console.log('Invoice:', result.output);
console.log('OCR cost:', result.artifacts.parse?.extras?.costUSD);
console.log('Total cost:', result.aggregated.totalCostUSD);