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) }