This repository has been archived on 2026-02-01. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
synthetic-consumer-data/utils/purchases/store.ts
Riccardo Senica 017e538396 Vercel ai gateway (#10)
* feat: use vercel ai gateway

* fix: correct response handling

* ci: add pipeline
2025-10-11 15:07:54 +02:00

42 lines
1.1 KiB
TypeScript

import { PurchaseList, purchaseListSchema } from './types';
import { Tool } from './tool';
import { BaseTool, makeRequest } from '@utils/aiGatewayClient';
import { generatePrompt } from './prompt';
import { Consumer } from '@consumer/types';
export async function generate(editedConsumer: Consumer, date: Date) {
const consumerPrompt = await generatePrompt(
editedConsumer,
parseInt(process.env.PURCHASE_REFLECTION_THRESHOLD ?? '50'),
date,
parseInt(process.env.NUMBER_OF_WEEKS ?? '4')
);
try {
const result = (await makeRequest(
consumerPrompt,
Tool as BaseTool
)) as PurchaseList;
const validPurchases = purchaseListSchema.safeParse(result);
if (validPurchases.error) {
throw Error(`Invalid purchases: ${validPurchases.error.message}`);
}
const totalPurchases = validPurchases.data.weeks.reduce(
(acc, week) => acc + week.purchases.length,
0
);
console.info(
`Generated ${totalPurchases} purchases for new purchase list for consumer`
);
return validPurchases.data;
} catch (error) {
console.error('Error generating purchases:', error);
throw error;
}
}