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