From 7bac650914f06777b743f47e8fef46c03bcbea6b Mon Sep 17 00:00:00 2001 From: Rene Teigen Date: Thu, 9 Mar 2023 07:26:08 +0000 Subject: [PATCH 1/3] Move tqdm from optional to required Add tqdm to requirements.txt --- pyproject.toml | 4 ++-- requirements.txt | 1 + requirements_base.txt | 3 ++- requirements_full.txt | 1 - 4 files changed, 5 insertions(+), 4 deletions(-) diff --git a/pyproject.toml b/pyproject.toml index 7b40f81..897d4fc 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -39,7 +39,8 @@ dependencies = [ "protobuf==3.20.2", "python-pptx==0.6.21", "langchain==0.0.105", -"unidecode==1.3.6" +"unidecode==1.3.6", +"tqdm==4.64.1" ] dynamic = ["version"] @@ -58,7 +59,6 @@ full = [ "torch==1.9.1", "torchvision==1.10.1", "tokenizers==0.10.3", - "tqdm==4.64.1", "numpy==1.24.2", "scipy==1.10.1", "nltk==3.8.1", diff --git a/requirements.txt b/requirements.txt index ade1dee..40901fc 100644 --- a/requirements.txt +++ b/requirements.txt @@ -22,3 +22,4 @@ sentence-transformers==2.2.2 langchain==0.0.105 openai-whisper unidecode==1.3.6 +tqdm==4.64.1 diff --git a/requirements_base.txt b/requirements_base.txt index 69539da..c98ce4e 100644 --- a/requirements_base.txt +++ b/requirements_base.txt @@ -19,4 +19,5 @@ sentencepiece==0.1.97 protobuf==3.20.2 python-pptx==0.6.21 langchain==0.0.105 -unidecode==1.3.6 \ No newline at end of file +unidecode==1.3.6 +tqdm==4.64.1 \ No newline at end of file diff --git a/requirements_full.txt b/requirements_full.txt index c6dfb55..34b7adc 100644 --- a/requirements_full.txt +++ b/requirements_full.txt @@ -1,5 +1,4 @@ tokenizers==0.13.2 -tqdm==4.64.1 numpy==1.24.2 scipy==1.10.1 nltk==3.8.1 From 1a63fb84c00a64bcafe4c1ccf4e1aadd6b27d5e8 Mon Sep 17 00:00:00 2001 From: Kaveen Kumarasinghe Date: Sat, 11 Mar 2023 21:50:43 -0500 Subject: [PATCH 2/3] bump gpt-index, better async query support --- gpt3discord.py | 2 +- models/index_model.py | 26 +++++++------------------- models/search_model.py | 31 ++----------------------------- pyproject.toml | 2 +- requirements.txt | 2 +- requirements_base.txt | 2 +- 6 files changed, 13 insertions(+), 52 deletions(-) diff --git a/gpt3discord.py b/gpt3discord.py index 97c9797..75166aa 100644 --- a/gpt3discord.py +++ b/gpt3discord.py @@ -32,7 +32,7 @@ from services.environment_service import EnvService from models.openai_model import Model -__version__ = "10.9.15" +__version__ = "10.9.16" PID_FILE = Path("bot.pid") diff --git a/models/index_model.py b/models/index_model.py index c1fcbe7..5345952 100644 --- a/models/index_model.py +++ b/models/index_model.py @@ -20,6 +20,7 @@ from discord.ext import pages from langchain.llms import OpenAIChat from llama_index.langchain_helpers.chatgpt import ChatGPTLLMPredictor from langchain import OpenAI +from llama_index.optimization.optimizer import SentenceEmbeddingOptimizer from llama_index.prompts.chat_prompts import CHAT_REFINE_PROMPT from llama_index.readers import YoutubeTranscriptReader @@ -55,7 +56,7 @@ RemoteReader = download_loader("RemoteReader") RemoteDepthReader = download_loader("RemoteDepthReader") -def get_and_query( +async def get_and_query( user_id, index_storage, query, @@ -69,23 +70,23 @@ def get_and_query( user_id ].get_index_or_throw() if isinstance(index, GPTTreeIndex): - response = index.query( + response = await index.aquery( query, child_branch_factor=child_branch_factor, llm_predictor=llm_predictor, refine_template=CHAT_REFINE_PROMPT, embed_model=embed_model, - use_async=True, + #optimizer=SentenceEmbeddingOptimizer(threshold_cutoff=0.7) ) else: - response = index.query( + response = await index.aquery( query, response_mode=response_mode, llm_predictor=llm_predictor, embed_model=embed_model, similarity_top_k=nodes, refine_template=CHAT_REFINE_PROMPT, - use_async=True, + #optimizer=SentenceEmbeddingOptimizer(threshold_cutoff=0.7) ) return response @@ -921,20 +922,7 @@ class Index_handler: try: embedding_model = OpenAIEmbedding() embedding_model.last_token_usage = 0 - response = await self.loop.run_in_executor( - None, - partial( - get_and_query, - ctx.user.id, - self.index_storage, - query, - response_mode, - nodes, - self.llm_predictor, - embedding_model, - child_branch_factor, - ), - ) + response = await get_and_query(ctx.user.id, self.index_storage, query, response_mode, nodes, self.llm_predictor, embedding_model, child_branch_factor) print("The last token usage was ", self.llm_predictor.last_token_usage) await self.usage_service.update_usage( self.llm_predictor.last_token_usage, chatgpt=True diff --git a/models/search_model.py b/models/search_model.py index f21df3d..5f3f77c 100644 --- a/models/search_model.py +++ b/models/search_model.py @@ -455,36 +455,9 @@ class Search: embedding_model.last_token_usage = 0 if not deep: - response = await self.loop.run_in_executor( - None, - partial( - index.query, - query, - embed_model=embedding_model, - llm_predictor=llm_predictor, - refine_template=CHAT_REFINE_PROMPT, - similarity_top_k=nodes or DEFAULT_SEARCH_NODES, - text_qa_template=self.qaprompt, - use_async=True, - response_mode=response_mode, - ), - ) + response = await index.aquery(query, embed_model=embedding_model, llm_predictor=llm_predictor, refine_template=CHAT_REFINE_PROMPT, similarity_top_k=nodes or DEFAULT_SEARCH_NODES, text_qa_template=self.qaprompt, response_mode=response_mode) else: - response = await self.loop.run_in_executor( - None, - partial( - index.query, - query, - embedding_mode="hybrid", - llm_predictor=llm_predictor, - refine_template=CHAT_REFINE_PROMPT, - include_text=True, - embed_model=embedding_model, - use_async=True, - similarity_top_k=nodes or DEFAULT_SEARCH_NODES, - response_mode=response_mode, - ), - ) + response = await index.aquery(query, embed_model=embedding_model, llm_predictor=llm_predictor, refine_template=CHAT_REFINE_PROMPT, similarity_top_k=nodes or DEFAULT_SEARCH_NODES, text_qa_template=self.qaprompt, response_mode=response_mode) await self.usage_service.update_usage( llm_predictor.last_token_usage, chatgpt=True diff --git a/pyproject.toml b/pyproject.toml index 7b40f81..cddb1d9 100644 --- a/pyproject.toml +++ b/pyproject.toml @@ -32,7 +32,7 @@ dependencies = [ "sqlitedict==2.1.0", "backoff==2.2.1", "flask==2.2.3", -"llama-index==0.4.23", +"llama-index==0.4.26", "PyPDF2==3.0.1", "youtube_transcript_api==0.5.0", "sentencepiece==0.1.97", diff --git a/requirements.txt b/requirements.txt index ade1dee..4efca5b 100644 --- a/requirements.txt +++ b/requirements.txt @@ -12,7 +12,7 @@ pinecone-client==2.1.0 sqlitedict==2.1.0 backoff==2.2.1 flask==2.2.3 -llama-index==0.4.23 +llama-index==0.4.26 PyPDF2==3.0.1 youtube_transcript_api==0.5.0 sentencepiece==0.1.97 diff --git a/requirements_base.txt b/requirements_base.txt index 69539da..0c43e1c 100644 --- a/requirements_base.txt +++ b/requirements_base.txt @@ -12,7 +12,7 @@ pinecone-client==2.1.0 sqlitedict==2.1.0 backoff==2.2.1 flask==2.2.3 -llama-index==0.4.23 +llama-index==0.4.26 PyPDF2==3.0.1 youtube_transcript_api==0.5.0 sentencepiece==0.1.97 From 7ba0254e8785b8ebfacd76edb6479eaf5de80f3b Mon Sep 17 00:00:00 2001 From: github-actions <${GITHUB_ACTOR}@users.noreply.github.com> Date: Sun, 12 Mar 2023 02:51:03 +0000 Subject: [PATCH 3/3] Format Python code with psf/black push --- models/index_model.py | 15 ++++++++++++--- models/search_model.py | 20 ++++++++++++++++++-- 2 files changed, 30 insertions(+), 5 deletions(-) diff --git a/models/index_model.py b/models/index_model.py index 5345952..5e7965b 100644 --- a/models/index_model.py +++ b/models/index_model.py @@ -76,7 +76,7 @@ async def get_and_query( llm_predictor=llm_predictor, refine_template=CHAT_REFINE_PROMPT, embed_model=embed_model, - #optimizer=SentenceEmbeddingOptimizer(threshold_cutoff=0.7) + # optimizer=SentenceEmbeddingOptimizer(threshold_cutoff=0.7) ) else: response = await index.aquery( @@ -86,7 +86,7 @@ async def get_and_query( embed_model=embed_model, similarity_top_k=nodes, refine_template=CHAT_REFINE_PROMPT, - #optimizer=SentenceEmbeddingOptimizer(threshold_cutoff=0.7) + # optimizer=SentenceEmbeddingOptimizer(threshold_cutoff=0.7) ) return response @@ -922,7 +922,16 @@ class Index_handler: try: embedding_model = OpenAIEmbedding() embedding_model.last_token_usage = 0 - response = await get_and_query(ctx.user.id, self.index_storage, query, response_mode, nodes, self.llm_predictor, embedding_model, child_branch_factor) + response = await get_and_query( + ctx.user.id, + self.index_storage, + query, + response_mode, + nodes, + self.llm_predictor, + embedding_model, + child_branch_factor, + ) print("The last token usage was ", self.llm_predictor.last_token_usage) await self.usage_service.update_usage( self.llm_predictor.last_token_usage, chatgpt=True diff --git a/models/search_model.py b/models/search_model.py index 5f3f77c..031d53a 100644 --- a/models/search_model.py +++ b/models/search_model.py @@ -455,9 +455,25 @@ class Search: embedding_model.last_token_usage = 0 if not deep: - response = await index.aquery(query, embed_model=embedding_model, llm_predictor=llm_predictor, refine_template=CHAT_REFINE_PROMPT, similarity_top_k=nodes or DEFAULT_SEARCH_NODES, text_qa_template=self.qaprompt, response_mode=response_mode) + response = await index.aquery( + query, + embed_model=embedding_model, + llm_predictor=llm_predictor, + refine_template=CHAT_REFINE_PROMPT, + similarity_top_k=nodes or DEFAULT_SEARCH_NODES, + text_qa_template=self.qaprompt, + response_mode=response_mode, + ) else: - response = await index.aquery(query, embed_model=embedding_model, llm_predictor=llm_predictor, refine_template=CHAT_REFINE_PROMPT, similarity_top_k=nodes or DEFAULT_SEARCH_NODES, text_qa_template=self.qaprompt, response_mode=response_mode) + response = await index.aquery( + query, + embed_model=embedding_model, + llm_predictor=llm_predictor, + refine_template=CHAT_REFINE_PROMPT, + similarity_top_k=nodes or DEFAULT_SEARCH_NODES, + text_qa_template=self.qaprompt, + response_mode=response_mode, + ) await self.usage_service.update_usage( llm_predictor.last_token_usage, chatgpt=True