86 lines
2.9 KiB
Go
86 lines
2.9 KiB
Go
package base
|
|
|
|
import (
|
|
"net/http"
|
|
"one-api/model"
|
|
"one-api/types"
|
|
)
|
|
|
|
// 基础接口
|
|
type ProviderInterface interface {
|
|
GetBaseURL() string
|
|
GetFullRequestURL(requestURL string, modelName string) string
|
|
GetRequestHeaders() (headers map[string]string)
|
|
SupportAPI(relayMode int) bool
|
|
SetChannel(channel *model.Channel)
|
|
}
|
|
|
|
// 完成接口
|
|
type CompletionInterface interface {
|
|
ProviderInterface
|
|
CompleteAction(request *types.CompletionRequest, isModelMapped bool, promptTokens int) (usage *types.Usage, errWithCode *types.OpenAIErrorWithStatusCode)
|
|
}
|
|
|
|
// 聊天接口
|
|
type ChatInterface interface {
|
|
ProviderInterface
|
|
ChatAction(request *types.ChatCompletionRequest, isModelMapped bool, promptTokens int) (usage *types.Usage, errWithCode *types.OpenAIErrorWithStatusCode)
|
|
}
|
|
|
|
// 嵌入接口
|
|
type EmbeddingsInterface interface {
|
|
ProviderInterface
|
|
EmbeddingsAction(request *types.EmbeddingRequest, isModelMapped bool, promptTokens int) (usage *types.Usage, errWithCode *types.OpenAIErrorWithStatusCode)
|
|
}
|
|
|
|
// 审查接口
|
|
type ModerationInterface interface {
|
|
ProviderInterface
|
|
ModerationAction(request *types.ModerationRequest, isModelMapped bool, promptTokens int) (usage *types.Usage, errWithCode *types.OpenAIErrorWithStatusCode)
|
|
}
|
|
|
|
// 文字转语音接口
|
|
type SpeechInterface interface {
|
|
ProviderInterface
|
|
SpeechAction(request *types.SpeechAudioRequest, isModelMapped bool, promptTokens int) (usage *types.Usage, errWithCode *types.OpenAIErrorWithStatusCode)
|
|
}
|
|
|
|
// 语音转文字接口
|
|
type TranscriptionsInterface interface {
|
|
ProviderInterface
|
|
TranscriptionsAction(request *types.AudioRequest, isModelMapped bool, promptTokens int) (usage *types.Usage, errWithCode *types.OpenAIErrorWithStatusCode)
|
|
}
|
|
|
|
// 语音翻译接口
|
|
type TranslationInterface interface {
|
|
ProviderInterface
|
|
TranslationAction(request *types.AudioRequest, isModelMapped bool, promptTokens int) (usage *types.Usage, errWithCode *types.OpenAIErrorWithStatusCode)
|
|
}
|
|
|
|
// 图片生成接口
|
|
type ImageGenerationsInterface interface {
|
|
ProviderInterface
|
|
ImageGenerationsAction(request *types.ImageRequest, isModelMapped bool, promptTokens int) (usage *types.Usage, errWithCode *types.OpenAIErrorWithStatusCode)
|
|
}
|
|
|
|
// 图片编辑接口
|
|
type ImageEditsInterface interface {
|
|
ProviderInterface
|
|
ImageEditsAction(request *types.ImageEditRequest, isModelMapped bool, promptTokens int) (usage *types.Usage, errWithCode *types.OpenAIErrorWithStatusCode)
|
|
}
|
|
|
|
type ImageVariationsInterface interface {
|
|
ProviderInterface
|
|
ImageVariationsAction(request *types.ImageEditRequest, isModelMapped bool, promptTokens int) (usage *types.Usage, errWithCode *types.OpenAIErrorWithStatusCode)
|
|
}
|
|
|
|
// 余额接口
|
|
type BalanceInterface interface {
|
|
Balance(channel *model.Channel) (float64, error)
|
|
}
|
|
|
|
type ProviderResponseHandler interface {
|
|
// 响应处理函数
|
|
ResponseHandler(resp *http.Response) (OpenAIResponse any, errWithCode *types.OpenAIErrorWithStatusCode)
|
|
}
|