JeanCGuerrero commited on
Commit
108508b
verified
1 Parent(s): 4a192e4

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +53 -0
app.py ADDED
@@ -0,0 +1,53 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ from langchain_community.vectorstores import Chroma
2
+ from langchain_huggingface import HuggingFaceEmbeddings
3
+ from langchain_community.chat_models import ChatOpenAI
4
+ from langchain_core.output_parsers import StrOutputParser
5
+ from langchain import hub
6
+ import gradio as gr
7
+ import os
8
+
9
+ # Configurar tu clave de OpenAI (puedes usar otra fuente Hugging Face si prefieres)
10
+ openai_api_key = os.environ.get("OPENAI_API_KEY", "")
11
+
12
+ # Modelo remoto (si prefieres usar otro, aqu铆 se cambia)
13
+ llm = ChatOpenAI(openai_api_key=openai_api_key, model="gpt-3.5-turbo", temperature=0)
14
+ parser = StrOutputParser()
15
+
16
+ # Cargar embeddings (debe ser el mismo modelo que usaste en Colab)
17
+ embedding_function = HuggingFaceEmbeddings(
18
+ model_name="sentence-transformers/paraphrase-multilingual-mpnet-base-v2",
19
+ model_kwargs={"device": "cpu"}
20
+ )
21
+
22
+ # Cargar vectorstore persistente
23
+ vectordb = Chroma(
24
+ persist_directory="chroma_db",
25
+ embedding_function=embedding_function
26
+ )
27
+
28
+ # Funci贸n RAG
29
+ def responder_pregunta(query):
30
+ docs = vectordb.similarity_search_with_score(query, k=5)
31
+ prompt = hub.pull("rlm/rag-prompt")
32
+ rag_chain = prompt | llm | parser
33
+
34
+ context = []
35
+ for doc, score in docs:
36
+ if score < 7:
37
+ context.append(doc.page_content)
38
+
39
+ if context:
40
+ context_text = "\n".join(context)
41
+ result = rag_chain.invoke({"context": context_text, "question": query})
42
+ return result
43
+ else:
44
+ return "No tengo informaci贸n suficiente para responder a esta pregunta."
45
+
46
+ # Interfaz Gradio
47
+ gr.Interface(
48
+ fn=responder_pregunta,
49
+ inputs=gr.Textbox(label="Pregunta sobre nutrici贸n"),
50
+ outputs="text",
51
+ title="Sistema de Preguntas sobre Nutrici贸n",
52
+ description="Pregunta sobre el contenido del manual cl铆nico. Basado en RAG con LangChain y Hugging Face."
53
+ ).launch()