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"` } ) // ========== Provider Types ========== type ( AIProviderInfo { Id int64 `json:"id,string"` Name string `json:"name"` DisplayName string `json:"displayName"` BaseUrl string `json:"baseUrl"` SdkType string `json:"sdkType"` Protocol string `json:"protocol"` IsActive bool `json:"isActive"` SortOrder int `json:"sortOrder"` CreatedAt string `json:"createdAt"` UpdatedAt string `json:"updatedAt"` } AIProviderListRequest { Page int64 `form:"page,optional,default=1"` PageSize int64 `form:"pageSize,optional,default=50"` } AIProviderListResponse { List []AIProviderInfo `json:"list"` Total int64 `json:"total"` } AIProviderCreateRequest { Name string `json:"name"` DisplayName string `json:"displayName"` BaseUrl string `json:"baseUrl"` SdkType string `json:"sdkType"` Protocol string `json:"protocol,optional,default=openai"` SortOrder int `json:"sortOrder,optional"` } AIProviderUpdateRequest { Id int64 `path:"id"` DisplayName string `json:"displayName,optional"` BaseUrl string `json:"baseUrl,optional"` SdkType string `json:"sdkType,optional"` Protocol string `json:"protocol,optional"` IsActive bool `json:"isActive,optional"` SortOrder int `json:"sortOrder,optional"` } AIProviderDeleteRequest { 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"` } AIModelCreateRequest { ProviderId int64 `json:"providerId,string"` ModelId string `json:"modelId"` DisplayName string `json:"displayName"` InputPrice float64 `json:"inputPrice"` OutputPrice float64 `json:"outputPrice"` MaxTokens int `json:"maxTokens,optional,default=4096"` ContextWindow int `json:"contextWindow,optional,default=128000"` SupportsStream bool `json:"supportsStream,optional"` SupportsVision bool `json:"supportsVision,optional"` } AIModelUpdateRequest { Id int64 `path:"id"` DisplayName string `json:"displayName,optional"` InputPrice float64 `json:"inputPrice,optional"` OutputPrice float64 `json:"outputPrice,optional"` MaxTokens int `json:"maxTokens,optional"` ContextWindow int `json:"contextWindow,optional"` SupportsStream bool `json:"supportsStream,optional"` SupportsVision bool `json:"supportsVision,optional"` IsActive bool `json:"isActive,optional"` } AIModelDeleteRequest { Id int64 `path:"id"` } ) // ========== API Key Types ========== type ( AIApiKeyInfo { Id int64 `json:"id,string"` ProviderId int64 `json:"providerId,string"` ProviderName string `json:"providerName"` UserId int64 `json:"userId,string"` KeyPreview string `json:"keyPreview"` IsActive bool `json:"isActive"` Remark string `json:"remark"` CreatedAt string `json:"createdAt"` } AIApiKeyListRequest { Page int64 `form:"page,optional,default=1"` PageSize int64 `form:"pageSize,optional,default=20"` } AIApiKeyListResponse { List []AIApiKeyInfo `json:"list"` Total int64 `json:"total"` } AIApiKeyCreateRequest { ProviderId int64 `json:"providerId,string"` KeyValue string `json:"keyValue"` Remark string `json:"remark,optional"` } AIApiKeyUpdateRequest { Id int64 `path:"id"` KeyValue string `json:"keyValue,optional"` IsActive bool `json:"isActive,optional"` Remark string `json:"remark,optional"` } AIApiKeyDeleteRequest { Id int64 `path:"id"` } ) // ========== Quota Types ========== type ( AIQuotaInfo { Balance float64 `json:"balance"` TotalRecharged float64 `json:"totalRecharged"` TotalConsumed float64 `json:"totalConsumed"` FrozenAmount float64 `json:"frozenAmount"` } )