From 468bda594e648e7128cf90f2ab4d508c8db40341 Mon Sep 17 00:00:00 2001
From: Alex Yang <himself65@outlook.com>
Date: Fri, 4 Oct 2024 12:01:10 -0700
Subject: [PATCH] fix: correct warning when chunk size smaller than 0 (#1297)

---
 .changeset/hungry-spies-beg.md             |  5 +++++
 packages/core/src/indices/prompt-helper.ts | 15 +++++++++------
 2 files changed, 14 insertions(+), 6 deletions(-)
 create mode 100644 .changeset/hungry-spies-beg.md

diff --git a/.changeset/hungry-spies-beg.md b/.changeset/hungry-spies-beg.md
new file mode 100644
index 000000000..d05dfa474
--- /dev/null
+++ b/.changeset/hungry-spies-beg.md
@@ -0,0 +1,5 @@
+---
+"@llamaindex/core": patch
+---
+
+fix: correct warning when chunk size smaller than 0
diff --git a/packages/core/src/indices/prompt-helper.ts b/packages/core/src/indices/prompt-helper.ts
index a0e1dbc1b..3d1b5adcc 100644
--- a/packages/core/src/indices/prompt-helper.ts
+++ b/packages/core/src/indices/prompt-helper.ts
@@ -76,7 +76,7 @@ export class PromptHelper {
    * @param prompt
    * @returns
    */
-  private getAvailableContextSize(prompt: PromptTemplate) {
+  #getAvailableContextSize(prompt: PromptTemplate) {
     const emptyPromptText = getEmptyPromptTxt(prompt);
     const promptTokens = this.tokenizer.encode(emptyPromptText);
     const numPromptTokens = promptTokens.length;
@@ -87,12 +87,12 @@ export class PromptHelper {
   /**
    * Find the maximum size of each chunk given a prompt.
    */
-  private getAvailableChunkSize(
+  #getAvailableChunkSize(
     prompt: PromptTemplate,
     numChunks = 1,
     padding = 5,
   ): number {
-    const availableContextSize = this.getAvailableContextSize(prompt);
+    const availableContextSize = this.#getAvailableContextSize(prompt);
 
     const result = Math.floor(availableContextSize / numChunks) - padding;
 
@@ -111,9 +111,12 @@ export class PromptHelper {
     numChunks = 1,
     padding = DEFAULT_PADDING,
   ) {
-    const chunkSize = this.getAvailableChunkSize(prompt, numChunks, padding);
-    if (chunkSize === 0) {
-      throw new Error("Got 0 as available chunk size");
+    const chunkSize = this.#getAvailableChunkSize(prompt, numChunks, padding);
+    if (chunkSize <= 0) {
+      /**
+       * If you see this error, it means that the input is larger than LLM context window.
+       */
+      throw new TypeError(`Chunk size ${chunkSize} is not positive.`);
     }
     const chunkOverlap = this.chunkOverlapRatio * chunkSize;
     return new SentenceSplitter({
-- 
GitLab