50 lines
1.2 KiB
Go
50 lines
1.2 KiB
Go
package ai
|
||
|
||
import "errors"
|
||
|
||
// 支持的 Provider 标识。
|
||
const (
|
||
ProviderSpark = "spark"
|
||
ProviderDeepSeek = "deepseek"
|
||
)
|
||
|
||
// New 是 Provider 工厂:按标识与 API Key 创建对应实例。
|
||
func New(provider, apiKey string) (Provider, error) {
|
||
switch provider {
|
||
case ProviderSpark:
|
||
return newSpark(apiKey)
|
||
case ProviderDeepSeek:
|
||
return newDeepSeek(apiKey)
|
||
default:
|
||
return nil, errors.New("AI_PROVIDER_INVALID")
|
||
}
|
||
}
|
||
|
||
// newSpark 创建讯飞星火 Lite(OpenAI 兼容 HTTP 端点,APIPassword 鉴权,Lite 免费)。
|
||
func newSpark(apiPassword string) (Provider, error) {
|
||
if apiPassword == "" {
|
||
return nil, errors.New("AI_KEY_MISSING")
|
||
}
|
||
return &openAICompatible{
|
||
name: ProviderSpark,
|
||
baseURL: "https://spark-api-open.xf-yun.com/v1",
|
||
model: "lite",
|
||
apiKey: apiPassword,
|
||
client: newHTTPClient(),
|
||
}, nil
|
||
}
|
||
|
||
// newDeepSeek 创建 DeepSeek(OpenAI 兼容)。
|
||
func newDeepSeek(apiKey string) (Provider, error) {
|
||
if apiKey == "" {
|
||
return nil, errors.New("AI_KEY_MISSING")
|
||
}
|
||
return &openAICompatible{
|
||
name: ProviderDeepSeek,
|
||
baseURL: "https://api.deepseek.com",
|
||
model: "deepseek-chat",
|
||
apiKey: apiKey,
|
||
client: newHTTPClient(),
|
||
}, nil
|
||
}
|