added backend which maintains ai instances;
added frontend as control panel
This commit is contained in:
87
backend/ai/views.py
Normal file
87
backend/ai/views.py
Normal file
@@ -0,0 +1,87 @@
|
||||
from injector import inject
|
||||
from rest_framework import status
|
||||
from rest_framework.response import Response
|
||||
from rest_framework.views import APIView
|
||||
|
||||
from .serializers import AiConfigSerializer, AiInstanceSerializer
|
||||
from .services.AiService import AiService
|
||||
|
||||
|
||||
class AiApiView(APIView):
|
||||
# add permission to check if user is authenticated
|
||||
# permission_classes = [permissions.IsAuthenticated]
|
||||
ai_service: AiService = None
|
||||
|
||||
@inject
|
||||
def setup(self, request, ai_service: AiService, **kwargs):
|
||||
super().setup(request)
|
||||
self.ai_service = ai_service
|
||||
|
||||
def get(self, request, *args, **kwargs):
|
||||
instances = self.ai_service.get_instances()
|
||||
serializer = AiInstanceSerializer(instances, many=True)
|
||||
return Response(serializer.data, status=status.HTTP_200_OK)
|
||||
|
||||
|
||||
class AiConfigApiView(APIView):
|
||||
# add permission to check if user is authenticated
|
||||
# permission_classes = [permissions.IsAuthenticated]
|
||||
|
||||
ai_service: AiService = None
|
||||
|
||||
@inject
|
||||
def setup(self, request, ai_service: AiService, **kwargs):
|
||||
super().setup(request)
|
||||
self.ai_service = ai_service
|
||||
|
||||
def get(self, request, *args, **kwargs):
|
||||
configurations = self.ai_service.get_configurations()
|
||||
serializer = AiConfigSerializer(configurations, many=True)
|
||||
return Response(serializer.data, status=status.HTTP_200_OK)
|
||||
|
||||
|
||||
class AiChatTextApiView(APIView):
|
||||
# add permission to check if user is authenticated
|
||||
# permission_classes = [permissions.IsAuthenticated]
|
||||
|
||||
ai_service: AiService = None
|
||||
|
||||
@inject
|
||||
def setup(self, request, ai_service: AiService, **kwargs):
|
||||
super().setup(request)
|
||||
self.ai_service = ai_service
|
||||
|
||||
def post(self, request, *args, **kwargs):
|
||||
name = self.kwargs.get('name')
|
||||
print("name", name)
|
||||
ai_instance = self.ai_service.get_instance(name)
|
||||
if ai_instance is None:
|
||||
return Response(status=status.HTTP_404_NOT_FOUND)
|
||||
|
||||
print(request.data)
|
||||
response = ai_instance.chat_text(request.data['name'], request.data['content'])
|
||||
return Response(response, status=status.HTTP_200_OK)
|
||||
|
||||
|
||||
class AiDiscordApiView(APIView):
|
||||
# add permission to check if user is authenticated
|
||||
# permission_classes = [permissions.IsAuthenticated]
|
||||
|
||||
ai_service: AiService = None
|
||||
|
||||
@inject
|
||||
def setup(self, request, ai_service: AiService, **kwargs):
|
||||
super().setup(request)
|
||||
self.ai_service = ai_service
|
||||
|
||||
def patch(self, request, *args, **kwargs):
|
||||
name = self.kwargs.get('name')
|
||||
ai_instance = self.ai_service.get_instance(name)
|
||||
if ai_instance is None:
|
||||
return Response(status=status.HTTP_404_NOT_FOUND)
|
||||
|
||||
if 'online' in request.data:
|
||||
ai_instance.discord.set_online(request.data['online'])
|
||||
if 'react_to_chat' in request.data:
|
||||
ai_instance.discord.set_react_to_chat(request.data['react_to_chat'])
|
||||
return Response(status=status.HTTP_200_OK)
|
||||
Reference in New Issue
Block a user