Update app.py
Browse files
app.py
CHANGED
|
@@ -68,14 +68,22 @@ def update_feedback_in_firestore(session_id, conversation_id, feedback):
|
|
| 68 |
conv_doc.update({"feedback": feedback})
|
| 69 |
|
| 70 |
class Config:
|
| 71 |
-
CHUNK_WORDS =
|
| 72 |
-
|
|
|
|
|
|
|
|
|
|
| 73 |
TOP_N = 5
|
| 74 |
SYSTEM_PROMPT = (
|
| 75 |
"You are a helpful assistant. Answer the question using the provided context below. "
|
| 76 |
"Answer based on your knowledge if the context given is not enough."
|
| 77 |
)
|
| 78 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 79 |
|
| 80 |
API_KEY = os.getenv("GOOGLE_API_KEY")
|
| 81 |
if not API_KEY:
|
|
@@ -98,19 +106,20 @@ def generate_embedding_cached(text: str) -> list:
|
|
| 98 |
if "embedding" not in response or not response["embedding"]:
|
| 99 |
logger.error("No embedding returned from API.")
|
| 100 |
st.error("No embedding returned. Please verify your API settings and input text.")
|
| 101 |
-
|
|
|
|
| 102 |
embedding = np.array(response["embedding"])
|
| 103 |
if embedding.ndim == 2:
|
| 104 |
embedding = embedding.flatten()
|
| 105 |
elif embedding.ndim > 2:
|
| 106 |
logger.error("Embedding has more than 2 dimensions.")
|
| 107 |
st.error("Invalid embedding dimensions. Please check the API response.")
|
| 108 |
-
return [0.0] *
|
| 109 |
return embedding.tolist()
|
| 110 |
except Exception as e:
|
| 111 |
logger.error("Embedding generation failed: %s", e)
|
| 112 |
st.error(f"Embedding generation failed: {e}")
|
| 113 |
-
return [0.0] *
|
| 114 |
|
| 115 |
def generate_embedding(text: str) -> np.ndarray:
|
| 116 |
embedding_list = generate_embedding_cached(text)
|
|
|
|
| 68 |
conv_doc.update({"feedback": feedback})
|
| 69 |
|
| 70 |
class Config:
|
| 71 |
+
CHUNK_WORDS = 3000
|
| 72 |
+
# Use the unified Gemini text embedding model recommended in the docs:
|
| 73 |
+
# https://docs.cloud.google.com/vertex-ai/generative-ai/docs/embeddings/get-text-embeddings
|
| 74 |
+
# This model produces up to 3072-dimensional vectors.
|
| 75 |
+
EMBEDDING_MODEL = "models/gemini-embedding-001"
|
| 76 |
TOP_N = 5
|
| 77 |
SYSTEM_PROMPT = (
|
| 78 |
"You are a helpful assistant. Answer the question using the provided context below. "
|
| 79 |
"Answer based on your knowledge if the context given is not enough."
|
| 80 |
)
|
| 81 |
+
# Use a text-generation model that is available on the v1beta Generative Language API.
|
| 82 |
+
# If you want to confirm available models, run:
|
| 83 |
+
# import google.generativeai as genai
|
| 84 |
+
# for m in genai.list_models():
|
| 85 |
+
# if "generateContent" in m.supported_generation_methods: print(m.name)
|
| 86 |
+
GENERATION_MODEL = "gemini-2.5-flash"
|
| 87 |
|
| 88 |
API_KEY = os.getenv("GOOGLE_API_KEY")
|
| 89 |
if not API_KEY:
|
|
|
|
| 106 |
if "embedding" not in response or not response["embedding"]:
|
| 107 |
logger.error("No embedding returned from API.")
|
| 108 |
st.error("No embedding returned. Please verify your API settings and input text.")
|
| 109 |
+
# Fallback vector size should roughly match gemini-embedding-001 (3072 dims).
|
| 110 |
+
return [0.0] * 3072
|
| 111 |
embedding = np.array(response["embedding"])
|
| 112 |
if embedding.ndim == 2:
|
| 113 |
embedding = embedding.flatten()
|
| 114 |
elif embedding.ndim > 2:
|
| 115 |
logger.error("Embedding has more than 2 dimensions.")
|
| 116 |
st.error("Invalid embedding dimensions. Please check the API response.")
|
| 117 |
+
return [0.0] * 3072
|
| 118 |
return embedding.tolist()
|
| 119 |
except Exception as e:
|
| 120 |
logger.error("Embedding generation failed: %s", e)
|
| 121 |
st.error(f"Embedding generation failed: {e}")
|
| 122 |
+
return [0.0] * 3072
|
| 123 |
|
| 124 |
def generate_embedding(text: str) -> np.ndarray:
|
| 125 |
embedding_list = generate_embedding_cached(text)
|