Skip to content

Commit 897a6fc

Browse files
authored
[OSPP]feature: Auto deploy llm and dify (#23282)
* feat(llm): add llm-create * fix(llm): fix llm-create, add llm-list & llm-show * fix(llm): format file names * fear(llm): add exec stream * fear(llm): init llm model cache * fix(llm): move llm model cache to LocalImageCache * feat(llm): auto clean model cache * fix(llm): auto clean tmp model cache * feat(dify): init dify-create * fix(dify): change dify default registry * feat: support create model with gguf file * feat(llm): support more modelfile option for gguf file * feat(dify): init user customize dify parameters * feat: update llm as a service in climc * fix: delete llm from region service * feat: init llm service (with error) * fix: resolve errors (task cant callback yet) * feat: add PerformRequestHostActionByOtherService for container * fix: make llm service usable * feat: delete llm and dify after guest deleted * feat(llm): add llm-image * feat(llm): add llm-model * feat: mv old llm to ollama * feat(llm): init llm-batch-create(can not run) * fix(llm): make llm-create usable * fix(llm): add pull-model step * feat(llm): add list and delete * fix(llm): ollama pull official model don't rely on host & region's code any more * feat(llm): add dify-model * fix: remove llm's code in host & compute * fix: remove remain code in compute * feat(llm): Abstract out and reuse the llm_model logic * feat(llm): abstract llm_base from llm * fix(llm): make dify usable * feat(llm): add sync_dify_images.sh * fix(llm): format import * feat(llm): support start & stop for llm and dify * feat(llm): add model-update * fix(llm): gendocgo
1 parent fa67fde commit 897a6fc

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

85 files changed

+6850
-0
lines changed

build/docker/Dockerfile.llm

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,3 @@
1+
FROM registry.cn-beijing.aliyuncs.com/yunionio/onecloud-base:v0.3.5-1
2+
3+
ADD ./_output/alpine-build/bin/llm /opt/yunion/bin/llm

cmd/climc/main.go

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -30,6 +30,7 @@ import (
3030
_ "yunion.io/x/onecloud/cmd/climc/shell/identity"
3131
_ "yunion.io/x/onecloud/cmd/climc/shell/image"
3232
_ "yunion.io/x/onecloud/cmd/climc/shell/k8s"
33+
_ "yunion.io/x/onecloud/cmd/climc/shell/llm"
3334
_ "yunion.io/x/onecloud/cmd/climc/shell/logger"
3435
_ "yunion.io/x/onecloud/cmd/climc/shell/misc"
3536
_ "yunion.io/x/onecloud/cmd/climc/shell/monitor"

cmd/climc/shell/llm/dify.go

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
package llm
2+
3+
import (
4+
"yunion.io/x/onecloud/cmd/climc/shell"
5+
modules "yunion.io/x/onecloud/pkg/mcclient/modules/llm"
6+
options "yunion.io/x/onecloud/pkg/mcclient/options/llm"
7+
)
8+
9+
func init() {
10+
cmd := shell.NewResourceCmd(&modules.Difies)
11+
cmd.BatchCreate(new(options.DifyCreateOptions))
12+
cmd.List(new(options.DifyListOptions))
13+
cmd.Show(new(options.DifyShowOptions))
14+
cmd.Delete(new(options.DifyDeleteOptions))
15+
cmd.BatchPerform("stop", new(options.DifyStopOptions))
16+
cmd.BatchPerform("start", new(options.DifyStartOptions))
17+
}

cmd/climc/shell/llm/dify_model.go

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package llm
2+
3+
import (
4+
"yunion.io/x/onecloud/cmd/climc/shell"
5+
modules "yunion.io/x/onecloud/pkg/mcclient/modules/llm"
6+
base_options "yunion.io/x/onecloud/pkg/mcclient/options"
7+
options "yunion.io/x/onecloud/pkg/mcclient/options/llm"
8+
)
9+
10+
func init() {
11+
cmd := shell.NewResourceCmd(&modules.DifyModel)
12+
cmd.List(new(options.DifyModelListOptions))
13+
cmd.Show(new(options.DifyModelShowOptions))
14+
cmd.Update(new(options.DifyModelUpdateOptions))
15+
cmd.Create(new(options.DifyModelCreateOptions))
16+
cmd.Delete(new(options.DifyModelDeleteOptions))
17+
cmd.Perform("public", &base_options.BasePublicOptions{})
18+
cmd.Perform("private", &base_options.BaseIdOptions{})
19+
// cmd.Perform("clone", new(options.DesktopModelCloneOptions))
20+
}

cmd/climc/shell/llm/image.go

Lines changed: 19 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,19 @@
1+
package llm
2+
3+
import (
4+
"yunion.io/x/onecloud/cmd/climc/shell"
5+
modules "yunion.io/x/onecloud/pkg/mcclient/modules/llm"
6+
base_options "yunion.io/x/onecloud/pkg/mcclient/options"
7+
options "yunion.io/x/onecloud/pkg/mcclient/options/llm"
8+
)
9+
10+
func init() {
11+
cmd := shell.NewResourceCmd(&modules.LLMImage)
12+
cmd.List(new(options.LLMImageListOptions))
13+
cmd.Show(new(options.LLMImageShowOptions))
14+
cmd.Create(new(options.LLMImageCreateOptions))
15+
cmd.Update(new(options.LLMImageUpdateOptions))
16+
cmd.Delete(new(options.LLMImageDeleteOptions))
17+
cmd.Perform("public", &base_options.BasePublicOptions{})
18+
cmd.Perform("private", &base_options.BaseIdOptions{})
19+
}

cmd/climc/shell/llm/llm.go

Lines changed: 18 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,18 @@
1+
package llm
2+
3+
import (
4+
"yunion.io/x/onecloud/cmd/climc/shell"
5+
modules "yunion.io/x/onecloud/pkg/mcclient/modules/llm"
6+
options "yunion.io/x/onecloud/pkg/mcclient/options/llm"
7+
)
8+
9+
func init() {
10+
cmd := shell.NewResourceCmd(&modules.LLMs)
11+
cmd.BatchCreate(new(options.LLMCreateOptions))
12+
cmd.List(new(options.LLMListOptions))
13+
cmd.Show(new(options.LLMShowOptions))
14+
cmd.Delete(new(options.LLMDeleteOptions))
15+
// cmd.Perform("change-model", new(options.LLMChangeModelOptions))
16+
cmd.BatchPerform("stop", new(options.LLMStopOptions))
17+
cmd.BatchPerform("start", new(options.LLMStartOptions))
18+
}

cmd/climc/shell/llm/llm_model.go

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
package llm
2+
3+
import (
4+
"yunion.io/x/onecloud/cmd/climc/shell"
5+
modules "yunion.io/x/onecloud/pkg/mcclient/modules/llm"
6+
base_options "yunion.io/x/onecloud/pkg/mcclient/options"
7+
options "yunion.io/x/onecloud/pkg/mcclient/options/llm"
8+
)
9+
10+
func init() {
11+
cmd := shell.NewResourceCmd(&modules.LLMModel)
12+
cmd.List(new(options.LLMModelListOptions))
13+
cmd.Show(new(options.LLMModelShowOptions))
14+
cmd.Update(new(options.LLMModelUpdateOptions))
15+
cmd.Create(new(options.LLMModelCreateOptions))
16+
cmd.Delete(new(options.LLMModelDeleteOptions))
17+
cmd.Perform("public", &base_options.BasePublicOptions{})
18+
cmd.Perform("private", &base_options.BaseIdOptions{})
19+
// cmd.Perform("clone", new(options.DesktopModelCloneOptions))
20+
}

cmd/llm/main.go

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
package main
2+
3+
import (
4+
"yunion.io/x/onecloud/pkg/llm/service"
5+
"yunion.io/x/onecloud/pkg/util/atexit"
6+
)
7+
8+
func main() {
9+
defer atexit.Handle()
10+
11+
service.StartService()
12+
}

pkg/apis/const.go

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,8 @@ const (
4545

4646
SERVICE_TYPE_APIMAP = "apimap"
4747

48+
SERVICE_TYPE_LLM = "llm"
49+
4850
STATUS_UPDATE_TAGS = "update_tags"
4951
STATUS_UPDATE_TAGS_FAILED = "update_tags_fail"
5052

pkg/apis/llm/dify.go

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,24 @@
1+
package llm
2+
3+
type DifyCustomizedEnv struct {
4+
Key string `json:"key"`
5+
Value string `json:"value"`
6+
}
7+
8+
type DifyCustomized struct {
9+
// Define custom environment variables here
10+
CustomizedEnvs []*DifyCustomizedEnv `json:"customized_envs,omitempty"`
11+
Registry string `json:"registry"`
12+
}
13+
14+
type DifyListInput struct {
15+
LLMBaseListInput
16+
17+
DifyModel string `json:"dify_model"`
18+
}
19+
20+
type DifyCreateInput struct {
21+
LLMBaseCreateInput
22+
23+
DifyModelId string
24+
}

0 commit comments

Comments
 (0)