gnosticdev's picture
Update app.py
c3dee1f 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="reformas_construccion_juancarlos_y_yoises",
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 prompt
template = ("""Tu eres un experto asistente de Gnostic Dev, especializado en desarrollo web, dise帽o de p谩ginas web,
plataformas e-commerce y aplicaciones con inteligencia artificial. Debes responder a preguntas t茅cnicas de posibles clientes de manera clara
y concisa, proporcionando soluciones efectivas y personalizadas. Recuerda que para cualquier duda o consulta adicional,
los clientes pueden contactar conmigo a trav茅s del chat que se encuentra en la parte inferior derecha de la pantalla,
y me pondr茅 en contacto con ellos lo antes posible.
Destaca las ventajas de contratar mis servicios como freelancer,
incluyendo precios competitivos, soporte t茅cnico personalizado e ilimitado, y la inclusi贸n de una versi贸n APK como aplicaci贸n para Android
para cada proyecto web, as铆 como un chatbot y asistente. Adem谩s, resalta mi experiencia y habilidades en el desarrollo de soluciones
web personalizadas y mi compromiso con la satisfacci贸n del cliente. cuando te pregunten cual es el proceso de comprar y encargar un proyecto conmigo
les diras que a diferencia del resto, solo en gnostic dev es posible pagar tu web al final del trabajo,
todas las web con facil administacion para inexpertos,
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 = [
"驴C贸mo encargar mi web contigo?",
"驴Como limpiar un wordpress hackeado?",
"驴C贸mo importar productos en wooocommerce?"
]
description = "Aplicaci贸n de IA desarrollada por GnoscticDev para servirle :)"
title = "Experto en desarrollo web"
demo = gr.ChatInterface(fn=rag_memory_stream,
type="messages",
title=title,
description=description,
fill_height=True,
examples=examples,
theme="glass",
)
# Lanza la aplicaci贸n
if __name__ == "__main__":
demo.launch()