cboettig commited on
Commit
14d83f7
Β·
1 Parent(s): df3be67
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 = st.secrets["LITELLM_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 doc_loader(url):
18
  loader = PyPDFLoader(url)
19
  return loader.load()
20
-
21
- docs = doc_loader(url)
 
22
 
23
  # Set up the language model
24
  from langchain_openai import ChatOpenAI
25
- llm = ChatOpenAI(model = "llama3", api_key=st.secrets["LITELLM_KEY"], base_url = "https://llm.nrp-nautilus.io", temperature=0)
26
 
27
  # Set up the embedding model
28
  from langchain_openai import OpenAIEmbeddings
29
  embedding = OpenAIEmbeddings(
30
  model = "embed-mistral",
31
- api_key=st.secrets["LITELLM_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=st.secrets["LITELLM_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