Skip to content

Commit

Permalink
Actualización de lógica en WebSockets y GPT-4 para el chatbot Laura
Browse files Browse the repository at this point in the history
  • Loading branch information
Blaister9 committed Oct 3, 2024
1 parent a94cfaf commit efe137f
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 21 deletions.
26 changes: 9 additions & 17 deletions backend/chatbot_laura/consumers.py
Original file line number Diff line number Diff line change
Expand Up @@ -22,32 +22,24 @@ async def disconnect(self, close_code):
async def receive(self, text_data):
try:
text_data_json = json.loads(text_data)

mensaje = text_data_json.get('mensaje', '')

if not mensaje:
await self.send(text_data=json.dumps({'error': 'El mensaje no puede estar vacío'}))
return

logger.info(f"Mensaje recibido para Laura Chatbot: {mensaje}")

# Usar ChatbotLauraView para procesar el mensaje
chatbot_view = ChatbotLauraView()
resultados = chatbot_view.search(mensaje)

# Procesar resultados para hacerlos más legibles
formatted_resultados = [
{
'pregunta': res.get('pregunta', 'Sin pregunta'),
'respuesta': res.get('respuesta', 'Sin respuesta'),
'url': res.get('url', ''),
'similarity_score': res.get('similarity_score', 0)
}
for res in resultados
]

# Enviar respuesta
resultados = await chatbot_view.search(mensaje) # FAISS busca el mensaje

# Procesar los resultados a través de GPT-4
respuesta_gpt4 = await generar_respuesta_gpt4(resultados)

# Enviar la respuesta de GPT-4 al cliente
await self.send(text_data=json.dumps({
'resultados': formatted_resultados
'respuesta': respuesta_gpt4
}))
except Exception as e:
logger.error(f"Error en receive para Laura Chatbot: {e}")
Expand Down
10 changes: 6 additions & 4 deletions backend/chatbot_laura/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ def load_or_generate_index(self):
if os.path.exists(self.embedding_file) and os.path.exists(self.index_file):
logger.info("Cargando embeddings y FAISS index desde archivo...")
self.embeddings = self.load_embeddings(self.embedding_file)
self.index = faiss.read_index(self.index_file)
self.index = faiss.read_index(self.index_file)
else:
logger.info("Generando nuevos embeddings y FAISS index...")
self.df = self.load_and_process_data(self.json_file)
Expand Down Expand Up @@ -127,6 +127,7 @@ def search(self, query, k=3):
logger.error(f"Error en la búsqueda: {str(e)}")
raise

# La función que maneja solicitudes POST y pasa los resultados por GPT-4 antes de enviarlos
@api_view(['POST'])
@csrf_exempt
async def chatbot_laura_view(request):
Expand All @@ -137,10 +138,11 @@ async def chatbot_laura_view(request):
return JsonResponse({'error': 'No se proporcionó el mensaje'}, status=status.HTTP_400_BAD_REQUEST)

chatbot_view = ChatbotLauraView()
resultados = chatbot_view.search(query)

# Llamar a GPT-4
resultados = chatbot_view.search(query) # Primero busca en FAISS
# Ahora pasamos los resultados por GPT-4
respuesta_gpt4 = await generar_respuesta_gpt4(resultados)

return Response({'respuesta': respuesta_gpt4}, status=status.HTTP_200_OK)

except json.JSONDecodeError:
Expand Down

0 comments on commit efe137f

Please sign in to comment.