Spaces:
Running
on
Zero
Running
on
Zero
jedick
commited on
Commit
·
c70eaca
1
Parent(s):
32c7e5a
Pin torch version
Browse files
app.py
CHANGED
|
@@ -3,7 +3,7 @@ from main import GetChatModel
|
|
| 3 |
from graph import BuildGraph
|
| 4 |
from retriever import db_dir
|
| 5 |
from langgraph.checkpoint.memory import MemorySaver
|
| 6 |
-
|
| 7 |
from main import openai_model, model_id
|
| 8 |
from util import get_sources, get_start_end_months
|
| 9 |
import zipfile
|
|
@@ -15,6 +15,9 @@ import uuid
|
|
| 15 |
import ast
|
| 16 |
import os
|
| 17 |
|
|
|
|
|
|
|
|
|
|
| 18 |
# Global settings for compute_mode and search_type
|
| 19 |
COMPUTE = "local"
|
| 20 |
search_type = "hybrid"
|
|
@@ -224,20 +227,6 @@ with gr.Blocks(
|
|
| 224 |
css=css,
|
| 225 |
) as demo:
|
| 226 |
|
| 227 |
-
# -----------------
|
| 228 |
-
# Data availability
|
| 229 |
-
# -----------------
|
| 230 |
-
|
| 231 |
-
def is_data_present():
|
| 232 |
-
"""Check if the database directory is present"""
|
| 233 |
-
|
| 234 |
-
return os.path.isdir(db_dir)
|
| 235 |
-
|
| 236 |
-
def is_data_missing():
|
| 237 |
-
"""Check if the database directory is missing"""
|
| 238 |
-
|
| 239 |
-
return not os.path.isdir(db_dir)
|
| 240 |
-
|
| 241 |
# -----------------
|
| 242 |
# Define components
|
| 243 |
# -----------------
|
|
@@ -256,7 +245,7 @@ with gr.Blocks(
|
|
| 256 |
downloading = gr.Textbox(
|
| 257 |
lines=1,
|
| 258 |
label="Downloading Data, Please Wait",
|
| 259 |
-
visible=
|
| 260 |
render=False,
|
| 261 |
)
|
| 262 |
extracting = gr.Textbox(
|
|
@@ -392,7 +381,7 @@ with gr.Blocks(
|
|
| 392 |
intro = gr.Markdown(get_intro_text())
|
| 393 |
with gr.Column(scale=1):
|
| 394 |
compute_mode.render()
|
| 395 |
-
with gr.Group(visible=
|
| 396 |
chatbot.render()
|
| 397 |
input.render()
|
| 398 |
# Render textboxes for data loading progress
|
|
@@ -627,23 +616,33 @@ with gr.Blocks(
|
|
| 627 |
|
| 628 |
return None
|
| 629 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 630 |
false = gr.State(False)
|
| 631 |
need_data = gr.State()
|
| 632 |
have_data = gr.State()
|
| 633 |
|
| 634 |
-
# When app is launched
|
| 635 |
-
#
|
| 636 |
-
#
|
| 637 |
-
# nb. initial visibility of chat interface components and
|
| 638 |
-
# downloading textbox are set after instantiation of ChatInterface above
|
| 639 |
|
| 640 |
# fmt: off
|
| 641 |
demo.load(
|
|
|
|
|
|
|
|
|
|
|
|
|
| 642 |
download, None, [downloading], api_name=False
|
| 643 |
).then(
|
| 644 |
change_visibility, [false], [downloading], api_name=False
|
| 645 |
-
).then(
|
| 646 |
-
is_data_missing, None, [need_data], api_name=False
|
| 647 |
).then(
|
| 648 |
change_visibility, [need_data], [extracting], api_name=False
|
| 649 |
).then(
|
|
|
|
| 3 |
from graph import BuildGraph
|
| 4 |
from retriever import db_dir
|
| 5 |
from langgraph.checkpoint.memory import MemorySaver
|
| 6 |
+
from dotenv import load_dotenv
|
| 7 |
from main import openai_model, model_id
|
| 8 |
from util import get_sources, get_start_end_months
|
| 9 |
import zipfile
|
|
|
|
| 15 |
import ast
|
| 16 |
import os
|
| 17 |
|
| 18 |
+
# Setup environment variables
|
| 19 |
+
load_dotenv(dotenv_path=".env", override=True)
|
| 20 |
+
|
| 21 |
# Global settings for compute_mode and search_type
|
| 22 |
COMPUTE = "local"
|
| 23 |
search_type = "hybrid"
|
|
|
|
| 227 |
css=css,
|
| 228 |
) as demo:
|
| 229 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 230 |
# -----------------
|
| 231 |
# Define components
|
| 232 |
# -----------------
|
|
|
|
| 245 |
downloading = gr.Textbox(
|
| 246 |
lines=1,
|
| 247 |
label="Downloading Data, Please Wait",
|
| 248 |
+
visible=False,
|
| 249 |
render=False,
|
| 250 |
)
|
| 251 |
extracting = gr.Textbox(
|
|
|
|
| 381 |
intro = gr.Markdown(get_intro_text())
|
| 382 |
with gr.Column(scale=1):
|
| 383 |
compute_mode.render()
|
| 384 |
+
with gr.Group(visible=False) as chat_interface:
|
| 385 |
chatbot.render()
|
| 386 |
input.render()
|
| 387 |
# Render textboxes for data loading progress
|
|
|
|
| 616 |
|
| 617 |
return None
|
| 618 |
|
| 619 |
+
def is_data_present():
|
| 620 |
+
"""Check if the database directory is present"""
|
| 621 |
+
|
| 622 |
+
return os.path.isdir(db_dir)
|
| 623 |
+
|
| 624 |
+
def is_data_missing():
|
| 625 |
+
"""Check if the database directory is missing"""
|
| 626 |
+
|
| 627 |
+
return not os.path.isdir(db_dir)
|
| 628 |
+
|
| 629 |
false = gr.State(False)
|
| 630 |
need_data = gr.State()
|
| 631 |
have_data = gr.State()
|
| 632 |
|
| 633 |
+
# When app is launched: check if data is present, download and extract it
|
| 634 |
+
# if necessary, make chat interface visible, update database info, and show
|
| 635 |
+
# error textbox if data loading failed.
|
|
|
|
|
|
|
| 636 |
|
| 637 |
# fmt: off
|
| 638 |
demo.load(
|
| 639 |
+
is_data_missing, None, [need_data], api_name=False
|
| 640 |
+
).then(
|
| 641 |
+
change_visibility, [need_data], [downloading], api_name=False
|
| 642 |
+
).then(
|
| 643 |
download, None, [downloading], api_name=False
|
| 644 |
).then(
|
| 645 |
change_visibility, [false], [downloading], api_name=False
|
|
|
|
|
|
|
| 646 |
).then(
|
| 647 |
change_visibility, [need_data], [extracting], api_name=False
|
| 648 |
).then(
|
graph.py
CHANGED
|
@@ -4,7 +4,6 @@ from langchain_core.tools import tool
|
|
| 4 |
from langgraph.prebuilt import ToolNode, tools_condition
|
| 5 |
from langchain_huggingface import ChatHuggingFace
|
| 6 |
from typing import Optional
|
| 7 |
-
from dotenv import load_dotenv
|
| 8 |
import datetime
|
| 9 |
import os
|
| 10 |
|
|
@@ -16,8 +15,7 @@ from mods.tool_calling_llm import ToolCallingLLM
|
|
| 16 |
# Local modules
|
| 17 |
from retriever import BuildRetriever
|
| 18 |
|
| 19 |
-
|
| 20 |
-
# load_dotenv(dotenv_path=".env", override=True)
|
| 21 |
# os.environ["LANGSMITH_TRACING"] = "true"
|
| 22 |
# os.environ["LANGSMITH_PROJECT"] = "R-help-chat"
|
| 23 |
|
|
|
|
| 4 |
from langgraph.prebuilt import ToolNode, tools_condition
|
| 5 |
from langchain_huggingface import ChatHuggingFace
|
| 6 |
from typing import Optional
|
|
|
|
| 7 |
import datetime
|
| 8 |
import os
|
| 9 |
|
|
|
|
| 15 |
# Local modules
|
| 16 |
from retriever import BuildRetriever
|
| 17 |
|
| 18 |
+
# For tracing (disabled)
|
|
|
|
| 19 |
# os.environ["LANGSMITH_TRACING"] = "true"
|
| 20 |
# os.environ["LANGSMITH_PROJECT"] = "R-help-chat"
|
| 21 |
|
main.py
CHANGED
|
@@ -6,6 +6,7 @@ from langgraph.checkpoint.memory import MemorySaver
|
|
| 6 |
from langchain_core.messages import ToolMessage
|
| 7 |
from transformers import AutoModelForCausalLM, AutoTokenizer, pipeline
|
| 8 |
from datetime import datetime
|
|
|
|
| 9 |
import os
|
| 10 |
import glob
|
| 11 |
import torch
|
|
@@ -29,6 +30,9 @@ from prompts import answer_prompt
|
|
| 29 |
# -----------
|
| 30 |
# First version by Jeffrey Dick on 2025-06-29
|
| 31 |
|
|
|
|
|
|
|
|
|
|
| 32 |
# Define the remote (OpenAI) model
|
| 33 |
openai_model = "gpt-4o-mini"
|
| 34 |
|
|
|
|
| 6 |
from langchain_core.messages import ToolMessage
|
| 7 |
from transformers import AutoModelForCausalLM, AutoTokenizer, pipeline
|
| 8 |
from datetime import datetime
|
| 9 |
+
from dotenv import load_dotenv
|
| 10 |
import os
|
| 11 |
import glob
|
| 12 |
import torch
|
|
|
|
| 30 |
# -----------
|
| 31 |
# First version by Jeffrey Dick on 2025-06-29
|
| 32 |
|
| 33 |
+
# Setup environment variables
|
| 34 |
+
load_dotenv(dotenv_path=".env", override=True)
|
| 35 |
+
|
| 36 |
# Define the remote (OpenAI) model
|
| 37 |
openai_model = "gpt-4o-mini"
|
| 38 |
|
requirements.txt
CHANGED
|
@@ -7,18 +7,20 @@ langgraph>=0.4.7,<0.6
|
|
| 7 |
sentence-transformers>=4.1.0
|
| 8 |
# Required by Nomic embeddings
|
| 9 |
einops==0.8.1
|
| 10 |
-
|
| 11 |
-
#
|
| 12 |
-
#
|
| 13 |
-
#
|
|
|
|
|
|
|
| 14 |
transformers==4.53.3
|
| 15 |
# Commented because we have local modifications
|
| 16 |
#tool-calling-llm==0.1.2
|
| 17 |
bm25s==0.2.12
|
| 18 |
ragas==0.2.15
|
| 19 |
-
#
|
| 20 |
# https://github.com/vanna-ai/vanna/issues/917
|
| 21 |
-
posthog
|
| 22 |
# Gradio for the web interface
|
| 23 |
gradio==5.38.2
|
| 24 |
spaces==0.37.1
|
|
|
|
| 7 |
sentence-transformers>=4.1.0
|
| 8 |
# Required by Nomic embeddings
|
| 9 |
einops==0.8.1
|
| 10 |
+
torch==2.7.1
|
| 11 |
+
# Stated requirements:
|
| 12 |
+
# SmolLM3: transformers>=4.53
|
| 13 |
+
# Gemma 3: transformers>=4.50
|
| 14 |
+
# Gemma 3 with transformers==4.54.0 gives:
|
| 15 |
+
# ValueError: Max cache length is not consistent across layers
|
| 16 |
transformers==4.53.3
|
| 17 |
# Commented because we have local modifications
|
| 18 |
#tool-calling-llm==0.1.2
|
| 19 |
bm25s==0.2.12
|
| 20 |
ragas==0.2.15
|
| 21 |
+
# posthog<6.0.0 is temporary fix for ChromaDB telemetry error log messages
|
| 22 |
# https://github.com/vanna-ai/vanna/issues/917
|
| 23 |
+
posthog==5.4.0
|
| 24 |
# Gradio for the web interface
|
| 25 |
gradio==5.38.2
|
| 26 |
spaces==0.37.1
|