UPDATE
This commit is contained in:
+60
-63
@@ -1,7 +1,10 @@
|
||||
"""
|
||||
ویوهای RAG — چت با استریم
|
||||
"""
|
||||
import logging
|
||||
|
||||
from django.http import StreamingHttpResponse
|
||||
from drf_spectacular.types import OpenApiTypes
|
||||
from drf_spectacular.utils import (
|
||||
OpenApiExample,
|
||||
OpenApiResponse,
|
||||
@@ -13,14 +16,46 @@ from rest_framework import serializers as drf_serializers
|
||||
from rest_framework.request import Request
|
||||
from rest_framework.response import Response
|
||||
from rest_framework.views import APIView
|
||||
import logging
|
||||
|
||||
from config.openapi import (
|
||||
build_envelope_serializer,
|
||||
build_message_response_serializer,
|
||||
build_response,
|
||||
build_task_queue_data_serializer,
|
||||
build_task_status_data_serializer,
|
||||
)
|
||||
from .chat import chat_rag_stream
|
||||
|
||||
|
||||
logger = logging.getLogger(__name__)
|
||||
|
||||
|
||||
RagChatErrorResponseSerializer = build_message_response_serializer(
|
||||
"RagChatErrorResponseSerializer"
|
||||
)
|
||||
RagIrrigationQueueResponseSerializer = build_envelope_serializer(
|
||||
"RagIrrigationQueueResponseSerializer",
|
||||
build_task_queue_data_serializer("RagIrrigationQueueDataSerializer"),
|
||||
)
|
||||
RagIrrigationStatusResponseSerializer = build_envelope_serializer(
|
||||
"RagIrrigationStatusResponseSerializer",
|
||||
build_task_status_data_serializer("RagIrrigationStatusDataSerializer"),
|
||||
)
|
||||
RagFertilizationQueueResponseSerializer = build_envelope_serializer(
|
||||
"RagFertilizationQueueResponseSerializer",
|
||||
build_task_queue_data_serializer("RagFertilizationQueueDataSerializer"),
|
||||
)
|
||||
RagFertilizationStatusResponseSerializer = build_envelope_serializer(
|
||||
"RagFertilizationStatusResponseSerializer",
|
||||
build_task_status_data_serializer("RagFertilizationStatusDataSerializer"),
|
||||
)
|
||||
RagValidationErrorResponseSerializer = build_envelope_serializer(
|
||||
"RagValidationErrorResponseSerializer",
|
||||
data_required=False,
|
||||
allow_null=True,
|
||||
)
|
||||
|
||||
|
||||
class ChatView(APIView):
|
||||
"""
|
||||
چت RAG با استریم.
|
||||
@@ -44,10 +79,12 @@ class ChatView(APIView):
|
||||
),
|
||||
responses={
|
||||
200: OpenApiResponse(
|
||||
response=OpenApiTypes.STR,
|
||||
description="پاسخ استریم متنی (text/plain)",
|
||||
),
|
||||
400: OpenApiResponse(
|
||||
description="پارامتر ورودی نامعتبر",
|
||||
400: build_response(
|
||||
RagChatErrorResponseSerializer,
|
||||
"پارامترهای ورودی نامعتبر هستند.",
|
||||
),
|
||||
},
|
||||
examples=[
|
||||
@@ -152,21 +189,14 @@ class IrrigationRecommendationView(APIView):
|
||||
},
|
||||
),
|
||||
responses={
|
||||
202: inline_serializer(
|
||||
name="IrrigationRecommendationResponse",
|
||||
fields={
|
||||
"code": drf_serializers.IntegerField(),
|
||||
"msg": drf_serializers.CharField(),
|
||||
"data": inline_serializer(
|
||||
name="IrrigationRecommendationData",
|
||||
fields={
|
||||
"task_id": drf_serializers.CharField(),
|
||||
"status_url": drf_serializers.CharField(),
|
||||
},
|
||||
),
|
||||
},
|
||||
202: build_response(
|
||||
RagIrrigationQueueResponseSerializer,
|
||||
"تسک توصیه آبیاری در صف قرار گرفت.",
|
||||
),
|
||||
400: build_response(
|
||||
RagValidationErrorResponseSerializer,
|
||||
"پارامتر ورودی نامعتبر است.",
|
||||
),
|
||||
400: OpenApiResponse(description="پارامتر ورودی نامعتبر"),
|
||||
},
|
||||
examples=[
|
||||
OpenApiExample(
|
||||
@@ -219,22 +249,9 @@ class IrrigationRecommendationStatusView(APIView):
|
||||
summary="وضعیت تسک توصیه آبیاری",
|
||||
description="وضعیت تسک Celery توصیه آبیاری را برمیگرداند.",
|
||||
responses={
|
||||
200: inline_serializer(
|
||||
name="IrrigationRecommendationStatusResponse",
|
||||
fields={
|
||||
"code": drf_serializers.IntegerField(),
|
||||
"msg": drf_serializers.CharField(),
|
||||
"data": inline_serializer(
|
||||
name="IrrigationRecommendationStatusData",
|
||||
fields={
|
||||
"task_id": drf_serializers.CharField(),
|
||||
"status": drf_serializers.CharField(),
|
||||
"result": drf_serializers.JSONField(required=False),
|
||||
"progress": drf_serializers.DictField(required=False),
|
||||
"error": drf_serializers.CharField(required=False),
|
||||
},
|
||||
),
|
||||
},
|
||||
200: build_response(
|
||||
RagIrrigationStatusResponseSerializer,
|
||||
"وضعیت فعلی تسک توصیه آبیاری.",
|
||||
),
|
||||
},
|
||||
)
|
||||
@@ -281,21 +298,14 @@ class FertilizationRecommendationView(APIView):
|
||||
},
|
||||
),
|
||||
responses={
|
||||
202: inline_serializer(
|
||||
name="FertilizationRecommendationResponse",
|
||||
fields={
|
||||
"code": drf_serializers.IntegerField(),
|
||||
"msg": drf_serializers.CharField(),
|
||||
"data": inline_serializer(
|
||||
name="FertilizationRecommendationData",
|
||||
fields={
|
||||
"task_id": drf_serializers.CharField(),
|
||||
"status_url": drf_serializers.CharField(),
|
||||
},
|
||||
),
|
||||
},
|
||||
202: build_response(
|
||||
RagFertilizationQueueResponseSerializer,
|
||||
"تسک توصیه کودهی در صف قرار گرفت.",
|
||||
),
|
||||
400: build_response(
|
||||
RagValidationErrorResponseSerializer,
|
||||
"پارامتر ورودی نامعتبر است.",
|
||||
),
|
||||
400: OpenApiResponse(description="پارامتر ورودی نامعتبر"),
|
||||
},
|
||||
examples=[
|
||||
OpenApiExample(
|
||||
@@ -346,22 +356,9 @@ class FertilizationRecommendationStatusView(APIView):
|
||||
summary="وضعیت تسک توصیه کودهی",
|
||||
description="وضعیت تسک Celery توصیه کودهی را برمیگرداند.",
|
||||
responses={
|
||||
200: inline_serializer(
|
||||
name="FertilizationRecommendationStatusResponse",
|
||||
fields={
|
||||
"code": drf_serializers.IntegerField(),
|
||||
"msg": drf_serializers.CharField(),
|
||||
"data": inline_serializer(
|
||||
name="FertilizationRecommendationStatusData",
|
||||
fields={
|
||||
"task_id": drf_serializers.CharField(),
|
||||
"status": drf_serializers.CharField(),
|
||||
"result": drf_serializers.JSONField(required=False),
|
||||
"progress": drf_serializers.DictField(required=False),
|
||||
"error": drf_serializers.CharField(required=False),
|
||||
},
|
||||
),
|
||||
},
|
||||
200: build_response(
|
||||
RagFertilizationStatusResponseSerializer,
|
||||
"وضعیت فعلی تسک توصیه کودهی.",
|
||||
),
|
||||
},
|
||||
)
|
||||
|
||||
Reference in New Issue
Block a user