@@ -5,7 +5,7 @@ from __future__ import annotations
|
||||
from datetime import datetime
|
||||
from typing import Any, Literal
|
||||
|
||||
from pydantic import BaseModel, Field
|
||||
from pydantic import BaseModel, Field, SecretStr
|
||||
|
||||
|
||||
class TaskConstraintsModel(BaseModel):
|
||||
@@ -212,3 +212,54 @@ class TokenUsageEventResponse(BaseModel):
|
||||
output_tokens: int | None = None
|
||||
total_tokens: int
|
||||
occurred_at: datetime
|
||||
|
||||
|
||||
class LlmProviderProfileCreateRequest(BaseModel):
|
||||
name: str = Field(min_length=1, max_length=120)
|
||||
provider_type: Literal["anthropic", "openai-compatible"]
|
||||
model: str = Field(min_length=1, max_length=200)
|
||||
base_url: str | None = Field(default=None, max_length=500)
|
||||
timeout_seconds: float = Field(gt=0, le=120)
|
||||
api_key: SecretStr
|
||||
|
||||
|
||||
class LlmProviderProfileUpdateRequest(BaseModel):
|
||||
name: str | None = Field(default=None, min_length=1, max_length=120)
|
||||
provider_type: Literal["anthropic", "openai-compatible"] | None = None
|
||||
model: str | None = Field(default=None, min_length=1, max_length=200)
|
||||
base_url: str | None = Field(default=None, max_length=500)
|
||||
timeout_seconds: float | None = Field(default=None, gt=0, le=120)
|
||||
enabled: bool | None = None
|
||||
api_key: SecretStr | None = None
|
||||
expected_revision: int | None = Field(default=None, ge=1)
|
||||
|
||||
|
||||
class LlmProviderProfileActivateRequest(BaseModel):
|
||||
expected_settings_revision: int | None = Field(default=None, ge=0)
|
||||
|
||||
|
||||
class LlmProviderProfileResponse(BaseModel):
|
||||
id: str
|
||||
name: str
|
||||
provider_type: Literal["anthropic", "openai-compatible"]
|
||||
model: str
|
||||
base_url: str | None = None
|
||||
timeout_seconds: float
|
||||
enabled: bool
|
||||
revision: int
|
||||
has_api_key: bool
|
||||
key_last_rotated_at: datetime
|
||||
created_at: datetime
|
||||
updated_at: datetime
|
||||
active: bool
|
||||
|
||||
|
||||
class LlmProviderSettingsResponse(BaseModel):
|
||||
active_profile_id: str | None = None
|
||||
revision: int
|
||||
updated_at: datetime | None = None
|
||||
|
||||
|
||||
class LlmProviderProfileListResponse(BaseModel):
|
||||
settings: LlmProviderSettingsResponse
|
||||
items: list[LlmProviderProfileResponse]
|
||||
|
||||
Reference in New Issue
Block a user