import 'dotenv/config'; import { Consumer, consumerSchema } from './types'; import { Tool } from './tool'; import { BaseTool, makeRequest } from '../anthropicClient'; import { generatePrompt } from './prompt'; import { generateConsumerSeed } from '@utils/generateConsumerSeed'; import prisma from '../../prisma/prisma'; export async function generate() { const { letters, birthday, zipCode } = generateConsumerSeed(); const newConsumer = await prisma.consumer.create({ data: { letters, birthday: birthday.toDate(), zipCode } }); console.info(`New consumer being generated with id ${newConsumer.id}`); const prompt = generatePrompt(letters, birthday, zipCode); try { const result = (await makeRequest(prompt, Tool as BaseTool)) as Consumer; const validConsumer = consumerSchema.safeParse(result); if (validConsumer.error) { throw Error(`Invalid consumer generated: ${validConsumer.error.message}`); } console.info('Generated consumer by Anthropic', validConsumer.data); await prisma.consumer.update({ where: { id: newConsumer.id }, data: { value: validConsumer.data } }); console.info(`Consumer with id ${newConsumer.id} stored in database.`); return { id: newConsumer.id, consumer: validConsumer.data }; } catch (error) { console.error('Error generating purchases:', error); throw error; } }