397 lines
9.7 KiB
Python
397 lines
9.7 KiB
Python
"""Response models for the Dify client with proper type hints."""
|
|
|
|
from typing import Optional, List, Dict, Any, Literal, Union
|
|
from dataclasses import dataclass, field
|
|
from datetime import datetime
|
|
|
|
|
|
@dataclass
|
|
class BaseResponse:
|
|
"""Base response model."""
|
|
|
|
success: bool = True
|
|
message: str | None = None
|
|
|
|
|
|
@dataclass
|
|
class ErrorResponse(BaseResponse):
|
|
"""Error response model."""
|
|
|
|
error_code: str | None = None
|
|
details: Dict[str, Any] | None = None
|
|
success: bool = False
|
|
|
|
|
|
@dataclass
|
|
class FileInfo:
|
|
"""File information model."""
|
|
|
|
id: str
|
|
name: str
|
|
size: int
|
|
mime_type: str
|
|
url: str | None = None
|
|
created_at: datetime | None = None
|
|
|
|
|
|
@dataclass
|
|
class MessageResponse(BaseResponse):
|
|
"""Message response model."""
|
|
|
|
id: str = ""
|
|
answer: str = ""
|
|
conversation_id: str | None = None
|
|
created_at: int | None = None
|
|
metadata: Dict[str, Any] | None = None
|
|
files: List[Dict[str, Any]] | None = None
|
|
|
|
|
|
@dataclass
|
|
class ConversationResponse(BaseResponse):
|
|
"""Conversation response model."""
|
|
|
|
id: str = ""
|
|
name: str = ""
|
|
inputs: Dict[str, Any] | None = None
|
|
status: str | None = None
|
|
created_at: int | None = None
|
|
updated_at: int | None = None
|
|
|
|
|
|
@dataclass
|
|
class DatasetResponse(BaseResponse):
|
|
"""Dataset response model."""
|
|
|
|
id: str = ""
|
|
name: str = ""
|
|
description: str | None = None
|
|
permission: str | None = None
|
|
indexing_technique: str | None = None
|
|
embedding_model: str | None = None
|
|
embedding_model_provider: str | None = None
|
|
retrieval_model: Dict[str, Any] | None = None
|
|
document_count: int | None = None
|
|
word_count: int | None = None
|
|
app_count: int | None = None
|
|
created_at: int | None = None
|
|
updated_at: int | None = None
|
|
|
|
|
|
@dataclass
|
|
class DocumentResponse(BaseResponse):
|
|
"""Document response model."""
|
|
|
|
id: str = ""
|
|
name: str = ""
|
|
data_source_type: str | None = None
|
|
data_source_info: Dict[str, Any] | None = None
|
|
dataset_process_rule_id: str | None = None
|
|
batch: str | None = None
|
|
position: int | None = None
|
|
enabled: bool | None = None
|
|
disabled_at: float | None = None
|
|
disabled_by: str | None = None
|
|
archived: bool | None = None
|
|
archived_reason: str | None = None
|
|
archived_at: float | None = None
|
|
archived_by: str | None = None
|
|
word_count: int | None = None
|
|
hit_count: int | None = None
|
|
doc_form: str | None = None
|
|
doc_metadata: Dict[str, Any] | None = None
|
|
created_at: float | None = None
|
|
updated_at: float | None = None
|
|
indexing_status: str | None = None
|
|
completed_at: float | None = None
|
|
paused_at: float | None = None
|
|
error: str | None = None
|
|
stopped_at: float | None = None
|
|
|
|
|
|
@dataclass
|
|
class DocumentSegmentResponse(BaseResponse):
|
|
"""Document segment response model."""
|
|
|
|
id: str = ""
|
|
position: int | None = None
|
|
document_id: str | None = None
|
|
content: str | None = None
|
|
answer: str | None = None
|
|
word_count: int | None = None
|
|
tokens: int | None = None
|
|
keywords: List[str] | None = None
|
|
index_node_id: str | None = None
|
|
index_node_hash: str | None = None
|
|
hit_count: int | None = None
|
|
enabled: bool | None = None
|
|
disabled_at: float | None = None
|
|
disabled_by: str | None = None
|
|
status: str | None = None
|
|
created_by: str | None = None
|
|
created_at: float | None = None
|
|
indexing_at: float | None = None
|
|
completed_at: float | None = None
|
|
error: str | None = None
|
|
stopped_at: float | None = None
|
|
|
|
|
|
@dataclass
|
|
class WorkflowRunResponse(BaseResponse):
|
|
"""Workflow run response model."""
|
|
|
|
id: str = ""
|
|
workflow_id: str | None = None
|
|
status: Literal["running", "succeeded", "failed", "stopped"] | None = None
|
|
inputs: Dict[str, Any] | None = None
|
|
outputs: Dict[str, Any] | None = None
|
|
error: str | None = None
|
|
elapsed_time: float | None = None
|
|
total_tokens: int | None = None
|
|
total_steps: int | None = None
|
|
created_at: float | None = None
|
|
finished_at: float | None = None
|
|
|
|
|
|
@dataclass
|
|
class ApplicationParametersResponse(BaseResponse):
|
|
"""Application parameters response model."""
|
|
|
|
opening_statement: str | None = None
|
|
suggested_questions: List[str] | None = None
|
|
speech_to_text: Dict[str, Any] | None = None
|
|
text_to_speech: Dict[str, Any] | None = None
|
|
retriever_resource: Dict[str, Any] | None = None
|
|
sensitive_word_avoidance: Dict[str, Any] | None = None
|
|
file_upload: Dict[str, Any] | None = None
|
|
system_parameters: Dict[str, Any] | None = None
|
|
user_input_form: List[Dict[str, Any]] | None = None
|
|
|
|
|
|
@dataclass
|
|
class AnnotationResponse(BaseResponse):
|
|
"""Annotation response model."""
|
|
|
|
id: str = ""
|
|
question: str = ""
|
|
answer: str = ""
|
|
content: str | None = None
|
|
created_at: float | None = None
|
|
updated_at: float | None = None
|
|
created_by: str | None = None
|
|
updated_by: str | None = None
|
|
hit_count: int | None = None
|
|
|
|
|
|
@dataclass
|
|
class PaginatedResponse(BaseResponse):
|
|
"""Paginated response model."""
|
|
|
|
data: List[Any] = field(default_factory=list)
|
|
has_more: bool = False
|
|
limit: int = 0
|
|
total: int = 0
|
|
page: int | None = None
|
|
|
|
|
|
@dataclass
|
|
class ConversationVariableResponse(BaseResponse):
|
|
"""Conversation variable response model."""
|
|
|
|
conversation_id: str = ""
|
|
variables: List[Dict[str, Any]] = field(default_factory=list)
|
|
|
|
|
|
@dataclass
|
|
class FileUploadResponse(BaseResponse):
|
|
"""File upload response model."""
|
|
|
|
id: str = ""
|
|
name: str = ""
|
|
size: int = 0
|
|
mime_type: str = ""
|
|
url: str | None = None
|
|
created_at: float | None = None
|
|
|
|
|
|
@dataclass
|
|
class AudioResponse(BaseResponse):
|
|
"""Audio generation/response model."""
|
|
|
|
audio: str | None = None # Base64 encoded audio data or URL
|
|
audio_url: str | None = None
|
|
duration: float | None = None
|
|
sample_rate: int | None = None
|
|
|
|
|
|
@dataclass
|
|
class SuggestedQuestionsResponse(BaseResponse):
|
|
"""Suggested questions response model."""
|
|
|
|
message_id: str = ""
|
|
questions: List[str] = field(default_factory=list)
|
|
|
|
|
|
@dataclass
|
|
class AppInfoResponse(BaseResponse):
|
|
"""App info response model."""
|
|
|
|
id: str = ""
|
|
name: str = ""
|
|
description: str | None = None
|
|
icon: str | None = None
|
|
icon_background: str | None = None
|
|
mode: str | None = None
|
|
tags: List[str] | None = None
|
|
enable_site: bool | None = None
|
|
enable_api: bool | None = None
|
|
api_token: str | None = None
|
|
|
|
|
|
@dataclass
|
|
class WorkspaceModelsResponse(BaseResponse):
|
|
"""Workspace models response model."""
|
|
|
|
models: List[Dict[str, Any]] = field(default_factory=list)
|
|
|
|
|
|
@dataclass
|
|
class HitTestingResponse(BaseResponse):
|
|
"""Hit testing response model."""
|
|
|
|
query: str = ""
|
|
records: List[Dict[str, Any]] = field(default_factory=list)
|
|
|
|
|
|
@dataclass
|
|
class DatasetTagsResponse(BaseResponse):
|
|
"""Dataset tags response model."""
|
|
|
|
tags: List[Dict[str, Any]] = field(default_factory=list)
|
|
|
|
|
|
@dataclass
|
|
class WorkflowLogsResponse(BaseResponse):
|
|
"""Workflow logs response model."""
|
|
|
|
logs: List[Dict[str, Any]] = field(default_factory=list)
|
|
total: int = 0
|
|
page: int = 0
|
|
limit: int = 0
|
|
has_more: bool = False
|
|
|
|
|
|
@dataclass
|
|
class ModelProviderResponse(BaseResponse):
|
|
"""Model provider response model."""
|
|
|
|
provider_name: str = ""
|
|
provider_type: str = ""
|
|
models: List[Dict[str, Any]] = field(default_factory=list)
|
|
is_enabled: bool = False
|
|
credentials: Dict[str, Any] | None = None
|
|
|
|
|
|
@dataclass
|
|
class FileInfoResponse(BaseResponse):
|
|
"""File info response model."""
|
|
|
|
id: str = ""
|
|
name: str = ""
|
|
size: int = 0
|
|
mime_type: str = ""
|
|
url: str | None = None
|
|
created_at: int | None = None
|
|
metadata: Dict[str, Any] | None = None
|
|
|
|
|
|
@dataclass
|
|
class WorkflowDraftResponse(BaseResponse):
|
|
"""Workflow draft response model."""
|
|
|
|
id: str = ""
|
|
app_id: str = ""
|
|
draft_data: Dict[str, Any] = field(default_factory=dict)
|
|
version: int = 0
|
|
created_at: int | None = None
|
|
updated_at: int | None = None
|
|
|
|
|
|
@dataclass
|
|
class ApiTokenResponse(BaseResponse):
|
|
"""API token response model."""
|
|
|
|
id: str = ""
|
|
name: str = ""
|
|
token: str = ""
|
|
description: str | None = None
|
|
created_at: int | None = None
|
|
last_used_at: int | None = None
|
|
is_active: bool = True
|
|
|
|
|
|
@dataclass
|
|
class JobStatusResponse(BaseResponse):
|
|
"""Job status response model."""
|
|
|
|
job_id: str = ""
|
|
job_status: str = ""
|
|
error_msg: str | None = None
|
|
progress: float | None = None
|
|
created_at: int | None = None
|
|
updated_at: int | None = None
|
|
|
|
|
|
@dataclass
|
|
class DatasetQueryResponse(BaseResponse):
|
|
"""Dataset query response model."""
|
|
|
|
query: str = ""
|
|
records: List[Dict[str, Any]] = field(default_factory=list)
|
|
total: int = 0
|
|
search_time: float | None = None
|
|
retrieval_model: Dict[str, Any] | None = None
|
|
|
|
|
|
@dataclass
|
|
class DatasetTemplateResponse(BaseResponse):
|
|
"""Dataset template response model."""
|
|
|
|
template_name: str = ""
|
|
display_name: str = ""
|
|
description: str = ""
|
|
category: str = ""
|
|
icon: str | None = None
|
|
config_schema: Dict[str, Any] = field(default_factory=dict)
|
|
|
|
|
|
# Type aliases for common response types
|
|
ResponseType = Union[
|
|
BaseResponse,
|
|
ErrorResponse,
|
|
MessageResponse,
|
|
ConversationResponse,
|
|
DatasetResponse,
|
|
DocumentResponse,
|
|
DocumentSegmentResponse,
|
|
WorkflowRunResponse,
|
|
ApplicationParametersResponse,
|
|
AnnotationResponse,
|
|
PaginatedResponse,
|
|
ConversationVariableResponse,
|
|
FileUploadResponse,
|
|
AudioResponse,
|
|
SuggestedQuestionsResponse,
|
|
AppInfoResponse,
|
|
WorkspaceModelsResponse,
|
|
HitTestingResponse,
|
|
DatasetTagsResponse,
|
|
WorkflowLogsResponse,
|
|
ModelProviderResponse,
|
|
FileInfoResponse,
|
|
WorkflowDraftResponse,
|
|
ApiTokenResponse,
|
|
JobStatusResponse,
|
|
DatasetQueryResponse,
|
|
DatasetTemplateResponse,
|
|
]
|