import { ScrapbookItemConfig } from './ScrapbookPreset'; import { GPTCallType, gptAPICall } from '../../../apis/gpt/GPT'; // Represents the descriptor for each document export interface DocumentDescriptor { type: string; tags: string[]; } // Main function to request AI-generated presets export async function requestAiGeneratedPreset(descriptors: DocumentDescriptor[]): Promise { const prompt = createPrompt(descriptors); let aiResponse = await gptAPICall(prompt, GPTCallType.GENERATESCRAPBOOK); // Strip out ```json and ``` if the model wrapped its answer in fences aiResponse = aiResponse .trim() .replace(/^```(?:json)?\s*/, "") // remove leading ``` or ```json .replace(/\s*```$/, ""); // remove trailing ``` const parsedPreset = JSON.parse(aiResponse) as ScrapbookItemConfig[]; return parsedPreset; } // Helper to generate prompt text for AI function createPrompt(descriptors: DocumentDescriptor[]): string { let prompt = ""; descriptors.forEach((desc, index) => { prompt += `${index + 1}. Type: ${desc.type}, Tags: ${desc.tags.join(', ')}\n`; }); return prompt; }