182 lines
4.4 KiB
Python
182 lines
4.4 KiB
Python
from datetime import datetime
|
|
from typing import Any
|
|
from uuid import UUID
|
|
|
|
from ninja import Schema
|
|
|
|
|
|
class ModelProviderIn(Schema):
|
|
name: str
|
|
base_url: str
|
|
api_key: str
|
|
enabled: bool = True
|
|
default_timeout_seconds: int = 60
|
|
image_egress_approved: bool = False
|
|
|
|
|
|
class ModelProviderUpdateIn(Schema):
|
|
name: str | None = None
|
|
base_url: str | None = None
|
|
api_key: str | None = None
|
|
clear_api_key: bool = False
|
|
enabled: bool | None = None
|
|
default_timeout_seconds: int | None = None
|
|
image_egress_approved: bool | None = None
|
|
|
|
|
|
class ModelProviderOut(Schema):
|
|
id: int
|
|
name: str
|
|
base_url: str
|
|
enabled: bool
|
|
default_timeout_seconds: int
|
|
credential_set: bool
|
|
credential_masked: str
|
|
image_egress_approved: bool
|
|
image_egress_approved_by: str | None
|
|
image_egress_approved_at: datetime | None
|
|
credential_updated_at: datetime | None
|
|
credential_updated_by: str | None
|
|
archived_at: datetime | None
|
|
archived_by: str | None
|
|
deployment_count: int = 0
|
|
active_deployment_count: int = 0
|
|
effective_status: str
|
|
created_at: datetime
|
|
updated_at: datetime
|
|
|
|
|
|
class ModelDeploymentIn(Schema):
|
|
provider_id: int
|
|
display_name: str
|
|
model_name: str
|
|
capability: str = "text_chat"
|
|
default_temperature: float = 0.2
|
|
max_output_tokens: int = 2048
|
|
structured_output_mode: str = "unconfigured"
|
|
enabled: bool = True
|
|
|
|
|
|
class ModelDeploymentUpdateIn(Schema):
|
|
display_name: str | None = None
|
|
model_name: str | None = None
|
|
capability: str | None = None
|
|
default_temperature: float | None = None
|
|
max_output_tokens: int | None = None
|
|
structured_output_mode: str | None = None
|
|
enabled: bool | None = None
|
|
|
|
|
|
class ModelDeploymentOut(Schema):
|
|
id: int
|
|
provider_id: int
|
|
provider_name: str
|
|
display_name: str
|
|
model_name: str
|
|
capability: str
|
|
default_temperature: float
|
|
max_output_tokens: int
|
|
structured_output_mode: str
|
|
structured_output_test_status: str
|
|
structured_output_verified_at: datetime | None
|
|
structured_output_test_message: str
|
|
structured_output_metrics: dict[str, Any]
|
|
enabled: bool
|
|
effective_status: str
|
|
provider_effective_status: str
|
|
reference_summary: dict[str, int]
|
|
archived_at: datetime | None
|
|
archived_by: str | None
|
|
archived_via_provider: bool
|
|
|
|
|
|
class ModelProviderPageOut(Schema):
|
|
items: list[ModelProviderOut]
|
|
page: int
|
|
page_size: int
|
|
total: int
|
|
total_pages: int
|
|
|
|
|
|
class ModelDeploymentPageOut(Schema):
|
|
items: list[ModelDeploymentOut]
|
|
page: int
|
|
page_size: int
|
|
total: int
|
|
total_pages: int
|
|
|
|
|
|
class ModelDeploymentOptionOut(Schema):
|
|
id: int
|
|
provider_id: int
|
|
provider_name: str
|
|
display_name: str
|
|
model_name: str
|
|
capability: str
|
|
default_temperature: float
|
|
max_output_tokens: int
|
|
structured_output_mode: str
|
|
structured_output_test_status: str
|
|
structured_output_verified_at: datetime | None
|
|
structured_output_test_message: str
|
|
enabled: bool
|
|
|
|
|
|
class ModelTestIn(Schema):
|
|
prompt: str = "请回复:模型连接正常"
|
|
|
|
|
|
class ModelInvocationOut(Schema):
|
|
public_id: UUID
|
|
deployment_id: int | None
|
|
invocation_type: str
|
|
status: str
|
|
model_snapshot: dict[str, Any]
|
|
output_text: str
|
|
input_tokens: int | None
|
|
output_tokens: int | None
|
|
duration_ms: int
|
|
retry_count: int
|
|
error_code: str
|
|
error_message: str
|
|
created_at: datetime
|
|
started_at: datetime | None
|
|
finished_at: datetime | None
|
|
diagnostics_scrubbed_at: datetime | None = None
|
|
diagnostics_expires_at: datetime | None = None
|
|
diagnostics_available: bool = True
|
|
deployment_display_name: str | None = None
|
|
provider_name: str | None = None
|
|
model_snapshot_summary: dict[str, Any] = {}
|
|
|
|
|
|
class ModelInvocationPageOut(Schema):
|
|
items: list[ModelInvocationOut]
|
|
page: int
|
|
page_size: int
|
|
total: int
|
|
total_pages: int
|
|
|
|
|
|
class ModelInvocationDiagnosticsOut(Schema):
|
|
public_id: UUID
|
|
input_snapshot: dict[str, Any]
|
|
output_text: str
|
|
diagnostics_scrubbed_at: datetime | None
|
|
diagnostics_expires_at: datetime
|
|
diagnostics_available: bool
|
|
|
|
|
|
class DeletionImpactOut(Schema):
|
|
suggested_action: str
|
|
deployment_count: int
|
|
agent_version_count: int
|
|
step_binding_count: int
|
|
run_step_count: int
|
|
invocation_count: int
|
|
|
|
|
|
class LifecycleResultOut(Schema):
|
|
result: str
|
|
impact: DeletionImpactOut
|