Spaces:
Sleeping
Sleeping
Update modelo.py
Browse files
modelo.py
CHANGED
|
@@ -7,8 +7,6 @@ from langchain_openai import ChatOpenAI
|
|
| 7 |
from langchain_community.vectorstores import FAISS
|
| 8 |
from langchain_community.document_loaders import HuggingFaceDatasetLoader
|
| 9 |
from langchain_community.embeddings import HuggingFaceEmbeddings
|
| 10 |
-
from dotenv import load_dotenv
|
| 11 |
-
load_dotenv()
|
| 12 |
|
| 13 |
def get_chain():
|
| 14 |
# agregada en la config de hugginface
|
|
@@ -26,16 +24,20 @@ def get_chain():
|
|
| 26 |
page_content_column = "respuestas"
|
| 27 |
loader = HuggingFaceDatasetLoader(dataset_name, page_content_column)
|
| 28 |
data = loader.load()
|
|
|
|
|
|
|
| 29 |
text_splitter = RecursiveCharacterTextSplitter(chunk_size=1000, chunk_overlap=150)
|
| 30 |
-
|
| 31 |
docs = text_splitter.split_documents(data)
|
| 32 |
-
|
| 33 |
#DB y retriever
|
| 34 |
db = FAISS.from_documents(docs, embeddings) # Create a retriever object from the 'db' with a search configuration where it retrieves up to 4 relevant splits/documents.
|
| 35 |
-
|
|
|
|
| 36 |
retriever = db.as_retriever(search_kwargs={"k": 3})
|
| 37 |
|
| 38 |
-
prompt_template =
|
|
|
|
|
|
|
| 39 |
1. Si la pregunta requiere vinculos, por favor retornar solamente las vinculos de los vinculos sin respuesta
|
| 40 |
2. Si no sabes la respuesta, no inventes una respuesta. Solamente di **No pude encontrar la respuesta definitiva, pero, tal vez quieras ver los siguientes vínculos** y agregalos a la lista de vínculos.
|
| 41 |
3. Si encuentras la respuesta, escribe una respuesta concisa y agrega la lista de víinculos relevantes para derivar la respuesta.
|
|
@@ -44,24 +46,26 @@ def get_chain():
|
|
| 44 |
|
| 45 |
Pregunta: {question}
|
| 46 |
Respuesta Util:"""
|
|
|
|
| 47 |
|
| 48 |
-
|
| 49 |
-
QA_CHAIN_PROMPT = PromptTemplate.from_template(prompt_template) # prompt_template defined above
|
| 50 |
llm_chain = LLMChain(llm=ChatOpenAI(), prompt=QA_CHAIN_PROMPT, callbacks=None, verbose=True)
|
| 51 |
document_prompt = PromptTemplate(
|
| 52 |
input_variables=["page_content", "url"],
|
| 53 |
template="Contexto:\n{page_content}\nVinculo: {url}",
|
| 54 |
)
|
|
|
|
| 55 |
combine_documents_chain = StuffDocumentsChain(
|
| 56 |
llm_chain=llm_chain,
|
| 57 |
document_variable_name="contexto",
|
| 58 |
document_prompt=document_prompt,
|
| 59 |
callbacks=None,
|
| 60 |
)
|
|
|
|
| 61 |
chain = RetrievalQA(
|
| 62 |
combine_documents_chain=combine_documents_chain,
|
| 63 |
callbacks=None,
|
| 64 |
verbose=True,
|
| 65 |
retriever=retriever,
|
| 66 |
)
|
|
|
|
| 67 |
return(chain)
|
|
|
|
| 7 |
from langchain_community.vectorstores import FAISS
|
| 8 |
from langchain_community.document_loaders import HuggingFaceDatasetLoader
|
| 9 |
from langchain_community.embeddings import HuggingFaceEmbeddings
|
|
|
|
|
|
|
| 10 |
|
| 11 |
def get_chain():
|
| 12 |
# agregada en la config de hugginface
|
|
|
|
| 24 |
page_content_column = "respuestas"
|
| 25 |
loader = HuggingFaceDatasetLoader(dataset_name, page_content_column)
|
| 26 |
data = loader.load()
|
| 27 |
+
|
| 28 |
+
#Dividir en chucks, esto es super importante
|
| 29 |
text_splitter = RecursiveCharacterTextSplitter(chunk_size=1000, chunk_overlap=150)
|
| 30 |
+
|
| 31 |
docs = text_splitter.split_documents(data)
|
|
|
|
| 32 |
#DB y retriever
|
| 33 |
db = FAISS.from_documents(docs, embeddings) # Create a retriever object from the 'db' with a search configuration where it retrieves up to 4 relevant splits/documents.
|
| 34 |
+
db = FAISS.load_local("cache")
|
| 35 |
+
|
| 36 |
retriever = db.as_retriever(search_kwargs={"k": 3})
|
| 37 |
|
| 38 |
+
# prompt_template =
|
| 39 |
+
QA_CHAIN_PROMPT = PromptTemplate.from_template("""
|
| 40 |
+
Usa los siguientes fragmentos de contextos para responder una pregunta al final. Por favor sigue las siguientes reglas:
|
| 41 |
1. Si la pregunta requiere vinculos, por favor retornar solamente las vinculos de los vinculos sin respuesta
|
| 42 |
2. Si no sabes la respuesta, no inventes una respuesta. Solamente di **No pude encontrar la respuesta definitiva, pero, tal vez quieras ver los siguientes vínculos** y agregalos a la lista de vínculos.
|
| 43 |
3. Si encuentras la respuesta, escribe una respuesta concisa y agrega la lista de víinculos relevantes para derivar la respuesta.
|
|
|
|
| 46 |
|
| 47 |
Pregunta: {question}
|
| 48 |
Respuesta Util:"""
|
| 49 |
+
) # prompt_template defined above
|
| 50 |
|
|
|
|
|
|
|
| 51 |
llm_chain = LLMChain(llm=ChatOpenAI(), prompt=QA_CHAIN_PROMPT, callbacks=None, verbose=True)
|
| 52 |
document_prompt = PromptTemplate(
|
| 53 |
input_variables=["page_content", "url"],
|
| 54 |
template="Contexto:\n{page_content}\nVinculo: {url}",
|
| 55 |
)
|
| 56 |
+
|
| 57 |
combine_documents_chain = StuffDocumentsChain(
|
| 58 |
llm_chain=llm_chain,
|
| 59 |
document_variable_name="contexto",
|
| 60 |
document_prompt=document_prompt,
|
| 61 |
callbacks=None,
|
| 62 |
)
|
| 63 |
+
|
| 64 |
chain = RetrievalQA(
|
| 65 |
combine_documents_chain=combine_documents_chain,
|
| 66 |
callbacks=None,
|
| 67 |
verbose=True,
|
| 68 |
retriever=retriever,
|
| 69 |
)
|
| 70 |
+
|
| 71 |
return(chain)
|