aboutsummaryrefslogtreecommitdiff
path: root/src/client/views/nodes/scrapbook/AIPresetGenerator.ts
diff options
context:
space:
mode:
authorJoanne <zehan_ding@brown.edu>2025-06-20 10:18:38 -0400
committerJoanne <zehan_ding@brown.edu>2025-06-20 10:18:38 -0400
commit61787b3c1cf53c0230f6142bee0df30c65971012 (patch)
tree36c43ca031722b9a92f3f344288c8f6cf7fff5e1 /src/client/views/nodes/scrapbook/AIPresetGenerator.ts
parent2aa2c26b95a539d220e46b20cdfbef6ae39d6c43 (diff)
parente7a96fa043cfc9c3c426e09bbef42c8df88a45f6 (diff)
Merge branch 'master' of https://github.com/brown-dash/Dash-Web into joanne-tutorialagent
Diffstat (limited to 'src/client/views/nodes/scrapbook/AIPresetGenerator.ts')
-rw-r--r--src/client/views/nodes/scrapbook/AIPresetGenerator.ts31
1 files changed, 31 insertions, 0 deletions
diff --git a/src/client/views/nodes/scrapbook/AIPresetGenerator.ts b/src/client/views/nodes/scrapbook/AIPresetGenerator.ts
new file mode 100644
index 000000000..1f159222b
--- /dev/null
+++ b/src/client/views/nodes/scrapbook/AIPresetGenerator.ts
@@ -0,0 +1,31 @@
+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<ScrapbookItemConfig[]> {
+ 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;
+}