orlandoVergara/Rag_asistente
0
1import os2import streamlit as st # <--- IMPORTANTE: Agregamos esto3from langchain_google_genai import GoogleGenerativeAIEmbeddings, ChatGoogleGenerativeAI4from langchain_chroma import Chroma5from dotenv import load_dotenv6 7# Intentar cargar .env (para cuando estás en local)8load_dotenv()9 10def get_api_key():11 """Obtiene la API Key de manera robusta (Entorno o Streamlit Secrets)."""12 13 # 1. Intentar leer de variable de entorno (Sistema operativo / Hugging Face Secrets)14 api_key = os.getenv("GOOGLE_API_KEY")15 16 # 2. Si falla, intentar leer de los secretos nativos de Streamlit17 if not api_key:18 try:19 api_key = st.secrets["GOOGLE_API_KEY"]20 except:21 pass22 23 # 3. Si sigue sin haber llave, lanzamos el error24 if not api_key:25 raise ValueError("CRÍTICO: No se encontró GOOGLE_API_KEY. Revisa los Secrets en Hugging Face Settings.")26 27 return api_key28 29def get_embedding_model():30 api_key = get_api_key()31 return GoogleGenerativeAIEmbeddings(32 model="models/text-embedding-004",33 google_api_key=api_key34 )35 36def load_vectorstore(chroma_path):37 if not os.path.exists(chroma_path):38 return None39 40 try:41 embeddings = get_embedding_model()42 vectorstore = Chroma(43 persist_directory=chroma_path,44 embedding_function=embeddings45 )46 return vectorstore47 except Exception as e:48 print(f"Error cargando vectorstore: {e}")49 return None50 51def get_llm_model():52 api_key = get_api_key()53 llm = ChatGoogleGenerativeAI(54 model="gemini-2.5-flash",55 temperature=0.3,56 convert_system_message_to_human=True,57 google_api_key=api_key58 )59 return llm