Files
st/server/model/app/request/provider.go

81 lines
4.3 KiB
Go
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package request
// CreateProviderRequest 创建AI提供商请求
type CreateProviderRequest struct {
ProviderName string `json:"providerName" binding:"required,min=1,max=100"` // 提供商名称(如"我的OpenAI"
ProviderType string `json:"providerType" binding:"required,oneof=openai claude gemini custom"` // 提供商类型
BaseURL string `json:"baseUrl"` // API基础地址自定义或中转站
APIKey string `json:"apiKey" binding:"required"` // API密钥
APIConfig map[string]interface{} `json:"apiConfig"` // 额外配置
Models []CreateModelRequest `json:"models"` // 同时创建的模型列表
}
// UpdateProviderRequest 更新AI提供商请求
type UpdateProviderRequest struct {
ID uint `json:"id" binding:"required"`
ProviderName string `json:"providerName" binding:"required,min=1,max=100"`
ProviderType string `json:"providerType" binding:"required,oneof=openai claude gemini custom"`
BaseURL string `json:"baseUrl"`
APIKey string `json:"apiKey"` // 为空表示不修改
APIConfig map[string]interface{} `json:"apiConfig"`
IsEnabled *bool `json:"isEnabled"`
IsDefault *bool `json:"isDefault"`
SortOrder *int `json:"sortOrder"`
}
// CreateModelRequest 创建AI模型请求
type CreateModelRequest struct {
ProviderID uint `json:"providerId"` // 关联提供商ID
ModelName string `json:"modelName" binding:"required,min=1,max=200"` // 模型标识(如 gpt-4o
DisplayName string `json:"displayName"` // 显示名称
ModelType string `json:"modelType" binding:"required,oneof=chat image_gen"` // 模型类型
Config map[string]interface{} `json:"config"` // 模型参数配置
IsEnabled *bool `json:"isEnabled"`
}
// UpdateModelRequest 更新AI模型请求
type UpdateModelRequest struct {
ID uint `json:"id" binding:"required"`
ModelName string `json:"modelName" binding:"required,min=1,max=200"`
DisplayName string `json:"displayName"`
ModelType string `json:"modelType" binding:"required,oneof=chat image_gen"`
Config map[string]interface{} `json:"config"`
IsEnabled *bool `json:"isEnabled"`
}
// ProviderListRequest 提供商列表请求
type ProviderListRequest struct {
Page int `form:"page" binding:"min=1"`
PageSize int `form:"pageSize" binding:"min=1,max=100"`
Keyword string `form:"keyword"`
}
// TestProviderRequest 测试提供商连通性请求
type TestProviderRequest struct {
ProviderType string `json:"providerType" binding:"required,oneof=openai claude gemini custom"`
BaseURL string `json:"baseUrl"`
APIKey string `json:"apiKey" binding:"required"`
ModelName string `json:"modelName"` // 可选,用于测试特定模型
}
// SetDefaultProviderRequest 设置默认提供商请求
type SetDefaultProviderRequest struct {
ProviderID uint `json:"providerId" binding:"required"`
}
// FetchRemoteModelsRequest 获取远程可用模型列表请求
type FetchRemoteModelsRequest struct {
ProviderType string `json:"providerType" binding:"required,oneof=openai claude gemini custom"`
BaseURL string `json:"baseUrl"`
APIKey string `json:"apiKey" binding:"required"`
}
// SendTestMessageRequest 发送测试消息请求
type SendTestMessageRequest struct {
ProviderType string `json:"providerType" binding:"required,oneof=openai claude gemini custom"`
BaseURL string `json:"baseUrl"`
APIKey string `json:"apiKey" binding:"required"`
ModelName string `json:"modelName" binding:"required"` // 要测试的模型
Message string `json:"message"` // 测试消息内容,为空则使用默认
}