Skip to content

Commit 13b620c

Browse files
committed
📦 NEW: Batch delete documents from memory
1 parent f799fd4 commit 13b620c

File tree

1 file changed

+40
-47
lines changed

1 file changed

+40
-47
lines changed

‎packages/baseai/src/deploy/index.ts

Lines changed: 40 additions & 47 deletions
Original file line numberDiff line numberDiff line change
@@ -642,74 +642,67 @@ export async function uploadDocumentsToMemory({
642642
documents: MemoryDocumentI[];
643643
name: string;
644644
account: Account;
645+
}) {
646+
for (const doc of documents) {
647+
try {
648+
p.log.message(`Uploading document: ${doc.name} ....`);
649+
await new Promise(resolve => setTimeout(resolve, 800)); // To avoid rate limiting
650+
const signedUrl = await getSignedUploadUrl({
651+
documentName: doc.name,
652+
memoryName: name,
653+
account
654+
});
655+
656+
const uploadResponse = await uploadDocument(signedUrl, doc.blob);
657+
dlog(`Upload response status: ${uploadResponse.status}`);
658+
659+
p.log.message(`Uploaded document: ${doc.name}`);
660+
} catch (error) {
661+
throw error;
662+
}
663+
}
664+
}
665+
666+
export async function deleteDocumentsFromMemory({
667+
documents,
668+
name,
669+
account
670+
}: {
671+
documents: string[];
672+
name: string;
673+
account: Account;
645674
}) {
646675
const BATCH_SIZE = 5; // Number of concurrent uploads
647676
const RATE_LIMIT_DELAY = 1000; // 1 second delay between requests
648677

649-
// Process documents in batches to avoid rate limiting
678+
p.log.info(`Deleting ${documents.length} documents from memory: ${name}`);
679+
650680
for (let i = 0; i < documents.length; i += BATCH_SIZE) {
651681
const batch = documents.slice(i, i + BATCH_SIZE);
652-
653-
const batchUploadPromises = batch.map(async (doc, index) => {
682+
const batchPromises = batch.map(async (doc, index) => {
654683
try {
655-
// Stagger requests within batch
656684
await new Promise(resolve =>
657685
setTimeout(resolve, index * RATE_LIMIT_DELAY)
658686
);
659687

660-
// p.log.message(`Uploading document: ${doc.name} ....`);
661-
const signedUrl = await getSignedUploadUrl({
662-
documentName: doc.name,
688+
// p.log.message(`Deleting document: ${doc}`);
689+
const deleteResponse = await deleteDocument({
690+
documentName: doc,
663691
memoryName: name,
664692
account
665693
});
666694

667-
const uploadResponse = await uploadDocument(
668-
signedUrl,
669-
doc.blob
670-
);
671-
dlog(`Upload response status: ${uploadResponse.status}`);
672-
673-
p.log.message(`Uploaded document: ${doc.name}`);
695+
dlog(`Delete response status: ${deleteResponse.status}`);
696+
p.log.message(`Deleted document: ${doc}`);
697+
return deleteResponse;
674698
} catch (error: any) {
675699
throw new Error(
676-
`Failed to upload ${doc.name}: ${error.message ?? error}`
700+
`Failed to delete ${doc}: ${error.message ?? error}`
677701
);
678702
}
679703
});
680704

681-
await Promise.all(batchUploadPromises);
682-
}
683-
}
684-
685-
export async function deleteDocumentsFromMemory({
686-
documents,
687-
name,
688-
account
689-
}: {
690-
documents: string[];
691-
name: string;
692-
account: Account;
693-
}) {
694-
p.log.info(`Deleting documents from memory: ${name}`);
695-
696-
for (const doc of documents) {
697-
try {
698-
p.log.message(`Deleting document: ${doc} ....`);
699-
await new Promise(resolve => setTimeout(resolve, 800)); // To avoid rate limiting
700-
701-
const deleteResponse = await deleteDocument({
702-
documentName: doc,
703-
memoryName: name,
704-
account
705-
});
706-
707-
dlog(`Delete response status: ${deleteResponse.status}`);
708-
709-
p.log.message(`Deleted document: ${doc}`);
710-
} catch (error) {
711-
throw error;
712-
}
705+
await Promise.all(batchPromises);
713706
}
714707
p.log.info(`Deleted documents from memory: ${name}`);
715708
}

0 commit comments

Comments
 (0)