Skip to content

Commit

Permalink
Add frequently used prompt function.
Browse files Browse the repository at this point in the history
  • Loading branch information
WongSaang committed Mar 9, 2023
1 parent a65f516 commit 1282bd6
Show file tree
Hide file tree
Showing 4 changed files with 43 additions and 4 deletions.
7 changes: 7 additions & 0 deletions chat/models.py
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,13 @@ class Message(models.Model):
created_at = models.DateTimeField(auto_now_add=True)


class Prompt(models.Model):
user = models.ForeignKey(User, on_delete=models.CASCADE)
prompt = models.TextField()
created_at = models.DateTimeField(auto_now_add=True)
updated_at = models.DateTimeField(auto_now=True)


class Setting(models.Model):
name = models.CharField(max_length=255)
value = models.CharField(max_length=255)
8 changes: 7 additions & 1 deletion chat/serializers.py
Original file line number Diff line number Diff line change
@@ -1,5 +1,5 @@
from rest_framework import serializers
from .models import Conversation, Message
from .models import Conversation, Message, Prompt

class ConversationSerializer(serializers.ModelSerializer):
class Meta:
Expand All @@ -10,3 +10,9 @@ class MessageSerializer(serializers.ModelSerializer):
class Meta:
model = Message
fields = ['parent_message', 'message', 'is_bot', 'created_at']


class PromptSerializer(serializers.ModelSerializer):
class Meta:
model = Prompt
fields = ['id', 'prompt', 'created_at', 'updated_at']
3 changes: 2 additions & 1 deletion chat/urls.py
Original file line number Diff line number Diff line change
@@ -1,10 +1,11 @@
from django.urls import include, path
from rest_framework import routers
from .views import ConversationViewSet, MessageViewSet
from .views import ConversationViewSet, MessageViewSet, PromptViewSet

router = routers.SimpleRouter()
router.register(r'conversations', ConversationViewSet, basename='conversationModel')
router.register(r'messages', MessageViewSet, basename='messageModel')
router.register(r'prompts', PromptViewSet, basename='promptModel')

# Wire up our API using automatic URL routing.
# Additionally, we include login URLs for the browsable API.
Expand Down
29 changes: 27 additions & 2 deletions chat/views.py
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,15 @@
import openai
import datetime
import tiktoken
from .models import Conversation, Message, Setting
from .models import Conversation, Message, Setting, Prompt
from django.conf import settings
from django.http import StreamingHttpResponse
from rest_framework import viewsets, status
from rest_framework.response import Response
from rest_framework.permissions import IsAuthenticated
from rest_framework_simplejwt.authentication import JWTAuthentication
from rest_framework.decorators import api_view, authentication_classes, permission_classes, action
from .serializers import ConversationSerializer, MessageSerializer
from .serializers import ConversationSerializer, MessageSerializer, PromptSerializer


class ConversationViewSet(viewsets.ModelViewSet):
Expand Down Expand Up @@ -39,6 +39,31 @@ def get_queryset(self):
'created_at')


class PromptViewSet(viewsets.ModelViewSet):
serializer_class = PromptSerializer
# authentication_classes = [JWTAuthentication]
permission_classes = [IsAuthenticated]

def get_queryset(self):
return Prompt.objects.filter(user=self.request.user).order_by('-created_at')

def create(self, request, *args, **kwargs):
serializer = self.get_serializer(data=request.data)
serializer.is_valid(raise_exception=True)

serializer.validated_data['user'] = request.user

self.perform_create(serializer)
headers = self.get_success_headers(serializer.data)
return Response(serializer.data, status=status.HTTP_201_CREATED, headers=headers)

@action(detail=False, methods=['delete'])
def delete_all(self, request):
queryset = self.filter_queryset(self.get_queryset())
queryset.delete()
return Response(status=204)


def sse_pack(event, data):
# Format data as an SSE message
packet = "event: %s\n" % event
Expand Down

0 comments on commit 1282bd6

Please sign in to comment.