Se corrigen algunos errores en los modelos de ollama

This commit is contained in:
mongar 2024-05-04 21:34:43 -05:00
parent 24685ebb99
commit 6d3cafc579
9 changed files with 38 additions and 26 deletions

View File

@ -2,38 +2,50 @@ from colorama import Fore, Back, Style
class MessageManager: class MessageManager:
def create_chat(self, qa): def create_chat(self, qa):
# Emoticon de robot # Emoticon de robot
ia_emoticon = "\U0001F916" # Emoticon de robot Unicode ia_emoticon = "\U0001f916" # Emoticon de robot Unicode
humano_emoticon = "\U0001F604" # Emoticon de carita feliz Unicode humano_emoticon = "\U0001f604" # Emoticon de carita feliz Unicode
# Imprimir el texto en amarillo y negrita con el emoticon de robot # Imprimir el texto en amarillo y negrita con el emoticon de robot
# Definicimo el mensaje de la IA # Definicimo el mensaje de la IA
print(f"{ia_emoticon} " + Style.BRIGHT + Fore.YELLOW + print(
"IA: " + Style.RESET_ALL + "Pregunta algo al documento") f"{ia_emoticon} "
+ Style.BRIGHT
+ Fore.YELLOW
+ "IA: "
+ Style.RESET_ALL
+ "Pregunta algo al documento"
)
while True: while True:
input_usuario = input( input_usuario = input(
Style.BRIGHT + Fore.BLUE + f"{humano_emoticon} You: " + Style.RESET_ALL) Style.BRIGHT + Fore.BLUE + f"{humano_emoticon} You: " + Style.RESET_ALL
if input_usuario.lower() == 'salir': )
if input_usuario.lower() == "salir":
break break
bot_response = qa.invoke({"question": f"{input_usuario}"}, bot_response = qa.invoke(
return_only_outputs=True) {"question": f"{input_usuario}"}, return_only_outputs=True
print(f'{ia_emoticon} ' + Style.BRIGHT + Fore.YELLOW + )
'IA:' + Style.RESET_ALL + f'{bot_response["answer"]}') print(
f"{ia_emoticon} "
+ Style.BRIGHT
+ Fore.YELLOW
+ "IA:"
+ Style.RESET_ALL
+ f'{bot_response["answer"]}'
)
def generate_citations(self, documents_source: list) -> str: def generate_citations(self, documents_source: list) -> str:
text_source: str = "" text_source: str = ""
for index, document in enumerate(documents_source): for index, document in enumerate(documents_source):
quote: str = document.page_content quote: str = document.page_content
source: str = document.metadata['source'].replace( source: str = document.metadata["source"].replace("documents/pdfs/", "")
'documents/pdfs/', '') page: str = document.metadata["page"] + 1
page: str = document.metadata['page'] + 1 fuente: str = (
fuente: str = f"**Fuente #{index + 1}:** \n '{quote}'\n(*{source}, P.{page})*" f"**Fuente #{index + 1}:** \n '{quote}'\n(*{source}, P.{page})*"
)
text_source += fuente + "\n\n\n" text_source += fuente + "\n\n\n"

View File

@ -14,16 +14,16 @@ def import_file() -> str:
# Agregamos el nombre a la lista de archvios para luego podr verificarlos # Agregamos el nombre a la lista de archvios para luego podr verificarlos
List_of_files.append(nombre_archivo) List_of_files.append(nombre_archivo)
st.success( # st.success(
f"El numero de archivos en la lista de archivos es de: {len(List_of_files)}" # f"El numero de archivos en la lista de archivos es de: {len(List_of_files)}"
) # )
# Abrir un archivo en modo escritura binaria ('wb') para guardar el archivo de audio # Abrir un archivo en modo escritura binaria ('wb') para guardar el archivo de audio
with open(f"documents/pdfs/{nombre_archivo}", "wb") as new_file: with open(f"documents/pdfs/{nombre_archivo}", "wb") as new_file:
# Leer los datos del archivo cargado y escribirlos en el nuevo archivo # Leer los datos del archivo cargado y escribirlos en el nuevo archivo
new_file.write(archivo.read()) new_file.write(archivo.read())
st.success(f"Se carga el archivo con nombre: {nombre_archivo}") # st.success(f"Se carga el archivo con nombre: {nombre_archivo}")
# Verificamos que en la lista solo haya un archivo, de lo contrario, limpiamos la session_state # Verificamos que en la lista solo haya un archivo, de lo contrario, limpiamos la session_state
if ( if (

View File

@ -68,7 +68,7 @@ class LangChainTools:
""" """
# db_name = _file_name.replace(".pdf", "").replace(" ", "_").lower() # db_name = _file_name.replace(".pdf", "").replace(" ", "_").lower()
st.success(_file_name) # st.success(_file_name)
if "db_name" not in st.session_state.keys(): if "db_name" not in st.session_state.keys():
st.session_state.db_name = ( st.session_state.db_name = (
@ -265,7 +265,7 @@ class LangChainTools:
# Pregunta: {question} # Pregunta: {question}
# Respuesta en español:""" # Respuesta en español:"""
conversation.combine_docs_chain.llm_chain.prompt.template = template # conversation.combine_docs_chain.llm_chain.prompt.template = template
conversation.question_generator.prompt.template = "Dado el siguiente diálogo y una pregunta de seguimiento, reformula la pregunta de seguimiento para que sea una pregunta independiente, en su idioma original.\n\nHistorial del chat:\n{chat_history}\nPregunta de seguimiento: {question}\nPregunta independiente:" # conversation.question_generator.prompt.template = "Dado el siguiente diálogo y una pregunta de seguimiento, reformula la pregunta de seguimiento para que sea una pregunta independiente, en su idioma original.\n\nHistorial del chat:\n{chat_history}\nPregunta de seguimiento: {question}\nPregunta independiente:"
return conversation return conversation

View File

@ -39,7 +39,7 @@ class PdfLangChain:
loader = PyPDFLoader(_self.file_path) loader = PyPDFLoader(_self.file_path)
_self.docs = loader.load() _self.docs = loader.load()
st.success(f"Se carga el pdf : {_self.file_path}") # st.success(f"Se carga el pdf : {_self.file_path}")
return _self.docs return _self.docs
def split_docs(self, data: list) -> list: def split_docs(self, data: list) -> list:
@ -60,6 +60,6 @@ class PdfLangChain:
) )
self.docs_split = splitter.split_documents(data) self.docs_split = splitter.split_documents(data)
st.success(f"{self.file_path[3][:200]}") # st.success(f"{self.file_path[3][:200]}")
return self.docs_split return self.docs_split