huoshan/llm_unfinished/config.go
2024-10-29 12:04:22 +08:00

97 lines
4.6 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 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}
// })
// }