jdmorzan commited on
Commit
b16aa6a
·
verified ·
1 Parent(s): 0ce5064

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +24 -58
app.py CHANGED
@@ -1,36 +1,16 @@
1
  from langchain.chains import ConversationalRetrievalChain
2
- from langchain.memory import ConversationBufferMemory, ConversationSummaryMemory
3
  from langchain.chat_models import ChatOpenAI
4
  from langsmith import traceable
5
-
6
- from langchain.text_splitter import CharacterTextSplitter, RecursiveCharacterTextSplitter
7
  from langchain.embeddings.openai import OpenAIEmbeddings
8
  from langchain.vectorstores import Chroma
9
-
10
- import os
11
- import sys
12
-
13
-
14
- from langchain.schema import (
15
- AIMessage,
16
- HumanMessage,
17
- SystemMessage
18
- )
19
-
20
  from langchain.prompts import ChatPromptTemplate
21
  from langchain.prompts.chat import SystemMessagePromptTemplate, HumanMessagePromptTemplate
 
22
 
23
- #embeddings = HuggingFaceEmbeddings(model_name='sentence-transformers/paraphrase-multilingual-MiniLM-L12-v2')
24
- embeddings = OpenAIEmbeddings()
25
-
26
- #vectordb=Chroma.from_documents(document_chunks,embedding=embeddings, persist_directory='./ai_vocacional_v2')
27
  vectordb = Chroma(persist_directory="./ai_vocacional_v2", embedding_function=embeddings)
28
-
29
- llm=ChatOpenAI(temperature=0, model_name='gpt-4o-2024-08-06')
30
-
31
- memory = ConversationBufferMemory(
32
- memory_key='chat_history',
33
- return_messages=True)
34
 
35
  general_system_template = r"""
36
  Eres el Orientador de carreras. Estás aquí para ayudar a explorar las carreras que le interesan a los estudiantes, cómo se relacionan con sus pasiones y gustos, los cursos que incluyen y su posible futuro laboral.
@@ -42,65 +22,51 @@ Si te preguntan por universidades, responde elegantemente que deben de haber muy
42
 
43
  general_user_template = "Pregunta:```{question}```"
44
  messages = [
45
- SystemMessagePromptTemplate.from_template(general_system_template),
46
- HumanMessagePromptTemplate.from_template(general_user_template)
47
  ]
48
- qa_prompt = ChatPromptTemplate.from_messages( messages )
 
 
 
49
 
50
  @traceable
51
- def pdf_qa(query):
52
-
53
  function = ConversationalRetrievalChain.from_llm(
54
- llm = llm,
55
- retriever=vectordb.as_retriever(search_kwargs={'k':16})
56
- , combine_docs_chain_kwargs={'prompt': qa_prompt},
57
- memory = memory#,max_tokens_limit=4000
58
  )
59
-
60
  return function({"question": query})
61
 
62
- import gradio as gr
63
- # Define chat interface
64
  with gr.Blocks() as demo:
65
- chatbot = gr.Chatbot(label = "Orientador de carreras", value=[[None,'''
66
-
67
  ¡Hola! Soy tu Orientador de Carreras. Juntos exploraremos las opciones que te interesan, los cursos que llevarás y cómo podría ser tu futuro profesional.
68
-
69
  Cuéntame qué carreras te llaman la atención y podrás hacerme preguntas como:
70
-
71
  - ¿Cuál es la mejor carrera para mí?
72
  - ¿Qué cursos veré en esas carreras? ¿En qué se parecen y en qué se diferencian?
73
  - ¿Cómo es un día típico como estudiante en la carrera que me interesa?
74
  - ¿Cómo es la vida diaria de un egresado de esas carreras?
75
-
76
  Estoy aquí para ayudarte a tomar una decisión informada. ¡Empecemos!
77
- '''
78
- ]])
79
- msg = gr.Textbox(placeholder = "Escribe aquí", label = '')
80
  submit = gr.Button("Enviar")
81
- chat_history = []
82
 
83
- def user(query, chat_history):
84
  print("User query:", query)
85
  print("Chat history:", chat_history)
86
 
87
- # Convert chat history to list of tuples
88
- chat_history_tuples = []
89
- for message in chat_history:
90
- chat_history_tuples.append((message[0], message[1]))
91
 
92
- # Get result from QA chain
93
- result = pdf_qa(query)
94
-
95
- # Append user message and response to chat history
96
  chat_history.append((query, result["answer"]))
97
  print("Updated chat history:", chat_history)
98
 
99
- return gr.update(value=""), chat_history
100
-
101
 
102
- submit.click(user, [msg, chatbot], [msg, chatbot], queue=False)
103
- msg.submit(user, [msg, chatbot], [msg, chatbot], queue=False)
104
 
105
  if __name__ == "__main__":
106
  demo.launch()
 
1
  from langchain.chains import ConversationalRetrievalChain
2
+ from langchain.memory import ConversationBufferMemory
3
  from langchain.chat_models import ChatOpenAI
4
  from langsmith import traceable
 
 
5
  from langchain.embeddings.openai import OpenAIEmbeddings
6
  from langchain.vectorstores import Chroma
 
 
 
 
 
 
 
 
 
 
 
7
  from langchain.prompts import ChatPromptTemplate
8
  from langchain.prompts.chat import SystemMessagePromptTemplate, HumanMessagePromptTemplate
9
+ import gradio as gr
10
 
11
+ embeddings = OpenAIEmbeddings()
 
 
 
12
  vectordb = Chroma(persist_directory="./ai_vocacional_v2", embedding_function=embeddings)
13
+ llm = ChatOpenAI(temperature=0, model_name='gpt-4o-2024-08-06')
 
 
 
 
 
14
 
15
  general_system_template = r"""
16
  Eres el Orientador de carreras. Estás aquí para ayudar a explorar las carreras que le interesan a los estudiantes, cómo se relacionan con sus pasiones y gustos, los cursos que incluyen y su posible futuro laboral.
 
22
 
23
  general_user_template = "Pregunta:```{question}```"
24
  messages = [
25
+ SystemMessagePromptTemplate.from_template(general_system_template),
26
+ HumanMessagePromptTemplate.from_template(general_user_template)
27
  ]
28
+ qa_prompt = ChatPromptTemplate.from_messages(messages)
29
+
30
+ def create_memory():
31
+ return ConversationBufferMemory(memory_key='chat_history', return_messages=True)
32
 
33
  @traceable
34
+ def pdf_qa(query, memory):
 
35
  function = ConversationalRetrievalChain.from_llm(
36
+ llm=llm,
37
+ retriever=vectordb.as_retriever(search_kwargs={'k': 16}),
38
+ combine_docs_chain_kwargs={'prompt': qa_prompt},
39
+ memory=memory
40
  )
 
41
  return function({"question": query})
42
 
 
 
43
  with gr.Blocks() as demo:
44
+ chatbot = gr.Chatbot(label="Orientador de carreras", value=[[None, '''
 
45
  ¡Hola! Soy tu Orientador de Carreras. Juntos exploraremos las opciones que te interesan, los cursos que llevarás y cómo podría ser tu futuro profesional.
 
46
  Cuéntame qué carreras te llaman la atención y podrás hacerme preguntas como:
 
47
  - ¿Cuál es la mejor carrera para mí?
48
  - ¿Qué cursos veré en esas carreras? ¿En qué se parecen y en qué se diferencian?
49
  - ¿Cómo es un día típico como estudiante en la carrera que me interesa?
50
  - ¿Cómo es la vida diaria de un egresado de esas carreras?
 
51
  Estoy aquí para ayudarte a tomar una decisión informada. ¡Empecemos!
52
+ ''']])
53
+ msg = gr.Textbox(placeholder="Escribe aquí", label='')
 
54
  submit = gr.Button("Enviar")
55
+ memory_state = gr.State(create_memory)
56
 
57
+ def user(query, chat_history, memory):
58
  print("User query:", query)
59
  print("Chat history:", chat_history)
60
 
61
+ result = pdf_qa(query, memory)
 
 
 
62
 
 
 
 
 
63
  chat_history.append((query, result["answer"]))
64
  print("Updated chat history:", chat_history)
65
 
66
+ return gr.update(value=""), chat_history, memory
 
67
 
68
+ submit.click(user, [msg, chatbot, memory_state], [msg, chatbot, memory_state], queue=False)
69
+ msg.submit(user, [msg, chatbot, memory_state], [msg, chatbot, memory_state], queue=False)
70
 
71
  if __name__ == "__main__":
72
  demo.launch()