Skip to content

Commit

Permalink
Merge pull request #729 from Abirdcfly/latest_langchaingo
Browse files Browse the repository at this point in the history
feat: update langchaingo to latest and add gemini
  • Loading branch information
nkwangleiGIT committed Feb 29, 2024
2 parents e1f908c + 488b872 commit d5053b1
Show file tree
Hide file tree
Showing 31 changed files with 510 additions and 149 deletions.
2 changes: 2 additions & 0 deletions api/base/v1alpha1/embedder.go
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,8 @@ func (e Embedder) Get3rdPartyModels() []string {
return embeddings.ZhiPuAIModels
case embeddings.OpenAI:
return embeddings.OpenAIModels
case embeddings.Gemini:
return embeddings.GeminiModels
}

return []string{}
Expand Down
2 changes: 2 additions & 0 deletions api/base/v1alpha1/llm.go
Original file line number Diff line number Diff line change
Expand Up @@ -87,6 +87,8 @@ func (llm LLM) Get3rdPartyModels() []string {
return llms.ZhiPuAIModels
case llms.OpenAI:
return llms.OpenAIModels
case llms.Gemini:
return llms.GeminiModels
}
return []string{}
}
Expand Down
2 changes: 1 addition & 1 deletion apiserver/pkg/chat/chat_docs.go
Original file line number Diff line number Diff line change
Expand Up @@ -282,7 +282,7 @@ func (cs *ChatServer) GenerateSingleDocSummary(ctx context.Context, req Conversa
return "", fmt.Errorf("failed to get app due to %s", err.Error())
}

var llm langchainllms.LLM
var llm langchainllms.Model
var mpChainNode runtimebase.BaseNode
// find LLM along with chain call options
for _, n := range app.Spec.Nodes {
Expand Down
2 changes: 1 addition & 1 deletion apiserver/pkg/chat/chat_server.go
Original file line number Diff line number Diff line change
Expand Up @@ -210,7 +210,7 @@ func (cs *ChatServer) ListPromptStarters(ctx context.Context, req APPMetadata, l
}
var kb *v1alpha1.KnowledgeBase
var chainOptions []chains.ChainCallOption
var model langchainllms.LLM
var model langchainllms.Model
for _, n := range app.Spec.Nodes {
baseNode := base.NewBaseNode(app.Namespace, n.Name, *n.Ref)
switch baseNode.Group() {
Expand Down
22 changes: 22 additions & 0 deletions config/samples/app_shared_llm_service_gemini.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
apiVersion: v1
kind: Secret
metadata:
name: app-shared-llm-secret
namespace: arcadia
type: Opaque
data:
apiKey: "QUl6YVN5QVZOdGRYOHpkeU5pNWpubzNYSExUWGM0UnpJSGxIRUFz"
---
apiVersion: arcadia.kubeagi.k8s.com.cn/v1alpha1
kind: LLM
metadata:
name: app-shared-llm-service
namespace: arcadia
spec:
type: "gemini"
provider:
endpoint:
url: "https://generativelanguage.googleapis.com/"
authSecret:
kind: secret
name: app-shared-llm-secret
File renamed without changes.
22 changes: 22 additions & 0 deletions config/samples/arcadia_v1alpha1_embedders_gemini.yaml
Original file line number Diff line number Diff line change
@@ -0,0 +1,22 @@
apiVersion: v1
kind: Secret
metadata:
name: gemini
namespace: arcadia
type: Opaque
data:
apiKey: "QUl6YVN5QVZOdGRYOHpkeU5pNWpubzNYSExUWGM0UnpJSGxIRUFz"
---
apiVersion: arcadia.kubeagi.k8s.com.cn/v1alpha1
kind: Embedder
metadata:
name: embedders-sample
namespace: arcadia
spec:
type: "gemini"
provider:
endpoint:
url: "https://generativelanguage.googleapis.com/"
authSecret:
kind: secret
name: gemini
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,7 @@ data:
apiVersion: arcadia.kubeagi.k8s.com.cn/v1alpha1
kind: Embedder
metadata:
name: zhipuai-embedders-sample
name: embedders-sample
namespace: arcadia
spec:
type: "zhipuai"
Expand Down
2 changes: 1 addition & 1 deletion config/samples/arcadia_v1alpha1_knowledgebase.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ spec:
description: "测试 KnowledgeBase"
embedder:
kind: Embedders
name: zhipuai-embedders-sample
name: embedders-sample
namespace: arcadia
vectorStore:
kind: VectorStores
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -8,7 +8,7 @@ spec:
description: "测试 KnowledgeBase"
embedder:
kind: Embedders
name: zhipuai-embedders-sample
name: embedders-sample
namespace: arcadia
vectorStore:
kind: VectorStores
Expand Down
22 changes: 22 additions & 0 deletions controllers/base/embedder_controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,6 +24,7 @@ import (

"github.com/go-logr/logr"
langchainembeddings "github.com/tmc/langchaingo/embeddings"
"github.com/tmc/langchaingo/llms/googleai"
langchainopenai "github.com/tmc/langchaingo/llms/openai"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/types"
Expand Down Expand Up @@ -227,6 +228,27 @@ func (r *EmbedderReconciler) check3rdPartyEmbedder(ctx context.Context, logger l
}
msg = "Success"
}
case embeddings.Gemini:
// validate all embedding models
for _, model := range models {
llm, err := googleai.New(
ctx,
googleai.WithAPIKey(apiKey),
googleai.WithDefaultEmbeddingModel(model),
)
if err != nil {
return r.UpdateStatus(ctx, instance, nil, err)
}
embedClient, err := langchainembeddings.NewEmbedder(llm)
if err != nil {
return r.UpdateStatus(ctx, instance, nil, err)
}
_, err = embedClient.EmbedQuery(ctx, embedingText)
if err != nil {
return r.UpdateStatus(ctx, instance, nil, err)
}
msg = "Success"
}
default:
return r.UpdateStatus(ctx, instance, nil, fmt.Errorf("unsupported service type: %s", instance.Spec.Type))
}
Expand Down
14 changes: 14 additions & 0 deletions controllers/base/llm_controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,6 +25,7 @@ import (

"github.com/go-logr/logr"
langchainllms "github.com/tmc/langchaingo/llms"
"github.com/tmc/langchaingo/llms/googleai"
"k8s.io/apimachinery/pkg/runtime"
"k8s.io/apimachinery/pkg/types"
ctrl "sigs.k8s.io/controller-runtime"
Expand Down Expand Up @@ -215,6 +216,19 @@ func (r *LLMReconciler) check3rdPartyLLM(ctx context.Context, logger logr.Logger
}
msg = strings.Join([]string{msg, res.String()}, "\n")
}
case llms.Gemini:
llmClient, err := googleai.New(ctx, googleai.WithAPIKey(apiKey))
if err != nil {
return r.UpdateStatus(ctx, instance, nil, err)
}
// validate against models
for _, model := range models {
res, err := llmClient.Call(ctx, "Hello", langchainllms.WithModel(model))
if err != nil {
return r.UpdateStatus(ctx, instance, nil, err)
}
msg = strings.Join([]string{msg, res}, "\n")
}
default:
return r.UpdateStatus(ctx, instance, nil, fmt.Errorf("unsupported service type: %s", instance.Spec.Type))
}
Expand Down
3 changes: 3 additions & 0 deletions controllers/base/prompt_controller.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ package controllers

import (
"context"
"errors"
"fmt"
"reflect"

Expand Down Expand Up @@ -139,6 +140,8 @@ func (r *PromptReconciler) CallLLM(ctx context.Context, logger logr.Logger, prom
if err != nil {
return r.UpdateStatus(ctx, prompt, nil, err)
}
case llms.Gemini:
return r.UpdateStatus(ctx, prompt, nil, errors.New("not implemented yet"))
default:
llmClient = llms.NewUnknowLLM()
}
Expand Down
28 changes: 20 additions & 8 deletions go.mod
Original file line number Diff line number Diff line change
Expand Up @@ -7,7 +7,7 @@ toolchain go1.21.5
require (
github.com/99designs/gqlgen v0.17.40
github.com/KawashiroNitori/butcher/v2 v2.0.1
github.com/amikos-tech/chroma-go v0.0.0-20231228181736-e8f5e927093e
github.com/amikos-tech/chroma-go v0.0.0-20240109142503-c8fb49c3e28c
github.com/coreos/go-oidc/v3 v3.7.0
github.com/gin-contrib/requestid v0.0.6
github.com/gin-gonic/gin v1.9.1
Expand Down Expand Up @@ -36,6 +36,8 @@ require (
)

require (
cloud.google.com/go/ai v0.3.0 // indirect
cloud.google.com/go/longrunning v0.5.4 // indirect
github.com/KyleBanks/depth v1.2.1 // indirect
github.com/Masterminds/goutils v1.1.1 // indirect
github.com/Masterminds/semver/v3 v3.2.0 // indirect
Expand All @@ -58,6 +60,10 @@ require (
github.com/gobwas/glob v0.2.3 // indirect
github.com/goccy/go-json v0.10.2 // indirect
github.com/gocolly/colly v1.2.0 // indirect
github.com/google/generative-ai-go v0.5.0 // indirect
github.com/google/s2a-go v0.1.7 // indirect
github.com/googleapis/enterprise-certificate-proxy v0.3.2 // indirect
github.com/googleapis/gax-go/v2 v2.12.0 // indirect
github.com/goph/emperror v0.17.2 // indirect
github.com/gorilla/websocket v1.5.0 // indirect
github.com/hashicorp/golang-lru/v2 v2.0.3 // indirect
Expand Down Expand Up @@ -89,15 +95,21 @@ require (
github.com/twitchyliquid64/golang-asm v0.15.1 // indirect
github.com/ugorji/go/codec v1.2.12 // indirect
github.com/yargevad/filepathx v1.0.0 // indirect
go.opencensus.io v0.24.0 // indirect
go.starlark.net v0.0.0-20230302034142-4b1e35fe2254 // indirect
golang.org/x/arch v0.6.0 // indirect
golang.org/x/sync v0.5.0 // indirect
golang.org/x/tools v0.16.1 // indirect
google.golang.org/api v0.152.0 // indirect
google.golang.org/genproto v0.0.0-20231120223509-83a465c0220f // indirect
google.golang.org/genproto/googleapis/api v0.0.0-20231211222908-989df2bf70f3 // indirect
google.golang.org/genproto/googleapis/rpc v0.0.0-20231211222908-989df2bf70f3 // indirect
google.golang.org/grpc v1.60.0 // indirect
gopkg.in/ini.v1 v1.67.0 // indirect
)

require (
cloud.google.com/go/compute v1.23.1 // indirect
cloud.google.com/go/compute v1.23.3 // indirect
cloud.google.com/go/compute/metadata v0.2.3 // indirect
github.com/Azure/go-autorest v14.2.0+incompatible // indirect
github.com/Azure/go-autorest/autorest v0.11.18 // indirect
Expand All @@ -110,7 +122,7 @@ require (
github.com/andybalholm/cascadia v1.3.2 // indirect
github.com/aymerick/douceur v0.2.0 // indirect
github.com/beorn7/perks v1.0.1 // indirect
github.com/cespare/xxhash/v2 v2.1.2 // indirect
github.com/cespare/xxhash/v2 v2.2.0 // indirect
github.com/davecgh/go-spew v1.1.1 // indirect
github.com/dlclark/regexp2 v1.8.1 // indirect
github.com/emicklei/go-restful v2.9.5+incompatible // indirect
Expand All @@ -129,11 +141,11 @@ require (
github.com/google/gofuzz v1.1.0 // indirect
github.com/google/uuid v1.5.0 // indirect
github.com/gorilla/css v1.0.0 // indirect
github.com/imdario/mergo v0.3.12 // indirect
github.com/imdario/mergo v0.3.13 // indirect
github.com/inconshreveable/mousetrap v1.0.0 // indirect
github.com/josharian/intern v1.0.0 // indirect
github.com/json-iterator/go v1.1.12 // indirect
github.com/klauspost/compress v1.17.0 // indirect
github.com/klauspost/compress v1.17.2 // indirect
github.com/ledongthuc/pdf v0.0.0-20220302134840-0c2507a12d80 // indirect
github.com/mailru/easyjson v0.7.7 // indirect
github.com/mattn/go-colorable v0.1.13 // indirect
Expand Down Expand Up @@ -167,11 +179,11 @@ require (
golang.org/x/crypto v0.17.0 // indirect
golang.org/x/exp v0.0.0-20230713183714-613f0c0eb8a1 // indirect
golang.org/x/net v0.19.0 // indirect
golang.org/x/oauth2 v0.13.0
golang.org/x/oauth2 v0.15.0
golang.org/x/sys v0.15.0 // indirect
golang.org/x/term v0.15.0 // indirect
golang.org/x/text v0.14.0 // indirect
golang.org/x/time v0.0.0-20220210224613-90d013bbcef8 // indirect
golang.org/x/time v0.5.0 // indirect
gomodules.xyz/jsonpatch/v2 v2.2.0 // indirect
google.golang.org/appengine v1.6.8 // indirect
google.golang.org/protobuf v1.32.0 // indirect
Expand All @@ -189,4 +201,4 @@ require (
sigs.k8s.io/yaml v1.3.0 // indirect
)

replace github.com/tmc/langchaingo => github.com/kubeagi/langchaingo v0.0.0-20240228082936-a5a23d621373 // branch dev
replace github.com/tmc/langchaingo => github.com/kubeagi/langchaingo v0.0.0-20240229054113-5336bfef6e5e // branch dev
Loading

0 comments on commit d5053b1

Please sign in to comment.