gnosticdev's picture
Update app.py
bd23543 verified
import pandas as pd
from langchain_groq import ChatGroq
from langchain_huggingface import HuggingFaceEmbeddings
from langchain_chroma import Chroma
from langchain_core.prompts import PromptTemplate
from langchain_core.output_parsers import StrOutputParser
from langchain_core.runnables import RunnablePassthrough
import gradio as gr
# Carga los datos de entrenamiento
df = pd.read_csv('./botreformasconstrucciones.csv')
# Crea un arreglo con los contextos
context_data = []
for i in range(len(df)):
context = ""
for j in range(3):
context += df.columns[j]
context += ": "
context += df.iloc[i, j] # Cambia esto
context += " "
context_data.append(context)
# Importa las bibliotecas necesarias
import os
from langchain_groq import ChatGroq
from langchain_huggingface import HuggingFaceEmbeddings
from langchain_chroma import Chroma
# Obtiene la clave de API de Groq
groq_key = os.environ.get('groq_api_keys')
# Crea un objeto ChatGroq con el modelo de lenguaje
llm = ChatGroq(model="llama-3.3-70b-versatile", api_key=groq_key)
# Crea un objeto HuggingFaceEmbeddings con el modelo de embeddings
embed_model = HuggingFaceEmbeddings(model_name="mixedbread-ai/mxbai-embed-large-v1")
# Crea un objeto Chroma con el nombre de la colecci贸n
vectorstore = Chroma(
collection_name="asesoria_manuel",
embedding_function=embed_model,
)
# Agrega los textos a la colecci贸n
vectorstore.add_texts(context_data)
# Crea un objeto retriever con la colecci贸n
retriever = vectorstore.as_retriever()
# Crea un objeto PromptTemplate con el promptgroq_api_keysgroq_api_keysgroq_api_keysgroq_api_keys
template = ("""Eres un asistente para asesoria manuel, cada vez que un usuario te pregunte algo relacionado a nuestros servicios les ofreceras una respuesta segun el departamentoue necesite,
que os llame al telefono 91123456 , y le recordaras que estamos abiertos de lubnes a viernes de 9 a 8 de la tarde, si te pregunta sobre algo referente a
contratos y compraventas le diras que pase por la oficina los dias martes a pedir cita, y si te pregungta algo que no tenga relacion con nuestra empresa debes decirle que solo
eres un asistente que responde a preguntas de asesoramiento y asuntos referentes.
Context: {context}
Question: {question}
Answer:""")
# Crea un objeto rag_prompt con el prompt
rag_prompt = PromptTemplate.from_template(template)
# Crea un objeto StrOutputParser para parsear la salida
from langchain_core.output_parsers import StrOutputParser
# Crea un objeto RunnablePassthrough para ejecutar el modelo
from langchain_core.runnables import RunnablePassthrough
# Crea un objeto rag_chain con el modelo y el prompt
rag_chain = (
{"context": retriever, "question": RunnablePassthrough()}
| rag_prompt
| llm
| StrOutputParser()
)
# Importa la biblioteca Gradio
import gradio as gr
# Crea una funci贸n para procesar la entrada del usuario
def rag_memory_stream(message, history):
partial_text = ""
for new_text in rag_chain.stream(message):
partial_text += new_text
yield partial_text
# Crea un objeto Gradio con la funci贸n y el t铆tulo
examples = [
"驴Cusnto denbo pagar a hacienda cpon mi empresa?",
"驴Trabajais con inmobiliaria?",
]
description = "Chatbot con Asesoria Manuel"
demo = gr.ChatInterface(fn=rag_memory_stream,
type="messages",
description=description,
fill_height=True,
examples=examples,
theme="glass",
)
# Lanza la aplicaci贸n
if __name__ == "__main__":
demo.launch()