gnosticdev/bot_reformas
0
1import pandas as pd2from langchain_groq import ChatGroq3from langchain_huggingface import HuggingFaceEmbeddings4from langchain_chroma import Chroma5from langchain_core.prompts import PromptTemplate6from langchain_core.output_parsers import StrOutputParser7from langchain_core.runnables import RunnablePassthrough8import gradio as gr9 10# Carga los datos de entrenamiento11df = pd.read_csv('./botreformasconstrucciones.csv')12 13# Crea un arreglo con los contextos14context_data = []15for i in range(len(df)):16 context = ""17 for j in range(3):18 context += df.columns[j]19 context += ": "20 context += df.iloc[i, j] # Cambia esto21 context += " "22 context_data.append(context)23 24# Importa las bibliotecas necesarias25import os26from langchain_groq import ChatGroq27from langchain_huggingface import HuggingFaceEmbeddings28from langchain_chroma import Chroma29 30# Obtiene la clave de API de Groq31groq_key = os.environ.get('groq_api_keys')32 33# Crea un objeto ChatGroq con el modelo de lenguaje34llm = ChatGroq(model="llama-3.3-70b-versatile", api_key=groq_key)35 36# Crea un objeto HuggingFaceEmbeddings con el modelo de embeddings37embed_model = HuggingFaceEmbeddings(model_name="mixedbread-ai/mxbai-embed-large-v1")38 39# Crea un objeto Chroma con el nombre de la colección40vectorstore = Chroma(41 collection_name="reformas_construccion_juancarlos_y_yoises",42 embedding_function=embed_model,43)44 45# Agrega los textos a la colección46vectorstore.add_texts(context_data)47 48# Crea un objeto retriever con la colección49retriever = vectorstore.as_retriever()50 51# Crea un objeto PromptTemplate con el prompt52template = ("""Tu eres un experto en reformas y construccion, asistente de reformas y construccion juan carlos y moises, responderas a los clientes sobre sus dudas, y les remitiras si no encuentras una respuesta a contactar con nosotros al telefono 697 945 127 - 622 523 309, whatsapp o enviar un formulario en nuestfa pagina de contacto53 Context: {context}54 Question: {question}55 Answer:""")56 57# Crea un objeto rag_prompt con el prompt58rag_prompt = PromptTemplate.from_template(template)59 60# Crea un objeto StrOutputParser para parsear la salida61from langchain_core.output_parsers import StrOutputParser62 63# Crea un objeto RunnablePassthrough para ejecutar el modelo64from langchain_core.runnables import RunnablePassthrough65 66# Crea un objeto rag_chain con el modelo y el prompt67rag_chain = (68 {"context": retriever, "question": RunnablePassthrough()}69 | rag_prompt70 | llm71 | StrOutputParser()72)73 74# Importa la biblioteca Gradio75import gradio as gr76 77# Crea una función para procesar la entrada del usuario78def rag_memory_stream(message, history):79 partial_text = ""80 for new_text in rag_chain.stream(message):81 partial_text += new_text82 yield partial_text83 84# Crea un objeto Gradio con la función y el título85examples = [86 "¿Como pintar las paredes?",87 "¿Cómo alicatar el suelo del baño?"88]89description = "Aplicación de IA experta en reformas y construccion Juan Carlos y Moises"90title = "Experto en construccion y reformas"91demo = gr.ChatInterface(fn=rag_memory_stream,92 type="messages",93 title=title,94 description=description,95 fill_height=True,96 examples=examples,97 theme="glass",98)99 100# Lanza la aplicación101if __name__ == "__main__":102 demo.launch()