File size: 4,348 Bytes
4716ee8
 
 
 
 
 
 
ee8b38f
4716ee8
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
a786c9d
4716ee8
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
c3dee1f
 
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
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()