Spaces:
Running
Running
update
Browse files- app.py +9 -0
- chat.py β pages/chat.py +7 -2
- rag.py β pages/rag.py +24 -18
- sql.py β pages/sql.py +8 -1
app.py
CHANGED
@@ -1,3 +1,12 @@
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
1 |
import streamlit as st
|
2 |
import leafmap.maplibregl as leafmap
|
3 |
import ibis
|
|
|
1 |
+
import streamlit as st
|
2 |
+
|
3 |
+
st.set_page_config(
|
4 |
+
page_title="Streamlit demos",
|
5 |
+
)
|
6 |
+
|
7 |
+
st.sidebar.success("Select a demo above.")
|
8 |
+
|
9 |
+
|
10 |
import streamlit as st
|
11 |
import leafmap.maplibregl as leafmap
|
12 |
import ibis
|
chat.py β pages/chat.py
RENAMED
@@ -7,7 +7,12 @@ with st.sidebar:
|
|
7 |
model = st.radio("Select an LLM:", ['llava', 'gemma2', 'phi3', 'llama3', 'embed-mistral', 'mixtral', 'gorilla', 'groq-tools'])
|
8 |
st.session_state["model"] = model
|
9 |
|
10 |
-
|
|
|
|
|
|
|
|
|
|
|
11 |
|
12 |
if "messages" not in st.session_state:
|
13 |
st.session_state.messages = []
|
@@ -17,7 +22,7 @@ for message in st.session_state.messages:
|
|
17 |
st.markdown(message["content"])
|
18 |
|
19 |
client = OpenAI(
|
20 |
-
api_key =
|
21 |
base_url = "https://llm.nrp-nautilus.io"
|
22 |
)
|
23 |
|
|
|
7 |
model = st.radio("Select an LLM:", ['llava', 'gemma2', 'phi3', 'llama3', 'embed-mistral', 'mixtral', 'gorilla', 'groq-tools'])
|
8 |
st.session_state["model"] = model
|
9 |
|
10 |
+
## dockerized streamlit app wants to read from os.getenv(), otherwise use st.secrets
|
11 |
+
import os
|
12 |
+
api_key = os.getenv("LITELLM_KEY")
|
13 |
+
if api_key is None:
|
14 |
+
api_key = st.secrets["LITELLM_KEY"]
|
15 |
+
|
16 |
|
17 |
if "messages" not in st.session_state:
|
18 |
st.session_state.messages = []
|
|
|
22 |
st.markdown(message["content"])
|
23 |
|
24 |
client = OpenAI(
|
25 |
+
api_key = api_key,
|
26 |
base_url = "https://llm.nrp-nautilus.io"
|
27 |
)
|
28 |
|
rag.py β pages/rag.py
RENAMED
@@ -1,6 +1,13 @@
|
|
1 |
import streamlit as st
|
2 |
from langchain_community.document_loaders import PyPDFLoader
|
3 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
4 |
st.title("RAG Demo")
|
5 |
|
6 |
|
@@ -13,22 +20,34 @@ Once the document has been uploaded and parsed, ask your questions in the chat d
|
|
13 |
# st.sidebar.file_uploader("Choose a PDF file", type=["pdf"])
|
14 |
url = st.text_input("PDF URL", "https://www.resources.ca.gov/-/media/CNRA-Website/Files/2024_30x30_Pathways_Progress_Report.pdf")
|
15 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
16 |
@st.cache_data
|
17 |
-
def
|
18 |
loader = PyPDFLoader(url)
|
19 |
return loader.load()
|
20 |
-
|
21 |
-
docs =
|
|
|
22 |
|
23 |
# Set up the language model
|
24 |
from langchain_openai import ChatOpenAI
|
25 |
-
llm = ChatOpenAI(model = "llama3", api_key=
|
26 |
|
27 |
# Set up the embedding model
|
28 |
from langchain_openai import OpenAIEmbeddings
|
29 |
embedding = OpenAIEmbeddings(
|
30 |
model = "embed-mistral",
|
31 |
-
api_key=
|
32 |
base_url = "https://llm.nrp-nautilus.io"
|
33 |
)
|
34 |
|
@@ -61,19 +80,6 @@ prompt = ChatPromptTemplate.from_messages(
|
|
61 |
question_answer_chain = create_stuff_documents_chain(llm, prompt)
|
62 |
rag_chain = create_retrieval_chain(retriever, question_answer_chain)
|
63 |
|
64 |
-
# +
|
65 |
-
# agent is ready to test:
|
66 |
-
|
67 |
-
#results = rag_chain.invoke({"input": "What is the goal of CA 30x30?"})
|
68 |
-
#results['answer']
|
69 |
-
#results['context'][0].page_content
|
70 |
-
#results['context'][0].metadata
|
71 |
-
|
72 |
-
# -
|
73 |
-
|
74 |
-
#results['context'][0].page_content
|
75 |
-
#results['context'][0].metadata
|
76 |
-
|
77 |
|
78 |
# Place agent inside a streamlit application:
|
79 |
|
|
|
1 |
import streamlit as st
|
2 |
from langchain_community.document_loaders import PyPDFLoader
|
3 |
|
4 |
+
## dockerized streamlit app wants to read from os.getenv(), otherwise use st.secrets
|
5 |
+
import os
|
6 |
+
api_key = os.getenv("LITELLM_KEY")
|
7 |
+
if api_key is None:
|
8 |
+
api_key = st.secrets["LITELLM_KEY"]
|
9 |
+
|
10 |
+
|
11 |
st.title("RAG Demo")
|
12 |
|
13 |
|
|
|
20 |
# st.sidebar.file_uploader("Choose a PDF file", type=["pdf"])
|
21 |
url = st.text_input("PDF URL", "https://www.resources.ca.gov/-/media/CNRA-Website/Files/2024_30x30_Pathways_Progress_Report.pdf")
|
22 |
|
23 |
+
# +
|
24 |
+
import bs4
|
25 |
+
from langchain import hub
|
26 |
+
from langchain_chroma import Chroma
|
27 |
+
from langchain_community.document_loaders import WebBaseLoader
|
28 |
+
from langchain_core.output_parsers import StrOutputParser
|
29 |
+
from langchain_core.runnables import RunnablePassthrough
|
30 |
+
from langchain_openai import OpenAIEmbeddings
|
31 |
+
from langchain_text_splitters import RecursiveCharacterTextSplitter
|
32 |
+
|
33 |
+
|
34 |
@st.cache_data
|
35 |
+
def pdf_loader(url):
|
36 |
loader = PyPDFLoader(url)
|
37 |
return loader.load()
|
38 |
+
|
39 |
+
docs = pdf_loader(url)
|
40 |
+
|
41 |
|
42 |
# Set up the language model
|
43 |
from langchain_openai import ChatOpenAI
|
44 |
+
llm = ChatOpenAI(model = "llama3", api_key = api_key, base_url = "https://llm.nrp-nautilus.io", temperature=0)
|
45 |
|
46 |
# Set up the embedding model
|
47 |
from langchain_openai import OpenAIEmbeddings
|
48 |
embedding = OpenAIEmbeddings(
|
49 |
model = "embed-mistral",
|
50 |
+
api_key = api_key,
|
51 |
base_url = "https://llm.nrp-nautilus.io"
|
52 |
)
|
53 |
|
|
|
80 |
question_answer_chain = create_stuff_documents_chain(llm, prompt)
|
81 |
rag_chain = create_retrieval_chain(retriever, question_answer_chain)
|
82 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
83 |
|
84 |
# Place agent inside a streamlit application:
|
85 |
|
sql.py β pages/sql.py
RENAMED
@@ -2,6 +2,13 @@ import streamlit as st
|
|
2 |
|
3 |
st.title("SQL demo")
|
4 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
5 |
parquet = st.text_input("parquet file:", "https://espm-157-f24.github.io/spatial-carl-amanda-tyler/new_haven_stats.parquet")
|
6 |
|
7 |
# create sharable low-level connection, see: https://github.com/Mause/duckdb_engine
|
@@ -43,7 +50,7 @@ prompt = PromptTemplate.from_template(template, partial_variables = {"dialect":
|
|
43 |
from langchain_openai import ChatOpenAI
|
44 |
llm = ChatOpenAI(model="gorilla", # Try: llama3, gorilla, or groq-tools, or other models
|
45 |
temperature=0,
|
46 |
-
api_key=
|
47 |
base_url = "https://llm.nrp-nautilus.io")
|
48 |
|
49 |
|
|
|
2 |
|
3 |
st.title("SQL demo")
|
4 |
|
5 |
+
## dockerized streamlit app wants to read from os.getenv(), otherwise use st.secrets
|
6 |
+
import os
|
7 |
+
api_key = os.getenv("LITELLM_KEY")
|
8 |
+
if api_key is None:
|
9 |
+
api_key = st.secrets["LITELLM_KEY"]
|
10 |
+
|
11 |
+
|
12 |
parquet = st.text_input("parquet file:", "https://espm-157-f24.github.io/spatial-carl-amanda-tyler/new_haven_stats.parquet")
|
13 |
|
14 |
# create sharable low-level connection, see: https://github.com/Mause/duckdb_engine
|
|
|
50 |
from langchain_openai import ChatOpenAI
|
51 |
llm = ChatOpenAI(model="gorilla", # Try: llama3, gorilla, or groq-tools, or other models
|
52 |
temperature=0,
|
53 |
+
api_key=api_key,
|
54 |
base_url = "https://llm.nrp-nautilus.io")
|
55 |
|
56 |
|