97 lines
4.6 KiB
Go
97 lines
4.6 KiB
Go
|
package huoshan
|
|||
|
|
|||
|
import (
|
|||
|
"strings"
|
|||
|
|
|||
|
"apigo.cc/ai/llm/llm"
|
|||
|
"github.com/volcengine/volc-sdk-golang/service/visual"
|
|||
|
"github.com/volcengine/volcengine-go-sdk/service/arkruntime"
|
|||
|
"github.com/volcengine/volcengine-go-sdk/service/arkruntime/model"
|
|||
|
)
|
|||
|
|
|||
|
type LLM struct {
|
|||
|
config llm.Config
|
|||
|
}
|
|||
|
|
|||
|
var NameMap = map[string]string{
|
|||
|
llm.TypeText: string(model.ChatCompletionMessageContentPartTypeText),
|
|||
|
llm.TypeImage: string(model.ChatCompletionMessageContentPartTypeImageURL),
|
|||
|
//llm.TypeVideo: string(model.ChatCompletionMessageContentPartTypeVideoURL),
|
|||
|
llm.RoleSystem: model.ChatMessageRoleSystem,
|
|||
|
llm.RoleUser: model.ChatMessageRoleUser,
|
|||
|
llm.RoleAssistant: model.ChatMessageRoleAssistant,
|
|||
|
llm.RoleTool: model.ChatMessageRoleTool,
|
|||
|
}
|
|||
|
|
|||
|
const (
|
|||
|
ModelDoubaoLite4k = "Doubao-lite-4k"
|
|||
|
ModelDoubaoLite32k = "Doubao-lite-32k"
|
|||
|
ModelDoubaoLite128k = "Doubao-lite-128k"
|
|||
|
ModelDoubaoPro4k = "Doubao-pro-4k"
|
|||
|
ModelDoubaoPro32k = "Doubao-pro-32k"
|
|||
|
ModelDoubaoPro128k = "Doubao-pro-128k"
|
|||
|
ModelDoubaoPro256k = "Doubao-pro-256k"
|
|||
|
ModelDoubaoEmbedding = "Doubao-embedding"
|
|||
|
ModelDoubaoEmbeddingLarge = "Doubao-embedding-large"
|
|||
|
ModelT2I2L = "high_aes_general_v20_L:general_v2.0_L"
|
|||
|
ModelT2I2S = "high_aes_general_v20:general_v2.0"
|
|||
|
ModelT2IXL = "t2i_xl_sft"
|
|||
|
ModelI2IXL = "i2i_xl_sft"
|
|||
|
ModelT2I14 = "high_aes_general_v14"
|
|||
|
ModelI2I14IP = "high_aes_general_v14_ip_keep"
|
|||
|
ModelAnime13 = "high_aes:anime_v1.3"
|
|||
|
ModelAnime131 = "high_aes:anime_v1.3.1"
|
|||
|
ModelPhotoverseAmericanComics = "img2img_photoverse_american_comics" // 美漫风格
|
|||
|
ModelPhotoverseExecutiveIDPhoto = "img2img_photoverse_executive_ID_photo" // 商务证件照
|
|||
|
ModelPhotoverse3dWeird = "img2img_photoverse_3d_weird" // 3d人偶
|
|||
|
ModelPhotoverseCyberpunk = "img2img_photoverse_cyberpunk" // 赛博朋克
|
|||
|
ModelXiezhenGubao = "img2img_xiezhen_gubao" // 古堡
|
|||
|
ModelXiezhenBabiNiuzai = "img2img_xiezhen_babi_niuzai" // 芭比牛仔
|
|||
|
ModelXiezhenBathrobe = "img2img_xiezhen_bathrobe" // 浴袍风格
|
|||
|
ModelXiezhenButterflyMachin = "img2img_xiezhen_butterfly_machin" // 蝴蝶机械
|
|||
|
ModelXiezhenZhichangzhengjianzhao = "img2img_xiezhen_zhichangzhengjianzhao" // 职场证件照
|
|||
|
ModelXiezhenChristmas = "img2img_xiezhen_christmas" // 圣诞
|
|||
|
ModelXiezhenDessert = "img2img_xiezhen_dessert" // 美式甜点师
|
|||
|
ModelXiezhenOldMoney = "img2img_xiezhen_old_money" // old money
|
|||
|
ModelXiezhenSchool = "img2img_xiezhen_school" // 最美校园
|
|||
|
)
|
|||
|
|
|||
|
func (lm *LLM) Support() llm.Support {
|
|||
|
return llm.Support{
|
|||
|
Ask: true,
|
|||
|
AskWithImage: true,
|
|||
|
AskWithVideo: false,
|
|||
|
AskWithCodeInterpreter: false,
|
|||
|
AskWithWebSearch: false,
|
|||
|
MakeImage: true,
|
|||
|
MakeVideo: false,
|
|||
|
Models: []string{ModelDoubaoLite4k, ModelDoubaoLite32k, ModelDoubaoLite128k, ModelDoubaoPro4k, ModelDoubaoPro32k, ModelDoubaoPro128k, ModelDoubaoPro256k, ModelDoubaoEmbedding, ModelDoubaoEmbeddingLarge, ModelT2I2L, ModelT2I2S, ModelT2IXL, ModelI2IXL, ModelT2I14, ModelI2I14IP, ModelAnime13, ModelAnime131, ModelPhotoverseAmericanComics, ModelPhotoverseExecutiveIDPhoto, ModelPhotoverse3dWeird, ModelPhotoverseCyberpunk, ModelXiezhenGubao, ModelXiezhenBabiNiuzai, ModelXiezhenBathrobe, ModelXiezhenButterflyMachin, ModelXiezhenZhichangzhengjianzhao, ModelXiezhenChristmas, ModelXiezhenDessert, ModelXiezhenOldMoney, ModelXiezhenSchool},
|
|||
|
}
|
|||
|
}
|
|||
|
|
|||
|
func (lm *LLM) getChatClient() *arkruntime.Client {
|
|||
|
opt := make([]arkruntime.ConfigOption, 0)
|
|||
|
if lm.config.Endpoint != "" {
|
|||
|
opt = append(opt, arkruntime.WithBaseUrl(lm.config.Endpoint))
|
|||
|
}
|
|||
|
return arkruntime.NewClientWithAkSk(strings.SplitN(lm.config.ApiKey, ",", 2)[0], opt...)
|
|||
|
}
|
|||
|
|
|||
|
func (lm *LLM) getGCClient() *visual.Visual {
|
|||
|
keys := strings.SplitN(lm.config.ApiKey, ",", 2)
|
|||
|
if len(keys) == 1 {
|
|||
|
keys = append(keys, "")
|
|||
|
}
|
|||
|
vis := visual.NewInstance()
|
|||
|
vis.Client.SetAccessKey(keys[0])
|
|||
|
vis.Client.SetSecretKey(keys[1])
|
|||
|
return vis
|
|||
|
}
|
|||
|
|
|||
|
// 因为火山平台的配置过于繁琐(每个模型都要创建单独的endpoint,所以暂时放弃对豆包大模型的支持)
|
|||
|
// func init() {
|
|||
|
// llm.Register("huoshan", func(config llm.Config) llm.LLM {
|
|||
|
// return &LLM{config: config}
|
|||
|
// })
|
|||
|
// }
|