Spaces:
Sleeping
Sleeping
| import logging | |
| from rest_framework.views import APIView | |
| from rest_framework.response import Response | |
| from rest_framework import status | |
| from api.services.rag_service import CooperativaAdvancedRAG | |
| logger = logging.getLogger(__name__) | |
| try: | |
| print("--- Cargando modelos de IA a la memoria (FAISS + Embeddings + CrossEncoder) ---") | |
| rag_system = CooperativaAdvancedRAG() | |
| print("--- Sistema RAG listo para recibir consultas ---") | |
| except Exception as e: | |
| logger.error(f"Error crítico inicializando RAG: {e}") | |
| rag_system = None | |
| class ChatCooperativaView(APIView): | |
| def post(self, request): | |
| pregunta = request.data.get('question') | |
| historial = request.data.get('history', []) | |
| if not pregunta: | |
| return Response( | |
| {"error": "Debes enviar una pregunta."}, | |
| status=status.HTTP_400_BAD_REQUEST | |
| ) | |
| if not rag_system: | |
| return Response( | |
| {"error": "El servicio de IA no está disponible en este momento."}, | |
| status=status.HTTP_500_INTERNAL_SERVER_ERROR | |
| ) | |
| try: | |
| respuesta = rag_system.query( | |
| question=pregunta, | |
| chat_history=historial | |
| ) | |
| return Response({"answer": respuesta}, status=status.HTTP_200_OK) | |
| except Exception as e: | |
| logger.error(f"Error en consulta RAG para la pregunta '{pregunta}': {e}") | |
| return Response( | |
| {"error": "Ocurrió un error al procesar tu consulta con la IA."}, | |
| status=status.HTTP_500_INTERNAL_SERVER_ERROR | |
| ) |