mirror of
https://github.com/langgenius/dify.git
synced 2026-09-08 11:04:27 +08:00
refactor(api): deduplicate shared controller request schemas into controller_schemas.py (#34700)
Co-authored-by: autofix-ci[bot] <114827586+autofix-ci[bot]@users.noreply.github.com>
This commit is contained in:
parent
5cd267d755
commit
0ba66ab155
63
api/controllers/common/controller_schemas.py
Normal file
63
api/controllers/common/controller_schemas.py
Normal file
@ -0,0 +1,63 @@
|
|||||||
|
from typing import Any, Literal
|
||||||
|
|
||||||
|
from pydantic import BaseModel, Field, model_validator
|
||||||
|
|
||||||
|
from libs.helper import UUIDStrOrEmpty
|
||||||
|
|
||||||
|
# --- Conversation schemas ---
|
||||||
|
|
||||||
|
|
||||||
|
class ConversationRenamePayload(BaseModel):
|
||||||
|
name: str | None = None
|
||||||
|
auto_generate: bool = False
|
||||||
|
|
||||||
|
@model_validator(mode="after")
|
||||||
|
def validate_name_requirement(self):
|
||||||
|
if not self.auto_generate:
|
||||||
|
if self.name is None or not self.name.strip():
|
||||||
|
raise ValueError("name is required when auto_generate is false")
|
||||||
|
return self
|
||||||
|
|
||||||
|
|
||||||
|
# --- Message schemas ---
|
||||||
|
|
||||||
|
|
||||||
|
class MessageListQuery(BaseModel):
|
||||||
|
conversation_id: UUIDStrOrEmpty
|
||||||
|
first_id: UUIDStrOrEmpty | None = None
|
||||||
|
limit: int = Field(default=20, ge=1, le=100)
|
||||||
|
|
||||||
|
|
||||||
|
class MessageFeedbackPayload(BaseModel):
|
||||||
|
rating: Literal["like", "dislike"] | None = None
|
||||||
|
content: str | None = None
|
||||||
|
|
||||||
|
|
||||||
|
# --- Saved message schemas ---
|
||||||
|
|
||||||
|
|
||||||
|
class SavedMessageListQuery(BaseModel):
|
||||||
|
last_id: UUIDStrOrEmpty | None = None
|
||||||
|
limit: int = Field(default=20, ge=1, le=100)
|
||||||
|
|
||||||
|
|
||||||
|
class SavedMessageCreatePayload(BaseModel):
|
||||||
|
message_id: UUIDStrOrEmpty
|
||||||
|
|
||||||
|
|
||||||
|
# --- Workflow schemas ---
|
||||||
|
|
||||||
|
|
||||||
|
class WorkflowRunPayload(BaseModel):
|
||||||
|
inputs: dict[str, Any]
|
||||||
|
files: list[dict[str, Any]] | None = None
|
||||||
|
|
||||||
|
|
||||||
|
# --- Audio schemas ---
|
||||||
|
|
||||||
|
|
||||||
|
class TextToAudioPayload(BaseModel):
|
||||||
|
message_id: str | None = None
|
||||||
|
voice: str | None = None
|
||||||
|
text: str | None = None
|
||||||
|
streaming: bool | None = None
|
||||||
@ -2,10 +2,10 @@ import logging
|
|||||||
|
|
||||||
from flask import request
|
from flask import request
|
||||||
from graphon.model_runtime.errors.invoke import InvokeError
|
from graphon.model_runtime.errors.invoke import InvokeError
|
||||||
from pydantic import BaseModel, Field
|
|
||||||
from werkzeug.exceptions import InternalServerError
|
from werkzeug.exceptions import InternalServerError
|
||||||
|
|
||||||
import services
|
import services
|
||||||
|
from controllers.common.controller_schemas import TextToAudioPayload
|
||||||
from controllers.common.schema import register_schema_model
|
from controllers.common.schema import register_schema_model
|
||||||
from controllers.console.app.error import (
|
from controllers.console.app.error import (
|
||||||
AppUnavailableError,
|
AppUnavailableError,
|
||||||
@ -32,14 +32,6 @@ from .. import console_ns
|
|||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
class TextToAudioPayload(BaseModel):
|
|
||||||
message_id: str | None = None
|
|
||||||
voice: str | None = None
|
|
||||||
text: str | None = None
|
|
||||||
streaming: bool | None = Field(default=None, description="Enable streaming response")
|
|
||||||
|
|
||||||
|
|
||||||
register_schema_model(console_ns, TextToAudioPayload)
|
register_schema_model(console_ns, TextToAudioPayload)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -1,10 +1,11 @@
|
|||||||
from typing import Any
|
from typing import Any
|
||||||
|
|
||||||
from flask import request
|
from flask import request
|
||||||
from pydantic import BaseModel, Field, TypeAdapter, model_validator
|
from pydantic import BaseModel, Field, TypeAdapter
|
||||||
from sqlalchemy.orm import sessionmaker
|
from sqlalchemy.orm import sessionmaker
|
||||||
from werkzeug.exceptions import NotFound
|
from werkzeug.exceptions import NotFound
|
||||||
|
|
||||||
|
from controllers.common.controller_schemas import ConversationRenamePayload
|
||||||
from controllers.common.schema import register_schema_models
|
from controllers.common.schema import register_schema_models
|
||||||
from controllers.console.explore.error import NotChatAppError
|
from controllers.console.explore.error import NotChatAppError
|
||||||
from controllers.console.explore.wraps import InstalledAppResource
|
from controllers.console.explore.wraps import InstalledAppResource
|
||||||
@ -32,18 +33,6 @@ class ConversationListQuery(BaseModel):
|
|||||||
pinned: bool | None = None
|
pinned: bool | None = None
|
||||||
|
|
||||||
|
|
||||||
class ConversationRenamePayload(BaseModel):
|
|
||||||
name: str | None = None
|
|
||||||
auto_generate: bool = False
|
|
||||||
|
|
||||||
@model_validator(mode="after")
|
|
||||||
def validate_name_requirement(self):
|
|
||||||
if not self.auto_generate:
|
|
||||||
if self.name is None or not self.name.strip():
|
|
||||||
raise ValueError("name is required when auto_generate is false")
|
|
||||||
return self
|
|
||||||
|
|
||||||
|
|
||||||
register_schema_models(console_ns, ConversationListQuery, ConversationRenamePayload)
|
register_schema_models(console_ns, ConversationListQuery, ConversationRenamePayload)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -3,9 +3,10 @@ from typing import Literal
|
|||||||
|
|
||||||
from flask import request
|
from flask import request
|
||||||
from graphon.model_runtime.errors.invoke import InvokeError
|
from graphon.model_runtime.errors.invoke import InvokeError
|
||||||
from pydantic import BaseModel, Field, TypeAdapter
|
from pydantic import BaseModel, TypeAdapter
|
||||||
from werkzeug.exceptions import InternalServerError, NotFound
|
from werkzeug.exceptions import InternalServerError, NotFound
|
||||||
|
|
||||||
|
from controllers.common.controller_schemas import MessageFeedbackPayload, MessageListQuery
|
||||||
from controllers.common.schema import register_schema_models
|
from controllers.common.schema import register_schema_models
|
||||||
from controllers.console.app.error import (
|
from controllers.console.app.error import (
|
||||||
AppMoreLikeThisDisabledError,
|
AppMoreLikeThisDisabledError,
|
||||||
@ -25,7 +26,6 @@ from core.errors.error import ModelCurrentlyNotSupportError, ProviderTokenNotIni
|
|||||||
from fields.conversation_fields import ResultResponse
|
from fields.conversation_fields import ResultResponse
|
||||||
from fields.message_fields import MessageInfiniteScrollPagination, MessageListItem, SuggestedQuestionsResponse
|
from fields.message_fields import MessageInfiniteScrollPagination, MessageListItem, SuggestedQuestionsResponse
|
||||||
from libs import helper
|
from libs import helper
|
||||||
from libs.helper import UUIDStrOrEmpty
|
|
||||||
from libs.login import current_account_with_tenant
|
from libs.login import current_account_with_tenant
|
||||||
from models.enums import FeedbackRating
|
from models.enums import FeedbackRating
|
||||||
from models.model import AppMode
|
from models.model import AppMode
|
||||||
@ -44,17 +44,6 @@ from .. import console_ns
|
|||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
class MessageListQuery(BaseModel):
|
|
||||||
conversation_id: UUIDStrOrEmpty
|
|
||||||
first_id: UUIDStrOrEmpty | None = None
|
|
||||||
limit: int = Field(default=20, ge=1, le=100)
|
|
||||||
|
|
||||||
|
|
||||||
class MessageFeedbackPayload(BaseModel):
|
|
||||||
rating: Literal["like", "dislike"] | None = None
|
|
||||||
content: str | None = None
|
|
||||||
|
|
||||||
|
|
||||||
class MoreLikeThisQuery(BaseModel):
|
class MoreLikeThisQuery(BaseModel):
|
||||||
response_mode: Literal["blocking", "streaming"]
|
response_mode: Literal["blocking", "streaming"]
|
||||||
|
|
||||||
|
|||||||
@ -1,28 +1,18 @@
|
|||||||
from flask import request
|
from flask import request
|
||||||
from pydantic import BaseModel, Field, TypeAdapter
|
from pydantic import TypeAdapter
|
||||||
from werkzeug.exceptions import NotFound
|
from werkzeug.exceptions import NotFound
|
||||||
|
|
||||||
|
from controllers.common.controller_schemas import SavedMessageCreatePayload, SavedMessageListQuery
|
||||||
from controllers.common.schema import register_schema_models
|
from controllers.common.schema import register_schema_models
|
||||||
from controllers.console import console_ns
|
from controllers.console import console_ns
|
||||||
from controllers.console.explore.error import NotCompletionAppError
|
from controllers.console.explore.error import NotCompletionAppError
|
||||||
from controllers.console.explore.wraps import InstalledAppResource
|
from controllers.console.explore.wraps import InstalledAppResource
|
||||||
from fields.conversation_fields import ResultResponse
|
from fields.conversation_fields import ResultResponse
|
||||||
from fields.message_fields import SavedMessageInfiniteScrollPagination, SavedMessageItem
|
from fields.message_fields import SavedMessageInfiniteScrollPagination, SavedMessageItem
|
||||||
from libs.helper import UUIDStrOrEmpty
|
|
||||||
from libs.login import current_account_with_tenant
|
from libs.login import current_account_with_tenant
|
||||||
from services.errors.message import MessageNotExistsError
|
from services.errors.message import MessageNotExistsError
|
||||||
from services.saved_message_service import SavedMessageService
|
from services.saved_message_service import SavedMessageService
|
||||||
|
|
||||||
|
|
||||||
class SavedMessageListQuery(BaseModel):
|
|
||||||
last_id: UUIDStrOrEmpty | None = None
|
|
||||||
limit: int = Field(default=20, ge=1, le=100)
|
|
||||||
|
|
||||||
|
|
||||||
class SavedMessageCreatePayload(BaseModel):
|
|
||||||
message_id: UUIDStrOrEmpty
|
|
||||||
|
|
||||||
|
|
||||||
register_schema_models(console_ns, SavedMessageListQuery, SavedMessageCreatePayload)
|
register_schema_models(console_ns, SavedMessageListQuery, SavedMessageCreatePayload)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -1,11 +1,10 @@
|
|||||||
import logging
|
import logging
|
||||||
from typing import Any
|
|
||||||
|
|
||||||
from graphon.graph_engine.manager import GraphEngineManager
|
from graphon.graph_engine.manager import GraphEngineManager
|
||||||
from graphon.model_runtime.errors.invoke import InvokeError
|
from graphon.model_runtime.errors.invoke import InvokeError
|
||||||
from pydantic import BaseModel
|
|
||||||
from werkzeug.exceptions import InternalServerError
|
from werkzeug.exceptions import InternalServerError
|
||||||
|
|
||||||
|
from controllers.common.controller_schemas import WorkflowRunPayload
|
||||||
from controllers.common.schema import register_schema_model
|
from controllers.common.schema import register_schema_model
|
||||||
from controllers.console.app.error import (
|
from controllers.console.app.error import (
|
||||||
CompletionRequestError,
|
CompletionRequestError,
|
||||||
@ -34,12 +33,6 @@ from .. import console_ns
|
|||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
class WorkflowRunPayload(BaseModel):
|
|
||||||
inputs: dict[str, Any]
|
|
||||||
files: list[dict[str, Any]] | None = None
|
|
||||||
|
|
||||||
|
|
||||||
register_schema_model(console_ns, WorkflowRunPayload)
|
register_schema_model(console_ns, WorkflowRunPayload)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -2,11 +2,12 @@ from typing import Any, Literal
|
|||||||
|
|
||||||
from flask import request
|
from flask import request
|
||||||
from flask_restx import Resource
|
from flask_restx import Resource
|
||||||
from pydantic import BaseModel, Field, TypeAdapter, field_validator, model_validator
|
from pydantic import BaseModel, Field, TypeAdapter, field_validator
|
||||||
from sqlalchemy.orm import sessionmaker
|
from sqlalchemy.orm import sessionmaker
|
||||||
from werkzeug.exceptions import BadRequest, NotFound
|
from werkzeug.exceptions import BadRequest, NotFound
|
||||||
|
|
||||||
import services
|
import services
|
||||||
|
from controllers.common.controller_schemas import ConversationRenamePayload
|
||||||
from controllers.common.schema import register_schema_models
|
from controllers.common.schema import register_schema_models
|
||||||
from controllers.service_api import service_api_ns
|
from controllers.service_api import service_api_ns
|
||||||
from controllers.service_api.app.error import NotChatAppError
|
from controllers.service_api.app.error import NotChatAppError
|
||||||
@ -34,18 +35,6 @@ class ConversationListQuery(BaseModel):
|
|||||||
)
|
)
|
||||||
|
|
||||||
|
|
||||||
class ConversationRenamePayload(BaseModel):
|
|
||||||
name: str | None = Field(default=None, description="New conversation name (required if auto_generate is false)")
|
|
||||||
auto_generate: bool = Field(default=False, description="Auto-generate conversation name")
|
|
||||||
|
|
||||||
@model_validator(mode="after")
|
|
||||||
def validate_name_requirement(self):
|
|
||||||
if not self.auto_generate:
|
|
||||||
if self.name is None or not self.name.strip():
|
|
||||||
raise ValueError("name is required when auto_generate is false")
|
|
||||||
return self
|
|
||||||
|
|
||||||
|
|
||||||
class ConversationVariablesQuery(BaseModel):
|
class ConversationVariablesQuery(BaseModel):
|
||||||
last_id: UUIDStrOrEmpty | None = Field(default=None, description="Last variable ID for pagination")
|
last_id: UUIDStrOrEmpty | None = Field(default=None, description="Last variable ID for pagination")
|
||||||
limit: int = Field(default=20, ge=1, le=100, description="Number of variables to return")
|
limit: int = Field(default=20, ge=1, le=100, description="Number of variables to return")
|
||||||
|
|||||||
@ -1,5 +1,4 @@
|
|||||||
import logging
|
import logging
|
||||||
from typing import Literal
|
|
||||||
|
|
||||||
from flask import request
|
from flask import request
|
||||||
from flask_restx import Resource
|
from flask_restx import Resource
|
||||||
@ -7,6 +6,7 @@ from pydantic import BaseModel, Field, TypeAdapter
|
|||||||
from werkzeug.exceptions import BadRequest, InternalServerError, NotFound
|
from werkzeug.exceptions import BadRequest, InternalServerError, NotFound
|
||||||
|
|
||||||
import services
|
import services
|
||||||
|
from controllers.common.controller_schemas import MessageFeedbackPayload, MessageListQuery
|
||||||
from controllers.common.schema import register_schema_models
|
from controllers.common.schema import register_schema_models
|
||||||
from controllers.service_api import service_api_ns
|
from controllers.service_api import service_api_ns
|
||||||
from controllers.service_api.app.error import NotChatAppError
|
from controllers.service_api.app.error import NotChatAppError
|
||||||
@ -14,7 +14,6 @@ from controllers.service_api.wraps import FetchUserArg, WhereisUserArg, validate
|
|||||||
from core.app.entities.app_invoke_entities import InvokeFrom
|
from core.app.entities.app_invoke_entities import InvokeFrom
|
||||||
from fields.conversation_fields import ResultResponse
|
from fields.conversation_fields import ResultResponse
|
||||||
from fields.message_fields import MessageInfiniteScrollPagination, MessageListItem
|
from fields.message_fields import MessageInfiniteScrollPagination, MessageListItem
|
||||||
from libs.helper import UUIDStrOrEmpty
|
|
||||||
from models.enums import FeedbackRating
|
from models.enums import FeedbackRating
|
||||||
from models.model import App, AppMode, EndUser
|
from models.model import App, AppMode, EndUser
|
||||||
from services.errors.message import (
|
from services.errors.message import (
|
||||||
@ -27,17 +26,6 @@ from services.message_service import MessageService
|
|||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
class MessageListQuery(BaseModel):
|
|
||||||
conversation_id: UUIDStrOrEmpty
|
|
||||||
first_id: UUIDStrOrEmpty | None = None
|
|
||||||
limit: int = Field(default=20, ge=1, le=100, description="Number of messages to return")
|
|
||||||
|
|
||||||
|
|
||||||
class MessageFeedbackPayload(BaseModel):
|
|
||||||
rating: Literal["like", "dislike"] | None = Field(default=None, description="Feedback rating")
|
|
||||||
content: str | None = Field(default=None, description="Feedback content")
|
|
||||||
|
|
||||||
|
|
||||||
class FeedbackListQuery(BaseModel):
|
class FeedbackListQuery(BaseModel):
|
||||||
page: int = Field(default=1, ge=1, description="Page number")
|
page: int = Field(default=1, ge=1, description="Page number")
|
||||||
limit: int = Field(default=20, ge=1, le=101, description="Number of feedbacks per page")
|
limit: int = Field(default=20, ge=1, le=101, description="Number of feedbacks per page")
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
import logging
|
import logging
|
||||||
from typing import Any, Literal
|
from typing import Literal
|
||||||
|
|
||||||
from dateutil.parser import isoparse
|
from dateutil.parser import isoparse
|
||||||
from flask import request
|
from flask import request
|
||||||
@ -11,6 +11,7 @@ from pydantic import BaseModel, Field
|
|||||||
from sqlalchemy.orm import sessionmaker
|
from sqlalchemy.orm import sessionmaker
|
||||||
from werkzeug.exceptions import BadRequest, InternalServerError, NotFound
|
from werkzeug.exceptions import BadRequest, InternalServerError, NotFound
|
||||||
|
|
||||||
|
from controllers.common.controller_schemas import WorkflowRunPayload as WorkflowRunPayloadBase
|
||||||
from controllers.common.schema import register_schema_models
|
from controllers.common.schema import register_schema_models
|
||||||
from controllers.service_api import service_api_ns
|
from controllers.service_api import service_api_ns
|
||||||
from controllers.service_api.app.error import (
|
from controllers.service_api.app.error import (
|
||||||
@ -46,9 +47,7 @@ from services.workflow_app_service import WorkflowAppService
|
|||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
|
|
||||||
class WorkflowRunPayload(BaseModel):
|
class WorkflowRunPayload(WorkflowRunPayloadBase):
|
||||||
inputs: dict[str, Any]
|
|
||||||
files: list[dict[str, Any]] | None = None
|
|
||||||
response_mode: Literal["blocking", "streaming"] | None = None
|
response_mode: Literal["blocking", "streaming"] | None = None
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -3,10 +3,11 @@ import logging
|
|||||||
from flask import request
|
from flask import request
|
||||||
from flask_restx import fields, marshal_with
|
from flask_restx import fields, marshal_with
|
||||||
from graphon.model_runtime.errors.invoke import InvokeError
|
from graphon.model_runtime.errors.invoke import InvokeError
|
||||||
from pydantic import BaseModel, field_validator
|
from pydantic import field_validator
|
||||||
from werkzeug.exceptions import InternalServerError
|
from werkzeug.exceptions import InternalServerError
|
||||||
|
|
||||||
import services
|
import services
|
||||||
|
from controllers.common.controller_schemas import TextToAudioPayload as TextToAudioPayloadBase
|
||||||
from controllers.web import web_ns
|
from controllers.web import web_ns
|
||||||
from controllers.web.error import (
|
from controllers.web.error import (
|
||||||
AppUnavailableError,
|
AppUnavailableError,
|
||||||
@ -34,12 +35,7 @@ from services.errors.audio import (
|
|||||||
from ..common.schema import register_schema_models
|
from ..common.schema import register_schema_models
|
||||||
|
|
||||||
|
|
||||||
class TextToAudioPayload(BaseModel):
|
class TextToAudioPayload(TextToAudioPayloadBase):
|
||||||
message_id: str | None = None
|
|
||||||
voice: str | None = None
|
|
||||||
text: str | None = None
|
|
||||||
streaming: bool | None = None
|
|
||||||
|
|
||||||
@field_validator("message_id")
|
@field_validator("message_id")
|
||||||
@classmethod
|
@classmethod
|
||||||
def validate_message_id(cls, value: str | None) -> str | None:
|
def validate_message_id(cls, value: str | None) -> str | None:
|
||||||
|
|||||||
@ -1,10 +1,11 @@
|
|||||||
from typing import Literal
|
from typing import Literal
|
||||||
|
|
||||||
from flask import request
|
from flask import request
|
||||||
from pydantic import BaseModel, Field, TypeAdapter, field_validator, model_validator
|
from pydantic import BaseModel, Field, TypeAdapter, field_validator
|
||||||
from sqlalchemy.orm import sessionmaker
|
from sqlalchemy.orm import sessionmaker
|
||||||
from werkzeug.exceptions import NotFound
|
from werkzeug.exceptions import NotFound
|
||||||
|
|
||||||
|
from controllers.common.controller_schemas import ConversationRenamePayload
|
||||||
from controllers.common.schema import register_schema_models
|
from controllers.common.schema import register_schema_models
|
||||||
from controllers.web import web_ns
|
from controllers.web import web_ns
|
||||||
from controllers.web.error import NotChatAppError
|
from controllers.web.error import NotChatAppError
|
||||||
@ -37,18 +38,6 @@ class ConversationListQuery(BaseModel):
|
|||||||
return uuid_value(value)
|
return uuid_value(value)
|
||||||
|
|
||||||
|
|
||||||
class ConversationRenamePayload(BaseModel):
|
|
||||||
name: str | None = None
|
|
||||||
auto_generate: bool = False
|
|
||||||
|
|
||||||
@model_validator(mode="after")
|
|
||||||
def validate_name_requirement(self):
|
|
||||||
if not self.auto_generate:
|
|
||||||
if self.name is None or not self.name.strip():
|
|
||||||
raise ValueError("name is required when auto_generate is false")
|
|
||||||
return self
|
|
||||||
|
|
||||||
|
|
||||||
register_schema_models(web_ns, ConversationListQuery, ConversationRenamePayload)
|
register_schema_models(web_ns, ConversationListQuery, ConversationRenamePayload)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -6,6 +6,7 @@ from graphon.model_runtime.errors.invoke import InvokeError
|
|||||||
from pydantic import BaseModel, Field, TypeAdapter, field_validator
|
from pydantic import BaseModel, Field, TypeAdapter, field_validator
|
||||||
from werkzeug.exceptions import InternalServerError, NotFound
|
from werkzeug.exceptions import InternalServerError, NotFound
|
||||||
|
|
||||||
|
from controllers.common.controller_schemas import MessageFeedbackPayload
|
||||||
from controllers.common.schema import register_schema_models
|
from controllers.common.schema import register_schema_models
|
||||||
from controllers.web import web_ns
|
from controllers.web import web_ns
|
||||||
from controllers.web.error import (
|
from controllers.web.error import (
|
||||||
@ -53,11 +54,6 @@ class MessageListQuery(BaseModel):
|
|||||||
return uuid_value(value)
|
return uuid_value(value)
|
||||||
|
|
||||||
|
|
||||||
class MessageFeedbackPayload(BaseModel):
|
|
||||||
rating: Literal["like", "dislike"] | None = Field(default=None, description="Feedback rating")
|
|
||||||
content: str | None = Field(default=None, description="Feedback content")
|
|
||||||
|
|
||||||
|
|
||||||
class MessageMoreLikeThisQuery(BaseModel):
|
class MessageMoreLikeThisQuery(BaseModel):
|
||||||
response_mode: Literal["blocking", "streaming"] = Field(
|
response_mode: Literal["blocking", "streaming"] = Field(
|
||||||
description="Response mode",
|
description="Response mode",
|
||||||
|
|||||||
@ -1,27 +1,17 @@
|
|||||||
from flask import request
|
from flask import request
|
||||||
from pydantic import BaseModel, Field, TypeAdapter
|
from pydantic import TypeAdapter
|
||||||
from werkzeug.exceptions import NotFound
|
from werkzeug.exceptions import NotFound
|
||||||
|
|
||||||
|
from controllers.common.controller_schemas import SavedMessageCreatePayload, SavedMessageListQuery
|
||||||
from controllers.common.schema import register_schema_models
|
from controllers.common.schema import register_schema_models
|
||||||
from controllers.web import web_ns
|
from controllers.web import web_ns
|
||||||
from controllers.web.error import NotCompletionAppError
|
from controllers.web.error import NotCompletionAppError
|
||||||
from controllers.web.wraps import WebApiResource
|
from controllers.web.wraps import WebApiResource
|
||||||
from fields.conversation_fields import ResultResponse
|
from fields.conversation_fields import ResultResponse
|
||||||
from fields.message_fields import SavedMessageInfiniteScrollPagination, SavedMessageItem
|
from fields.message_fields import SavedMessageInfiniteScrollPagination, SavedMessageItem
|
||||||
from libs.helper import UUIDStrOrEmpty
|
|
||||||
from services.errors.message import MessageNotExistsError
|
from services.errors.message import MessageNotExistsError
|
||||||
from services.saved_message_service import SavedMessageService
|
from services.saved_message_service import SavedMessageService
|
||||||
|
|
||||||
|
|
||||||
class SavedMessageListQuery(BaseModel):
|
|
||||||
last_id: UUIDStrOrEmpty | None = None
|
|
||||||
limit: int = Field(default=20, ge=1, le=100)
|
|
||||||
|
|
||||||
|
|
||||||
class SavedMessageCreatePayload(BaseModel):
|
|
||||||
message_id: UUIDStrOrEmpty
|
|
||||||
|
|
||||||
|
|
||||||
register_schema_models(web_ns, SavedMessageListQuery, SavedMessageCreatePayload)
|
register_schema_models(web_ns, SavedMessageListQuery, SavedMessageCreatePayload)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@ -1,11 +1,10 @@
|
|||||||
import logging
|
import logging
|
||||||
from typing import Any
|
|
||||||
|
|
||||||
from graphon.graph_engine.manager import GraphEngineManager
|
from graphon.graph_engine.manager import GraphEngineManager
|
||||||
from graphon.model_runtime.errors.invoke import InvokeError
|
from graphon.model_runtime.errors.invoke import InvokeError
|
||||||
from pydantic import BaseModel, Field
|
|
||||||
from werkzeug.exceptions import InternalServerError
|
from werkzeug.exceptions import InternalServerError
|
||||||
|
|
||||||
|
from controllers.common.controller_schemas import WorkflowRunPayload
|
||||||
from controllers.common.schema import register_schema_models
|
from controllers.common.schema import register_schema_models
|
||||||
from controllers.web import web_ns
|
from controllers.web import web_ns
|
||||||
from controllers.web.error import (
|
from controllers.web.error import (
|
||||||
@ -30,12 +29,6 @@ from models.model import App, AppMode, EndUser
|
|||||||
from services.app_generate_service import AppGenerateService
|
from services.app_generate_service import AppGenerateService
|
||||||
from services.errors.llm import InvokeRateLimitError
|
from services.errors.llm import InvokeRateLimitError
|
||||||
|
|
||||||
|
|
||||||
class WorkflowRunPayload(BaseModel):
|
|
||||||
inputs: dict[str, Any] = Field(description="Input variables for the workflow")
|
|
||||||
files: list[dict[str, Any]] | None = Field(default=None, description="Files to be processed by the workflow")
|
|
||||||
|
|
||||||
|
|
||||||
logger = logging.getLogger(__name__)
|
logger = logging.getLogger(__name__)
|
||||||
|
|
||||||
register_schema_models(web_ns, WorkflowRunPayload)
|
register_schema_models(web_ns, WorkflowRunPayload)
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user