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)
|