File size: 3,795 Bytes
a786c9d
ee8b38f
 
 
 
 
 
 
d16d3b3
0fed4fb
8cff3c1
a786c9d
0fed4fb
a786c9d
 
 
 
 
 
ee8b38f
a786c9d
 
 
0fed4fb
a786c9d
0fed4fb
 
 
a786c9d
0fed4fb
a786c9d
 
0fed4fb
 
a786c9d
0fed4fb
a786c9d
 
0fed4fb
a786c9d
450bb52
a786c9d
 
 
0fed4fb
a786c9d
 
0fed4fb
a786c9d
 
0fed4fb
450bb52
 
a786c9d
 
 
 
0fed4fb
a786c9d
 
0fed4fb
a786c9d
0fed4fb
 
a786c9d
 
0fed4fb
a786c9d
 
 
 
 
 
 
0fed4fb
dfd696d
a786c9d
0fed4fb
8837a99
a786c9d
3f51add
a786c9d
 
 
0fed4fb
7c89955
450bb52
 
 
7c89955
450bb52
b90fa6d
7df1bda
4c6d55a
 
1f23827
 
 
983182b
dfd696d
 
0fed4fb
dfd696d
0fed4fb
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
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.1-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="GnosticDev_asistente",
    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, desarrollo web, experto en wordpress, paginas web, plataformas, 
ecommerce, aplicaciones con ia, debes responder cuestiones tecnicas a los posinles clientes, y recordarles que para cualquier duda puede contactar conmigo, darle razones por las que soy la mejor opcion para contratar el desarrollo web, desde precios muy asequibles comparados con lo que les costaria en un estudio o empresa de desarrollo, gracias a ser freelancer ofrezco un soporte tecnivo personal e ilimitado en soporte tecnico, y de regalo la version apk como aplicacion para android por cada web, ademas de un chatbot y asistente,
    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 instalar wordpress por FTP?"
    "驴Como limpiar un wordpress hackeado?",
    "驴C贸mo importar productos en wooocommerce?"
]
description = "Aplicaci贸n de IA desarrollada por GnosticDev, experta en desarrollo web"
title = "Experto en construccion y reformas"
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()