Spaces:
Sleeping
Sleeping
Update app.py
Browse files
app.py
CHANGED
@@ -1,6 +1,8 @@
|
|
1 |
import streamlit as st
|
2 |
from PyPDF2 import PdfReader
|
3 |
from io import BytesIO
|
|
|
|
|
4 |
from langchain.text_splitter import RecursiveCharacterTextSplitter
|
5 |
from langchain_google_genai import GoogleGenerativeAIEmbeddings
|
6 |
from langchain_community.vectorstores import FAISS
|
@@ -8,17 +10,8 @@ from langchain_google_genai import ChatGoogleGenerativeAI
|
|
8 |
from langchain.chains.question_answering import load_qa_chain
|
9 |
from langchain.prompts import PromptTemplate
|
10 |
|
11 |
-
#
|
12 |
-
|
13 |
-
"AIzaSyBYbyC4qCJoKxKR-r0oIn4SVqj4CfSdx4s",
|
14 |
-
"AIzaSyBfvYURYVijTurxvFUyV3vZkCojpOAAnFk"
|
15 |
-
]
|
16 |
-
current_key_index = -1
|
17 |
-
|
18 |
-
def switch_api_key():
|
19 |
-
global current_key_index
|
20 |
-
current_key_index = (current_key_index + 1) % len(API_KEYS)
|
21 |
-
return API_KEYS[current_key_index]
|
22 |
|
23 |
def get_pdf_text(pdf_docs):
|
24 |
text = ""
|
@@ -67,21 +60,28 @@ def main():
|
|
67 |
st.header("Retrieval-Augmented Generation - Gemini 2.0")
|
68 |
st.markdown("---")
|
69 |
|
70 |
-
# STEP 1:
|
71 |
if "api_entered" not in st.session_state:
|
72 |
st.session_state["api_entered"] = False
|
73 |
if "pdf_processed" not in st.session_state:
|
74 |
st.session_state["pdf_processed"] = False
|
75 |
|
|
|
|
|
76 |
if not st.session_state["api_entered"]:
|
77 |
-
|
78 |
-
|
79 |
-
st.
|
|
|
|
|
|
|
|
|
|
|
|
|
80 |
st.session_state["api_entered"] = True
|
81 |
st.experimental_rerun()
|
82 |
-
st.stop()
|
83 |
|
84 |
-
api_key = st.session_state.get("user_api_key",
|
85 |
|
86 |
# STEP 2: Upload PDF(s)
|
87 |
if not st.session_state["pdf_processed"]:
|
|
|
1 |
import streamlit as st
|
2 |
from PyPDF2 import PdfReader
|
3 |
from io import BytesIO
|
4 |
+
import os
|
5 |
+
|
6 |
from langchain.text_splitter import RecursiveCharacterTextSplitter
|
7 |
from langchain_google_genai import GoogleGenerativeAIEmbeddings
|
8 |
from langchain_community.vectorstores import FAISS
|
|
|
10 |
from langchain.chains.question_answering import load_qa_chain
|
11 |
from langchain.prompts import PromptTemplate
|
12 |
|
13 |
+
# --- Get API key from environment variable (set in Hugging Face Secrets or .env file) ---
|
14 |
+
GOOGLE_API_KEY = os.environ.get("GOOGLE_API_KEY", "")
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
15 |
|
16 |
def get_pdf_text(pdf_docs):
|
17 |
text = ""
|
|
|
60 |
st.header("Retrieval-Augmented Generation - Gemini 2.0")
|
61 |
st.markdown("---")
|
62 |
|
63 |
+
# STEP 1: Use API key from env or ask user
|
64 |
if "api_entered" not in st.session_state:
|
65 |
st.session_state["api_entered"] = False
|
66 |
if "pdf_processed" not in st.session_state:
|
67 |
st.session_state["pdf_processed"] = False
|
68 |
|
69 |
+
api_key = GOOGLE_API_KEY
|
70 |
+
|
71 |
if not st.session_state["api_entered"]:
|
72 |
+
if not api_key:
|
73 |
+
user_api_key = st.text_input("Enter your Gemini API key", type="password")
|
74 |
+
if st.button("Continue") and user_api_key:
|
75 |
+
st.session_state["user_api_key"] = user_api_key
|
76 |
+
st.session_state["api_entered"] = True
|
77 |
+
st.experimental_rerun()
|
78 |
+
st.stop()
|
79 |
+
else:
|
80 |
+
st.session_state["user_api_key"] = api_key
|
81 |
st.session_state["api_entered"] = True
|
82 |
st.experimental_rerun()
|
|
|
83 |
|
84 |
+
api_key = st.session_state.get("user_api_key", "")
|
85 |
|
86 |
# STEP 2: Upload PDF(s)
|
87 |
if not st.session_state["pdf_processed"]:
|