syntax = "v1" // ========== AI Chat Types ========== type ( AIChatMessage { Role string `json:"role"` Content string `json:"content"` } AIChatCompletionRequest { Model string `json:"model"` Messages []AIChatMessage `json:"messages"` Stream bool `json:"stream,optional"` MaxTokens int `json:"max_tokens,optional"` Temperature float64 `json:"temperature,optional"` ConversationId int64 `json:"conversation_id,optional,string"` } AIChatCompletionChoice { Index int `json:"index"` FinishReason string `json:"finish_reason"` Message AIChatMessage `json:"message"` } AIChatCompletionUsage { PromptTokens int `json:"prompt_tokens"` CompletionTokens int `json:"completion_tokens"` TotalTokens int `json:"total_tokens"` } AIChatCompletionResponse { Id string `json:"id"` Object string `json:"object"` Model string `json:"model"` Choices []AIChatCompletionChoice `json:"choices"` Usage AIChatCompletionUsage `json:"usage"` } ) // ========== Conversation Types ========== type ( AIConversationInfo { Id int64 `json:"id,string"` Title string `json:"title"` ModelId string `json:"modelId"` ProviderId int64 `json:"providerId,string"` TotalTokens int64 `json:"totalTokens"` TotalCost float64 `json:"totalCost"` IsArchived bool `json:"isArchived"` CreatedAt string `json:"createdAt"` UpdatedAt string `json:"updatedAt"` } AIMessageInfo { Id int64 `json:"id,string"` ConversationId int64 `json:"conversationId,string"` Role string `json:"role"` Content string `json:"content"` TokenCount int `json:"tokenCount"` Cost float64 `json:"cost"` ModelId string `json:"modelId"` LatencyMs int `json:"latencyMs"` CreatedAt string `json:"createdAt"` } AIConversationListRequest { Page int64 `form:"page,optional,default=1"` PageSize int64 `form:"pageSize,optional,default=20"` } AIConversationListResponse { List []AIConversationInfo `json:"list"` Total int64 `json:"total"` } AIConversationCreateRequest { Title string `json:"title,optional"` ModelId string `json:"modelId,optional"` } AIConversationGetRequest { Id int64 `path:"id"` } AIConversationDetailResponse { Conversation AIConversationInfo `json:"conversation"` Messages []AIMessageInfo `json:"messages"` } AIConversationUpdateRequest { Id int64 `path:"id"` Title string `json:"title"` } AIConversationDeleteRequest { Id int64 `path:"id"` } ) // ========== Model Types ========== type ( AIModelInfo { Id int64 `json:"id,string"` ProviderId int64 `json:"providerId,string"` ProviderName string `json:"providerName"` ModelId string `json:"modelId"` DisplayName string `json:"displayName"` InputPrice float64 `json:"inputPrice"` OutputPrice float64 `json:"outputPrice"` MaxTokens int `json:"maxTokens"` ContextWindow int `json:"contextWindow"` SupportsStream bool `json:"supportsStream"` SupportsVision bool `json:"supportsVision"` } AIModelListResponse { List []AIModelInfo `json:"list"` } ) // ========== Quota Types ========== type ( AIQuotaInfo { Balance float64 `json:"balance"` TotalRecharged float64 `json:"totalRecharged"` TotalConsumed float64 `json:"totalConsumed"` FrozenAmount float64 `json:"frozenAmount"` } )