47 lines
1.3 KiB
Go
47 lines
1.3 KiB
Go
|
|
package eino
|
|||
|
|
|
|||
|
|
import (
|
|||
|
|
"context"
|
|||
|
|
|
|||
|
|
"github.com/cloudwego/eino-ext/components/embedding/dashscope"
|
|||
|
|
"github.com/gogf/gf/v2/frame/g"
|
|||
|
|
"github.com/golang/glog"
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
// 全局只初始化一次
|
|||
|
|
var (
|
|||
|
|
Embedder *dashscope.Embedder // 导出供其他模块使用
|
|||
|
|
)
|
|||
|
|
|
|||
|
|
// init:程序启动时自动执行一次
|
|||
|
|
func init() {
|
|||
|
|
ctx := context.Background()
|
|||
|
|
if !g.Cfg().MustGet(ctx, "eino.embedding").IsEmpty() {
|
|||
|
|
var err error
|
|||
|
|
cfg := &dashscope.EmbeddingConfig{
|
|||
|
|
APIKey: g.Cfg().MustGet(ctx, "eino.embedding.apiKey").String(),
|
|||
|
|
Model: g.Cfg().MustGet(ctx, "eino.embedding.model").String(),
|
|||
|
|
}
|
|||
|
|
// 检查是否配置了 APIType,支持 "text_api" 和 "multi_modal_api"
|
|||
|
|
//if apiType := g.Cfg().MustGet(ctx, "eino.embedding.apiType").String(); apiType != "" {
|
|||
|
|
// apiTypeVal := dashscope.APIType(apiType)
|
|||
|
|
// cfg.APIType = &apiTypeVal
|
|||
|
|
//}
|
|||
|
|
Embedder, err = dashscope.NewEmbedder(ctx, cfg)
|
|||
|
|
if err != nil {
|
|||
|
|
glog.Fatalf("NewEmbedder of ark error: %v", err)
|
|||
|
|
}
|
|||
|
|
//embedding, err := embedder.EmbedStrings(ctx, []string{"hello world", "bye bye"})
|
|||
|
|
//if err != nil {
|
|||
|
|
// log.Printf("embedding error: %v\n", err)
|
|||
|
|
// return
|
|||
|
|
//}
|
|||
|
|
//
|
|||
|
|
//log.Printf("embedding: %v\n", embedding)
|
|||
|
|
}
|
|||
|
|
}
|
|||
|
|
|
|||
|
|
func EmbedStrings(ctx context.Context, texts []string) (embeddings [][]float64, err error) {
|
|||
|
|
return Embedder.EmbedStrings(ctx, texts)
|
|||
|
|
}
|