From 8f03f8d4bce24aead56dc33e572eea0a1c8d4cb8 Mon Sep 17 00:00:00 2001
From: Huu Le <39040748+leehuwuj@users.noreply.github.com>
Date: Wed, 12 Jun 2024 16:50:20 +0700
Subject: [PATCH] chore: Improve fastapi (#123)

---
 .changeset/hip-foxes-invite.md                |  5 +++++
 .changeset/wild-wasps-join.md                 |  5 +++++
 templates/components/loaders/python/file.py   | 19 ++++++++++++++-----
 .../types/streaming/fastapi/app/settings.py   |  9 +++++++--
 4 files changed, 31 insertions(+), 7 deletions(-)
 create mode 100644 .changeset/hip-foxes-invite.md
 create mode 100644 .changeset/wild-wasps-join.md

diff --git a/.changeset/hip-foxes-invite.md b/.changeset/hip-foxes-invite.md
new file mode 100644
index 00000000..ed2ca0a5
--- /dev/null
+++ b/.changeset/hip-foxes-invite.md
@@ -0,0 +1,5 @@
+---
+"create-llama": patch
+---
+
+Add OLLAMA_REQUEST_TIMEOUT variable to config Ollama timeout (Python)
diff --git a/.changeset/wild-wasps-join.md b/.changeset/wild-wasps-join.md
new file mode 100644
index 00000000..c5895143
--- /dev/null
+++ b/.changeset/wild-wasps-join.md
@@ -0,0 +1,5 @@
+---
+"create-llama": patch
+---
+
+Apply nest_asyncio for llama parse
diff --git a/templates/components/loaders/python/file.py b/templates/components/loaders/python/file.py
index 95b5fd2f..3baf7001 100644
--- a/templates/components/loaders/python/file.py
+++ b/templates/components/loaders/python/file.py
@@ -23,7 +23,12 @@ def llama_parse_parser():
             "LLAMA_CLOUD_API_KEY environment variable is not set. "
             "Please set it in .env file or in your shell environment then run again!"
         )
-    parser = LlamaParse(result_type="markdown", verbose=True, language="en")
+    parser = LlamaParse(
+        result_type="markdown",
+        verbose=True,
+        language="en",
+        ignore_errors=False,
+    )
     return parser
 
 
@@ -32,15 +37,19 @@ def get_file_documents(config: FileLoaderConfig):
 
     try:
         reader = SimpleDirectoryReader(
-            config.data_dir,
-            recursive=True,
-            filename_as_id=True,
+            config.data_dir, recursive=True, filename_as_id=True, raise_on_error=True
         )
         if config.use_llama_parse:
+            # LlamaParse is async first,
+            # so we need to use nest_asyncio to run it in sync mode
+            import nest_asyncio
+
+            nest_asyncio.apply()
+
             parser = llama_parse_parser()
             reader.file_extractor = {".pdf": parser}
         return reader.load_data()
-    except ValueError as e:
+    except Exception as e:
         import sys, traceback
 
         # Catch the error if the data dir is empty
diff --git a/templates/types/streaming/fastapi/app/settings.py b/templates/types/streaming/fastapi/app/settings.py
index 0b45f4df..3f138b10 100644
--- a/templates/types/streaming/fastapi/app/settings.py
+++ b/templates/types/streaming/fastapi/app/settings.py
@@ -23,15 +23,20 @@ def init_settings():
 
 
 def init_ollama():
-    from llama_index.llms.ollama import Ollama
+    from llama_index.llms.ollama.base import Ollama, DEFAULT_REQUEST_TIMEOUT
     from llama_index.embeddings.ollama import OllamaEmbedding
 
     base_url = os.getenv("OLLAMA_BASE_URL") or "http://127.0.0.1:11434"
+    request_timeout = float(
+        os.getenv("OLLAMA_REQUEST_TIMEOUT", DEFAULT_REQUEST_TIMEOUT)
+    )
     Settings.embed_model = OllamaEmbedding(
         base_url=base_url,
         model_name=os.getenv("EMBEDDING_MODEL"),
     )
-    Settings.llm = Ollama(base_url=base_url, model=os.getenv("MODEL"))
+    Settings.llm = Ollama(
+        base_url=base_url, model=os.getenv("MODEL"), request_timeout=request_timeout
+    )
 
 
 def init_openai():
-- 
GitLab