dify_sku.go 5.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145
  1. package llm
  2. import (
  3. "yunion.io/x/jsonutils"
  4. api "yunion.io/x/onecloud/pkg/apis/llm"
  5. "yunion.io/x/onecloud/pkg/mcclient/options"
  6. )
  7. type DifySkuListOptions struct {
  8. options.BaseListOptions
  9. }
  10. func (o *DifySkuListOptions) Params() (jsonutils.JSONObject, error) {
  11. dict, err := options.ListStructToParams(o)
  12. if err != nil {
  13. return nil, err
  14. }
  15. dict.Set("llm_type", jsonutils.NewString(string(api.LLM_CONTAINER_DIFY)))
  16. return dict, nil
  17. }
  18. type DifySkuShowOptions struct {
  19. options.BaseShowOptions
  20. }
  21. func (o *DifySkuShowOptions) Params() (jsonutils.JSONObject, error) {
  22. return options.StructToParams(o)
  23. }
  24. type DifySkuCreateOptions struct {
  25. LLMSkuBaseCreateOptions
  26. POSTGRES_IMAGE_ID string `json:"postgres_image_id"`
  27. REDIS_IMAGE_ID string `json:"redis_image_id"`
  28. NGINX_IMAGE_ID string `json:"nginx_image_id"`
  29. DIFY_API_IMAGE_ID string `json:"dify_api_image_id"`
  30. DIFY_PLUGIN_IMAGE_ID string `json:"dify_plugin_image_id"`
  31. DIFY_WEB_IMAGE_ID string `json:"dify_web_image_id"`
  32. DIFY_SANDBOX_IMAGE_ID string `json:"dify_sandbox_image_id"`
  33. DIFY_SSRF_IMAGE_ID string `json:"dify_ssrf_image_id"`
  34. DIFY_WEAVIATE_IMAGE_ID string `json:"dify_weaviate_image_id"`
  35. CustomizedEnvs []*api.DifyCustomizedEnv `json:"customized_envs,omitempty"`
  36. }
  37. func (o *DifySkuCreateOptions) Params() (jsonutils.JSONObject, error) {
  38. dict := jsonutils.NewDict()
  39. obj := jsonutils.Marshal(o)
  40. obj.Unmarshal(dict)
  41. // Remove image id keys from top level; we put them in llm_spec
  42. for _, k := range []string{"postgres_image_id", "redis_image_id", "nginx_image_id", "dify_api_image_id", "dify_plugin_image_id", "dify_web_image_id", "dify_sandbox_image_id", "dify_ssrf_image_id", "dify_weaviate_image_id"} {
  43. dict.Remove(k)
  44. }
  45. if err := o.LLMSkuBaseCreateOptions.Params(dict); err != nil {
  46. return nil, err
  47. }
  48. dict.Set("llm_type", jsonutils.NewString(string(api.LLM_CONTAINER_DIFY)))
  49. spec := &api.LLMSpec{
  50. Ollama: nil,
  51. Vllm: nil,
  52. Dify: &api.LLMSpecDify{
  53. PostgresImageId: o.POSTGRES_IMAGE_ID,
  54. RedisImageId: o.REDIS_IMAGE_ID,
  55. NginxImageId: o.NGINX_IMAGE_ID,
  56. DifyApiImageId: o.DIFY_API_IMAGE_ID,
  57. DifyPluginImageId: o.DIFY_PLUGIN_IMAGE_ID,
  58. DifyWebImageId: o.DIFY_WEB_IMAGE_ID,
  59. DifySandboxImageId: o.DIFY_SANDBOX_IMAGE_ID,
  60. DifySSRFImageId: o.DIFY_SSRF_IMAGE_ID,
  61. DifyWeaviateImageId: o.DIFY_WEAVIATE_IMAGE_ID,
  62. CustomizedEnvs: o.CustomizedEnvs,
  63. },
  64. }
  65. dict.Set("llm_spec", jsonutils.Marshal(spec))
  66. return dict, nil
  67. }
  68. type DifySkuDeleteOptions struct {
  69. options.BaseIdOptions
  70. }
  71. func (o *DifySkuDeleteOptions) GetId() string {
  72. return o.ID
  73. }
  74. func (o *DifySkuDeleteOptions) Params() (jsonutils.JSONObject, error) {
  75. return options.StructToParams(o)
  76. }
  77. type DifySkuUpdateOptions struct {
  78. LLMSkuBaseUpdateOptions
  79. PostgresImageId string `json:"postgres_image_id"`
  80. RedisImageId string `json:"redis_image_id"`
  81. NginxImageId string `json:"nginx_image_id"`
  82. DifyApiImageId string `json:"dify_api_image_id"`
  83. DifyPluginImageId string `json:"dify_plugin_image_id"`
  84. DifyWebImageId string `json:"dify_web_image_id"`
  85. DifySandboxImageId string `json:"dify_sandbox_image_id"`
  86. DifySSRFImageId string `json:"dify_ssrf_image_id"`
  87. DifyWeaviateImageId string `json:"dify_weaviate_image_id"`
  88. CustomizedEnvs []*api.DifyCustomizedEnv `json:"customized_envs,omitempty"`
  89. }
  90. func (o *DifySkuUpdateOptions) GetId() string {
  91. return o.ID
  92. }
  93. func (o *DifySkuUpdateOptions) Params() (jsonutils.JSONObject, error) {
  94. dict := jsonutils.NewDict()
  95. obj := jsonutils.Marshal(o)
  96. obj.Unmarshal(dict)
  97. // Remove image id keys from top level; put them in llm_spec when any is set
  98. for _, k := range []string{"postgres_image_id", "redis_image_id", "nginx_image_id", "dify_api_image_id", "dify_plugin_image_id", "dify_web_image_id", "dify_sandbox_image_id", "dify_ssrf_image_id", "dify_weaviate_image_id"} {
  99. dict.Remove(k)
  100. }
  101. if err := o.LLMSkuBaseUpdateOptions.Params(dict); err != nil {
  102. return nil, err
  103. }
  104. hasImageId := o.PostgresImageId != "" || o.RedisImageId != "" || o.NginxImageId != "" ||
  105. o.DifyApiImageId != "" || o.DifyPluginImageId != "" || o.DifyWebImageId != "" ||
  106. o.DifySandboxImageId != "" || o.DifySSRFImageId != "" || o.DifyWeaviateImageId != ""
  107. if hasImageId || len(o.CustomizedEnvs) > 0 {
  108. spec := &api.LLMSpec{
  109. Ollama: nil,
  110. Vllm: nil,
  111. Dify: &api.LLMSpecDify{
  112. PostgresImageId: o.PostgresImageId,
  113. RedisImageId: o.RedisImageId,
  114. NginxImageId: o.NginxImageId,
  115. DifyApiImageId: o.DifyApiImageId,
  116. DifyPluginImageId: o.DifyPluginImageId,
  117. DifyWebImageId: o.DifyWebImageId,
  118. DifySandboxImageId: o.DifySandboxImageId,
  119. DifySSRFImageId: o.DifySSRFImageId,
  120. DifyWeaviateImageId: o.DifyWeaviateImageId,
  121. CustomizedEnvs: o.CustomizedEnvs,
  122. },
  123. }
  124. dict.Set("llm_spec", jsonutils.Marshal(spec))
  125. }
  126. return dict, nil
  127. }