소스 검색

feat: frontend multi models support (#804)

Co-authored-by: StyleZhang <jasonapring2015@outlook.com>
Co-authored-by: Joel <iamjoel007@gmail.com>
takatost 1 년 전
부모
커밋
d10ef17f17
100개의 변경된 파일2716개의 추가작업 그리고 230개의 파일을 삭제
  1. 4 2
      web/app/(commonLayout)/app/(appDetailLayout)/[appId]/overview/page.tsx
  2. 1 1
      web/app/(commonLayout)/list.module.css
  3. 250 135
      web/app/components/app/configuration/config-model/index.tsx
  4. 21 15
      web/app/components/app/configuration/config-model/model-icon.tsx
  5. 29 0
      web/app/components/app/configuration/config-model/model-name.tsx
  6. 4 4
      web/app/components/app/configuration/config-model/param-item.tsx
  7. 24 0
      web/app/components/app/configuration/config-model/provider-name.tsx
  8. 1 1
      web/app/components/app/configuration/debug/index.tsx
  9. 1 0
      web/app/components/app/configuration/index.tsx
  10. 127 0
      web/app/components/app/overview/apikey-info-panel/index.tsx
  11. 29 0
      web/app/components/app/overview/apikey-info-panel/progress/index.tsx
  12. 0 8
      web/app/components/app/overview/apikey-info-panel/progress/style.module.css
  13. 1 1
      web/app/components/app/overview/appCard.tsx
  14. 1 1
      web/app/components/app/overview/appChart.tsx
  15. 3 0
      web/app/components/base/confirm/common.module.css
  16. 69 0
      web/app/components/base/confirm/common.tsx
  17. BIN
      web/app/components/base/icons/assets/image/llm/minimax-text.png
  18. BIN
      web/app/components/base/icons/assets/image/llm/minimax.png
  19. BIN
      web/app/components/base/icons/assets/image/llm/tongyi-text-cn.png
  20. BIN
      web/app/components/base/icons/assets/image/llm/tongyi-text.png
  21. BIN
      web/app/components/base/icons/assets/image/llm/tongyi.png
  22. BIN
      web/app/components/base/icons/assets/image/llm/wxyy-text-cn.png
  23. BIN
      web/app/components/base/icons/assets/image/llm/wxyy-text.png
  24. BIN
      web/app/components/base/icons/assets/image/llm/wxyy.png
  25. 78 0
      web/app/components/base/icons/assets/public/llm/anthropic-text.svg
  26. 1 9
      web/app/components/base/icons/assets/public/llm/anthropic.svg
  27. 5 0
      web/app/components/base/icons/assets/public/llm/azure-openai-service-text.svg
  28. 5 0
      web/app/components/base/icons/assets/public/llm/azure-openai-service.svg
  29. 30 0
      web/app/components/base/icons/assets/public/llm/azureai-text.svg
  30. 23 0
      web/app/components/base/icons/assets/public/llm/azureai.svg
  31. 16 0
      web/app/components/base/icons/assets/public/llm/chatglm-text.svg
  32. 9 0
      web/app/components/base/icons/assets/public/llm/chatglm.svg
  33. 16 0
      web/app/components/base/icons/assets/public/llm/huggingface-text-hub.svg
  34. 16 0
      web/app/components/base/icons/assets/public/llm/huggingface-text.svg
  35. 14 0
      web/app/components/base/icons/assets/public/llm/huggingface.svg
  36. 11 0
      web/app/components/base/icons/assets/public/llm/iflytek-spark-text-cn.svg
  37. 24 0
      web/app/components/base/icons/assets/public/llm/iflytek-spark-text.svg
  38. 5 0
      web/app/components/base/icons/assets/public/llm/iflytek-spark.svg
  39. 8 0
      web/app/components/base/icons/assets/public/llm/microsoft.svg
  40. 2 0
      web/app/components/base/icons/assets/public/llm/openai-black.svg
  41. 2 0
      web/app/components/base/icons/assets/public/llm/openai-blue.svg
  42. 2 0
      web/app/components/base/icons/assets/public/llm/openai-green.svg
  43. 8 0
      web/app/components/base/icons/assets/public/llm/openai-text.svg
  44. 1 0
      web/app/components/base/icons/assets/public/llm/openai-transparent.svg
  45. 2 0
      web/app/components/base/icons/assets/public/llm/openai-violet.svg
  46. 13 0
      web/app/components/base/icons/assets/public/llm/replicate-text.svg
  47. 4 0
      web/app/components/base/icons/assets/public/llm/replicate.svg
  48. 5 0
      web/app/components/base/icons/assets/vender/line/alertsAndFeedback/alert-circle.svg
  49. 5 0
      web/app/components/base/icons/assets/vender/line/arrows/chevron-down-double.svg
  50. 10 0
      web/app/components/base/icons/assets/vender/line/general/at-sign.svg
  51. 9 0
      web/app/components/base/icons/assets/vender/line/general/dots-horizontal.svg
  52. 3 0
      web/app/components/base/icons/assets/vender/line/general/help-circle.svg
  53. 10 0
      web/app/components/base/icons/assets/vender/line/general/info-circle.svg
  54. 5 0
      web/app/components/base/icons/assets/vender/line/general/plus.svg
  55. 5 0
      web/app/components/base/icons/assets/vender/line/general/search-lg.svg
  56. 10 0
      web/app/components/base/icons/assets/vender/line/mapsAndTravel/globe-01.svg
  57. 13 0
      web/app/components/base/icons/assets/vender/line/shapes/cube-outline.svg
  58. 5 0
      web/app/components/base/icons/assets/vender/line/users/user-01.svg
  59. 5 0
      web/app/components/base/icons/assets/vender/line/users/users-01.svg
  60. 5 0
      web/app/components/base/icons/assets/vender/solid/FinanceAndECommerce/scales-02.svg
  61. 4 0
      web/app/components/base/icons/assets/vender/solid/editor/brush-01.svg
  62. 5 0
      web/app/components/base/icons/assets/vender/solid/general/target-04.svg
  63. 8 0
      web/app/components/base/icons/assets/vender/solid/mediaAndDevices/sliders-02.svg
  64. 5 0
      web/app/components/base/icons/assets/vender/solid/security/lock-01.svg
  65. 8 0
      web/app/components/base/icons/assets/vender/solid/users/user-01.svg
  66. 10 0
      web/app/components/base/icons/assets/vender/solid/users/users-01.svg
  67. 52 0
      web/app/components/base/icons/script.js
  68. 5 0
      web/app/components/base/icons/src/image/llm/Minimax.module.css
  69. 13 0
      web/app/components/base/icons/src/image/llm/Minimax.tsx
  70. 5 0
      web/app/components/base/icons/src/image/llm/MinimaxText.module.css
  71. 13 0
      web/app/components/base/icons/src/image/llm/MinimaxText.tsx
  72. 5 0
      web/app/components/base/icons/src/image/llm/Tongyi.module.css
  73. 13 0
      web/app/components/base/icons/src/image/llm/Tongyi.tsx
  74. 5 0
      web/app/components/base/icons/src/image/llm/TongyiText.module.css
  75. 13 0
      web/app/components/base/icons/src/image/llm/TongyiText.tsx
  76. 5 0
      web/app/components/base/icons/src/image/llm/TongyiTextCn.module.css
  77. 13 0
      web/app/components/base/icons/src/image/llm/TongyiTextCn.tsx
  78. 5 0
      web/app/components/base/icons/src/image/llm/Wxyy.module.css
  79. 13 0
      web/app/components/base/icons/src/image/llm/Wxyy.tsx
  80. 5 0
      web/app/components/base/icons/src/image/llm/WxyyText.module.css
  81. 13 0
      web/app/components/base/icons/src/image/llm/WxyyText.tsx
  82. 5 0
      web/app/components/base/icons/src/image/llm/WxyyTextCn.module.css
  83. 13 0
      web/app/components/base/icons/src/image/llm/WxyyTextCn.tsx
  84. 8 0
      web/app/components/base/icons/src/image/llm/index.ts
  85. 3 53
      web/app/components/base/icons/src/public/llm/Anthropic.json
  86. 539 0
      web/app/components/base/icons/src/public/llm/AnthropicText.json
  87. 14 0
      web/app/components/base/icons/src/public/llm/AnthropicText.tsx
  88. 65 0
      web/app/components/base/icons/src/public/llm/AzureOpenaiService.json
  89. 14 0
      web/app/components/base/icons/src/public/llm/AzureOpenaiService.tsx
  90. 65 0
      web/app/components/base/icons/src/public/llm/AzureOpenaiServiceText.json
  91. 14 0
      web/app/components/base/icons/src/public/llm/AzureOpenaiServiceText.tsx
  92. 180 0
      web/app/components/base/icons/src/public/llm/Azureai.json
  93. 14 0
      web/app/components/base/icons/src/public/llm/Azureai.tsx
  94. 243 0
      web/app/components/base/icons/src/public/llm/AzureaiText.json
  95. 14 0
      web/app/components/base/icons/src/public/llm/AzureaiText.tsx
  96. 72 0
      web/app/components/base/icons/src/public/llm/Chatglm.json
  97. 14 0
      web/app/components/base/icons/src/public/llm/Chatglm.tsx
  98. 135 0
      web/app/components/base/icons/src/public/llm/ChatglmText.json
  99. 14 0
      web/app/components/base/icons/src/public/llm/ChatglmText.tsx
  100. 122 0
      web/app/components/base/icons/src/public/llm/Huggingface.json

+ 4 - 2
web/app/(commonLayout)/app/(appDetailLayout)/[appId]/overview/page.tsx

@@ -1,9 +1,10 @@
 import React from 'react'
-import WelcomeBanner, { EditKeyPopover } from './welcome-banner'
+import { EditKeyPopover } from './welcome-banner'
 import ChartView from './chartView'
 import CardView from './cardView'
 import { getLocaleOnServer } from '@/i18n/server'
 import { useTranslation } from '@/i18n/i18next-serverside-config'
+import ApikeyInfoPanel from '@/app/components/app/overview/apikey-info-panel'
 
 export type IDevelopProps = {
   params: { appId: string }
@@ -16,7 +17,8 @@ const Overview = async ({
   const { t } = await useTranslation(locale, 'app-overview')
   return (
     <div className="h-full px-16 py-6 overflow-scroll">
-      <WelcomeBanner />
+      {/* <WelcomeBanner /> */}
+      <ApikeyInfoPanel />
       <div className='flex flex-row items-center justify-between mb-4 text-xl text-gray-900'>
         {t('overview.title')}
         <EditKeyPopover />

+ 1 - 1
web/app/(commonLayout)/list.module.css

@@ -1,5 +1,5 @@
 .listItem {
-  @apply col-span-1 bg-white border-2 border-solid border-transparent rounded-lg shadow-sm min-h-[160px] flex flex-col transition-all duration-200 ease-in-out cursor-pointer hover:shadow-lg;
+  @apply col-span-1 bg-white border-2 border-solid border-transparent rounded-lg shadow-xs min-h-[160px] flex flex-col transition-all duration-200 ease-in-out cursor-pointer hover:shadow-lg;
 }
 
 .listItem.newItemCard {

+ 250 - 135
web/app/components/app/configuration/config-model/index.tsx

@@ -3,22 +3,34 @@ import type { FC } from 'react'
 import React, { useEffect, useState } from 'react'
 import cn from 'classnames'
 import { useTranslation } from 'react-i18next'
-import { useBoolean, useClickAway } from 'ahooks'
-import { ChevronDownIcon, Cog8ToothIcon, InformationCircleIcon } from '@heroicons/react/24/outline'
+import { useBoolean, useClickAway, useGetState } from 'ahooks'
+import { Cog8ToothIcon, InformationCircleIcon } from '@heroicons/react/24/outline'
+import produce from 'immer'
 import ParamItem from './param-item'
 import ModelIcon from './model-icon'
+import ModelName from './model-name'
 import Radio from '@/app/components/base/radio'
 import Panel from '@/app/components/base/panel'
 import type { CompletionParams } from '@/models/debug'
-import { AppType, ProviderType } from '@/types/app'
-import { MODEL_LIST, TONE_LIST } from '@/config'
+import { TONE_LIST } from '@/config'
 import Toast from '@/app/components/base/toast'
 import { AlertTriangle } from '@/app/components/base/icons/src/vender/solid/alertsAndFeedback'
 import { formatNumber } from '@/utils/format'
-export type IConifgModelProps = {
+import { Brush01 } from '@/app/components/base/icons/src/vender/solid/editor'
+import { Scales02 } from '@/app/components/base/icons/src/vender/solid/FinanceAndECommerce'
+import { Target04 } from '@/app/components/base/icons/src/vender/solid/general'
+import { Sliders02 } from '@/app/components/base/icons/src/vender/solid/mediaAndDevices'
+import { fetchModelParams } from '@/service/debug'
+import Loading from '@/app/components/base/loading'
+import ModelSelector from '@/app/components/header/account-setting/model-page/model-selector'
+import { ModelType, ProviderEnum } from '@/app/components/header/account-setting/model-page/declarations'
+import { useProviderContext } from '@/context/provider-context'
+
+export type IConfigModelProps = {
   mode: string
   modelId: string
-  setModelId: (id: string, provider: ProviderType) => void
+  provider: ProviderEnum
+  setModelId: (id: string, provider: ProviderEnum) => void
   completionParams: CompletionParams
   onCompletionParamsChange: (newParams: CompletionParams) => void
   disabled: boolean
@@ -26,21 +38,10 @@ export type IConifgModelProps = {
   onShowUseGPT4Confirm: () => void
 }
 
-const options = MODEL_LIST
-
-const getMaxToken = (modelId: string) => {
-  if (['claude-instant-1', 'claude-2'].includes(modelId))
-    return 30 * 1000
-
-  if (['gpt-4', 'gpt-3.5-turbo-16k'].includes(modelId))
-    return 8000
-
-  return 4000
-}
-
-const ConifgModel: FC<IConifgModelProps> = ({
-  mode,
+const ConfigModel: FC<IConfigModelProps> = ({
+  // mode,
   modelId,
+  provider,
   setModelId,
   completionParams,
   onCompletionParamsChange,
@@ -49,89 +50,140 @@ const ConifgModel: FC<IConifgModelProps> = ({
   onShowUseGPT4Confirm,
 }) => {
   const { t } = useTranslation()
-  const isChatApp = mode === AppType.chat
-  const availableModels = options.filter(item => item.type === mode)
+  const { textGenerationModelList } = useProviderContext()
   const [isShowConfig, { setFalse: hideConfig, toggle: toogleShowConfig }] = useBoolean(false)
   const [maxTokenSettingTipVisible, setMaxTokenSettingTipVisible] = useState(false)
   const configContentRef = React.useRef(null)
-  const currModel = options.find(item => item.id === modelId)
+  const currModel = textGenerationModelList.find(item => item.model_name === modelId)
+  // Cache loaded model param
+  const [allParams, setAllParams, getAllParams] = useGetState<Record<string, Record<string, any>>>({})
+  const currParams = allParams[provider]?.[modelId]
+  const hasEnableParams = currParams && Object.keys(currParams).some(key => currParams[key].enabled)
+  const allSupportParams = ['temperature', 'top_p', 'presence_penalty', 'frequency_penalty', 'max_tokens']
+  const currSupportParams = currParams ? allSupportParams.filter(key => currParams[key].enabled) : allSupportParams
+
+  useEffect(() => {
+    (async () => {
+      if (!allParams[provider]?.[modelId]) {
+        const res = await fetchModelParams(provider, modelId)
+        const newAllParams = produce(allParams, (draft) => {
+          if (!draft[provider])
+            draft[provider] = {}
+
+          draft[provider][modelId] = res
+        })
+        setAllParams(newAllParams)
+      }
+    })()
+  }, [provider, modelId])
+
   useClickAway(() => {
     hideConfig()
   }, configContentRef)
 
-  const params = [
-    {
-      id: 1,
-      name: t('common.model.params.temperature'),
-      key: 'temperature',
-      tip: t('common.model.params.temperatureTip'),
-      max: 2,
-    },
-    {
-      id: 2,
-      name: t('common.model.params.topP'),
-      key: 'top_p',
-      tip: t('common.model.params.topPTip'),
-      max: 1,
-    },
-    {
-      id: 3,
-      name: t('common.model.params.presencePenalty'),
-      key: 'presence_penalty',
-      tip: t('common.model.params.presencePenaltyTip'),
-      min: -2,
-      max: 2,
-    },
-    {
-      id: 4,
-      name: t('common.model.params.frequencyPenalty'),
-      key: 'frequency_penalty',
-      tip: t('common.model.params.frequencyPenaltyTip'),
-      min: -2,
-      max: 2,
-    },
-    {
-      id: 5,
-      name: t('common.model.params.maxToken'),
-      key: 'max_tokens',
-      tip: t('common.model.params.maxTokenTip'),
-      step: 100,
-      max: getMaxToken(modelId),
-    },
-  ]
-
-  const selectModelDisabled = false // chat  gpt-3.5-turbo, gpt-4; text generation text-davinci-003, gpt-3.5-turbo
-
   const selectedModel = { name: modelId } // options.find(option => option.id === modelId)
-  const [isShowOption, { setFalse: hideOption, toggle: toogleOption }] = useBoolean(false)
-  const triggerRef = React.useRef(null)
-  useClickAway(() => {
-    hideOption()
-  }, triggerRef)
 
-  const handleSelectModel = (id: string, provider = ProviderType.openai) => {
-    return () => {
+  const ensureModelParamLoaded = (provider: ProviderEnum, modelId: string) => {
+    return new Promise<void>((resolve) => {
+      if (getAllParams()[provider]?.[modelId]) {
+        resolve()
+        return
+      }
+      const runId = setInterval(() => {
+        if (getAllParams()[provider]?.[modelId]) {
+          resolve()
+          clearInterval(runId)
+        }
+      }, 500)
+    })
+  }
+
+  const transformValue = (value: number, fromRange: [number, number], toRange: [number, number]): number => {
+    const [fromStart = 0, fromEnd] = fromRange
+    const [toStart = 0, toEnd] = toRange
+
+    // The following three if is to avoid precision loss
+    if (fromStart === toStart && fromEnd === toEnd)
+      return value
+
+    if (value <= fromStart)
+      return toStart
+
+    if (value >= fromEnd)
+      return toEnd
+
+    const fromLength = fromEnd - fromStart
+    const toLength = toEnd - toStart
+
+    let adjustedValue = (value - fromStart) * (toLength / fromLength) + toStart
+    adjustedValue = parseFloat(adjustedValue.toFixed(2))
+    return adjustedValue
+  }
+
+  const handleSelectModel = (id: string, nextProvider = ProviderEnum.openai) => {
+    return async () => {
       if (id === 'gpt-4' && !canUseGPT4) {
         hideConfig()
-        hideOption()
         onShowUseGPT4Confirm()
         return
       }
-      const nextSelectModelMaxToken = getMaxToken(id)
-      if (completionParams.max_tokens > nextSelectModelMaxToken) {
-        Toast.notify({
-          type: 'warning',
-          message: t('common.model.params.setToCurrentModelMaxTokenTip', { maxToken: formatNumber(nextSelectModelMaxToken) }),
-        })
-        onCompletionParamsChange({
-          ...completionParams,
-          max_tokens: nextSelectModelMaxToken,
+      const prevParamsRule = getAllParams()[provider]?.[modelId]
+
+      setModelId(id, nextProvider)
+
+      await ensureModelParamLoaded(nextProvider, id)
+
+      const nextParamsRule = getAllParams()[nextProvider]?.[id]
+      // debugger
+      const nextSelectModelMaxToken = nextParamsRule.max_tokens.max
+      const newConCompletionParams = produce(completionParams, (draft: any) => {
+        if (nextParamsRule.max_tokens.enabled) {
+          if (completionParams.max_tokens > nextSelectModelMaxToken) {
+            Toast.notify({
+              type: 'warning',
+              message: t('common.model.params.setToCurrentModelMaxTokenTip', { maxToken: formatNumber(nextSelectModelMaxToken) }),
+            })
+            draft.max_tokens = parseFloat((nextSelectModelMaxToken * 0.8).toFixed(2))
+          }
+          // prev don't have max token
+          if (!completionParams.max_tokens)
+            draft.max_tokens = nextParamsRule.max_tokens.default
+        }
+        else {
+          delete draft.max_tokens
+        }
+
+        allSupportParams.forEach((key) => {
+          if (key === 'max_tokens')
+            return
+
+          if (!nextParamsRule[key].enabled) {
+            delete draft[key]
+            return
+          }
+
+          if (draft[key] === undefined) {
+            draft[key] = nextParamsRule[key].default || 0
+            return
+          }
+
+          if (!prevParamsRule[key].enabled) {
+            draft[key] = nextParamsRule[key].default || 0
+            return
+          }
+
+          draft[key] = transformValue(
+            draft[key],
+            [prevParamsRule[key].min, prevParamsRule[key].max],
+            [nextParamsRule[key].min, nextParamsRule[key].max],
+          )
         })
-      }
-      setModelId(id, provider)
+      })
+      onCompletionParamsChange(newConCompletionParams)
     }
   }
 
+  // only openai support this
   function matchToneId(completionParams: CompletionParams): number {
     const remvoedCustomeTone = TONE_LIST.slice(0, -1)
     const CUSTOM_TONE_ID = 4
@@ -146,6 +198,11 @@ const ConifgModel: FC<IConifgModelProps> = ({
 
   // tone is a preset of completionParams.
   const [toneId, setToneId] = React.useState(matchToneId(completionParams)) // default is Balanced
+  const toneTabBgClassName = ({
+    1: 'bg-[#F5F8FF]',
+    2: 'bg-[#F4F3FF]',
+    3: 'bg-[#F6FEFC]',
+  })[toneId] || ''
   // set completionParams by toneId
   const handleToneChange = (id: number) => {
     if (id === 4)
@@ -164,40 +221,59 @@ const ConifgModel: FC<IConifgModelProps> = ({
     setToneId(matchToneId(completionParams))
   }, [completionParams])
 
-  const handleParamChange = (id: number, value: number) => {
-    const key = params.find(item => item.id === id)?.key
+  const handleParamChange = (key: string, value: number) => {
+    const currParamsRule = getAllParams()[provider]?.[modelId]
+    let notOutRangeValue = parseFloat(value.toFixed(2))
+    notOutRangeValue = Math.max(currParamsRule[key].min, notOutRangeValue)
+    notOutRangeValue = Math.min(currParamsRule[key].max, notOutRangeValue)
 
-    if (key) {
-      onCompletionParamsChange({
-        ...completionParams,
-        [key]: value,
-      })
-    }
+    onCompletionParamsChange({
+      ...completionParams,
+      [key]: notOutRangeValue,
+    })
   }
   const ableStyle = 'bg-indigo-25 border-[#2A87F5] cursor-pointer'
   const diabledStyle = 'bg-[#FFFCF5] border-[#F79009]'
 
+  const getToneIcon = (toneId: number) => {
+    const className = 'w-[14px] h-[14px]'
+    const res = ({
+      1: <Brush01 className={className}/>,
+      2: <Scales02 className={className} />,
+      3: <Target04 className={className} />,
+      4: <Sliders02 className={className} />,
+    })[toneId]
+    return res
+  }
   useEffect(() => {
-    const max = params[4].max
-    if (currModel?.provider !== ProviderType.anthropic && completionParams.max_tokens > max * 2 / 3)
+    if (!currParams)
+      return
+
+    const max = currParams.max_tokens.max
+    const isSupportMaxToken = currParams.max_tokens.enabled
+    if (isSupportMaxToken && currModel?.model_provider.provider_name !== ProviderEnum.anthropic && completionParams.max_tokens > max * 2 / 3)
       setMaxTokenSettingTipVisible(true)
     else
       setMaxTokenSettingTipVisible(false)
-  }, [params, completionParams.max_tokens, setMaxTokenSettingTipVisible])
-
+  }, [currParams, completionParams.max_tokens, setMaxTokenSettingTipVisible])
   return (
     <div className='relative' ref={configContentRef}>
       <div
         className={cn('flex items-center border h-8 px-2.5 space-x-2 rounded-lg', disabled ? diabledStyle : ableStyle)}
         onClick={() => !disabled && toogleShowConfig()}
       >
-        <ModelIcon modelId={currModel?.id as string} />
-        <div className='text-[13px] text-gray-900 font-medium'>{selectedModel.name}</div>
+        <ModelIcon
+          modelId={modelId}
+          providerName={provider}
+        />
+        <div className='text-[13px] text-gray-900 font-medium'>
+          <ModelName modelId={selectedModel.name} />
+        </div>
         {disabled ? <InformationCircleIcon className='w-3.5 h-3.5 text-[#F79009]' /> : <Cog8ToothIcon className='w-3.5 h-3.5 text-gray-500' />}
       </div>
       {isShowConfig && (
         <Panel
-          className='absolute z-20 top-8 right-0 !w-[496px] bg-white'
+          className='absolute z-20 top-8 right-0 !w-[496px] bg-white !overflow-visible shadow-md'
           keepUnFold
           headerIcon={
             <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
@@ -215,49 +291,88 @@ const ConifgModel: FC<IConifgModelProps> = ({
           <div className='py-3 pl-10 pr-6 text-sm'>
             <div className="flex items-center justify-between my-5 h-9">
               <div>{t('appDebug.modelConfig.model')}</div>
-              {/* model selector */}
-              <div className="relative" style={{ zIndex: 30 }}>
-                <div ref={triggerRef} onClick={() => !selectModelDisabled && toogleOption()} className={cn(selectModelDisabled ? 'cursor-not-allowed' : 'cursor-pointer', 'flex items-center h-9 px-3 space-x-2 rounded-lg bg-gray-50 ')}>
-                  <ModelIcon modelId={currModel?.id as string} />
-                  <div className="text-sm gray-900">{selectedModel?.name}</div>
-                  {!selectModelDisabled && <ChevronDownIcon className={cn(isShowOption && 'rotate-180', 'w-[14px] h-[14px] text-gray-500')} />}
-                </div>
-                {isShowOption && (
-                  <div className={cn(isChatApp ? 'min-w-[159px]' : 'w-[179px]', 'absolute right-0 bg-gray-50 rounded-lg shadow')}>
-                    {availableModels.map(item => (
-                      <div key={item.id} onClick={handleSelectModel(item.id, item.provider)} className="flex items-center h-9 px-3 rounded-lg cursor-pointer hover:bg-gray-100">
-                        <ModelIcon className='shrink-0 mr-2' modelId={item?.id} />
-                        <div className="text-sm gray-900 whitespace-nowrap">{item.name}</div>
+              <ModelSelector
+                popClassName='right-0'
+                triggerIconSmall
+                value={{
+                  modelName: modelId,
+                  providerName: provider,
+                }}
+                modelType={ModelType.textGeneration}
+                onChange={(model) => {
+                  handleSelectModel(model.model_name, model.model_provider.provider_name as ProviderEnum)()
+                }}
+              />
+            </div>
+            {hasEnableParams && (
+              <div className="border-b border-gray-100"></div>
+            )}
+
+            {/* Tone type */}
+            {[ProviderEnum.openai, ProviderEnum.azure_openai].includes(provider) && (
+              <div className="mt-5 mb-4">
+                <div className="mb-3 text-sm text-gray-900">{t('appDebug.modelConfig.setTone')}</div>
+                <Radio.Group className={cn('!rounded-lg', toneTabBgClassName)} value={toneId} onChange={handleToneChange}>
+                  <>
+                    {TONE_LIST.slice(0, 3).map(tone => (
+                      <div className='grow flex items-center' key={tone.id}>
+                        <Radio
+                          value={tone.id}
+                          className={cn(tone.id === toneId && 'rounded-md border border-gray-200 shadow-md', '!mr-0 grow !px-2 !justify-center text-[13px] font-medium')}
+                          labelClassName={cn(tone.id === toneId
+                            ? ({
+                              1: 'text-[#6938EF]',
+                              2: 'text-[#444CE7]',
+                              3: 'text-[#107569]',
+                            })[toneId]
+                            : 'text-[#667085]', 'flex items-center space-x-2')}
+                        >
+                          <>
+                            {getToneIcon(tone.id)}
+                            <div>{t(`common.model.tone.${tone.name}`) as string}</div>
+                            <div className=""></div>
+                          </>
+                        </Radio>
+                        {tone.id !== toneId && tone.id + 1 !== toneId && (<div className='h-5 border-r border-gray-200'></div>)}
                       </div>
                     ))}
-                  </div>
-                )}
+                  </>
+                  <Radio
+                    value={TONE_LIST[3].id}
+                    className={cn(toneId === 4 && 'rounded-md border border-gray-200 shadow-md', '!mr-0 grow !px-2 !justify-center text-[13px] font-medium')}
+                    labelClassName={cn('flex items-center space-x-2 ', toneId === 4 ? 'text-[#155EEF]' : 'text-[#667085]')}
+                  >
+                    <>
+                      {getToneIcon(TONE_LIST[3].id)}
+                      <div>{t(`common.model.tone.${TONE_LIST[3].name}`) as string}</div>
+                    </>
+                  </Radio>
+                </Radio.Group>
               </div>
-            </div>
-            <div className="border-b border-gray-100"></div>
-
-            {/* Response type */}
-            <div className="mt-5 mb-4">
-              <div className="mb-4 text-sm text-gray-900">{t('appDebug.modelConfig.setTone')}</div>
-              <Radio.Group value={toneId} onChange={handleToneChange}>
-                <>
-                  {TONE_LIST.slice(0, 3).map(tone => (
-                    <Radio key={tone.id} value={tone.id} className="grow !px-0 !justify-center">{t(`common.model.tone.${tone.name}`) as string}</Radio>
-                  ))}
-                </>
-                <div className="ml-[2px] mr-[3px] h-5 border-r border-gray-200"></div>
-                <Radio value={TONE_LIST[3].id}>{t(`common.model.tone.${TONE_LIST[3].name}`) as string}</Radio>
-              </Radio.Group>
-            </div>
+            )}
 
             {/* Params */}
-            <div className="mt-4 space-y-4">
-              {params.map(({ key, ...param }) => (<ParamItem key={key} {...param} value={(completionParams as any)[key] as any} onChange={handleParamChange} />))}
+            <div className={cn(hasEnableParams && 'mt-4', 'space-y-4', !allParams[provider]?.[modelId] && 'flex items-center min-h-[200px]')}>
+              {allParams[provider]?.[modelId]
+                ? (
+                  currSupportParams.map(key => (<ParamItem
+                    key={key}
+                    id={key}
+                    name={t(`common.model.params.${key}`)}
+                    tip={t(`common.model.params.${key}Tip`)}
+                    {...currParams[key] as any}
+                    value={(completionParams as any)[key] as any}
+                    onChange={handleParamChange}
+                  />))
+                )
+                : (
+                  <Loading type='area'/>
+                )}
             </div>
           </div>
           {
             maxTokenSettingTipVisible && (
-              <div className='flex py-2 pr-4 pl-5 bg-[#FFFAEB] border-t border-[#FEF0C7]'>
+              <div className='flex py-2 pr-4 pl-5 rounded-bl-xl rounded-br-xl bg-[#FFFAEB] border-t border-[#FEF0C7]'>
                 <AlertTriangle className='shrink-0 mr-2 mt-[3px] w-3 h-3 text-[#F79009]' />
                 <div className='mr-2 text-xs font-medium text-gray-700'>{t('common.model.params.maxTokenSettingTip')}</div>
               </div>
@@ -270,4 +385,4 @@ const ConifgModel: FC<IConifgModelProps> = ({
   )
 }
 
-export default React.memo(ConifgModel)
+export default React.memo(ConfigModel)

+ 21 - 15
web/app/components/app/configuration/config-model/model-icon.tsx

@@ -1,25 +1,31 @@
 'use client'
 import type { FC } from 'react'
 import React from 'react'
-import { ProviderType } from '@/types/app'
-import { MODEL_LIST } from '@/config'
-import { Anthropic, Gpt3, Gpt4 } from '@/app/components/base/icons/src/public/llm'
+import cn from 'classnames'
+import {
+  OpenaiGreen,
+  OpenaiViolet,
+} from '@/app/components/base/icons/src/public/llm'
+import { ProviderEnum } from '@/app/components/header/account-setting/model-page/declarations'
+import ProviderConfig from '@/app/components/header/account-setting/model-page/configs'
 
-export type IModelIconProps = { modelId: string; className?: string }
+export type IModelIconProps = {
+  modelId: string
+  providerName: ProviderEnum
+  className?: string
+}
 
-const ModelIcon: FC<IModelIconProps> = ({ modelId, className }) => {
-  const resClassName = `w-4 h-4 ${className}`
-  const model = MODEL_LIST.find(item => item.id === modelId)
-  if (model?.id === 'gpt-4')
-    return <Gpt4 className={resClassName} />
+const ModelIcon: FC<IModelIconProps> = ({ modelId, providerName, className }) => {
+  let Icon = <OpenaiGreen className='w-full h-full' />
+  if (providerName === ProviderEnum.openai)
+    Icon = modelId.includes('gpt-4') ? <OpenaiViolet className='w-full h-full' /> : <OpenaiGreen className='w-full h-full' />
+  else
+    Icon = ProviderConfig[providerName]?.selector.icon
 
-  if (model?.provider === ProviderType.anthropic) {
-    return (
-      <Anthropic className={resClassName} />
-    )
-  }
   return (
-    <Gpt3 className={resClassName} />
+    <div className={cn(className, 'w-4 h-4')}>
+      {Icon}
+    </div>
   )
 }
 

+ 29 - 0
web/app/components/app/configuration/config-model/model-name.tsx

@@ -0,0 +1,29 @@
+'use client'
+import type { FC } from 'react'
+import React from 'react'
+import { useTranslation } from 'react-i18next'
+
+export type IModelNameProps = {
+  modelId: string
+}
+
+export const supportI18nModelName = [
+  'gpt-3.5-turbo', 'gpt-3.5-turbo-16k',
+  'gpt-4', 'gpt-4-32k',
+  'text-davinci-003', 'text-embedding-ada-002', 'whisper-1',
+  'claude-instant-1', 'claude-2',
+]
+
+const ModelName: FC<IModelNameProps> = ({
+  modelId,
+}) => {
+  const { t } = useTranslation()
+  const name = supportI18nModelName.includes(modelId) ? t(`common.modelName.${modelId}`) : modelId
+
+  return (
+    <span title={name}>
+      {name}
+    </span>
+  )
+}
+export default React.memo(ModelName)

+ 4 - 4
web/app/components/app/configuration/config-model/param-item.tsx

@@ -5,21 +5,21 @@ import Tooltip from '@/app/components/base/tooltip'
 import Slider from '@/app/components/base/slider'
 
 export type IParamIteProps = {
-  id: number
+  id: string
   name: string
   tip: string
   value: number
   step?: number
   min?: number
   max: number
-  onChange: (id: number, value: number) => void
+  onChange: (key: string, value: number) => void
 }
 
 const ParamIte: FC<IParamIteProps> = ({ id, name, tip, step = 0.1, min = 0, max, value, onChange }) => {
   return (
     <div className="flex items-center justify-between">
       <div className="flex items-center">
-        <span className="mr-[6px]">{name}</span>
+        <span className="mr-[6px] text-gray-500 text-[13px] font-medium">{name}</span>
         {/* Give tooltip different tip to avoiding hide bug */}
         <Tooltip htmlContent={<div className="w-[200px]">{tip}</div>} position='top' selector={`param-name-tooltip-${id}`}>
           <svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
@@ -33,7 +33,7 @@ const ParamIte: FC<IParamIteProps> = ({ id, name, tip, step = 0.1, min = 0, max,
         </div>
         <input type="number" min={min} max={max} step={step} className="block w-[64px] h-9 leading-9 rounded-lg border-0 pl-1 pl py-1.5 bg-gray-50 text-gray-900  placeholder:text-gray-400 focus:ring-1 focus:ring-inset focus:ring-primary-600" value={value} onChange={(e) => {
           const value = parseFloat(e.target.value)
-          if (value < 0 || value > max)
+          if (value < min || value > max)
             return
 
           onChange(id, value)

+ 24 - 0
web/app/components/app/configuration/config-model/provider-name.tsx

@@ -0,0 +1,24 @@
+'use client'
+import type { FC } from 'react'
+import React from 'react'
+import { useContext } from 'use-context-selector'
+import I18n from '@/context/i18n'
+import type { ProviderEnum } from '@/app/components/header/account-setting/model-page/declarations'
+import ProviderConfig from '@/app/components/header/account-setting/model-page/configs'
+
+export type IProviderNameProps = {
+  provideName: ProviderEnum
+}
+
+const ProviderName: FC<IProviderNameProps> = ({
+  provideName,
+}) => {
+  const { locale } = useContext(I18n)
+
+  return (
+    <span>
+      {ProviderConfig[provideName]?.selector?.name[locale]}
+    </span>
+  )
+}
+export default React.memo(ProviderName)

+ 1 - 1
web/app/components/app/configuration/debug/index.tsx

@@ -12,7 +12,7 @@ import FormattingChanged from '../base/warning-mask/formatting-changed'
 import GroupName from '../base/group-name'
 import { AppType } from '@/types/app'
 import PromptValuePanel, { replaceStringWithValues } from '@/app/components/app/configuration/prompt-value-panel'
-import type { IChatItem } from '@/app/components/app/chat'
+import type { IChatItem } from '@/app/components/app/chat/type'
 import Chat from '@/app/components/app/chat'
 import ConfigContext from '@/context/debug-configuration'
 import { ToastContext } from '@/app/components/base/toast'

+ 1 - 0
web/app/components/app/configuration/index.tsx

@@ -284,6 +284,7 @@ const Configuration: FC = () => {
               {/* Model and Parameters */}
               <ConfigModel
                 mode={mode}
+                provider={modelConfig.provider as ProviderType}
                 completionParams={completionParams}
                 modelId={modelConfig.model_id}
                 setModelId={setModelId}

+ 127 - 0
web/app/components/app/overview/apikey-info-panel/index.tsx

@@ -0,0 +1,127 @@
+'use client'
+import type { FC } from 'react'
+import React, { useState } from 'react'
+import { useTranslation } from 'react-i18next'
+import cn from 'classnames'
+import useSWR from 'swr'
+import Progress from './progress'
+import Button from '@/app/components/base/button'
+import { LinkExternal02, XClose } from '@/app/components/base/icons/src/vender/line/general'
+import AccountSetting from '@/app/components/header/account-setting'
+import { fetchTenantInfo } from '@/service/common'
+import { IS_CE_EDITION } from '@/config'
+import { useProviderContext } from '@/context/provider-context'
+
+const APIKeyInfoPanel: FC = () => {
+  const isCloud = !IS_CE_EDITION
+  const { providers }: any = useProviderContext()
+
+  const { t } = useTranslation()
+
+  const [showSetAPIKeyModal, setShowSetAPIKeyModal] = useState(false)
+
+  const [isShow, setIsShow] = useState(true)
+
+  const { data: userInfo } = useSWR({ url: '/info' }, fetchTenantInfo)
+  if (!userInfo)
+    return null
+
+  const hasBindAPI = userInfo?.providers?.find(({ token_is_set }) => token_is_set)
+  if (hasBindAPI)
+    return null
+
+  // first show in trail and not used exhausted, else find the exhausted
+  const [used, total, providerName] = (() => {
+    if (!providers || !isCloud)
+      return [0, 0, '']
+    let used = 0
+    let total = 0
+    let trailProviderName = ''
+    let hasFoundNotExhausted = false
+    Object.keys(providers).forEach((providerName) => {
+      if (hasFoundNotExhausted)
+        return
+      providers[providerName].providers.forEach(({ quota_type, quota_limit, quota_used }: any) => {
+        if (quota_type === 'trial') {
+          if (quota_limit !== quota_used)
+            hasFoundNotExhausted = true
+
+          used = quota_used
+          total = quota_limit
+          trailProviderName = providerName
+        }
+      })
+    })
+    return [used, total, trailProviderName]
+  })()
+  const usedPercent = Math.round(used / total * 100)
+  const exhausted = isCloud && usedPercent === 100
+  if (!(isShow))
+    return null
+
+  return (
+    <div className={cn(exhausted ? 'bg-[#FEF3F2] border-[#FEE4E2]' : 'bg-[#EFF4FF] border-[#D1E0FF]', 'mb-6 relative  rounded-2xl shadow-md border  p-8 ')}>
+      <div className={cn('text-[24px] text-gray-800 font-semibold', isCloud ? 'flex items-center h-8 space-x-1' : 'leading-8 mb-6')}>
+        {isCloud && <em-emoji id={exhausted ? '🤔' : '😀'} />}
+        {isCloud
+          ? (
+            <div>{t(`appOverview.apiKeyInfo.cloud.${exhausted ? 'exhausted' : 'trial'}.title`, { providerName })}</div>
+          )
+          : (
+            <div>
+              <div>{t('appOverview.apiKeyInfo.selfHost.title.row1')}</div>
+              <div>{t('appOverview.apiKeyInfo.selfHost.title.row2')}</div>
+            </div>
+          )}
+      </div>
+      {isCloud && (
+        <div className='mt-1 text-sm text-gray-600 font-normal'>{t(`appOverview.apiKeyInfo.cloud.${exhausted ? 'exhausted' : 'trial'}.description`)}</div>
+      )}
+      {/* Call times info */}
+      {isCloud && (
+        <div className='my-5'>
+          <div className='flex items-center h-5 space-x-2 text-sm text-gray-700 font-medium'>
+            <div>{t('appOverview.apiKeyInfo.callTimes')}</div>
+            <div>·</div>
+            <div className={cn('font-semibold', exhausted && 'text-[#D92D20]')}>{used}/{total}</div>
+          </div>
+          <Progress className='mt-2' value={usedPercent} />
+        </div>
+      )}
+      <Button
+        type='primary'
+        className='space-x-2'
+        onClick={() => {
+          setShowSetAPIKeyModal(true)
+        }}
+      >
+        <div className='text-sm font-medium'>{t('appOverview.apiKeyInfo.setAPIBtn')}</div>
+        <LinkExternal02 className='w-4 h-4' />
+      </Button>
+      {!isCloud && (
+        <a
+          className='mt-2 flex items-center h-[26px] text-xs  font-medium text-[#155EEF] p-1 space-x-1'
+          href='https://cloud.dify.ai/apps'
+          target='_blank'
+        >
+          <div>{t('appOverview.apiKeyInfo.tryCloud')}</div>
+          <LinkExternal02 className='w-3 h-3' />
+        </a>
+      )}
+      <div
+        onClick={() => setIsShow(false)}
+        className='absolute right-4 top-4 flex items-center justify-center w-8 h-8 cursor-pointer '>
+        <XClose className='w-4 h-4 text-gray-500' />
+      </div>
+
+      {
+        showSetAPIKeyModal && (
+          <AccountSetting activeTab="provider" onCancel={async () => {
+            setShowSetAPIKeyModal(false)
+          }} />
+        )
+      }
+    </div>
+  )
+}
+export default React.memo(APIKeyInfoPanel)

+ 29 - 0
web/app/components/app/overview/apikey-info-panel/progress/index.tsx

@@ -0,0 +1,29 @@
+'use client'
+import type { FC } from 'react'
+import React from 'react'
+import cn from 'classnames'
+import s from './style.module.css'
+
+export type IProgressProps = {
+  className?: string
+  value: number // percent
+}
+
+const Progress: FC<IProgressProps> = ({
+  className,
+  value,
+}) => {
+  const exhausted = value === 100
+  return (
+    <div className={cn(className, 'relative grow h-2 flex bg-gray-200 rounded-md overflow-hidden')}>
+      <div
+        className={cn(s.bar, exhausted && s['bar-error'], 'absolute top-0 left-0 right-0 bottom-0')}
+        style={{ width: `${value}%` }}
+      />
+      {Array(10).fill(0).map((i, k) => (
+        <div key={k} className={s['bar-item']} />
+      ))}
+    </div>
+  )
+}
+export default React.memo(Progress)

+ 0 - 8
web/app/components/header/account-setting/provider-page/openai-hosted-provider/index.module.css → web/app/components/app/overview/apikey-info-panel/progress/style.module.css

@@ -1,11 +1,3 @@
-.icon {
-  width: 24px;
-  height: 24px;
-  margin-right: 12px;
-  background: url(../../../assets/gpt.svg) center center no-repeat;
-  background-size: contain;
-}
-
 .bar {
   background: linear-gradient(90deg, rgba(41, 112, 255, 0.9) 0%, rgba(21, 94, 239, 0.9) 100%);
 }

+ 1 - 1
web/app/components/app/overview/appCard.tsx

@@ -110,7 +110,7 @@ function AppCard({
 
   return (
     <div
-      className={`flex flex-col w-full shadow-sm border-[0.5px] rounded-lg border-gray-200 ${className ?? ''}`}
+      className={`flex flex-col w-full shadow-xs border-[0.5px] rounded-lg border-gray-200 ${className ?? ''}`}
     >
       <div className={`px-6 py-4 ${customBgColor ?? bgColor} rounded-lg`}>
         <div className="mb-2.5 flex flex-row items-start justify-between">

+ 1 - 1
web/app/components/app/overview/appChart.tsx

@@ -225,7 +225,7 @@ const Chart: React.FC<IChartProps> = ({
   const sumData = isAvg ? (sum(yData) / yData.length) : sum(yData)
 
   return (
-    <div className={`flex flex-col w-full px-6 py-4 border-[0.5px] rounded-lg border-gray-200 shadow-sm ${className ?? ''}`}>
+    <div className={`flex flex-col w-full px-6 py-4 border-[0.5px] rounded-lg border-gray-200 shadow-xs ${className ?? ''}`}>
       <div className='mb-3'>
         <Basic name={title} type={timePeriod} hoverTip={explanation} />
       </div>

+ 3 - 0
web/app/components/base/confirm/common.module.css

@@ -0,0 +1,3 @@
+.wrapper {
+  background: linear-gradient(180deg, rgba(217, 45, 32, 0.05) 0%, rgba(217, 45, 32, 0.00) 24.02%), #F9FAFB;
+}

+ 69 - 0
web/app/components/base/confirm/common.tsx

@@ -0,0 +1,69 @@
+import type { FC, ReactElement } from 'react'
+import { useTranslation } from 'react-i18next'
+import cn from 'classnames'
+import s from './common.module.css'
+import Modal from '@/app/components/base/modal'
+import { XClose } from '@/app/components/base/icons/src/vender/line/general'
+import { AlertCircle } from '@/app/components/base/icons/src/vender/solid/alertsAndFeedback'
+import Button from '@/app/components/base/button'
+
+type ConfirmCommonProps = {
+  type?: string
+  isShow: boolean
+  onCancel: () => void
+  title: string
+  desc?: string
+  onConfirm: () => void
+}
+
+const ConfirmCommon: FC<ConfirmCommonProps> = ({
+  type = 'danger',
+  isShow,
+  onCancel,
+  title,
+  desc,
+  onConfirm,
+}) => {
+  const { t } = useTranslation()
+
+  const CONFIRM_MAP: Record<string, { icon: ReactElement; confirmText: string }> = {
+    danger: {
+      icon: <AlertCircle className='w-6 h-6 text-[#D92D20]' />,
+      confirmText: t('common.operation.remove'),
+    },
+  }
+
+  return (
+    <Modal isShow={isShow} onClose={() => {}} className='!w-[480px] !max-w-[480px] !p-0 !rounded-2xl'>
+      <div className={cn(s.wrapper, 'relative p-8')}>
+        <div className='flex items-center justify-center absolute top-4 right-4 w-8 h-8 cursor-pointer' onClick={onCancel}>
+          <XClose className='w-4 h-4 text-gray-500' />
+        </div>
+        <div className='flex items-center justify-center mb-3 w-12 h-12 bg-white shadow-xl rounded-xl'>
+          {CONFIRM_MAP[type].icon}
+        </div>
+        <div className='text-xl font-semibold text-gray-900'>{title}</div>
+        {
+          desc && <div className='mt-1 text-sm text-gray-500'>{desc}</div>
+        }
+        <div className='flex items-center justify-end mt-10'>
+          <Button
+            className='mr-2 min-w-24 text-sm font-medium !text-gray-700'
+            onClick={onCancel}
+          >
+            {t('common.operation.cancel')}
+          </Button>
+          <Button
+            type='primary'
+            className=''
+            onClick={onConfirm}
+          >
+            {CONFIRM_MAP[type].confirmText}
+          </Button>
+        </div>
+      </div>
+    </Modal>
+  )
+}
+
+export default ConfirmCommon

BIN
web/app/components/base/icons/assets/image/llm/minimax-text.png


BIN
web/app/components/base/icons/assets/image/llm/minimax.png


BIN
web/app/components/base/icons/assets/image/llm/tongyi-text-cn.png


BIN
web/app/components/base/icons/assets/image/llm/tongyi-text.png


BIN
web/app/components/base/icons/assets/image/llm/tongyi.png


BIN
web/app/components/base/icons/assets/image/llm/wxyy-text-cn.png


BIN
web/app/components/base/icons/assets/image/llm/wxyy-text.png


BIN
web/app/components/base/icons/assets/image/llm/wxyy.png


+ 78 - 0
web/app/components/base/icons/assets/public/llm/anthropic-text.svg

@@ -0,0 +1,78 @@
+<svg width="90" height="20" viewBox="0 0 90 20" fill="none" xmlns="http://www.w3.org/2000/svg">
+<g clip-path="url(#clip0_8587_60274)">
+<mask id="mask0_8587_60274" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="0" y="4" width="90" height="11">
+<path d="M89.375 4.99805H0V14.998H89.375V4.99805Z" fill="white"/>
+</mask>
+<g mask="url(#mask0_8587_60274)">
+<mask id="mask1_8587_60274" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="0" y="4" width="90" height="11">
+<path d="M0 4.99609H89.375V14.9961H0V4.99609Z" fill="white"/>
+</mask>
+<g mask="url(#mask1_8587_60274)">
+<mask id="mask2_8587_60274" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="0" y="4" width="90" height="11">
+<path d="M0 4.99414H89.375V14.9941H0V4.99414Z" fill="white"/>
+</mask>
+<g mask="url(#mask2_8587_60274)">
+<mask id="mask3_8587_60274" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="0" y="4" width="90" height="11">
+<path d="M0 4.99219H89.375V14.9922H0V4.99219Z" fill="white"/>
+</mask>
+<g mask="url(#mask3_8587_60274)">
+<path d="M18.1273 11.9244L13.7773 5.15625H11.4297V14.825H13.4321V8.05688L17.7821 14.825H20.1297V5.15625H18.1273V11.9244Z" fill="black" fill-opacity="0.92"/>
+</g>
+<mask id="mask4_8587_60274" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="0" y="4" width="90" height="11">
+<path d="M0 4.99219H89.375V14.9922H0V4.99219Z" fill="white"/>
+</mask>
+<g mask="url(#mask4_8587_60274)">
+<path d="M21.7969 7.02094H25.0423V14.825H27.1139V7.02094H30.3594V5.15625H21.7969V7.02094Z" fill="black" fill-opacity="0.92"/>
+</g>
+<mask id="mask5_8587_60274" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="0" y="4" width="90" height="11">
+<path d="M0 4.99219H89.375V14.9922H0V4.99219Z" fill="white"/>
+</mask>
+<g mask="url(#mask5_8587_60274)">
+<path d="M38.6442 9.00994H34.0871V5.15625H32.0156V14.825H34.0871V10.8746H38.6442V14.825H40.7156V5.15625H38.6442V9.00994Z" fill="black" fill-opacity="0.92"/>
+</g>
+<mask id="mask6_8587_60274" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="0" y="4" width="90" height="11">
+<path d="M0 4.99219H89.375V14.9922H0V4.99219Z" fill="white"/>
+</mask>
+<g mask="url(#mask6_8587_60274)">
+<path d="M45.3376 7.02094H47.893C48.9152 7.02094 49.4539 7.39387 49.4539 8.09831C49.4539 8.80275 48.9152 9.17569 47.893 9.17569H45.3376V7.02094ZM51.5259 8.09831C51.5259 6.27506 50.186 5.15625 47.9897 5.15625H43.2656V14.825H45.3376V11.0404H47.6443L49.7164 14.825H52.0094L49.715 10.7521C50.8666 10.3094 51.5259 9.37721 51.5259 8.09831Z" fill="black" fill-opacity="0.92"/>
+</g>
+<mask id="mask7_8587_60274" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="0" y="4" width="90" height="11">
+<path d="M0 4.99219H89.375V14.9922H0V4.99219Z" fill="white"/>
+</mask>
+<g mask="url(#mask7_8587_60274)">
+<path d="M57.8732 13.0565C56.2438 13.0565 55.2496 11.8963 55.2496 10.004C55.2496 8.08416 56.2438 6.92394 57.8732 6.92394C59.4887 6.92394 60.4691 8.08416 60.4691 10.004C60.4691 11.8963 59.4887 13.0565 57.8732 13.0565ZM57.8732 4.99023C55.0839 4.99023 53.1094 7.06206 53.1094 10.004C53.1094 12.9184 55.0839 14.9902 57.8732 14.9902C60.6486 14.9902 62.6094 12.9184 62.6094 10.004C62.6094 7.06206 60.6486 4.99023 57.8732 4.99023Z" fill="black" fill-opacity="0.92"/>
+</g>
+<mask id="mask8_8587_60274" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="0" y="4" width="90" height="11">
+<path d="M0 4.99219H89.375V14.9922H0V4.99219Z" fill="white"/>
+</mask>
+<g mask="url(#mask8_8587_60274)">
+<path d="M69.1794 9.45194H66.6233V7.02094H69.1794C70.2019 7.02094 70.7407 7.43532 70.7407 8.23644C70.7407 9.03756 70.2019 9.45194 69.1794 9.45194ZM69.2762 5.15625H64.5508V14.825H66.6233V11.3166H69.2762C71.473 11.3166 72.8133 10.1564 72.8133 8.23644C72.8133 6.3165 71.473 5.15625 69.2762 5.15625Z" fill="black" fill-opacity="0.92"/>
+</g>
+<mask id="mask9_8587_60274" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="0" y="4" width="90" height="11">
+<path d="M0 4.99219H89.375V14.9922H0V4.99219Z" fill="white"/>
+</mask>
+<g mask="url(#mask9_8587_60274)">
+<path d="M86.8413 11.5786C86.4823 12.5179 85.7642 13.0565 84.7837 13.0565C83.1542 13.0565 82.16 11.8963 82.16 10.004C82.16 8.08416 83.1542 6.92394 84.7837 6.92394C85.7642 6.92394 86.4823 7.46261 86.8413 8.40183H89.0369C88.4984 6.33002 86.8827 4.99023 84.7837 4.99023C81.9942 4.99023 80.0195 7.06206 80.0195 10.004C80.0195 12.9184 81.9942 14.9902 84.7837 14.9902C86.8965 14.9902 88.5122 13.6366 89.0508 11.5786H86.8413Z" fill="black" fill-opacity="0.92"/>
+</g>
+<mask id="mask10_8587_60274" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="0" y="4" width="90" height="11">
+<path d="M0 4.99219H89.375V14.9922H0V4.99219Z" fill="white"/>
+</mask>
+<g mask="url(#mask10_8587_60274)">
+<path d="M73.6484 5.15625L77.5033 14.825H79.6172L75.7624 5.15625H73.6484Z" fill="black" fill-opacity="0.92"/>
+</g>
+<mask id="mask11_8587_60274" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="0" y="4" width="90" height="11">
+<path d="M0 4.99219H89.375V14.9922H0V4.99219Z" fill="white"/>
+</mask>
+<g mask="url(#mask11_8587_60274)">
+<path d="M3.64038 10.9989L4.95938 7.60106L6.27838 10.9989H3.64038ZM3.85422 5.15625L0 14.825H2.15505L2.9433 12.7946H6.97558L7.76371 14.825H9.91875L6.06453 5.15625H3.85422Z" fill="black" fill-opacity="0.92"/>
+</g>
+</g>
+</g>
+</g>
+</g>
+<defs>
+<clipPath id="clip0_8587_60274">
+<rect width="89.375" height="10" fill="white" transform="translate(0 5)"/>
+</clipPath>
+</defs>
+</svg>

+ 1 - 9
web/app/components/base/icons/assets/public/llm/anthropic.svg

@@ -1,12 +1,4 @@
 <svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
 <rect width="24" height="24" rx="6" fill="#CA9F7B"/>
-<g clip-path="url(#clip0_7672_55906)">
-<path d="M15.3843 6.43457H12.9687L17.3739 17.565H19.7896L15.3843 6.43457ZM8.40522 6.43457L4 17.565H6.4633L7.36417 15.2276H11.9729L12.8737 17.565H15.337L10.9318 6.43457H8.40522ZM8.16104 13.1605L9.66852 9.24883L11.176 13.1605H8.16104Z" fill="#191918"/>
-</g>
-<rect x="0.5" y="0.5" width="23" height="23" rx="5.5" stroke="black" stroke-opacity="0.05"/>
-<defs>
-<clipPath id="clip0_7672_55906">
-<rect width="16" height="11.1304" fill="white" transform="translate(4 6.43457)"/>
-</clipPath>
-</defs>
+<path d="M15.3843 6.43481H12.9687L17.3739 17.5652H19.7896L15.3843 6.43481ZM8.40522 6.43481L4 17.5652H6.4633L7.36417 15.2279H11.9729L12.8737 17.5652H15.337L10.9318 6.43481H8.40522ZM8.16104 13.1607L9.66852 9.24907L11.176 13.1607H8.16104Z" fill="#191918"/>
 </svg>

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 5 - 0
web/app/components/base/icons/assets/public/llm/azure-openai-service-text.svg


파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 5 - 0
web/app/components/base/icons/assets/public/llm/azure-openai-service.svg


+ 30 - 0
web/app/components/base/icons/assets/public/llm/azureai-text.svg

@@ -0,0 +1,30 @@
+<svg width="92" height="24" viewBox="0 0 92 24" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M9.63655 2.50023H15.6036L9.40921 20.8535C9.34555 21.0421 9.22434 21.206 9.06266 21.3221C8.90097 21.4382 8.70695 21.5006 8.5079 21.5007H3.86407C3.71326 21.5007 3.56461 21.4648 3.43042 21.396C3.29623 21.3271 3.18036 21.2273 3.09239 21.1048C3.00442 20.9823 2.94689 20.8406 2.92454 20.6915C2.9022 20.5424 2.91569 20.39 2.9639 20.2471L8.73501 3.1474C8.79864 2.95872 8.91987 2.79477 9.0816 2.67863C9.24334 2.56249 9.43743 2.50024 9.63655 2.50023Z" fill="url(#paint0_linear_8587_60561)"/>
+<path d="M18.307 14.8105H8.84467C8.7567 14.8104 8.67074 14.8368 8.59799 14.8863C8.52524 14.9358 8.46906 15.006 8.43679 15.0878C8.40451 15.1697 8.39763 15.2593 8.41704 15.3451C8.43645 15.4309 8.48125 15.5089 8.54561 15.5689L14.6259 21.2439C14.8029 21.4091 15.036 21.5009 15.2781 21.5008H20.636L18.307 14.8105Z" fill="#0078D4"/>
+<path d="M9.63533 2.50001C9.43405 2.49923 9.23778 2.56284 9.07521 2.68154C8.91265 2.80024 8.79229 2.96781 8.73173 3.15978L2.96979 20.2313C2.91834 20.3747 2.90219 20.5284 2.9227 20.6794C2.94321 20.8304 2.99979 20.9742 3.08764 21.0987C3.17549 21.2232 3.29203 21.3247 3.42741 21.3946C3.56278 21.4646 3.71301 21.5009 3.86538 21.5004H8.62906C8.80648 21.4687 8.97231 21.3905 9.1096 21.2738C9.2469 21.157 9.35074 21.0059 9.41052 20.8359L10.5596 17.4495L14.6639 21.2777C14.8359 21.42 15.0517 21.4986 15.2749 21.5004H20.6129L18.2717 14.8102L11.4469 14.8118L15.6239 2.50001H9.63533Z" fill="url(#paint1_linear_8587_60561)"/>
+<path d="M17.2574 3.14625C17.1938 2.95788 17.0728 2.7942 16.9113 2.67826C16.7498 2.56233 16.556 2.49998 16.3572 2.5H9.70703C9.90582 2.50001 10.0996 2.56237 10.2611 2.67831C10.4226 2.79424 10.5436 2.9579 10.6072 3.14625L16.3785 20.2467C16.4268 20.3896 16.4403 20.542 16.418 20.6911C16.3957 20.8403 16.3381 20.9821 16.2502 21.1046C16.1622 21.2271 16.0463 21.327 15.9121 21.3959C15.7779 21.4647 15.6292 21.5007 15.4784 21.5007H22.1288C22.2796 21.5006 22.4283 21.4647 22.5624 21.3958C22.6966 21.3269 22.8125 21.2271 22.9004 21.1045C22.9884 20.982 23.0459 20.8403 23.0682 20.6911C23.0905 20.5419 23.077 20.3896 23.0287 20.2467L17.2574 3.14625Z" fill="url(#paint2_linear_8587_60561)"/>
+<path d="M34.312 17.0001H32.3433L35.9278 6.81824H38.2048L41.7943 17.0001H39.8255L37.106 8.90631H37.0265L34.312 17.0001ZM34.3766 13.0079H39.746V14.4894H34.3766V13.0079Z" fill="#1D2939"/>
+<path d="M42.9564 17.0001V15.8566L46.8939 10.9198V10.8552H43.0856V9.36369H49.0963V10.5917L45.3477 15.4439V15.5086H49.2255V17.0001H42.9564Z" fill="#1D2939"/>
+<path d="M55.7843 13.7884V9.36369H57.584V17.0001H55.839V15.6428H55.7595C55.5871 16.0704 55.3037 16.42 54.9093 16.6918C54.5182 16.9636 54.036 17.0995 53.4626 17.0995C52.9621 17.0995 52.5196 16.9885 52.1352 16.7664C51.754 16.541 51.4557 16.2145 51.2403 15.787C51.0248 15.3561 50.9171 14.8358 50.9171 14.2259V9.36369H52.7168V13.9475C52.7168 14.4314 52.8494 14.8159 53.1146 15.1009C53.3797 15.3859 53.7277 15.5285 54.1586 15.5285C54.4238 15.5285 54.6806 15.4638 54.9292 15.3346C55.1778 15.2053 55.3816 15.0131 55.5407 14.7579C55.7031 14.4993 55.7843 14.1762 55.7843 13.7884Z" fill="#1D2939"/>
+<path d="M59.4347 17.0001V9.36369H61.1797V10.6364H61.2593C61.3985 10.1956 61.6371 9.85588 61.9752 9.61724C62.3166 9.37529 62.706 9.25432 63.1435 9.25432C63.2429 9.25432 63.354 9.25929 63.4766 9.26923C63.6026 9.27586 63.707 9.28746 63.7898 9.30403V10.9596C63.7136 10.9331 63.5926 10.9099 63.4269 10.89C63.2645 10.8668 63.1071 10.8552 62.9546 10.8552C62.6265 10.8552 62.3315 10.9264 62.0696 11.0689C61.8111 11.2082 61.6073 11.402 61.4581 11.6506C61.309 11.8992 61.2344 12.1859 61.2344 12.5107V17.0001H59.4347Z" fill="#1D2939"/>
+<path d="M68.0517 17.1492C67.2861 17.1492 66.6249 16.9901 66.068 16.6719C65.5145 16.3504 65.0886 15.8964 64.7903 15.3097C64.4921 14.7198 64.3429 14.0254 64.3429 13.2266C64.3429 12.4411 64.4921 11.7517 64.7903 11.1584C65.092 10.5618 65.5129 10.0978 66.0531 9.76639C66.5934 9.43164 67.2281 9.26426 67.9573 9.26426C68.4279 9.26426 68.872 9.34049 69.2896 9.49295C69.7106 9.6421 70.0818 9.87411 70.4033 10.189C70.7281 10.5038 70.9833 10.9049 71.1689 11.3921C71.3545 11.876 71.4473 12.4527 71.4473 13.1222V13.6741H65.1881V12.461H69.7222C69.7189 12.1163 69.6443 11.8097 69.4984 11.5412C69.3526 11.2695 69.1488 11.0557 68.8869 10.8999C68.6284 10.7441 68.3268 10.6662 67.9821 10.6662C67.6142 10.6662 67.2911 10.7557 67.0126 10.9347C66.7342 11.1104 66.5171 11.3424 66.3614 11.6307C66.2089 11.9158 66.131 12.229 66.1277 12.5704V13.6293C66.1277 14.0734 66.2089 14.4546 66.3713 14.7728C66.5337 15.0877 66.7608 15.3296 67.0524 15.4986C67.3441 15.6644 67.6855 15.7472 68.0766 15.7472C68.3384 15.7472 68.5754 15.7108 68.7875 15.6378C68.9996 15.5616 69.1836 15.4506 69.3394 15.3047C69.4951 15.1589 69.6128 14.9783 69.6923 14.7628L71.3727 14.9518C71.2667 15.3959 71.0645 15.7837 70.7662 16.1151C70.4712 16.4432 70.0934 16.6984 69.6327 16.8807C69.172 17.0597 68.645 17.1492 68.0517 17.1492Z" fill="#1D2939"/>
+<path d="M77.8296 17.0001H75.8608L79.4454 6.81824H81.7223L85.3118 17.0001H83.3431L80.6236 8.90631H80.5441L77.8296 17.0001ZM77.8942 13.0079H83.2635V14.4894H77.8942V13.0079Z" fill="#1D2939"/>
+<path d="M88.4974 6.81824V17.0001H86.6529V6.81824H88.4974Z" fill="#1D2939"/>
+<defs>
+<linearGradient id="paint0_linear_8587_60561" x1="11.8113" y1="3.90823" x2="5.61444" y2="22.2154" gradientUnits="userSpaceOnUse">
+<stop stop-color="#114A8B"/>
+<stop offset="1" stop-color="#0669BC"/>
+</linearGradient>
+<linearGradient id="paint1_linear_8587_60561" x1="13.7459" y1="12.4397" x2="12.3125" y2="12.9243" gradientUnits="userSpaceOnUse">
+<stop stop-opacity="0.3"/>
+<stop offset="0.071" stop-opacity="0.2"/>
+<stop offset="0.321" stop-opacity="0.1"/>
+<stop offset="0.623" stop-opacity="0.05"/>
+<stop offset="1" stop-opacity="0"/>
+</linearGradient>
+<linearGradient id="paint2_linear_8587_60561" x1="12.9582" y1="3.37404" x2="19.7606" y2="21.4968" gradientUnits="userSpaceOnUse">
+<stop stop-color="#3CCBF4"/>
+<stop offset="1" stop-color="#2892DF"/>
+</linearGradient>
+</defs>
+</svg>

+ 23 - 0
web/app/components/base/icons/assets/public/llm/azureai.svg

@@ -0,0 +1,23 @@
+<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M8.41642 1.13526H14.9266L8.16839 21.1596C8.09893 21.3654 7.96669 21.5442 7.79029 21.6708C7.61389 21.7975 7.4022 21.8657 7.18504 21.8657H2.11851C1.95397 21.8657 1.79179 21.8266 1.64539 21.7515C1.49898 21.6764 1.37257 21.5675 1.27659 21.4338C1.18062 21.3002 1.11784 21.1456 1.09347 20.9829C1.06909 20.8201 1.08381 20.6539 1.13641 20.498L7.43281 1.84135C7.50224 1.6355 7.6345 1.45662 7.81096 1.3299C7.98742 1.20319 8.19918 1.13527 8.41642 1.13526Z" fill="url(#paint0_linear_8587_60253)"/>
+<path d="M17.8761 14.5664H7.55255C7.45657 14.5663 7.36278 14.5951 7.28341 14.6491C7.20403 14.703 7.14275 14.7796 7.10754 14.8689C7.07232 14.9582 7.06482 15.056 7.08599 15.1496C7.10717 15.2433 7.15605 15.3283 7.22626 15.3938L13.86 21.5856C14.0531 21.7657 14.3074 21.8659 14.5715 21.8659H20.4171L17.8761 14.5664Z" fill="#0078D4"/>
+<path d="M8.41509 1.13502C8.19548 1.13417 7.98136 1.20358 7.80399 1.33308C7.62663 1.46259 7.49532 1.64542 7.42924 1.85486L1.14283 20.4808C1.0867 20.6373 1.06907 20.805 1.09145 20.9697C1.11383 21.1344 1.17556 21.2913 1.2714 21.4272C1.36725 21.563 1.4944 21.6737 1.6421 21.75C1.7898 21.8263 1.9537 21.8659 2.11994 21.8655H7.31723C7.5108 21.8309 7.69172 21.7455 7.84151 21.6181C7.9913 21.4907 8.10459 21.3259 8.16982 21.1404L9.42345 17.4456L13.9014 21.6224C14.0891 21.7776 14.3245 21.8635 14.568 21.8655H20.3918L17.8376 14.566L10.3916 14.5678L14.9488 1.13502H8.41509Z" fill="url(#paint1_linear_8587_60253)"/>
+<path d="M16.7308 1.8401C16.6614 1.63458 16.5294 1.456 16.3532 1.3295C16.177 1.20301 15.9656 1.13498 15.7487 1.13501H8.49316C8.71005 1.13502 8.92147 1.20306 9.09765 1.32955C9.27383 1.45604 9.4059 1.6346 9.47527 1.8401L15.7719 20.4975C15.8246 20.6535 15.8393 20.8197 15.815 20.9825C15.7906 21.1452 15.7278 21.2999 15.6319 21.4336C15.5359 21.5673 15.4095 21.6762 15.263 21.7514C15.1166 21.8265 14.9544 21.8657 14.7898 21.8657H22.0456C22.2101 21.8657 22.3723 21.8264 22.5187 21.7513C22.6651 21.6761 22.7915 21.5672 22.8875 21.4335C22.9834 21.2998 23.0461 21.1452 23.0705 20.9824C23.0948 20.8197 23.0801 20.6534 23.0274 20.4975L16.7308 1.8401Z" fill="url(#paint2_linear_8587_60253)"/>
+<defs>
+<linearGradient id="paint0_linear_8587_60253" x1="10.7892" y1="2.67146" x2="4.0279" y2="22.6454" gradientUnits="userSpaceOnUse">
+<stop stop-color="#114A8B"/>
+<stop offset="1" stop-color="#0669BC"/>
+</linearGradient>
+<linearGradient id="paint1_linear_8587_60253" x1="12.8998" y1="11.9797" x2="11.3359" y2="12.5085" gradientUnits="userSpaceOnUse">
+<stop stop-opacity="0.3"/>
+<stop offset="0.071" stop-opacity="0.2"/>
+<stop offset="0.321" stop-opacity="0.1"/>
+<stop offset="0.623" stop-opacity="0.05"/>
+<stop offset="1" stop-opacity="0"/>
+</linearGradient>
+<linearGradient id="paint2_linear_8587_60253" x1="12.0403" y1="2.08863" x2="19.4621" y2="21.8613" gradientUnits="userSpaceOnUse">
+<stop stop-color="#3CCBF4"/>
+<stop offset="1" stop-color="#2892DF"/>
+</linearGradient>
+</defs>
+</svg>

+ 16 - 0
web/app/components/base/icons/assets/public/llm/chatglm-text.svg

@@ -0,0 +1,16 @@
+<svg width="100" height="24" viewBox="0 0 100 24" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M56.5415 9.49683C56.3371 9.38235 56.1222 9.28491 55.8984 9.20565C55.4497 9.04653 54.9672 8.95911 54.4654 8.95911C52.0893 8.95911 50.1562 10.9044 50.1562 13.2955C50.1562 15.6867 52.0893 17.6313 54.4654 17.6313C54.9672 17.6313 55.4497 17.5438 55.8984 17.3847C55.9178 17.3778 55.9378 17.3703 55.9572 17.3627C57.2065 16.8986 58.1845 15.8659 58.582 14.5785V12.0125C58.2489 10.9333 57.5083 10.0333 56.5415 9.49683ZM55.9578 13.9446C55.9397 13.986 55.9197 14.0269 55.8991 14.0665C55.6247 14.5804 55.0854 14.9307 54.466 14.9307C53.5698 14.9307 52.8411 14.1973 52.8411 13.2955C52.8411 12.3936 53.5698 11.6603 54.466 11.6603C55.0854 11.6603 55.6241 12.01 55.8991 12.5244C55.9203 12.5647 55.9403 12.6049 55.9578 12.6471C56.0434 12.8458 56.0909 13.0653 56.0909 13.2955C56.0909 13.5257 56.0434 13.7452 55.9578 13.9446Z" fill="#1A2029"/>
+<path d="M58.6419 9.49683V17.596H55.959V13.9445C56.0446 13.7458 56.0921 13.5256 56.0921 13.2955C56.0921 13.0653 56.0446 12.8458 55.959 12.6471V9.49683H58.6419Z" fill="#1A2029"/>
+<path d="M63.4475 7.46912H60.7637V17.6142H63.4475V7.46912Z" fill="#1A2029"/>
+<path d="M64.8417 9.49683H59.3789V12.1974H64.3659C64.3587 12.0773 64.3545 11.9559 64.3545 11.8339C64.3545 11.0031 64.5285 10.2125 64.8417 9.49683Z" fill="#1A2029"/>
+<path d="M35.3555 14.908C34.2412 14.908 33.2644 14.3087 32.7257 13.4137C32.4444 12.947 32.2832 12.3999 32.2832 11.8163C32.2832 11.2326 32.4444 10.6849 32.7257 10.2188C33.2644 9.32448 34.2412 8.72448 35.3555 8.72448C36.4699 8.72448 37.4461 9.32388 37.9847 10.2188L40.2809 8.82324C39.2716 7.14714 37.441 6.02454 35.3555 6.02454C33.27 6.02454 31.4388 7.14714 30.4296 8.82324C29.9027 9.69744 29.5996 10.7219 29.5996 11.8169C29.5996 12.9118 29.9027 13.9363 30.4296 14.8105C31.4388 16.4866 33.2694 17.6092 35.3555 17.6092C37.4417 17.6092 39.2716 16.4866 40.2809 14.8105L37.9847 13.415C37.4461 14.3093 36.4692 14.9093 35.3555 14.9093V14.908Z" fill="#1A2029"/>
+<path d="M79.4097 14.9232H85.1781V17.6237H77.5179V17.6124H76.7265V6.04407H79.4097V14.9232ZM96.7581 6.04971H93.8625L91.4631 10.1371L89.0631 6.04971H86.0763V17.6181H88.7601V10.5352L91.4637 15.1389L94.0749 10.6918V17.6181H96.7581V6.12141V6.04971ZM70.7661 13.2169H73.1445V13.9779C72.5841 14.581 71.7867 14.959 70.9023 14.959C70.0179 14.959 69.2121 14.5773 68.6511 13.9691C68.5089 13.815 68.3811 13.6458 68.2725 13.4647C67.9911 12.998 67.8297 12.4509 67.8297 11.8672C67.8297 11.2836 67.9911 10.7358 68.2725 10.2697C68.8113 9.37545 69.7881 8.77545 70.9023 8.77545C71.7087 8.77545 72.4425 9.08931 72.9909 9.60249L74.8881 7.69311C73.8537 6.69123 72.4479 6.07491 70.9023 6.07491C68.8161 6.07491 66.9855 7.19751 65.9763 8.87355C65.4495 9.74775 65.1465 10.7723 65.1465 11.8672C65.1465 12.9622 65.4495 13.9867 65.9763 14.8609C66.1983 15.2288 66.4587 15.5703 66.7539 15.8791C67.8027 16.9765 69.2751 17.6596 70.9029 17.6596C72.9885 17.6596 74.8191 16.537 75.8283 14.8609V10.5175H70.7661V13.2181V13.2169Z" fill="#1A2029"/>
+<path d="M49.4752 12.5477V17.6174H46.7954V13.1156C46.7954 12.2603 46.106 11.5666 45.2561 11.5666C44.4061 11.5666 43.7168 12.2597 43.7168 13.1156V17.6174H41.0332V6H43.7168V9.8811C44.3343 9.3333 45.1473 9.00186 46.0373 9.00942C47.9484 9.02514 49.4752 10.6244 49.4752 12.5477Z" fill="#1A2029"/>
+<mask id="mask0_8587_60467" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="2" y="1" width="23" height="22">
+<path d="M24.8 1.80005H2V22.2H24.8V1.80005Z" fill="white"/>
+</mask>
+<g mask="url(#mask0_8587_60467)">
+<path fill-rule="evenodd" clip-rule="evenodd" d="M4.86378 14.2544C4.86378 12.8981 5.67438 11.5371 7.25923 10.4634C8.83827 9.39369 11.0864 8.69373 13.6282 8.69373C16.17 8.69373 18.4182 9.39369 19.9972 10.4634C20.7966 11.005 21.399 11.6196 21.7998 12.27C22.2873 11.3803 22.4969 10.4351 22.3835 9.49257C22.3759 9.42933 22.3824 9.36771 22.4005 9.31065C22.0758 9.01857 21.7259 8.74629 21.3558 8.49561C19.3272 7.12131 16.5915 6.30969 13.6282 6.30969C10.665 6.30969 7.92918 7.12131 5.90058 8.49561C3.8778 9.86595 2.45703 11.8813 2.45703 14.2544C2.45703 16.6275 3.8778 18.6429 5.90058 20.0132C7.92918 21.3875 10.665 22.1991 13.6282 22.1991C16.5915 22.1991 19.3272 21.3875 21.3558 20.0132C23.3786 18.6429 24.7994 16.6275 24.7994 14.2544C24.7994 12.7455 24.225 11.3813 23.2868 10.2356C23.2377 11.2918 22.8621 12.3073 22.238 13.2301C22.3409 13.5687 22.3926 13.9117 22.3926 14.2544C22.3926 15.6107 21.582 16.9718 19.9972 18.0454C18.4182 19.1151 16.17 19.8151 13.6282 19.8151C11.0864 19.8151 8.83827 19.1151 7.25923 18.0454C5.67438 16.9718 4.86378 15.6107 4.86378 14.2544Z" fill="#3762FF"/>
+<path fill-rule="evenodd" clip-rule="evenodd" d="M4.84445 11.4838C4.20239 13.2886 4.35368 14.9157 5.18868 16.0839C6.02368 17.2521 7.52281 17.9339 9.45459 17.9334C11.3826 17.933 13.6296 17.24 15.6939 15.7923C17.7581 14.3445 19.1643 12.4753 19.8052 10.674C20.4473 8.86925 20.2959 7.24211 19.461 6.07397C18.626 4.90576 17.1269 4.22394 15.1951 4.22436C13.267 4.22479 11.0201 4.91779 8.95575 6.36557C6.89152 7.81337 5.48529 9.68255 4.84445 11.4838ZM2.53559 10.6778C3.36374 8.35007 5.11254 6.08981 7.54117 4.3865C9.96981 2.68317 12.7029 1.8 15.1945 1.79944C17.6825 1.79889 20.0426 2.69125 21.4589 4.67268C22.8752 6.65411 22.941 9.15569 22.1141 11.48C21.2859 13.8077 19.5371 16.068 17.1085 17.7713C14.6798 19.4747 11.9468 20.3579 9.45513 20.3584C6.9672 20.3589 4.60706 19.4666 3.19075 17.4851C1.77445 15.5037 1.70868 13.0022 2.53559 10.6778Z" fill="#1041F3"/>
+</g>
+</svg>

+ 9 - 0
web/app/components/base/icons/assets/public/llm/chatglm.svg

@@ -0,0 +1,9 @@
+<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
+<mask id="mask0_8587_60212" style="mask-type:luminance" maskUnits="userSpaceOnUse" x="1" y="2" width="23" height="21">
+<path d="M23.8 2H1V22.4H23.8V2Z" fill="white"/>
+</mask>
+<g mask="url(#mask0_8587_60212)">
+<path fill-rule="evenodd" clip-rule="evenodd" d="M3.86378 14.4544C3.86378 13.0981 4.67438 11.737 6.25923 10.6634C7.83827 9.59364 10.0864 8.89368 12.6282 8.89368C15.17 8.89368 17.4182 9.59364 18.9972 10.6634C19.7966 11.2049 20.399 11.8196 20.7998 12.4699C21.2873 11.5802 21.4969 10.6351 21.3835 9.69252C21.3759 9.62928 21.3824 9.56766 21.4005 9.5106C21.0758 9.21852 20.7259 8.94624 20.3558 8.69556C18.3272 7.32126 15.5915 6.50964 12.6282 6.50964C9.66497 6.50964 6.92918 7.32126 4.90058 8.69556C2.8778 10.0659 1.45703 12.0812 1.45703 14.4544C1.45703 16.8275 2.8778 18.8428 4.90058 20.2132C6.92918 21.5875 9.66497 22.3991 12.6282 22.3991C15.5915 22.3991 18.3272 21.5875 20.3558 20.2132C22.3786 18.8428 23.7994 16.8275 23.7994 14.4544C23.7994 12.9455 23.225 11.5813 22.2868 10.4355C22.2377 11.4917 21.8621 12.5072 21.238 13.43C21.3409 13.7686 21.3926 14.1116 21.3926 14.4544C21.3926 15.8107 20.582 17.1717 18.9972 18.2453C17.4182 19.3151 15.17 20.015 12.6282 20.015C10.0864 20.015 7.83827 19.3151 6.25923 18.2453C4.67438 17.1717 3.86378 15.8107 3.86378 14.4544Z" fill="#3762FF"/>
+<path fill-rule="evenodd" clip-rule="evenodd" d="M3.84445 11.6838C3.20239 13.4885 3.35368 15.1156 4.18868 16.2838C5.02368 17.452 6.52281 18.1339 8.45459 18.1334C10.3826 18.133 12.6296 17.44 14.6939 15.9922C16.7581 14.5444 18.1643 12.6753 18.8052 10.8739C19.4473 9.0692 19.2959 7.44206 18.461 6.27392C17.626 5.10572 16.1269 4.42389 14.1951 4.42431C12.267 4.42475 10.0201 5.11774 7.95575 6.56552C5.89152 8.01332 4.48529 9.8825 3.84445 11.6838ZM1.53559 10.8778C2.36374 8.55002 4.11254 6.28976 6.54117 4.58645C8.96981 2.88312 11.7029 1.99995 14.1945 1.99939C16.6825 1.99884 19.0426 2.8912 20.4589 4.87263C21.8752 6.85406 21.941 9.35564 21.1141 11.6799C20.2859 14.0077 18.5371 16.2679 16.1085 17.9713C13.6798 19.6746 10.9468 20.5578 8.45513 20.5584C5.9672 20.5589 3.60706 19.6665 2.19075 17.6851C0.774446 15.7036 0.708677 13.2021 1.53559 10.8778Z" fill="#1041F3"/>
+</g>
+</svg>

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 16 - 0
web/app/components/base/icons/assets/public/llm/huggingface-text-hub.svg


파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 16 - 0
web/app/components/base/icons/assets/public/llm/huggingface-text.svg


파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 14 - 0
web/app/components/base/icons/assets/public/llm/huggingface.svg


+ 11 - 0
web/app/components/base/icons/assets/public/llm/iflytek-spark-text-cn.svg

@@ -0,0 +1,11 @@
+<svg width="84" height="24" viewBox="0 0 84 24" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M34.8763 7.49212H33.1466V11.557H34.4438V13.0273H33.1466V18.7137H31.1574V13.0489H29.752V11.5786H31.179V7.49212H29.8384V6.02185H36.952C37.2547 6.02185 37.4925 6.25969 37.4925 6.56239V17.33H38.4438L37.7736 18.7354L35.4817 18.757L35.4601 8.11915C35.4817 7.7732 35.2222 7.49212 34.8763 7.49212Z" fill="#2B2B2D"/>
+<path d="M26.1832 11.8599H25.3184V10.3896H27.6102C27.9129 10.3896 28.1508 10.6275 28.1508 10.9302L28.1724 17.3086H29.2319L28.5832 18.7356H26.7238C26.4211 18.7356 26.1832 18.4978 26.1832 18.1951V11.8599Z" fill="#2B2B2D"/>
+<path d="M28.1724 6.02185H25.3184V7.55699H28.1724V6.02185Z" fill="#2B2B2D"/>
+<path d="M50.1495 6.02162L45.5873 10.0865H48.6792L52.8306 6.02162H50.1495ZM49.09 11.773H46.1279L49.5873 15.5135H52.5495L49.09 11.773ZM43.4468 17.3514C43.2522 17.3514 43.1225 17.1784 43.1657 16.9838L45.89 6.69189C45.9765 6.34595 45.7171 6 45.3711 6H40.1387V7.44865H43.036C43.3171 7.44865 43.5333 7.72973 43.4468 7.98919L40.7873 18.0216C40.7008 18.3676 40.9603 18.7135 41.3062 18.7135H51.7927L52.5927 17.3297H43.4468V17.3514Z" fill="#2B2B2D"/>
+<path d="M62.2792 16.465H67.1224V15.3406H62.2792V14.2379H67.1224V13.1569H62.2792V12.2271H67.1224V10.4974V6.56227C67.1224 6.25957 66.8845 6.02173 66.5818 6.02173H55.5332V11.665C55.5332 11.9677 55.771 12.2055 56.0737 12.2055H57.0035L55.5332 14.2379H60.1602V15.3406H55.5548V16.465L60.1602 16.4433V17.3515H55.5548V18.7352H67.1008V17.3515H62.2575V16.465H62.2792ZM57.6305 9.78389H63.7927L64.3981 8.61632H57.6305V7.31903H65.0035V10.8866H57.6305V9.78389ZM60.1602 13.1352H58.3224L59.0359 12.2055H60.1602V13.1352Z" fill="#2B2B2D"/>
+<path d="M71.549 6.02173H69.4733L71.0085 12.2271H73.0842L71.549 6.02173ZM79.6788 6.02173L78.1436 12.2488H80.2409L81.776 6.02173H79.6788ZM76.6517 12.3136V6.02173H74.5112V12.3136L69.3652 18.7569H71.9814L75.6355 14.2379L79.3112 18.7785L81.949 18.7569L76.6517 12.3136Z" fill="#2B2B2D"/>
+<path d="M20.8854 16.4979C20.5611 17.6438 20.0206 18.6817 19.3287 19.5898C18.2908 20.8871 14.7233 20.8871 12.5827 20.3249C10.2692 19.6979 8.60434 18.2492 8.47461 18.1411C9.38272 18.8546 10.5287 19.2654 11.7827 19.2654C14.7881 19.2654 17.2097 16.8006 17.2097 13.7735C17.2097 12.8654 16.9935 12.0222 16.6043 11.2654C16.5827 11.2222 16.626 11.179 16.6476 11.2006C18.3557 11.4817 21.7503 13.0817 20.8854 16.4979Z" fill="#2751D0"/>
+<path d="M21.2102 12.6705C21.2102 12.7353 21.1454 12.7569 21.1021 12.6921C20.3021 10.984 18.8967 10.465 17.2102 10.0759C15.9346 9.79478 15.0913 9.36235 14.7238 9.16775C14.6373 9.12451 14.5724 9.05964 14.4859 9.0164C11.8264 7.39478 11.7832 4.60559 11.7832 4.60559V0.562346C11.7832 0.519102 11.8481 0.497481 11.8697 0.519102L18.1616 6.70289L18.6373 7.15694C20.021 8.62721 20.9724 10.5515 21.2102 12.6705Z" fill="#D82F20"/>
+<path d="M19.3286 19.5894C17.5989 21.8596 14.8745 23.3515 11.8043 23.3515C6.57182 23.3515 2.33398 19.0704 2.33398 13.7948C2.33398 11.2218 3.32858 8.90828 4.97182 7.17855L5.4475 6.70288L9.5556 2.65964C9.59885 2.61639 9.66371 2.65964 9.64209 2.70288C9.57723 2.98396 9.46912 3.63261 9.53398 4.49747C9.62047 5.51369 9.9448 6.87585 10.8961 8.38937C11.4799 9.34072 12.3232 10.3353 13.4907 11.3731C13.6205 11.5029 13.7718 11.611 13.9232 11.7407C14.4421 12.2813 14.7448 12.9948 14.7448 13.7948C14.7448 15.4164 13.4259 16.7353 11.8259 16.7353C11.134 16.7353 10.507 16.4975 10.0097 16.0867C9.96642 16.0434 10.0097 15.9786 10.0529 16.0002C10.161 16.0218 10.2691 16.0434 10.3772 16.0434C10.9394 16.0434 11.4151 15.5894 11.4151 15.0056C11.4151 14.6596 11.2421 14.3353 10.9826 14.1623C10.2907 13.6002 9.70695 13.0596 9.20966 12.5191C8.51777 11.7623 7.99885 11.0272 7.63128 10.3137C6.87453 11.265 6.39885 12.4542 6.39885 13.7731C6.39885 15.5461 7.22047 17.1245 8.51777 18.1191C8.6475 18.2272 10.3124 19.6759 12.6259 20.3029C14.7232 20.9083 18.2907 20.8867 19.3286 19.5894Z" fill="#69C5F4"/>
+</svg>

+ 24 - 0
web/app/components/base/icons/assets/public/llm/iflytek-spark-text.svg

@@ -0,0 +1,24 @@
+<svg width="150" height="24" viewBox="0 0 150 24" fill="none" xmlns="http://www.w3.org/2000/svg">
+<g clip-path="url(#clip0_8587_60507)">
+<path d="M19.6552 16.7993C19.3116 18.0034 18.7389 19.0938 18.0059 20.048C16.9063 21.4111 13.1266 21.4111 10.8588 20.8204C8.40766 20.1616 6.64379 18.6395 6.50635 18.5259C7.46846 19.2756 8.68255 19.7072 10.0112 19.7072C13.1953 19.7072 15.7609 17.1174 15.7609 13.9368C15.7609 12.9826 15.5319 12.0966 15.1195 11.3015C15.0966 11.2561 15.1424 11.2106 15.1653 11.2333C16.975 11.5287 20.5715 13.2098 19.6552 16.7993Z" fill="#2751D0"/>
+<path d="M19.9994 12.7773C19.9994 12.8454 19.9306 12.8682 19.8848 12.8C19.0372 11.0053 17.5483 10.46 15.7615 10.0511C14.4099 9.75577 13.5166 9.3014 13.1271 9.09694C13.0355 9.0515 12.9668 8.98335 12.8751 8.93791C10.0575 7.23404 10.0117 4.30339 10.0117 4.30339V0.0550813C10.0117 0.00964486 10.0804 -0.0130733 10.1034 0.0096449L16.7694 6.50706L17.2734 6.98414C18.7394 8.52898 19.7474 10.5509 19.9994 12.7773Z" fill="#D82F20"/>
+<path d="M18.0052 20.0462C16.1726 22.4316 13.2863 23.9992 10.0334 23.9992C4.48985 23.9992 0 19.501 0 13.9577C0 11.2543 1.05374 8.8234 2.7947 7.00594L3.29866 6.50614L7.65107 2.25783C7.69688 2.2124 7.7656 2.25783 7.7427 2.30327C7.67397 2.59861 7.55944 3.28015 7.62816 4.18888C7.71979 5.25664 8.06341 6.68789 9.07133 8.27817C9.68983 9.27777 10.5832 10.3228 11.8202 11.4133C11.9577 11.5496 12.118 11.6632 12.2784 11.7995C12.8281 12.3674 13.1488 13.1171 13.1488 13.9577C13.1488 15.6616 11.7515 17.0474 10.0563 17.0474C9.32331 17.0474 8.659 16.7975 8.13213 16.3659C8.08631 16.3204 8.13212 16.2523 8.17794 16.275C8.29247 16.2977 8.40701 16.3204 8.52155 16.3204C9.11714 16.3204 9.62111 15.8433 9.62111 15.2299C9.62111 14.8665 9.43785 14.5257 9.16296 14.3439C8.42992 13.7533 7.81142 13.1853 7.28455 12.6173C6.55151 11.8222 6.00174 11.0498 5.61231 10.3001C4.81055 11.2997 4.30659 12.5492 4.30659 13.935C4.30659 15.7979 5.17707 17.4563 6.55152 18.5014C6.68896 18.615 8.45283 20.1371 10.9039 20.7959C13.1259 21.432 16.9057 21.4093 18.0052 20.0462Z" fill="#69C5F4"/>
+<path d="M27 10.0997V16.3997H29.008V10.0997H27ZM27 7.89966V9.29966H29.008V7.89966H27Z" fill="#2B2B2D"/>
+<path d="M39.1482 9.09927V7.49927H31.0156V16.2993H33.2245V12.8993H38.8469V11.2993H33.2245V9.09927H39.1482Z" fill="#2B2B2D"/>
+<path d="M43.367 14.6993V7.49927H41.1582V16.2993H48.2867V14.6993H43.367Z" fill="#2B2B2D"/>
+<path d="M55.2168 7.60083L52.6064 11.3008L49.9959 7.60083H47.2852L51.502 13.1008V16.4008H53.7108V13.1008L57.9277 7.60083H55.2168Z" fill="#2B2B2D"/>
+<path d="M58.9316 7.60083V9.20083H62.2449V16.4008H64.4537V9.20083H67.6666V7.60083H58.9316Z" fill="#2B2B2D"/>
+<path d="M71.8827 14.7993V12.6993H77.7059V11.0993H71.8827V9.09927H77.9067V7.49927H69.6738V16.2993H78.1075V14.6993H71.8827V14.7993Z" fill="#2B2B2D"/>
+<path d="M85.1353 11.3008L89.4526 7.60083H86.6413L82.3241 11.4008V7.60083H80.1152V16.4008H82.3241V13.8008L83.6293 12.7008L87.0429 16.5008H89.9546L85.1353 11.3008Z" fill="#2B2B2D"/>
+<path d="M103.167 11.4C102.866 11.3 102.564 11.2001 101.962 11.1001C101.36 11.0001 99.7532 10.8001 99.1508 10.6001C98.7492 10.5001 98.448 10.3 98.448 9.80005C98.448 8.90005 99.6528 8.80005 99.6528 8.80005C99.954 8.80005 100.255 8.80005 100.356 8.80005C101.159 8.80005 102.163 8.90005 102.665 9.60005C102.765 9.70005 102.765 9.70005 102.866 9.90005L104.974 9.40005C104.773 9.10005 104.673 8.90005 104.372 8.60005C103.97 8.20005 103.468 8.00005 103.267 7.90005C102.665 7.60005 101.862 7.30005 100.356 7.30005C98.7492 7.30005 97.8456 7.70005 97.3436 8.10005C97.0423 8.30005 96.2392 8.90005 96.2392 10.1001C96.2392 11.4001 97.2431 12.0001 97.6447 12.2001C98.3476 12.5001 99.2512 12.7 100.858 12.9C101.661 13 102.263 13.1 102.464 13.3C102.665 13.4 102.765 13.6 102.765 13.9C102.765 14.3 102.464 14.6001 102.364 14.7001C101.761 15.1001 100.657 15.1001 100.556 15.1001C99.452 15.1001 98.1468 14.8001 97.6447 13.7001L95.6367 14.2001C95.7371 14.3001 95.7371 14.4001 95.8375 14.6001C95.9379 14.8001 96.2392 15.3001 96.7412 15.6001C97.0424 15.8001 97.2432 15.9001 97.3436 16.0001C97.946 16.3001 98.8496 16.7001 100.456 16.7001C100.757 16.7001 101.058 16.7001 101.36 16.7001C101.862 16.7001 102.364 16.6 102.765 16.4C104.572 15.8 104.874 14.6 104.874 13.8C104.974 12.1 103.669 11.6 103.167 11.4Z" fill="#2B2B2D"/>
+<path d="M115.318 8.80083C114.816 8.00083 114.012 7.70083 113.109 7.60083C112.908 7.60083 112.607 7.60083 112.406 7.60083H106.984V16.4008H109.193V13.1008H112.306C113.109 13.1008 114.012 13.1008 114.615 12.7008C114.916 12.5008 115.117 12.3008 115.217 12.2008C115.418 12.0008 115.518 11.8008 115.518 11.7008C115.719 11.2008 115.719 10.6008 115.719 10.4008C115.719 9.50083 115.518 9.00083 115.318 8.80083ZM112.908 11.4008C112.607 11.5008 112.205 11.5008 111.804 11.5008H109.093V9.10083H112.205C112.506 9.10083 112.607 9.10083 112.707 9.20083C113.41 9.40083 113.41 10.2008 113.41 10.4008C113.51 10.5008 113.51 11.1008 112.908 11.4008Z" fill="#2B2B2D"/>
+<path d="M122.345 7.60083H119.936L115.719 16.4008H118.128L118.831 14.7008H123.349L124.052 16.4008H126.562L122.345 7.60083ZM119.634 13.1008L121.241 9.70083L122.747 13.1008H119.634Z" fill="#2B2B2D"/>
+<path d="M134.594 12.6993C135.498 12.4993 136.301 12.2993 136.703 11.3993C136.904 10.8993 136.904 10.4993 136.904 10.1993C136.904 8.99926 136.301 8.09926 135.097 7.69926C134.695 7.59926 134.394 7.49927 133.59 7.49927H127.566V16.2993H129.775V12.7993H132.285L134.594 16.2993H137.205L134.594 12.6993ZM133.892 11.1993C133.691 11.1993 133.39 11.1993 133.39 11.1993H129.876V9.09927H133.39C133.791 9.09927 134.293 9.09927 134.594 9.49927C134.795 9.69927 134.795 10.0993 134.795 10.1993C134.695 10.8993 134.193 11.1993 133.892 11.1993Z" fill="#2B2B2D"/>
+<path d="M144.335 11.3008L148.653 7.60083H145.841L141.524 11.4008V7.60083H139.215V16.4008H141.424V13.8008L142.729 12.7008L146.143 16.5008H149.054L144.335 11.3008Z" fill="#2B2B2D"/>
+</g>
+<defs>
+<clipPath id="clip0_8587_60507">
+<rect width="150" height="24" fill="white"/>
+</clipPath>
+</defs>
+</svg>

+ 5 - 0
web/app/components/base/icons/assets/public/llm/iflytek-spark.svg

@@ -0,0 +1,5 @@
+<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M21.6547 16.7993C21.3111 18.0034 20.7384 19.0938 20.0054 20.048C18.9058 21.4111 15.1261 21.4111 12.8583 20.8204C10.4072 20.1616 8.6433 18.6395 8.50586 18.5259C9.46797 19.2756 10.6821 19.7072 12.0107 19.7072C15.1948 19.7072 17.7605 17.1174 17.7605 13.9368C17.7605 12.9826 17.5314 12.0966 17.119 11.3015C17.0961 11.2561 17.1419 11.2106 17.1649 11.2333C18.9745 11.5287 22.571 13.2098 21.6547 16.7993Z" fill="#2751D0"/>
+<path d="M21.9994 12.7773C21.9994 12.8454 21.9306 12.8682 21.8848 12.8C21.0372 11.0053 19.5483 10.46 17.7615 10.0511C16.4099 9.75577 15.5166 9.3014 15.1271 9.09694C15.0355 9.0515 14.9668 8.98335 14.8751 8.93791C12.0575 7.23404 12.0117 4.30339 12.0117 4.30339V0.0550813C12.0117 0.00964486 12.0804 -0.0130733 12.1034 0.0096449L18.7694 6.50706L19.2734 6.98414C20.7394 8.52898 21.7474 10.5509 21.9994 12.7773Z" fill="#D82F20"/>
+<path d="M20.0052 20.0462C18.1726 22.4316 15.2863 23.9992 12.0334 23.9992C6.48985 23.9992 2 19.501 2 13.9577C2 11.2543 3.05374 8.8234 4.7947 7.00594L5.29866 6.50614L9.65107 2.25783C9.69688 2.2124 9.7656 2.25783 9.7427 2.30327C9.67397 2.59861 9.55944 3.28015 9.62816 4.18888C9.71979 5.25664 10.0634 6.68789 11.0713 8.27817C11.6898 9.27777 12.5832 10.3228 13.8202 11.4133C13.9577 11.5496 14.118 11.6632 14.2784 11.7995C14.8281 12.3674 15.1488 13.1171 15.1488 13.9577C15.1488 15.6616 13.7515 17.0474 12.0563 17.0474C11.3233 17.0474 10.659 16.7975 10.1321 16.3659C10.0863 16.3204 10.1321 16.2523 10.1779 16.275C10.2925 16.2977 10.407 16.3204 10.5215 16.3204C11.1171 16.3204 11.6211 15.8433 11.6211 15.2299C11.6211 14.8665 11.4378 14.5257 11.163 14.3439C10.4299 13.7533 9.81142 13.1853 9.28455 12.6173C8.55151 11.8222 8.00174 11.0498 7.61231 10.3001C6.81055 11.2997 6.30659 12.5492 6.30659 13.935C6.30659 15.7979 7.17707 17.4563 8.55152 18.5014C8.68896 18.615 10.4528 20.1371 12.9039 20.7959C15.1259 21.432 18.9057 21.4093 20.0052 20.0462Z" fill="#69C5F4"/>
+</svg>

+ 8 - 0
web/app/components/base/icons/assets/public/llm/microsoft.svg

@@ -0,0 +1,8 @@
+<svg width="21" height="22" viewBox="0 0 21 22" fill="none" xmlns="http://www.w3.org/2000/svg">
+<g id="Microsfot">
+<rect id="Rectangle 1010" y="0.5" width="10" height="10" fill="#EF4F21"/>
+<rect id="Rectangle 1012" y="11.5" width="10" height="10" fill="#03A4EE"/>
+<rect id="Rectangle 1011" x="11" y="0.5" width="10" height="10" fill="#7EB903"/>
+<rect id="Rectangle 1013" x="11" y="11.5" width="10" height="10" fill="#FBB604"/>
+</g>
+</svg>

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 2 - 0
web/app/components/base/icons/assets/public/llm/openai-black.svg


파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 2 - 0
web/app/components/base/icons/assets/public/llm/openai-blue.svg


파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 2 - 0
web/app/components/base/icons/assets/public/llm/openai-green.svg


+ 8 - 0
web/app/components/base/icons/assets/public/llm/openai-text.svg

@@ -0,0 +1,8 @@
+<svg width="52" height="20" viewBox="0 0 52 20" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M0.00390625 8.70054C0.00390625 12.058 2.16008 14.399 5.14793 14.399C8.13577 14.399 10.2919 12.058 10.2919 8.70054C10.2919 5.34307 8.13577 3.00208 5.14793 3.00208C2.16008 3.00208 0.00390625 5.34307 0.00390625 8.70054ZM8.32058 8.70054C8.32058 11.1031 7.01148 12.6587 5.14793 12.6587C3.28437 12.6587 1.97527 11.1031 1.97527 8.70054C1.97527 6.29794 3.28437 4.74242 5.14793 4.74242C7.01148 4.74242 8.32058 6.29794 8.32058 8.70054Z" fill="black" fill-opacity="0.92"/>
+<path d="M15.8456 14.3975C18.1096 14.3975 19.4033 12.4877 19.4033 10.1929C19.4033 7.89816 18.1096 5.9884 15.8456 5.9884C14.7983 5.9884 14.0283 6.40424 13.52 7.00489V6.14242H11.6719V17.0003H13.52V13.381C14.0283 13.9817 14.7983 14.3975 15.8456 14.3975ZM13.4738 9.96193C13.4738 8.4372 14.3363 7.60554 15.476 7.60554C16.8159 7.60554 17.5398 8.65282 17.5398 10.1929C17.5398 11.7331 16.8159 12.7804 15.476 12.7804C14.3363 12.7804 13.4738 11.9333 13.4738 10.4394V9.96193Z" fill="black" fill-opacity="0.92"/>
+<path d="M24.4039 14.3975C26.021 14.3975 27.2993 13.5504 27.8692 12.1335L26.2828 11.5329C26.0364 12.3645 25.3126 12.8266 24.4039 12.8266C23.218 12.8266 22.3863 11.9795 22.2477 10.5934H27.9154V9.97733C27.9154 7.75955 26.6679 5.9884 24.3269 5.9884C21.9859 5.9884 20.4766 7.82115 20.4766 10.1929C20.4766 12.6879 22.0937 14.3975 24.4039 14.3975ZM24.3115 7.54393C25.482 7.54393 26.0364 8.31399 26.0518 9.20727H22.3401C22.6173 8.11378 23.3566 7.54393 24.3115 7.54393Z" fill="black" fill-opacity="0.92"/>
+<path d="M29.3008 14.2281H31.1489V9.48449C31.1489 8.32939 31.996 7.71334 32.8277 7.71334C33.8442 7.71334 34.2446 8.4372 34.2446 9.43828V14.2281H36.0927V8.89924C36.0927 7.1589 35.0763 5.9884 33.3821 5.9884C32.3348 5.9884 31.611 6.46584 31.1489 7.00489V6.14242H29.3008V14.2281Z" fill="black" fill-opacity="0.92"/>
+<path d="M41.5095 3.172L37.3203 14.2301H39.2763L40.2157 11.7043H44.9901L45.945 14.2301H47.9318L43.7426 3.172H41.5095ZM42.5875 5.35898L44.3433 9.97935H40.8626L42.5875 5.35898Z" fill="black" fill-opacity="0.92"/>
+<path d="M51.1042 3.20325H49.1328V14.2613H51.1042V3.20325Z" fill="black" fill-opacity="0.92"/>
+</svg>

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 1 - 0
web/app/components/base/icons/assets/public/llm/openai-transparent.svg


파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 2 - 0
web/app/components/base/icons/assets/public/llm/openai-violet.svg


+ 13 - 0
web/app/components/base/icons/assets/public/llm/replicate-text.svg

@@ -0,0 +1,13 @@
+<svg width="92" height="24" viewBox="0 0 92 24" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M18.4933 2V3.79H6.005V17.9017H4V2H18.4933Z" fill="black"/>
+<path d="M18.4974 5.39453V7.18453H9.79573V17.9012H7.78906V5.39453H18.4974Z" fill="black"/>
+<path d="M18.4936 8.77734V10.5773H13.577V17.9007H11.5703V8.77734H18.4936Z" fill="black"/>
+<path d="M24.2014 8.60156C26.588 8.60156 28.593 10.1849 28.593 13.1282C28.593 13.3232 28.593 13.4882 28.573 13.7866H21.403C21.4964 15.2782 22.6997 16.2649 24.2114 16.2649C25.4864 16.2649 26.3414 15.6782 26.813 14.8766L28.3464 15.9666C27.523 17.2632 26.1047 18.0849 24.1914 18.0849C21.4247 18.0849 19.4297 16.1199 19.4297 13.3432C19.4397 10.6582 21.4347 8.60156 24.203 8.60156M21.508 12.3149H26.5797C26.363 10.9982 25.3047 10.2882 24.1314 10.2882C22.958 10.2882 21.7764 10.9666 21.508 12.3149Z" fill="black"/>
+<path d="M30.6328 8.77656H32.6378V9.9999C33.1528 9.2699 34.2628 8.60156 35.5695 8.60156C38.0695 8.60156 39.9611 10.7316 39.9611 13.3432C39.9611 15.9549 38.0678 18.0849 35.5695 18.0849C34.2528 18.0849 33.1411 17.4066 32.6378 16.6749V21.7049H30.6328V8.77656ZM35.2095 10.4216C33.5845 10.4216 32.4728 11.6966 32.4728 13.3432C32.4728 14.9899 33.5845 16.2649 35.2095 16.2649C36.8345 16.2649 37.9245 14.9899 37.9245 13.3432C37.9245 11.6966 36.8128 10.4216 35.2095 10.4216Z" fill="black"/>
+<path d="M44.0128 4.2207H42.0078V17.8907H44.0128V4.2207Z" fill="black"/>
+<path d="M47.7139 6.79443C46.9839 6.79443 46.3672 6.19776 46.3672 5.44776C46.3672 4.69776 46.9839 4.12109 47.7139 4.12109C48.4439 4.12109 49.0405 4.72776 49.0405 5.44776C49.0405 6.19943 48.4639 6.79443 47.7139 6.79443ZM46.7155 8.77943H48.7205V17.8928H46.7155V8.77943Z" fill="black"/>
+<path d="M55.5711 18.0771C52.8345 18.0771 50.7578 16.0304 50.7578 13.3354C50.7578 10.6404 52.8361 8.59375 55.5711 8.59375C57.4528 8.59375 59.0378 9.60208 59.8195 11.1137L58.0711 12.0604C57.6295 11.1354 56.7445 10.4554 55.5711 10.4554C53.9461 10.4554 52.8045 11.7104 52.8045 13.3354C52.8045 14.9604 53.9561 16.2154 55.5711 16.2154C56.7328 16.2154 57.6278 15.5371 58.0711 14.6104L59.8195 15.5571C59.0378 17.0787 57.4428 18.0771 55.5711 18.0771Z" fill="black"/>
+<path d="M65.3995 8.60156C66.7161 8.60156 67.8061 9.2799 68.3211 9.9999V8.77656H70.3261V17.8899H68.3211V16.6666C67.8061 17.3966 66.7161 18.0766 65.3995 18.0766C62.8995 18.0766 61.0078 15.9466 61.0078 13.3349C61.0078 10.7232 62.9011 8.60323 65.3995 8.60323M65.7695 10.4232C64.1445 10.4232 63.0545 11.6982 63.0545 13.3449C63.0545 14.9916 64.1445 16.2666 65.7695 16.2666C67.3945 16.2666 68.4845 14.9916 68.4845 13.3449C68.4845 11.6982 67.3845 10.4232 65.7695 10.4232Z" fill="black"/>
+<path d="M73.7627 17.9033V10.57H71.8594V8.78H73.7627V6.25H75.7694V8.78H79.2244V10.57H75.7694V16.1033H79.2244V17.9033H73.7627Z" fill="black"/>
+<path d="M84.9435 8.60156C87.3302 8.60156 89.3352 10.1849 89.3352 13.1282C89.3352 13.3232 89.3352 13.4882 89.3152 13.7866H82.1452C82.2385 15.2782 83.4419 16.2649 84.9535 16.2649C86.2285 16.2649 87.0835 15.6782 87.5552 14.8766L89.0885 15.9666C88.2652 17.2632 86.8469 18.0849 84.9335 18.0849C82.1669 18.0849 80.1719 16.1199 80.1719 13.3432C80.1919 10.6582 82.1769 8.60156 84.9452 8.60156M82.2502 12.3149H87.3219C87.1052 10.9982 86.0469 10.2882 84.8735 10.2882C83.7002 10.2882 82.5285 10.9666 82.2502 12.3149Z" fill="black"/>
+</svg>

+ 4 - 0
web/app/components/base/icons/assets/public/llm/replicate.svg

@@ -0,0 +1,4 @@
+<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
+<rect width="24" height="24" rx="6" fill="black"/>
+<path fill-rule="evenodd" clip-rule="evenodd" d="M19.9961 4V5.79H7.93621V19.9017H6V4H19.9961ZM20 7.39453V9.18453H11.5969V19.9012H9.65906V7.39453H20ZM19.9964 12.5773V10.7773H13.3106V19.9007H15.2484V12.5773H19.9964Z" fill="white"/>
+</svg>

+ 5 - 0
web/app/components/base/icons/assets/vender/line/alertsAndFeedback/alert-circle.svg

@@ -0,0 +1,5 @@
+<svg width="16" height="17" viewBox="0 0 16 17" fill="none" xmlns="http://www.w3.org/2000/svg">
+<g id="Error">
+<path id="Icon" d="M7.99992 5.83337V8.50004M7.99992 11.1667H8.00659M14.6666 8.50004C14.6666 12.1819 11.6818 15.1667 7.99992 15.1667C4.31802 15.1667 1.33325 12.1819 1.33325 8.50004C1.33325 4.81814 4.31802 1.83337 7.99992 1.83337C11.6818 1.83337 14.6666 4.81814 14.6666 8.50004Z" stroke="#F04438" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
+</g>
+</svg>

+ 5 - 0
web/app/components/base/icons/assets/vender/line/arrows/chevron-down-double.svg

@@ -0,0 +1,5 @@
+<svg width="12" height="13" viewBox="0 0 12 13" fill="none" xmlns="http://www.w3.org/2000/svg">
+<g id="chevron-down-double">
+<path id="Icon" d="M3.5 7L6 9.5L8.5 7M3.5 3.5L6 6L8.5 3.5" stroke="#667085" stroke-width="1.25" stroke-linecap="round" stroke-linejoin="round"/>
+</g>
+</svg>

+ 10 - 0
web/app/components/base/icons/assets/vender/line/general/at-sign.svg

@@ -0,0 +1,10 @@
+<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
+<g id="at-sign" clip-path="url(#clip0_8902_1909)">
+<path id="Icon" d="M10.6666 5.33333V8.66666C10.6666 9.19709 10.8773 9.7058 11.2524 10.0809C11.6275 10.4559 12.1362 10.6667 12.6666 10.6667C13.197 10.6667 13.7057 10.4559 14.0808 10.0809C14.4559 9.7058 14.6666 9.19709 14.6666 8.66666V7.99999C14.6665 6.49535 14.1574 5.03498 13.2221 3.85635C12.2868 2.67772 10.9803 1.85014 9.51502 1.50819C8.04974 1.16624 6.51188 1.33002 5.15149 1.9729C3.7911 2.61579 2.68819 3.69996 2.0221 5.04914C1.356 6.39832 1.1659 7.93315 1.4827 9.40407C1.7995 10.875 2.60458 12.1955 3.76701 13.1508C4.92945 14.1062 6.38088 14.6402 7.8853 14.6661C9.38973 14.692 10.8587 14.2082 12.0533 13.2933M10.6666 7.99999C10.6666 9.47275 9.47269 10.6667 7.99993 10.6667C6.52717 10.6667 5.33326 9.47275 5.33326 7.99999C5.33326 6.52723 6.52717 5.33333 7.99993 5.33333C9.47269 5.33333 10.6666 6.52723 10.6666 7.99999Z" stroke="#344054" stroke-width="1.25" stroke-linecap="round" stroke-linejoin="round"/>
+</g>
+<defs>
+<clipPath id="clip0_8902_1909">
+<rect width="16" height="16" fill="white"/>
+</clipPath>
+</defs>
+</svg>

+ 9 - 0
web/app/components/base/icons/assets/vender/line/general/dots-horizontal.svg

@@ -0,0 +1,9 @@
+<svg width="12" height="12" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg">
+<g id="Icon">
+<g id="Icon_2">
+<path d="M6 6.5C6.27614 6.5 6.5 6.27614 6.5 6C6.5 5.72386 6.27614 5.5 6 5.5C5.72386 5.5 5.5 5.72386 5.5 6C5.5 6.27614 5.72386 6.5 6 6.5Z" stroke="#344054" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
+<path d="M9.5 6.5C9.77614 6.5 10 6.27614 10 6C10 5.72386 9.77614 5.5 9.5 5.5C9.22386 5.5 9 5.72386 9 6C9 6.27614 9.22386 6.5 9.5 6.5Z" stroke="#344054" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
+<path d="M2.5 6.5C2.77614 6.5 3 6.27614 3 6C3 5.72386 2.77614 5.5 2.5 5.5C2.22386 5.5 2 5.72386 2 6C2 6.27614 2.22386 6.5 2.5 6.5Z" stroke="#344054" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
+</g>
+</g>
+</svg>

+ 3 - 0
web/app/components/base/icons/assets/vender/line/general/help-circle.svg

@@ -0,0 +1,3 @@
+<svg width="14" height="13" viewBox="0 0 14 13" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path id="Icon" d="M5.30246 4.74996C5.4396 4.3601 5.7103 4.03135 6.0666 3.82195C6.4229 3.61255 6.84181 3.53601 7.24915 3.60587C7.65648 3.67574 8.02594 3.88752 8.29209 4.20368C8.55824 4.51985 8.70391 4.92001 8.70329 5.33329C8.70329 6.49996 6.95329 7.08329 6.95329 7.08329M6.99996 9.41663H7.00579M12.8333 6.49996C12.8333 9.72162 10.2216 12.3333 6.99996 12.3333C3.7783 12.3333 1.16663 9.72162 1.16663 6.49996C1.16663 3.2783 3.7783 0.666626 6.99996 0.666626C10.2216 0.666626 12.8333 3.2783 12.8333 6.49996Z" stroke="#98A2B3" stroke-width="1.25" stroke-linecap="round" stroke-linejoin="round"/>
+</svg>

+ 10 - 0
web/app/components/base/icons/assets/vender/line/general/info-circle.svg

@@ -0,0 +1,10 @@
+<svg width="12" height="12" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg">
+<g id="info-circle" clip-path="url(#clip0_7880_62014)">
+<path id="Icon" d="M6 8V6M6 4H6.005M11 6C11 8.76142 8.76142 11 6 11C3.23858 11 1 8.76142 1 6C1 3.23858 3.23858 1 6 1C8.76142 1 11 3.23858 11 6Z" stroke="#98A2B3" stroke-width="1.25" stroke-linecap="round" stroke-linejoin="round"/>
+</g>
+<defs>
+<clipPath id="clip0_7880_62014">
+<rect width="12" height="12" fill="white"/>
+</clipPath>
+</defs>
+</svg>

+ 5 - 0
web/app/components/base/icons/assets/vender/line/general/plus.svg

@@ -0,0 +1,5 @@
+<svg width="16" height="17" viewBox="0 0 16 17" fill="none" xmlns="http://www.w3.org/2000/svg">
+<g id="plus">
+<path id="Icon" d="M8.00004 3.83337V13.1667M3.33337 8.50004H12.6667" stroke="#667085" stroke-width="1.25" stroke-linecap="round" stroke-linejoin="round"/>
+</g>
+</svg>

+ 5 - 0
web/app/components/base/icons/assets/vender/line/general/search-lg.svg

@@ -0,0 +1,5 @@
+<svg width="14" height="15" viewBox="0 0 14 15" fill="none" xmlns="http://www.w3.org/2000/svg">
+<g id="Icon">
+<path id="Icon_2" d="M12.25 12.75L10.2084 10.7083M11.6667 7.20833C11.6667 9.94675 9.44675 12.1667 6.70833 12.1667C3.96992 12.1667 1.75 9.94675 1.75 7.20833C1.75 4.46992 3.96992 2.25 6.70833 2.25C9.44675 2.25 11.6667 4.46992 11.6667 7.20833Z" stroke="#98A2B3" stroke-width="1.25" stroke-linecap="round" stroke-linejoin="round"/>
+</g>
+</svg>

+ 10 - 0
web/app/components/base/icons/assets/vender/line/mapsAndTravel/globe-01.svg

@@ -0,0 +1,10 @@
+<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
+<g id="globe-01" clip-path="url(#clip0_8902_1914)">
+<path id="Icon" d="M1.33325 7.99998H14.6666M1.33325 7.99998C1.33325 11.6819 4.31802 14.6666 7.99992 14.6666M1.33325 7.99998C1.33325 4.31808 4.31802 1.33331 7.99992 1.33331M14.6666 7.99998C14.6666 11.6819 11.6818 14.6666 7.99992 14.6666M14.6666 7.99998C14.6666 4.31808 11.6818 1.33331 7.99992 1.33331M7.99992 1.33331C9.66744 3.15888 10.6151 5.528 10.6666 7.99998C10.6151 10.472 9.66744 12.8411 7.99992 14.6666M7.99992 1.33331C6.3324 3.15888 5.38475 5.528 5.33325 7.99998C5.38475 10.472 6.3324 12.8411 7.99992 14.6666" stroke="#344054" stroke-width="1.25" stroke-linecap="round" stroke-linejoin="round"/>
+</g>
+<defs>
+<clipPath id="clip0_8902_1914">
+<rect width="16" height="16" fill="white"/>
+</clipPath>
+</defs>
+</svg>

+ 13 - 0
web/app/components/base/icons/assets/vender/line/shapes/cube-outline.svg

@@ -0,0 +1,13 @@
+<svg width="16" height="17" viewBox="0 0 16 17" fill="none" xmlns="http://www.w3.org/2000/svg">
+<g id="cube-outline">
+<g id="Solid">
+<path d="M8.26865 1.29003C8.09143 1.25358 7.90866 1.25358 7.73144 1.29003C7.52659 1.33216 7.3435 1.43471 7.19794 1.51624L7.15826 1.53841L6.17628 2.08395C5.85443 2.26276 5.73846 2.66863 5.91727 2.99049C6.09608 3.31234 6.50195 3.4283 6.82381 3.24949L7.80579 2.70395C7.90681 2.64782 7.95839 2.61946 7.99686 2.60091L8.00004 2.59938L8.00323 2.60091C8.0417 2.61946 8.09327 2.64782 8.1943 2.70395L9.17628 3.24949C9.49814 3.4283 9.90401 3.31234 10.0828 2.99048C10.2616 2.66863 10.1457 2.26276 9.82381 2.08395L8.84183 1.53841L8.80215 1.51624C8.65659 1.43471 8.4735 1.33216 8.26865 1.29003Z" fill="#155EEF"/>
+<path d="M12.8238 3.75062C12.5019 3.57181 12.0961 3.68777 11.9173 4.00963C11.7385 4.33148 11.8544 4.73735 12.1763 4.91616L12.6272 5.16668L12.1763 5.41719C11.8545 5.596 11.7385 6.00186 11.9173 6.32372C12.0961 6.64558 12.502 6.76154 12.8238 6.58273L13.3334 6.29966V6.83339C13.3334 7.20158 13.6319 7.50006 14 7.50006C14.3682 7.50006 14.6667 7.20158 14.6667 6.83339V5.79435L14.6668 5.74627C14.6673 5.62441 14.6678 5.48084 14.6452 5.33482C14.6869 5.17472 14.6696 4.99892 14.5829 4.84286C14.4904 4.6764 14.3371 4.56501 14.1662 4.52099C14.0496 4.43038 13.9239 4.36116 13.8173 4.3024L13.7752 4.27915L12.8238 3.75062Z" fill="#155EEF"/>
+<path d="M3.8238 4.91616C4.14566 4.73735 4.26162 4.33148 4.08281 4.00963C3.90401 3.68777 3.49814 3.57181 3.17628 3.75062L2.22493 4.27915L2.18284 4.3024C2.07615 4.36116 1.95045 4.4304 1.83382 4.52102C1.66295 4.56506 1.50977 4.67643 1.41731 4.84286C1.33065 4.99886 1.31323 5.17459 1.35493 5.33464C1.33229 5.48072 1.33281 5.62436 1.33326 5.74627L1.33338 5.79435V6.83339C1.33338 7.20158 1.63185 7.50006 2.00004 7.50006C2.36823 7.50006 2.66671 7.20158 2.66671 6.83339V6.29961L3.17632 6.58273C3.49817 6.76154 3.90404 6.64558 4.08285 6.32372C4.26166 6.00186 4.1457 5.596 3.82384 5.41719L3.3729 5.16666L3.8238 4.91616Z" fill="#155EEF"/>
+<path d="M2.66671 10.1667C2.66671 9.79853 2.36823 9.50006 2.00004 9.50006C1.63185 9.50006 1.33338 9.79853 1.33338 10.1667V11.2058L1.33326 11.2538C1.33262 11.4298 1.33181 11.6509 1.40069 11.8594C1.46024 12.0397 1.55759 12.2051 1.68622 12.3447C1.835 12.5061 2.02873 12.6128 2.18281 12.6977L2.22493 12.721L3.17628 13.2495C3.49814 13.4283 3.90401 13.3123 4.08281 12.9905C4.26162 12.6686 4.14566 12.2628 3.8238 12.084L2.87245 11.5554C2.76582 11.4962 2.71137 11.4656 2.67318 11.4413L2.66995 11.4392L2.66971 11.4354C2.66699 11.3902 2.66671 11.3277 2.66671 11.2058V10.1667Z" fill="#155EEF"/>
+<path d="M14.6667 10.1667C14.6667 9.79853 14.3682 9.50006 14 9.50006C13.6319 9.50006 13.3334 9.79853 13.3334 10.1667V11.2058C13.3334 11.3277 13.3331 11.3902 13.3304 11.4354L13.3301 11.4392L13.3269 11.4413C13.2887 11.4656 13.2343 11.4962 13.1276 11.5554L12.1763 12.084C11.8544 12.2628 11.7385 12.6686 11.9173 12.9905C12.0961 13.3123 12.5019 13.4283 12.8238 13.2495L13.7752 12.721L13.8172 12.6977C13.9713 12.6128 14.1651 12.5061 14.3139 12.3447C14.4425 12.2051 14.5398 12.0397 14.5994 11.8594C14.6683 11.6509 14.6675 11.4298 14.6668 11.2538L14.6667 11.2058V10.1667Z" fill="#155EEF"/>
+<path d="M6.82381 13.7506C6.50195 13.5718 6.09608 13.6878 5.91727 14.0096C5.73846 14.3315 5.85443 14.7374 6.17628 14.9162L7.15826 15.4617L7.19793 15.4839C7.29819 15.54 7.41625 15.6061 7.54696 15.6556C7.66589 15.7659 7.82512 15.8333 8.00008 15.8333C8.17507 15.8333 8.33431 15.7659 8.45324 15.6556C8.58391 15.6061 8.70193 15.54 8.80215 15.4839L8.84183 15.4617L9.82381 14.9162C10.1457 14.7374 10.2616 14.3315 10.0828 14.0096C9.90401 13.6878 9.49814 13.5718 9.17628 13.7506L8.66675 14.0337V13.5C8.66675 13.1318 8.36827 12.8333 8.00008 12.8333C7.63189 12.8333 7.33341 13.1318 7.33341 13.5V14.0337L6.82381 13.7506Z" fill="#155EEF"/>
+<path d="M6.82384 7.08385C6.50199 6.90505 6.09612 7.02101 5.91731 7.34286C5.7385 7.66472 5.85446 8.07059 6.17632 8.2494L7.33341 8.89223V10.1666C7.33341 10.5348 7.63189 10.8333 8.00008 10.8333C8.36827 10.8333 8.66675 10.5348 8.66675 10.1666V8.89223L9.82384 8.2494C10.1457 8.07059 10.2617 7.66472 10.0829 7.34286C9.90404 7.02101 9.49817 6.90505 9.17632 7.08385L8.00008 7.73732L6.82384 7.08385Z" fill="#155EEF"/>
+</g>
+</g>
+</svg>

+ 5 - 0
web/app/components/base/icons/assets/vender/line/users/user-01.svg

@@ -0,0 +1,5 @@
+<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
+<g id="user-01">
+<path id="Icon" d="M13.3334 14C13.3334 13.0696 13.3334 12.6044 13.2186 12.2259C12.9601 11.3736 12.2931 10.7067 11.4408 10.4482C11.0623 10.3333 10.5971 10.3333 9.66675 10.3333H6.33342C5.40304 10.3333 4.93785 10.3333 4.55932 10.4482C3.70705 10.7067 3.04011 11.3736 2.78157 12.2259C2.66675 12.6044 2.66675 13.0696 2.66675 14M11.0001 5C11.0001 6.65685 9.65694 8 8.00008 8C6.34323 8 5.00008 6.65685 5.00008 5C5.00008 3.34315 6.34323 2 8.00008 2C9.65694 2 11.0001 3.34315 11.0001 5Z" stroke="#344054" stroke-width="1.25" stroke-linecap="round" stroke-linejoin="round"/>
+</g>
+</svg>

+ 5 - 0
web/app/components/base/icons/assets/vender/line/users/users-01.svg

@@ -0,0 +1,5 @@
+<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
+<g id="users-01">
+<path id="Icon" d="M14.6666 14V12.6667C14.6666 11.4241 13.8167 10.38 12.6666 10.084M10.3333 2.19384C11.3105 2.58943 11.9999 3.54754 11.9999 4.66667C11.9999 5.78579 11.3105 6.7439 10.3333 7.13949M11.3333 14C11.3333 12.7575 11.3333 12.1362 11.1303 11.6462C10.8596 10.9928 10.3405 10.4736 9.68707 10.203C9.19702 10 8.57576 10 7.33325 10H5.33325C4.09074 10 3.46949 10 2.97943 10.203C2.32602 10.4736 1.80689 10.9928 1.53624 11.6462C1.33325 12.1362 1.33325 12.7575 1.33325 14M8.99992 4.66667C8.99992 6.13943 7.80601 7.33333 6.33325 7.33333C4.86049 7.33333 3.66659 6.13943 3.66659 4.66667C3.66659 3.19391 4.86049 2 6.33325 2C7.80601 2 8.99992 3.19391 8.99992 4.66667Z" stroke="#344054" stroke-width="1.25" stroke-linecap="round" stroke-linejoin="round"/>
+</g>
+</svg>

+ 5 - 0
web/app/components/base/icons/assets/vender/solid/FinanceAndECommerce/scales-02.svg

@@ -0,0 +1,5 @@
+<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M8.64494 5.5L4 5.50001C3.44772 5.50001 3 5.05229 3 4.50001C3 3.94772 3.44771 3.50001 4 3.50001L8.64494 3.5C9.07521 2.05426 10.4145 1 12 1C13.5855 1 14.9248 2.05426 15.3551 3.5L20 3.5C20.5523 3.5 21 3.94772 21 4.5C21 5.05229 20.5523 5.5 20 5.5L15.3551 5.5C15.0191 6.62889 14.1289 7.51909 13 7.85506V20H20C20.5523 20 21 20.4477 21 21C21 21.5523 20.5523 22 20 22L4 22C3.44772 22 3 21.5523 3 21C3 20.4477 3.44772 20 4 20H11V7.85506C9.87111 7.51909 8.98091 6.62889 8.64494 5.5Z" fill="black"/>
+<path fill-rule="evenodd" clip-rule="evenodd" d="M5.49998 7C5.83892 7 6.15479 7.17168 6.33914 7.4561L9.34294 12.0905C9.5058 12.3416 9.65261 12.5678 9.77323 12.9247C9.82544 13.0792 9.86232 13.2714 9.88454 13.4092C9.90677 13.5471 9.93212 13.7411 9.93109 13.9042C9.9302 14.0459 9.92522 14.1726 9.90862 14.2966C9.89198 14.421 9.86633 14.5189 9.85041 14.5797L9.84797 14.5891C9.33962 16.5355 7.60137 18 5.49998 18C3.3986 18 1.66034 16.5355 1.152 14.5891L1.14959 14.5798C1.13367 14.5191 1.108 14.421 1.09135 14.2966C1.07475 14.1726 1.06977 14.0459 1.06888 13.9042C1.06785 13.7411 1.0932 13.5471 1.11542 13.4092C1.13765 13.2714 1.17453 13.0792 1.22674 12.9247C1.34736 12.5678 1.49417 12.3416 1.65703 12.0905L4.66083 7.4561C4.84518 7.17168 5.16105 7 5.49998 7ZM5.49998 9.83859L4.09907 12H6.9009L5.49998 9.83859Z" fill="black"/>
+<path fill-rule="evenodd" clip-rule="evenodd" d="M19.3391 7.4561C19.1548 7.17168 18.8389 7 18.5 7C18.161 7 17.8452 7.17168 17.6608 7.4561L14.657 12.0905C14.4942 12.3416 14.3474 12.5678 14.2267 12.9247C14.1745 13.0792 14.1376 13.2714 14.1154 13.4092C14.0932 13.5471 14.0679 13.7411 14.0689 13.9042C14.0698 14.0459 14.0748 14.1726 14.0914 14.2966C14.108 14.421 14.1337 14.519 14.1496 14.5798L14.152 14.5891C14.6603 16.5355 16.3986 18 18.5 18C20.6014 18 22.3396 16.5355 22.848 14.5891L22.8504 14.5798C22.8663 14.5191 22.892 14.421 22.9086 14.2966C22.9252 14.1726 22.9302 14.0459 22.9311 13.9042C22.9321 13.7411 22.9068 13.5471 22.8845 13.4092C22.8623 13.2714 22.8254 13.0792 22.7732 12.9247C22.6526 12.5678 22.5058 12.3416 22.3429 12.0905L19.3391 7.4561ZM17.0991 12L18.5 9.83859L19.9009 12H17.0991Z" fill="black"/>
+</svg>

+ 4 - 0
web/app/components/base/icons/assets/vender/solid/editor/brush-01.svg

@@ -0,0 +1,4 @@
+<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M17.264 2.20765C18.5274 1.0378 20.4895 1.07552 21.707 2.29307C22.9246 3.51061 22.9623 5.47268 21.7924 6.73612L15.4019 13.638C15.008 14.0634 14.811 14.2761 14.579 14.3585C14.3751 14.4309 14.1531 14.4352 13.9465 14.3707C13.7115 14.2973 13.5065 14.0923 13.0965 13.6823L10.3178 10.9036C9.9078 10.4936 9.7028 10.2886 9.62943 10.0536C9.56493 9.84699 9.5692 9.62504 9.6416 9.42107C9.72395 9.18906 9.93667 8.9921 10.3621 8.59817L17.264 2.20765Z" fill="black"/>
+<path d="M8.76212 12.1763C8.35165 11.7659 8.14641 11.5606 7.9013 11.4888C7.7037 11.4308 7.43858 11.4436 7.24747 11.5203C7.01041 11.6154 6.86226 11.7953 6.56595 12.1551C6.46827 12.2737 6.37864 12.398 6.30066 12.53C6.03001 12.9883 5.8908 13.5013 5.88405 14.0163C4.608 13.9077 3.29445 14.3416 2.31799 15.318C1.28682 16.3492 1.34471 17.8002 1.38417 18.7893L1.38921 18.9154C1.43381 20.027 1.46675 20.848 1.11009 21.5439C0.951191 21.8539 0.965076 22.2242 1.14673 22.5215C1.32839 22.8187 1.65165 23 2 23C2.27235 23 2.58299 23.0081 2.91511 23.0167C3.66655 23.0362 4.52805 23.0586 5.30424 22.9968C6.44876 22.9057 7.7418 22.6221 8.68195 21.682C9.65838 20.7056 10.0923 19.3921 9.98366 18.1161C10.4987 18.1093 11.0118 17.9701 11.4701 17.6994C11.6021 17.6215 11.7264 17.5318 11.845 17.4341C12.2048 17.1378 12.3847 16.9897 12.4798 16.7526C12.5565 16.5615 12.5693 16.2964 12.5113 16.0988C12.4395 15.8537 12.2342 15.6484 11.8238 15.238L8.76212 12.1763Z" fill="black"/>
+</svg>

+ 5 - 0
web/app/components/base/icons/assets/vender/solid/general/target-04.svg

@@ -0,0 +1,5 @@
+<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path fill-rule="evenodd" clip-rule="evenodd" d="M19.1601 1.01292C19.4774 1.06441 19.7506 1.26529 19.8944 1.5528L20.7453 3.25466L22.4472 4.10558C22.7347 4.24934 22.9355 4.52254 22.987 4.83983C23.0385 5.15712 22.9343 5.47982 22.707 5.70712L19.707 8.70712C19.5195 8.89466 19.2652 9.00001 18.9999 9.00001H16.4142L12.7071 12.7071C12.3166 13.0976 11.6834 13.0976 11.2929 12.7071C10.9024 12.3166 10.9024 11.6834 11.2929 11.2929L14.9999 7.58585V5.00001C14.9999 4.7348 15.1053 4.48044 15.2928 4.29291L18.2928 1.29291C18.5201 1.06561 18.8428 0.961435 19.1601 1.01292Z" fill="black"/>
+<path d="M3 12C3 7.02944 7.02944 3 12 3C12.5523 3 13 2.55228 13 2C13 1.44772 12.5523 1 12 1C5.92487 1 1 5.92487 1 12C1 18.0751 5.92487 23 12 23C18.0751 23 23 18.0751 23 12C23 11.4477 22.5523 11 22 11C21.4477 11 21 11.4477 21 12C21 16.9706 16.9706 21 12 21C7.02944 21 3 16.9706 3 12Z" fill="black"/>
+<path d="M8 12C8 9.79086 9.79086 8 12 8C12.5523 8 13 7.55228 13 7C13 6.44772 12.5523 6 12 6C8.68629 6 6 8.68629 6 12C6 15.3137 8.68629 18 12 18C15.3137 18 18 15.3137 18 12C18 11.4477 17.5523 11 17 11C16.4477 11 16 11.4477 16 12C16 14.2091 14.2091 16 12 16C9.79086 16 8 14.2091 8 12Z" fill="black"/>
+</svg>

+ 8 - 0
web/app/components/base/icons/assets/vender/solid/mediaAndDevices/sliders-02.svg

@@ -0,0 +1,8 @@
+<svg width="24" height="24" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg">
+<path d="M5 2C5.55228 2 6 2.44772 6 3V7C6 7.55228 5.55228 8 5 8C4.44772 8 4 7.55228 4 7V3C4 2.44772 4.44772 2 5 2Z" fill="black"/>
+<path fill-rule="evenodd" clip-rule="evenodd" d="M6 15.8293C7.16519 15.4175 8 14.3062 8 13C8 11.3431 6.65685 10 5 10C3.34315 10 2 11.3431 2 13C2 14.3062 2.83481 15.4175 4 15.8293L4 21C4 21.5523 4.44772 22 5 22C5.55229 22 6 21.5523 6 21L6 15.8293Z" fill="black"/>
+<path d="M13 15C13 14.4477 12.5523 14 12 14C11.4477 14 11 14.4477 11 15V21C11 21.5523 11.4477 22 12 22C12.5523 22 13 21.5523 13 21V15Z" fill="black"/>
+<path fill-rule="evenodd" clip-rule="evenodd" d="M12 2C12.5523 2 13 2.44772 13 3V6.17071C14.1652 6.58254 15 7.69378 15 9C15 10.6569 13.6569 12 12 12C10.3431 12 9 10.6569 9 9C9 7.69378 9.83481 6.58254 11 6.17071V3C11 2.44772 11.4477 2 12 2Z" fill="black"/>
+<path fill-rule="evenodd" clip-rule="evenodd" d="M22 15C22 16.3062 21.1652 17.4175 20 17.8293V21C20 21.5523 19.5523 22 19 22C18.4477 22 18 21.5523 18 21V17.8293C16.8348 17.4175 16 16.3062 16 15C16 13.3431 17.3431 12 19 12C20.6569 12 22 13.3431 22 15Z" fill="black"/>
+<path d="M19 2C19.5523 2 20 2.44772 20 3V9C20 9.55228 19.5523 10 19 10C18.4477 10 18 9.55228 18 9V3C18 2.44772 18.4477 2 19 2Z" fill="black"/>
+</svg>

+ 5 - 0
web/app/components/base/icons/assets/vender/solid/security/lock-01.svg

@@ -0,0 +1,5 @@
+<svg width="12" height="12" viewBox="0 0 12 12" fill="none" xmlns="http://www.w3.org/2000/svg">
+<g id="lock-01">
+<path id="Solid" fill-rule="evenodd" clip-rule="evenodd" d="M3 4C3 2.34315 4.34315 1 6 1C7.65685 1 9 2.34315 9 4V4.57516C9.1413 4.60613 9.27693 4.65121 9.40798 4.71799C9.78431 4.90973 10.0903 5.2157 10.282 5.59202C10.4057 5.83469 10.4549 6.09304 10.4779 6.37409C10.5 6.64468 10.5 6.97686 10.5 7.37934V8.12066C10.5 8.52314 10.5 8.85532 10.4779 9.12591C10.4549 9.40696 10.4057 9.66531 10.282 9.90798C10.0903 10.2843 9.78431 10.5903 9.40798 10.782C9.16531 10.9057 8.90696 10.9549 8.62591 10.9779C8.35531 11 8.02313 11 7.62064 11H4.37936C3.97687 11 3.64469 11 3.37409 10.9779C3.09304 10.9549 2.83469 10.9057 2.59202 10.782C2.2157 10.5903 1.90973 10.2843 1.71799 9.90798C1.59434 9.66531 1.54506 9.40696 1.5221 9.12591C1.49999 8.85532 1.49999 8.52314 1.5 8.12066V7.37934C1.49999 6.97687 1.49999 6.64468 1.5221 6.37409C1.54506 6.09304 1.59434 5.83469 1.71799 5.59202C1.90973 5.2157 2.2157 4.90973 2.59202 4.71799C2.72307 4.65121 2.8587 4.60613 3 4.57516V4ZM8 4V4.50081H4V4C4 2.89543 4.89543 2 6 2C7.10457 2 8 2.89543 8 4ZM6.5 7.25C6.5 6.97386 6.27614 6.75 6 6.75C5.72386 6.75 5.5 6.97386 5.5 7.25V8.25C5.5 8.52614 5.72386 8.75 6 8.75C6.27614 8.75 6.5 8.52614 6.5 8.25V7.25Z" fill="#667085"/>
+</g>
+</svg>

+ 8 - 0
web/app/components/base/icons/assets/vender/solid/users/user-01.svg

@@ -0,0 +1,8 @@
+<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
+<g id="user-01">
+<g id="Solid">
+<path fill-rule="evenodd" clip-rule="evenodd" d="M5.85731 9.66669C7.28575 9.66701 8.71419 9.66701 10.1426 9.66669C10.6271 9.66659 10.9572 9.66652 11.2455 9.71735C12.6255 9.96068 13.706 11.0412 13.9493 12.4212C14.0002 12.7095 14.0001 13.0396 14 13.524C14 13.6296 14.0032 13.7359 13.9848 13.8404C13.9118 14.2544 13.5876 14.5785 13.1736 14.6515C13.0828 14.6675 12.9872 14.667 12.9396 14.6668C9.64686 14.6491 6.35308 14.6491 3.06031 14.6668C3.01274 14.667 2.9171 14.6675 2.82632 14.6515C2.41231 14.5785 2.08816 14.2544 2.01516 13.8404C1.99675 13.7359 1.99998 13.6296 1.99996 13.524C1.99985 13.0396 1.99978 12.7095 2.05061 12.4212C2.29395 11.0412 3.37444 9.96068 4.75447 9.71735C5.04275 9.66652 5.37286 9.66659 5.85731 9.66669Z" fill="#155EEF"/>
+<path fill-rule="evenodd" clip-rule="evenodd" d="M4.3333 5.00004C4.3333 2.975 5.97493 1.33337 7.99997 1.33337C10.025 1.33337 11.6666 2.975 11.6666 5.00004C11.6666 7.02508 10.025 8.66671 7.99997 8.66671C5.97493 8.66671 4.3333 7.02508 4.3333 5.00004Z" fill="#155EEF"/>
+</g>
+</g>
+</svg>

+ 10 - 0
web/app/components/base/icons/assets/vender/solid/users/users-01.svg

@@ -0,0 +1,10 @@
+<svg width="16" height="16" viewBox="0 0 16 16" fill="none" xmlns="http://www.w3.org/2000/svg">
+<g id="users-01">
+<g id="Solid">
+<path fill-rule="evenodd" clip-rule="evenodd" d="M12.0211 9.91782C12.1128 9.56125 12.4763 9.34659 12.8329 9.43837C14.2704 9.80837 15.3334 11.1125 15.3334 12.6666V14C15.3334 14.3682 15.0349 14.6666 14.6667 14.6666C14.2985 14.6666 14 14.3682 14 14V12.6666C14 11.7356 13.3633 10.9517 12.5005 10.7296C12.1439 10.6378 11.9293 10.2744 12.0211 9.91782Z" fill="#155EEF"/>
+<path fill-rule="evenodd" clip-rule="evenodd" d="M9.7154 1.94368C9.85355 1.60239 10.2422 1.43771 10.5835 1.57586C11.8039 2.06985 12.6667 3.26669 12.6667 4.66665C12.6667 6.0666 11.8039 7.26344 10.5835 7.75743C10.2422 7.89558 9.85355 7.73091 9.7154 7.38962C9.57725 7.04833 9.74193 6.65967 10.0832 6.52152C10.8174 6.22432 11.3334 5.50494 11.3334 4.66665C11.3334 3.82835 10.8174 3.10897 10.0832 2.81178C9.74193 2.67363 9.57725 2.28496 9.7154 1.94368Z" fill="#155EEF"/>
+<path fill-rule="evenodd" clip-rule="evenodd" d="M4.78598 9.33329C5.81757 9.33363 6.84915 9.33363 7.88073 9.33329C8.60781 9.33305 9.10395 9.33289 9.52942 9.44689C10.6797 9.75512 11.5782 10.6536 11.8864 11.8039C12.0399 12.3768 11.9955 12.989 12.0001 13.576C12.0007 13.6473 12.0019 13.7915 11.966 13.9255C11.8735 14.2706 11.6039 14.5401 11.2588 14.6326C11.1248 14.6685 10.9807 14.6673 10.9094 14.6668C7.85941 14.6424 4.80731 14.6424 1.7573 14.6668C1.68602 14.6673 1.54188 14.6685 1.40787 14.6326C1.06278 14.5401 0.793233 14.2706 0.700765 13.9255C0.664858 13.7915 0.666007 13.6473 0.666575 13.576C0.671243 12.9905 0.627014 12.3759 0.780272 11.8039C1.0885 10.6536 1.98699 9.75512 3.13729 9.44689C3.56277 9.33289 4.05891 9.33305 4.78598 9.33329Z" fill="#155EEF"/>
+<path fill-rule="evenodd" clip-rule="evenodd" d="M3.00002 4.66665C3.00002 2.8257 4.49241 1.33331 6.33336 1.33331C8.17431 1.33331 9.66669 2.8257 9.66669 4.66665C9.66669 6.5076 8.17431 7.99998 6.33336 7.99998C4.49241 7.99998 3.00002 6.5076 3.00002 4.66665Z" fill="#155EEF"/>
+</g>
+</g>
+</svg>

+ 52 - 0
web/app/components/base/icons/script.js

@@ -77,6 +77,54 @@ export { default as <%= svgName %> } from './<%= svgName %>'
   await appendFile(path.resolve(currentPath, 'index.ts'), `${indexingRender({ svgName: fileName })}\n`)
 }
 
+const generateImageComponent = async (entry, pathList) => {
+  const currentPath = path.resolve(__dirname, 'src', ...pathList.slice(2))
+
+  try {
+    await access(currentPath)
+  }
+  catch {
+    await generateDir(currentPath)
+  }
+
+  const prefixFileName = camelCase(entry.split('.')[0])
+  const fileName = prefixFileName.charAt(0).toUpperCase() + prefixFileName.slice(1)
+
+  const componentCSSRender = template(`
+.wrapper {
+  display: inline-flex;
+  background: url(<%= assetPath %>) center center no-repeat;
+  background-size: contain;
+}
+`.trim())
+
+  await writeFile(path.resolve(currentPath, `${fileName}.module.css`), `${componentCSSRender({ assetPath: path.join('~@/app/components/base/icons/assets', ...pathList.slice(2), entry) })}\n`)
+
+  const componentRender = template(`
+// GENERATE BY script
+// DON NOT EDIT IT MANUALLY
+
+import * as React from 'react'
+import cn from 'classnames'
+import s from './<%= fileName %>.module.css'
+
+const Icon = React.forwardRef<HTMLSpanElement, React.DetailedHTMLProps<React.HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>>((
+  { className, ...restProps },
+  ref,
+) => <span className={cn(s.wrapper, className)} {...restProps} ref={ref} />)
+
+export default Icon
+`.trim())
+
+  await writeFile(path.resolve(currentPath, `${fileName}.tsx`), `${componentRender({ fileName })}\n`)
+
+  const indexingRender = template(`
+export { default as <%= fileName %> } from './<%= fileName %>'
+`.trim())
+
+  await appendFile(path.resolve(currentPath, 'index.ts'), `${indexingRender({ fileName })}\n`)
+}
+
 const walk = async (entry, pathList, replaceFillOrStrokeColor) => {
   const currentPath = path.resolve(...pathList, entry)
   let fileHandle
@@ -94,6 +142,9 @@ const walk = async (entry, pathList, replaceFillOrStrokeColor) => {
 
     if (stat.isFile() && /.+\.svg$/g.test(entry))
       await generateSvgComponent(fileHandle, entry, pathList, replaceFillOrStrokeColor)
+
+    if (stat.isFile() && /.+\.png$/g.test(entry))
+      await generateImageComponent(entry, pathList)
   }
   finally {
     fileHandle?.close()
@@ -104,4 +155,5 @@ const walk = async (entry, pathList, replaceFillOrStrokeColor) => {
   await rm(path.resolve(__dirname, 'src'), { recursive: true, force: true })
   await walk('public', [__dirname, 'assets'])
   await walk('vender', [__dirname, 'assets'], true)
+  await walk('image', [__dirname, 'assets'])
 })()

+ 5 - 0
web/app/components/base/icons/src/image/llm/Minimax.module.css

@@ -0,0 +1,5 @@
+.wrapper {
+  display: inline-flex;
+  background: url(~@/app/components/base/icons/assets/image/llm/minimax.png) center center no-repeat;
+  background-size: contain;
+}

+ 13 - 0
web/app/components/base/icons/src/image/llm/Minimax.tsx

@@ -0,0 +1,13 @@
+// GENERATE BY script
+// DON NOT EDIT IT MANUALLY
+
+import * as React from 'react'
+import cn from 'classnames'
+import s from './Minimax.module.css'
+
+const Icon = React.forwardRef<HTMLSpanElement, React.DetailedHTMLProps<React.HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>>((
+  { className, ...restProps },
+  ref,
+) => <span className={cn(s.wrapper, className)} {...restProps} ref={ref} />)
+
+export default Icon

+ 5 - 0
web/app/components/base/icons/src/image/llm/MinimaxText.module.css

@@ -0,0 +1,5 @@
+.wrapper {
+  display: inline-flex;
+  background: url(~@/app/components/base/icons/assets/image/llm/minimax-text.png) center center no-repeat;
+  background-size: contain;
+}

+ 13 - 0
web/app/components/base/icons/src/image/llm/MinimaxText.tsx

@@ -0,0 +1,13 @@
+// GENERATE BY script
+// DON NOT EDIT IT MANUALLY
+
+import * as React from 'react'
+import cn from 'classnames'
+import s from './MinimaxText.module.css'
+
+const Icon = React.forwardRef<HTMLSpanElement, React.DetailedHTMLProps<React.HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>>((
+  { className, ...restProps },
+  ref,
+) => <span className={cn(s.wrapper, className)} {...restProps} ref={ref} />)
+
+export default Icon

+ 5 - 0
web/app/components/base/icons/src/image/llm/Tongyi.module.css

@@ -0,0 +1,5 @@
+.wrapper {
+  display: inline-flex;
+  background: url(~@/app/components/base/icons/assets/image/llm/tongyi.png) center center no-repeat;
+  background-size: contain;
+}

+ 13 - 0
web/app/components/base/icons/src/image/llm/Tongyi.tsx

@@ -0,0 +1,13 @@
+// GENERATE BY script
+// DON NOT EDIT IT MANUALLY
+
+import * as React from 'react'
+import cn from 'classnames'
+import s from './Tongyi.module.css'
+
+const Icon = React.forwardRef<HTMLSpanElement, React.DetailedHTMLProps<React.HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>>((
+  { className, ...restProps },
+  ref,
+) => <span className={cn(s.wrapper, className)} {...restProps} ref={ref} />)
+
+export default Icon

+ 5 - 0
web/app/components/base/icons/src/image/llm/TongyiText.module.css

@@ -0,0 +1,5 @@
+.wrapper {
+  display: inline-flex;
+  background: url(~@/app/components/base/icons/assets/image/llm/tongyi-text.png) center center no-repeat;
+  background-size: contain;
+}

+ 13 - 0
web/app/components/base/icons/src/image/llm/TongyiText.tsx

@@ -0,0 +1,13 @@
+// GENERATE BY script
+// DON NOT EDIT IT MANUALLY
+
+import * as React from 'react'
+import cn from 'classnames'
+import s from './TongyiText.module.css'
+
+const Icon = React.forwardRef<HTMLSpanElement, React.DetailedHTMLProps<React.HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>>((
+  { className, ...restProps },
+  ref,
+) => <span className={cn(s.wrapper, className)} {...restProps} ref={ref} />)
+
+export default Icon

+ 5 - 0
web/app/components/base/icons/src/image/llm/TongyiTextCn.module.css

@@ -0,0 +1,5 @@
+.wrapper {
+  display: inline-flex;
+  background: url(~@/app/components/base/icons/assets/image/llm/tongyi-text-cn.png) center center no-repeat;
+  background-size: contain;
+}

+ 13 - 0
web/app/components/base/icons/src/image/llm/TongyiTextCn.tsx

@@ -0,0 +1,13 @@
+// GENERATE BY script
+// DON NOT EDIT IT MANUALLY
+
+import * as React from 'react'
+import cn from 'classnames'
+import s from './TongyiTextCn.module.css'
+
+const Icon = React.forwardRef<HTMLSpanElement, React.DetailedHTMLProps<React.HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>>((
+  { className, ...restProps },
+  ref,
+) => <span className={cn(s.wrapper, className)} {...restProps} ref={ref} />)
+
+export default Icon

+ 5 - 0
web/app/components/base/icons/src/image/llm/Wxyy.module.css

@@ -0,0 +1,5 @@
+.wrapper {
+  display: inline-flex;
+  background: url(~@/app/components/base/icons/assets/image/llm/wxyy.png) center center no-repeat;
+  background-size: contain;
+}

+ 13 - 0
web/app/components/base/icons/src/image/llm/Wxyy.tsx

@@ -0,0 +1,13 @@
+// GENERATE BY script
+// DON NOT EDIT IT MANUALLY
+
+import * as React from 'react'
+import cn from 'classnames'
+import s from './Wxyy.module.css'
+
+const Icon = React.forwardRef<HTMLSpanElement, React.DetailedHTMLProps<React.HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>>((
+  { className, ...restProps },
+  ref,
+) => <span className={cn(s.wrapper, className)} {...restProps} ref={ref} />)
+
+export default Icon

+ 5 - 0
web/app/components/base/icons/src/image/llm/WxyyText.module.css

@@ -0,0 +1,5 @@
+.wrapper {
+  display: inline-flex;
+  background: url(~@/app/components/base/icons/assets/image/llm/wxyy-text.png) center center no-repeat;
+  background-size: contain;
+}

+ 13 - 0
web/app/components/base/icons/src/image/llm/WxyyText.tsx

@@ -0,0 +1,13 @@
+// GENERATE BY script
+// DON NOT EDIT IT MANUALLY
+
+import * as React from 'react'
+import cn from 'classnames'
+import s from './WxyyText.module.css'
+
+const Icon = React.forwardRef<HTMLSpanElement, React.DetailedHTMLProps<React.HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>>((
+  { className, ...restProps },
+  ref,
+) => <span className={cn(s.wrapper, className)} {...restProps} ref={ref} />)
+
+export default Icon

+ 5 - 0
web/app/components/base/icons/src/image/llm/WxyyTextCn.module.css

@@ -0,0 +1,5 @@
+.wrapper {
+  display: inline-flex;
+  background: url(~@/app/components/base/icons/assets/image/llm/wxyy-text-cn.png) center center no-repeat;
+  background-size: contain;
+}

+ 13 - 0
web/app/components/base/icons/src/image/llm/WxyyTextCn.tsx

@@ -0,0 +1,13 @@
+// GENERATE BY script
+// DON NOT EDIT IT MANUALLY
+
+import * as React from 'react'
+import cn from 'classnames'
+import s from './WxyyTextCn.module.css'
+
+const Icon = React.forwardRef<HTMLSpanElement, React.DetailedHTMLProps<React.HTMLAttributes<HTMLSpanElement>, HTMLSpanElement>>((
+  { className, ...restProps },
+  ref,
+) => <span className={cn(s.wrapper, className)} {...restProps} ref={ref} />)
+
+export default Icon

+ 8 - 0
web/app/components/base/icons/src/image/llm/index.ts

@@ -0,0 +1,8 @@
+export { default as MinimaxText } from './MinimaxText'
+export { default as Minimax } from './Minimax'
+export { default as TongyiTextCn } from './TongyiTextCn'
+export { default as TongyiText } from './TongyiText'
+export { default as Tongyi } from './Tongyi'
+export { default as WxyyTextCn } from './WxyyTextCn'
+export { default as WxyyText } from './WxyyText'
+export { default as Wxyy } from './Wxyy'

+ 3 - 53
web/app/components/base/icons/src/public/llm/Anthropic.json

@@ -24,62 +24,12 @@
 			},
 			{
 				"type": "element",
-				"name": "g",
+				"name": "path",
 				"attributes": {
-					"clip-path": "url(#clip0_7672_55906)"
-				},
-				"children": [
-					{
-						"type": "element",
-						"name": "path",
-						"attributes": {
-							"d": "M15.3843 6.43457H12.9687L17.3739 17.565H19.7896L15.3843 6.43457ZM8.40522 6.43457L4 17.565H6.4633L7.36417 15.2276H11.9729L12.8737 17.565H15.337L10.9318 6.43457H8.40522ZM8.16104 13.1605L9.66852 9.24883L11.176 13.1605H8.16104Z",
-							"fill": "#191918"
-						},
-						"children": []
-					}
-				]
-			},
-			{
-				"type": "element",
-				"name": "rect",
-				"attributes": {
-					"x": "0.5",
-					"y": "0.5",
-					"width": "23",
-					"height": "23",
-					"rx": "5.5",
-					"stroke": "black",
-					"stroke-opacity": "0.05"
+					"d": "M15.3843 6.43481H12.9687L17.3739 17.5652H19.7896L15.3843 6.43481ZM8.40522 6.43481L4 17.5652H6.4633L7.36417 15.2279H11.9729L12.8737 17.5652H15.337L10.9318 6.43481H8.40522ZM8.16104 13.1607L9.66852 9.24907L11.176 13.1607H8.16104Z",
+					"fill": "#191918"
 				},
 				"children": []
-			},
-			{
-				"type": "element",
-				"name": "defs",
-				"attributes": {},
-				"children": [
-					{
-						"type": "element",
-						"name": "clipPath",
-						"attributes": {
-							"id": "clip0_7672_55906"
-						},
-						"children": [
-							{
-								"type": "element",
-								"name": "rect",
-								"attributes": {
-									"width": "16",
-									"height": "11.1304",
-									"fill": "white",
-									"transform": "translate(4 6.43457)"
-								},
-								"children": []
-							}
-						]
-					}
-				]
 			}
 		]
 	},

+ 539 - 0
web/app/components/base/icons/src/public/llm/AnthropicText.json

@@ -0,0 +1,539 @@
+{
+	"icon": {
+		"type": "element",
+		"isRootNode": true,
+		"name": "svg",
+		"attributes": {
+			"width": "90",
+			"height": "20",
+			"viewBox": "0 0 90 20",
+			"fill": "none",
+			"xmlns": "http://www.w3.org/2000/svg"
+		},
+		"children": [
+			{
+				"type": "element",
+				"name": "g",
+				"attributes": {
+					"clip-path": "url(#clip0_8587_60274)"
+				},
+				"children": [
+					{
+						"type": "element",
+						"name": "mask",
+						"attributes": {
+							"id": "mask0_8587_60274",
+							"style": "mask-type:luminance",
+							"maskUnits": "userSpaceOnUse",
+							"x": "0",
+							"y": "4",
+							"width": "90",
+							"height": "11"
+						},
+						"children": [
+							{
+								"type": "element",
+								"name": "path",
+								"attributes": {
+									"d": "M89.375 4.99805H0V14.998H89.375V4.99805Z",
+									"fill": "white"
+								},
+								"children": []
+							}
+						]
+					},
+					{
+						"type": "element",
+						"name": "g",
+						"attributes": {
+							"mask": "url(#mask0_8587_60274)"
+						},
+						"children": [
+							{
+								"type": "element",
+								"name": "mask",
+								"attributes": {
+									"id": "mask1_8587_60274",
+									"style": "mask-type:luminance",
+									"maskUnits": "userSpaceOnUse",
+									"x": "0",
+									"y": "4",
+									"width": "90",
+									"height": "11"
+								},
+								"children": [
+									{
+										"type": "element",
+										"name": "path",
+										"attributes": {
+											"d": "M0 4.99609H89.375V14.9961H0V4.99609Z",
+											"fill": "white"
+										},
+										"children": []
+									}
+								]
+							},
+							{
+								"type": "element",
+								"name": "g",
+								"attributes": {
+									"mask": "url(#mask1_8587_60274)"
+								},
+								"children": [
+									{
+										"type": "element",
+										"name": "mask",
+										"attributes": {
+											"id": "mask2_8587_60274",
+											"style": "mask-type:luminance",
+											"maskUnits": "userSpaceOnUse",
+											"x": "0",
+											"y": "4",
+											"width": "90",
+											"height": "11"
+										},
+										"children": [
+											{
+												"type": "element",
+												"name": "path",
+												"attributes": {
+													"d": "M0 4.99414H89.375V14.9941H0V4.99414Z",
+													"fill": "white"
+												},
+												"children": []
+											}
+										]
+									},
+									{
+										"type": "element",
+										"name": "g",
+										"attributes": {
+											"mask": "url(#mask2_8587_60274)"
+										},
+										"children": [
+											{
+												"type": "element",
+												"name": "mask",
+												"attributes": {
+													"id": "mask3_8587_60274",
+													"style": "mask-type:luminance",
+													"maskUnits": "userSpaceOnUse",
+													"x": "0",
+													"y": "4",
+													"width": "90",
+													"height": "11"
+												},
+												"children": [
+													{
+														"type": "element",
+														"name": "path",
+														"attributes": {
+															"d": "M0 4.99219H89.375V14.9922H0V4.99219Z",
+															"fill": "white"
+														},
+														"children": []
+													}
+												]
+											},
+											{
+												"type": "element",
+												"name": "g",
+												"attributes": {
+													"mask": "url(#mask3_8587_60274)"
+												},
+												"children": [
+													{
+														"type": "element",
+														"name": "path",
+														"attributes": {
+															"d": "M18.1273 11.9244L13.7773 5.15625H11.4297V14.825H13.4321V8.05688L17.7821 14.825H20.1297V5.15625H18.1273V11.9244Z",
+															"fill": "black",
+															"fill-opacity": "0.92"
+														},
+														"children": []
+													}
+												]
+											},
+											{
+												"type": "element",
+												"name": "mask",
+												"attributes": {
+													"id": "mask4_8587_60274",
+													"style": "mask-type:luminance",
+													"maskUnits": "userSpaceOnUse",
+													"x": "0",
+													"y": "4",
+													"width": "90",
+													"height": "11"
+												},
+												"children": [
+													{
+														"type": "element",
+														"name": "path",
+														"attributes": {
+															"d": "M0 4.99219H89.375V14.9922H0V4.99219Z",
+															"fill": "white"
+														},
+														"children": []
+													}
+												]
+											},
+											{
+												"type": "element",
+												"name": "g",
+												"attributes": {
+													"mask": "url(#mask4_8587_60274)"
+												},
+												"children": [
+													{
+														"type": "element",
+														"name": "path",
+														"attributes": {
+															"d": "M21.7969 7.02094H25.0423V14.825H27.1139V7.02094H30.3594V5.15625H21.7969V7.02094Z",
+															"fill": "black",
+															"fill-opacity": "0.92"
+														},
+														"children": []
+													}
+												]
+											},
+											{
+												"type": "element",
+												"name": "mask",
+												"attributes": {
+													"id": "mask5_8587_60274",
+													"style": "mask-type:luminance",
+													"maskUnits": "userSpaceOnUse",
+													"x": "0",
+													"y": "4",
+													"width": "90",
+													"height": "11"
+												},
+												"children": [
+													{
+														"type": "element",
+														"name": "path",
+														"attributes": {
+															"d": "M0 4.99219H89.375V14.9922H0V4.99219Z",
+															"fill": "white"
+														},
+														"children": []
+													}
+												]
+											},
+											{
+												"type": "element",
+												"name": "g",
+												"attributes": {
+													"mask": "url(#mask5_8587_60274)"
+												},
+												"children": [
+													{
+														"type": "element",
+														"name": "path",
+														"attributes": {
+															"d": "M38.6442 9.00994H34.0871V5.15625H32.0156V14.825H34.0871V10.8746H38.6442V14.825H40.7156V5.15625H38.6442V9.00994Z",
+															"fill": "black",
+															"fill-opacity": "0.92"
+														},
+														"children": []
+													}
+												]
+											},
+											{
+												"type": "element",
+												"name": "mask",
+												"attributes": {
+													"id": "mask6_8587_60274",
+													"style": "mask-type:luminance",
+													"maskUnits": "userSpaceOnUse",
+													"x": "0",
+													"y": "4",
+													"width": "90",
+													"height": "11"
+												},
+												"children": [
+													{
+														"type": "element",
+														"name": "path",
+														"attributes": {
+															"d": "M0 4.99219H89.375V14.9922H0V4.99219Z",
+															"fill": "white"
+														},
+														"children": []
+													}
+												]
+											},
+											{
+												"type": "element",
+												"name": "g",
+												"attributes": {
+													"mask": "url(#mask6_8587_60274)"
+												},
+												"children": [
+													{
+														"type": "element",
+														"name": "path",
+														"attributes": {
+															"d": "M45.3376 7.02094H47.893C48.9152 7.02094 49.4539 7.39387 49.4539 8.09831C49.4539 8.80275 48.9152 9.17569 47.893 9.17569H45.3376V7.02094ZM51.5259 8.09831C51.5259 6.27506 50.186 5.15625 47.9897 5.15625H43.2656V14.825H45.3376V11.0404H47.6443L49.7164 14.825H52.0094L49.715 10.7521C50.8666 10.3094 51.5259 9.37721 51.5259 8.09831Z",
+															"fill": "black",
+															"fill-opacity": "0.92"
+														},
+														"children": []
+													}
+												]
+											},
+											{
+												"type": "element",
+												"name": "mask",
+												"attributes": {
+													"id": "mask7_8587_60274",
+													"style": "mask-type:luminance",
+													"maskUnits": "userSpaceOnUse",
+													"x": "0",
+													"y": "4",
+													"width": "90",
+													"height": "11"
+												},
+												"children": [
+													{
+														"type": "element",
+														"name": "path",
+														"attributes": {
+															"d": "M0 4.99219H89.375V14.9922H0V4.99219Z",
+															"fill": "white"
+														},
+														"children": []
+													}
+												]
+											},
+											{
+												"type": "element",
+												"name": "g",
+												"attributes": {
+													"mask": "url(#mask7_8587_60274)"
+												},
+												"children": [
+													{
+														"type": "element",
+														"name": "path",
+														"attributes": {
+															"d": "M57.8732 13.0565C56.2438 13.0565 55.2496 11.8963 55.2496 10.004C55.2496 8.08416 56.2438 6.92394 57.8732 6.92394C59.4887 6.92394 60.4691 8.08416 60.4691 10.004C60.4691 11.8963 59.4887 13.0565 57.8732 13.0565ZM57.8732 4.99023C55.0839 4.99023 53.1094 7.06206 53.1094 10.004C53.1094 12.9184 55.0839 14.9902 57.8732 14.9902C60.6486 14.9902 62.6094 12.9184 62.6094 10.004C62.6094 7.06206 60.6486 4.99023 57.8732 4.99023Z",
+															"fill": "black",
+															"fill-opacity": "0.92"
+														},
+														"children": []
+													}
+												]
+											},
+											{
+												"type": "element",
+												"name": "mask",
+												"attributes": {
+													"id": "mask8_8587_60274",
+													"style": "mask-type:luminance",
+													"maskUnits": "userSpaceOnUse",
+													"x": "0",
+													"y": "4",
+													"width": "90",
+													"height": "11"
+												},
+												"children": [
+													{
+														"type": "element",
+														"name": "path",
+														"attributes": {
+															"d": "M0 4.99219H89.375V14.9922H0V4.99219Z",
+															"fill": "white"
+														},
+														"children": []
+													}
+												]
+											},
+											{
+												"type": "element",
+												"name": "g",
+												"attributes": {
+													"mask": "url(#mask8_8587_60274)"
+												},
+												"children": [
+													{
+														"type": "element",
+														"name": "path",
+														"attributes": {
+															"d": "M69.1794 9.45194H66.6233V7.02094H69.1794C70.2019 7.02094 70.7407 7.43532 70.7407 8.23644C70.7407 9.03756 70.2019 9.45194 69.1794 9.45194ZM69.2762 5.15625H64.5508V14.825H66.6233V11.3166H69.2762C71.473 11.3166 72.8133 10.1564 72.8133 8.23644C72.8133 6.3165 71.473 5.15625 69.2762 5.15625Z",
+															"fill": "black",
+															"fill-opacity": "0.92"
+														},
+														"children": []
+													}
+												]
+											},
+											{
+												"type": "element",
+												"name": "mask",
+												"attributes": {
+													"id": "mask9_8587_60274",
+													"style": "mask-type:luminance",
+													"maskUnits": "userSpaceOnUse",
+													"x": "0",
+													"y": "4",
+													"width": "90",
+													"height": "11"
+												},
+												"children": [
+													{
+														"type": "element",
+														"name": "path",
+														"attributes": {
+															"d": "M0 4.99219H89.375V14.9922H0V4.99219Z",
+															"fill": "white"
+														},
+														"children": []
+													}
+												]
+											},
+											{
+												"type": "element",
+												"name": "g",
+												"attributes": {
+													"mask": "url(#mask9_8587_60274)"
+												},
+												"children": [
+													{
+														"type": "element",
+														"name": "path",
+														"attributes": {
+															"d": "M86.8413 11.5786C86.4823 12.5179 85.7642 13.0565 84.7837 13.0565C83.1542 13.0565 82.16 11.8963 82.16 10.004C82.16 8.08416 83.1542 6.92394 84.7837 6.92394C85.7642 6.92394 86.4823 7.46261 86.8413 8.40183H89.0369C88.4984 6.33002 86.8827 4.99023 84.7837 4.99023C81.9942 4.99023 80.0195 7.06206 80.0195 10.004C80.0195 12.9184 81.9942 14.9902 84.7837 14.9902C86.8965 14.9902 88.5122 13.6366 89.0508 11.5786H86.8413Z",
+															"fill": "black",
+															"fill-opacity": "0.92"
+														},
+														"children": []
+													}
+												]
+											},
+											{
+												"type": "element",
+												"name": "mask",
+												"attributes": {
+													"id": "mask10_8587_60274",
+													"style": "mask-type:luminance",
+													"maskUnits": "userSpaceOnUse",
+													"x": "0",
+													"y": "4",
+													"width": "90",
+													"height": "11"
+												},
+												"children": [
+													{
+														"type": "element",
+														"name": "path",
+														"attributes": {
+															"d": "M0 4.99219H89.375V14.9922H0V4.99219Z",
+															"fill": "white"
+														},
+														"children": []
+													}
+												]
+											},
+											{
+												"type": "element",
+												"name": "g",
+												"attributes": {
+													"mask": "url(#mask10_8587_60274)"
+												},
+												"children": [
+													{
+														"type": "element",
+														"name": "path",
+														"attributes": {
+															"d": "M73.6484 5.15625L77.5033 14.825H79.6172L75.7624 5.15625H73.6484Z",
+															"fill": "black",
+															"fill-opacity": "0.92"
+														},
+														"children": []
+													}
+												]
+											},
+											{
+												"type": "element",
+												"name": "mask",
+												"attributes": {
+													"id": "mask11_8587_60274",
+													"style": "mask-type:luminance",
+													"maskUnits": "userSpaceOnUse",
+													"x": "0",
+													"y": "4",
+													"width": "90",
+													"height": "11"
+												},
+												"children": [
+													{
+														"type": "element",
+														"name": "path",
+														"attributes": {
+															"d": "M0 4.99219H89.375V14.9922H0V4.99219Z",
+															"fill": "white"
+														},
+														"children": []
+													}
+												]
+											},
+											{
+												"type": "element",
+												"name": "g",
+												"attributes": {
+													"mask": "url(#mask11_8587_60274)"
+												},
+												"children": [
+													{
+														"type": "element",
+														"name": "path",
+														"attributes": {
+															"d": "M3.64038 10.9989L4.95938 7.60106L6.27838 10.9989H3.64038ZM3.85422 5.15625L0 14.825H2.15505L2.9433 12.7946H6.97558L7.76371 14.825H9.91875L6.06453 5.15625H3.85422Z",
+															"fill": "black",
+															"fill-opacity": "0.92"
+														},
+														"children": []
+													}
+												]
+											}
+										]
+									}
+								]
+							}
+						]
+					}
+				]
+			},
+			{
+				"type": "element",
+				"name": "defs",
+				"attributes": {},
+				"children": [
+					{
+						"type": "element",
+						"name": "clipPath",
+						"attributes": {
+							"id": "clip0_8587_60274"
+						},
+						"children": [
+							{
+								"type": "element",
+								"name": "rect",
+								"attributes": {
+									"width": "89.375",
+									"height": "10",
+									"fill": "white",
+									"transform": "translate(0 5)"
+								},
+								"children": []
+							}
+						]
+					}
+				]
+			}
+		]
+	},
+	"name": "AnthropicText"
+}

+ 14 - 0
web/app/components/base/icons/src/public/llm/AnthropicText.tsx

@@ -0,0 +1,14 @@
+// GENERATE BY script
+// DON NOT EDIT IT MANUALLY
+
+import * as React from 'react'
+import data from './AnthropicText.json'
+import IconBase from '@/app/components/base/icons/IconBase'
+import type { IconBaseProps, IconData } from '@/app/components/base/icons/IconBase'
+
+const Icon = React.forwardRef<React.MutableRefObject<SVGElement>, Omit<IconBaseProps, 'data'>>((
+  props,
+  ref,
+) => <IconBase {...props} ref={ref} data={data as IconData} />)
+
+export default Icon

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 65 - 0
web/app/components/base/icons/src/public/llm/AzureOpenaiService.json


+ 14 - 0
web/app/components/base/icons/src/public/llm/AzureOpenaiService.tsx

@@ -0,0 +1,14 @@
+// GENERATE BY script
+// DON NOT EDIT IT MANUALLY
+
+import * as React from 'react'
+import data from './AzureOpenaiService.json'
+import IconBase from '@/app/components/base/icons/IconBase'
+import type { IconBaseProps, IconData } from '@/app/components/base/icons/IconBase'
+
+const Icon = React.forwardRef<React.MutableRefObject<SVGElement>, Omit<IconBaseProps, 'data'>>((
+  props,
+  ref,
+) => <IconBase {...props} ref={ref} data={data as IconData} />)
+
+export default Icon

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 65 - 0
web/app/components/base/icons/src/public/llm/AzureOpenaiServiceText.json


+ 14 - 0
web/app/components/base/icons/src/public/llm/AzureOpenaiServiceText.tsx

@@ -0,0 +1,14 @@
+// GENERATE BY script
+// DON NOT EDIT IT MANUALLY
+
+import * as React from 'react'
+import data from './AzureOpenaiServiceText.json'
+import IconBase from '@/app/components/base/icons/IconBase'
+import type { IconBaseProps, IconData } from '@/app/components/base/icons/IconBase'
+
+const Icon = React.forwardRef<React.MutableRefObject<SVGElement>, Omit<IconBaseProps, 'data'>>((
+  props,
+  ref,
+) => <IconBase {...props} ref={ref} data={data as IconData} />)
+
+export default Icon

+ 180 - 0
web/app/components/base/icons/src/public/llm/Azureai.json

@@ -0,0 +1,180 @@
+{
+	"icon": {
+		"type": "element",
+		"isRootNode": true,
+		"name": "svg",
+		"attributes": {
+			"width": "24",
+			"height": "24",
+			"viewBox": "0 0 24 24",
+			"fill": "none",
+			"xmlns": "http://www.w3.org/2000/svg"
+		},
+		"children": [
+			{
+				"type": "element",
+				"name": "path",
+				"attributes": {
+					"d": "M8.41642 1.13526H14.9266L8.16839 21.1596C8.09893 21.3654 7.96669 21.5442 7.79029 21.6708C7.61389 21.7975 7.4022 21.8657 7.18504 21.8657H2.11851C1.95397 21.8657 1.79179 21.8266 1.64539 21.7515C1.49898 21.6764 1.37257 21.5675 1.27659 21.4338C1.18062 21.3002 1.11784 21.1456 1.09347 20.9829C1.06909 20.8201 1.08381 20.6539 1.13641 20.498L7.43281 1.84135C7.50224 1.6355 7.6345 1.45662 7.81096 1.3299C7.98742 1.20319 8.19918 1.13527 8.41642 1.13526Z",
+					"fill": "url(#paint0_linear_8587_60253)"
+				},
+				"children": []
+			},
+			{
+				"type": "element",
+				"name": "path",
+				"attributes": {
+					"d": "M17.8761 14.5664H7.55255C7.45657 14.5663 7.36278 14.5951 7.28341 14.6491C7.20403 14.703 7.14275 14.7796 7.10754 14.8689C7.07232 14.9582 7.06482 15.056 7.08599 15.1496C7.10717 15.2433 7.15605 15.3283 7.22626 15.3938L13.86 21.5856C14.0531 21.7657 14.3074 21.8659 14.5715 21.8659H20.4171L17.8761 14.5664Z",
+					"fill": "#0078D4"
+				},
+				"children": []
+			},
+			{
+				"type": "element",
+				"name": "path",
+				"attributes": {
+					"d": "M8.41509 1.13502C8.19548 1.13417 7.98136 1.20358 7.80399 1.33308C7.62663 1.46259 7.49532 1.64542 7.42924 1.85486L1.14283 20.4808C1.0867 20.6373 1.06907 20.805 1.09145 20.9697C1.11383 21.1344 1.17556 21.2913 1.2714 21.4272C1.36725 21.563 1.4944 21.6737 1.6421 21.75C1.7898 21.8263 1.9537 21.8659 2.11994 21.8655H7.31723C7.5108 21.8309 7.69172 21.7455 7.84151 21.6181C7.9913 21.4907 8.10459 21.3259 8.16982 21.1404L9.42345 17.4456L13.9014 21.6224C14.0891 21.7776 14.3245 21.8635 14.568 21.8655H20.3918L17.8376 14.566L10.3916 14.5678L14.9488 1.13502H8.41509Z",
+					"fill": "url(#paint1_linear_8587_60253)"
+				},
+				"children": []
+			},
+			{
+				"type": "element",
+				"name": "path",
+				"attributes": {
+					"d": "M16.7308 1.8401C16.6614 1.63458 16.5294 1.456 16.3532 1.3295C16.177 1.20301 15.9656 1.13498 15.7487 1.13501H8.49316C8.71005 1.13502 8.92147 1.20306 9.09765 1.32955C9.27383 1.45604 9.4059 1.6346 9.47527 1.8401L15.7719 20.4975C15.8246 20.6535 15.8393 20.8197 15.815 20.9825C15.7906 21.1452 15.7278 21.2999 15.6319 21.4336C15.5359 21.5673 15.4095 21.6762 15.263 21.7514C15.1166 21.8265 14.9544 21.8657 14.7898 21.8657H22.0456C22.2101 21.8657 22.3723 21.8264 22.5187 21.7513C22.6651 21.6761 22.7915 21.5672 22.8875 21.4335C22.9834 21.2998 23.0461 21.1452 23.0705 20.9824C23.0948 20.8197 23.0801 20.6534 23.0274 20.4975L16.7308 1.8401Z",
+					"fill": "url(#paint2_linear_8587_60253)"
+				},
+				"children": []
+			},
+			{
+				"type": "element",
+				"name": "defs",
+				"attributes": {},
+				"children": [
+					{
+						"type": "element",
+						"name": "linearGradient",
+						"attributes": {
+							"id": "paint0_linear_8587_60253",
+							"x1": "10.7892",
+							"y1": "2.67146",
+							"x2": "4.0279",
+							"y2": "22.6454",
+							"gradientUnits": "userSpaceOnUse"
+						},
+						"children": [
+							{
+								"type": "element",
+								"name": "stop",
+								"attributes": {
+									"stop-color": "#114A8B"
+								},
+								"children": []
+							},
+							{
+								"type": "element",
+								"name": "stop",
+								"attributes": {
+									"offset": "1",
+									"stop-color": "#0669BC"
+								},
+								"children": []
+							}
+						]
+					},
+					{
+						"type": "element",
+						"name": "linearGradient",
+						"attributes": {
+							"id": "paint1_linear_8587_60253",
+							"x1": "12.8998",
+							"y1": "11.9797",
+							"x2": "11.3359",
+							"y2": "12.5085",
+							"gradientUnits": "userSpaceOnUse"
+						},
+						"children": [
+							{
+								"type": "element",
+								"name": "stop",
+								"attributes": {
+									"stop-opacity": "0.3"
+								},
+								"children": []
+							},
+							{
+								"type": "element",
+								"name": "stop",
+								"attributes": {
+									"offset": "0.071",
+									"stop-opacity": "0.2"
+								},
+								"children": []
+							},
+							{
+								"type": "element",
+								"name": "stop",
+								"attributes": {
+									"offset": "0.321",
+									"stop-opacity": "0.1"
+								},
+								"children": []
+							},
+							{
+								"type": "element",
+								"name": "stop",
+								"attributes": {
+									"offset": "0.623",
+									"stop-opacity": "0.05"
+								},
+								"children": []
+							},
+							{
+								"type": "element",
+								"name": "stop",
+								"attributes": {
+									"offset": "1",
+									"stop-opacity": "0"
+								},
+								"children": []
+							}
+						]
+					},
+					{
+						"type": "element",
+						"name": "linearGradient",
+						"attributes": {
+							"id": "paint2_linear_8587_60253",
+							"x1": "12.0403",
+							"y1": "2.08863",
+							"x2": "19.4621",
+							"y2": "21.8613",
+							"gradientUnits": "userSpaceOnUse"
+						},
+						"children": [
+							{
+								"type": "element",
+								"name": "stop",
+								"attributes": {
+									"stop-color": "#3CCBF4"
+								},
+								"children": []
+							},
+							{
+								"type": "element",
+								"name": "stop",
+								"attributes": {
+									"offset": "1",
+									"stop-color": "#2892DF"
+								},
+								"children": []
+							}
+						]
+					}
+				]
+			}
+		]
+	},
+	"name": "Azureai"
+}

+ 14 - 0
web/app/components/base/icons/src/public/llm/Azureai.tsx

@@ -0,0 +1,14 @@
+// GENERATE BY script
+// DON NOT EDIT IT MANUALLY
+
+import * as React from 'react'
+import data from './Azureai.json'
+import IconBase from '@/app/components/base/icons/IconBase'
+import type { IconBaseProps, IconData } from '@/app/components/base/icons/IconBase'
+
+const Icon = React.forwardRef<React.MutableRefObject<SVGElement>, Omit<IconBaseProps, 'data'>>((
+  props,
+  ref,
+) => <IconBase {...props} ref={ref} data={data as IconData} />)
+
+export default Icon

+ 243 - 0
web/app/components/base/icons/src/public/llm/AzureaiText.json

@@ -0,0 +1,243 @@
+{
+	"icon": {
+		"type": "element",
+		"isRootNode": true,
+		"name": "svg",
+		"attributes": {
+			"width": "92",
+			"height": "24",
+			"viewBox": "0 0 92 24",
+			"fill": "none",
+			"xmlns": "http://www.w3.org/2000/svg"
+		},
+		"children": [
+			{
+				"type": "element",
+				"name": "path",
+				"attributes": {
+					"d": "M9.63655 2.50023H15.6036L9.40921 20.8535C9.34555 21.0421 9.22434 21.206 9.06266 21.3221C8.90097 21.4382 8.70695 21.5006 8.5079 21.5007H3.86407C3.71326 21.5007 3.56461 21.4648 3.43042 21.396C3.29623 21.3271 3.18036 21.2273 3.09239 21.1048C3.00442 20.9823 2.94689 20.8406 2.92454 20.6915C2.9022 20.5424 2.91569 20.39 2.9639 20.2471L8.73501 3.1474C8.79864 2.95872 8.91987 2.79477 9.0816 2.67863C9.24334 2.56249 9.43743 2.50024 9.63655 2.50023Z",
+					"fill": "url(#paint0_linear_8587_60561)"
+				},
+				"children": []
+			},
+			{
+				"type": "element",
+				"name": "path",
+				"attributes": {
+					"d": "M18.307 14.8105H8.84467C8.7567 14.8104 8.67074 14.8368 8.59799 14.8863C8.52524 14.9358 8.46906 15.006 8.43679 15.0878C8.40451 15.1697 8.39763 15.2593 8.41704 15.3451C8.43645 15.4309 8.48125 15.5089 8.54561 15.5689L14.6259 21.2439C14.8029 21.4091 15.036 21.5009 15.2781 21.5008H20.636L18.307 14.8105Z",
+					"fill": "#0078D4"
+				},
+				"children": []
+			},
+			{
+				"type": "element",
+				"name": "path",
+				"attributes": {
+					"d": "M9.63533 2.50001C9.43405 2.49923 9.23778 2.56284 9.07521 2.68154C8.91265 2.80024 8.79229 2.96781 8.73173 3.15978L2.96979 20.2313C2.91834 20.3747 2.90219 20.5284 2.9227 20.6794C2.94321 20.8304 2.99979 20.9742 3.08764 21.0987C3.17549 21.2232 3.29203 21.3247 3.42741 21.3946C3.56278 21.4646 3.71301 21.5009 3.86538 21.5004H8.62906C8.80648 21.4687 8.97231 21.3905 9.1096 21.2738C9.2469 21.157 9.35074 21.0059 9.41052 20.8359L10.5596 17.4495L14.6639 21.2777C14.8359 21.42 15.0517 21.4986 15.2749 21.5004H20.6129L18.2717 14.8102L11.4469 14.8118L15.6239 2.50001H9.63533Z",
+					"fill": "url(#paint1_linear_8587_60561)"
+				},
+				"children": []
+			},
+			{
+				"type": "element",
+				"name": "path",
+				"attributes": {
+					"d": "M17.2574 3.14625C17.1938 2.95788 17.0728 2.7942 16.9113 2.67826C16.7498 2.56233 16.556 2.49998 16.3572 2.5H9.70703C9.90582 2.50001 10.0996 2.56237 10.2611 2.67831C10.4226 2.79424 10.5436 2.9579 10.6072 3.14625L16.3785 20.2467C16.4268 20.3896 16.4403 20.542 16.418 20.6911C16.3957 20.8403 16.3381 20.9821 16.2502 21.1046C16.1622 21.2271 16.0463 21.327 15.9121 21.3959C15.7779 21.4647 15.6292 21.5007 15.4784 21.5007H22.1288C22.2796 21.5006 22.4283 21.4647 22.5624 21.3958C22.6966 21.3269 22.8125 21.2271 22.9004 21.1045C22.9884 20.982 23.0459 20.8403 23.0682 20.6911C23.0905 20.5419 23.077 20.3896 23.0287 20.2467L17.2574 3.14625Z",
+					"fill": "url(#paint2_linear_8587_60561)"
+				},
+				"children": []
+			},
+			{
+				"type": "element",
+				"name": "path",
+				"attributes": {
+					"d": "M34.312 17.0001H32.3433L35.9278 6.81824H38.2048L41.7943 17.0001H39.8255L37.106 8.90631H37.0265L34.312 17.0001ZM34.3766 13.0079H39.746V14.4894H34.3766V13.0079Z",
+					"fill": "#1D2939"
+				},
+				"children": []
+			},
+			{
+				"type": "element",
+				"name": "path",
+				"attributes": {
+					"d": "M42.9564 17.0001V15.8566L46.8939 10.9198V10.8552H43.0856V9.36369H49.0963V10.5917L45.3477 15.4439V15.5086H49.2255V17.0001H42.9564Z",
+					"fill": "#1D2939"
+				},
+				"children": []
+			},
+			{
+				"type": "element",
+				"name": "path",
+				"attributes": {
+					"d": "M55.7843 13.7884V9.36369H57.584V17.0001H55.839V15.6428H55.7595C55.5871 16.0704 55.3037 16.42 54.9093 16.6918C54.5182 16.9636 54.036 17.0995 53.4626 17.0995C52.9621 17.0995 52.5196 16.9885 52.1352 16.7664C51.754 16.541 51.4557 16.2145 51.2403 15.787C51.0248 15.3561 50.9171 14.8358 50.9171 14.2259V9.36369H52.7168V13.9475C52.7168 14.4314 52.8494 14.8159 53.1146 15.1009C53.3797 15.3859 53.7277 15.5285 54.1586 15.5285C54.4238 15.5285 54.6806 15.4638 54.9292 15.3346C55.1778 15.2053 55.3816 15.0131 55.5407 14.7579C55.7031 14.4993 55.7843 14.1762 55.7843 13.7884Z",
+					"fill": "#1D2939"
+				},
+				"children": []
+			},
+			{
+				"type": "element",
+				"name": "path",
+				"attributes": {
+					"d": "M59.4347 17.0001V9.36369H61.1797V10.6364H61.2593C61.3985 10.1956 61.6371 9.85588 61.9752 9.61724C62.3166 9.37529 62.706 9.25432 63.1435 9.25432C63.2429 9.25432 63.354 9.25929 63.4766 9.26923C63.6026 9.27586 63.707 9.28746 63.7898 9.30403V10.9596C63.7136 10.9331 63.5926 10.9099 63.4269 10.89C63.2645 10.8668 63.1071 10.8552 62.9546 10.8552C62.6265 10.8552 62.3315 10.9264 62.0696 11.0689C61.8111 11.2082 61.6073 11.402 61.4581 11.6506C61.309 11.8992 61.2344 12.1859 61.2344 12.5107V17.0001H59.4347Z",
+					"fill": "#1D2939"
+				},
+				"children": []
+			},
+			{
+				"type": "element",
+				"name": "path",
+				"attributes": {
+					"d": "M68.0517 17.1492C67.2861 17.1492 66.6249 16.9901 66.068 16.6719C65.5145 16.3504 65.0886 15.8964 64.7903 15.3097C64.4921 14.7198 64.3429 14.0254 64.3429 13.2266C64.3429 12.4411 64.4921 11.7517 64.7903 11.1584C65.092 10.5618 65.5129 10.0978 66.0531 9.76639C66.5934 9.43164 67.2281 9.26426 67.9573 9.26426C68.4279 9.26426 68.872 9.34049 69.2896 9.49295C69.7106 9.6421 70.0818 9.87411 70.4033 10.189C70.7281 10.5038 70.9833 10.9049 71.1689 11.3921C71.3545 11.876 71.4473 12.4527 71.4473 13.1222V13.6741H65.1881V12.461H69.7222C69.7189 12.1163 69.6443 11.8097 69.4984 11.5412C69.3526 11.2695 69.1488 11.0557 68.8869 10.8999C68.6284 10.7441 68.3268 10.6662 67.9821 10.6662C67.6142 10.6662 67.2911 10.7557 67.0126 10.9347C66.7342 11.1104 66.5171 11.3424 66.3614 11.6307C66.2089 11.9158 66.131 12.229 66.1277 12.5704V13.6293C66.1277 14.0734 66.2089 14.4546 66.3713 14.7728C66.5337 15.0877 66.7608 15.3296 67.0524 15.4986C67.3441 15.6644 67.6855 15.7472 68.0766 15.7472C68.3384 15.7472 68.5754 15.7108 68.7875 15.6378C68.9996 15.5616 69.1836 15.4506 69.3394 15.3047C69.4951 15.1589 69.6128 14.9783 69.6923 14.7628L71.3727 14.9518C71.2667 15.3959 71.0645 15.7837 70.7662 16.1151C70.4712 16.4432 70.0934 16.6984 69.6327 16.8807C69.172 17.0597 68.645 17.1492 68.0517 17.1492Z",
+					"fill": "#1D2939"
+				},
+				"children": []
+			},
+			{
+				"type": "element",
+				"name": "path",
+				"attributes": {
+					"d": "M77.8296 17.0001H75.8608L79.4454 6.81824H81.7223L85.3118 17.0001H83.3431L80.6236 8.90631H80.5441L77.8296 17.0001ZM77.8942 13.0079H83.2635V14.4894H77.8942V13.0079Z",
+					"fill": "#1D2939"
+				},
+				"children": []
+			},
+			{
+				"type": "element",
+				"name": "path",
+				"attributes": {
+					"d": "M88.4974 6.81824V17.0001H86.6529V6.81824H88.4974Z",
+					"fill": "#1D2939"
+				},
+				"children": []
+			},
+			{
+				"type": "element",
+				"name": "defs",
+				"attributes": {},
+				"children": [
+					{
+						"type": "element",
+						"name": "linearGradient",
+						"attributes": {
+							"id": "paint0_linear_8587_60561",
+							"x1": "11.8113",
+							"y1": "3.90823",
+							"x2": "5.61444",
+							"y2": "22.2154",
+							"gradientUnits": "userSpaceOnUse"
+						},
+						"children": [
+							{
+								"type": "element",
+								"name": "stop",
+								"attributes": {
+									"stop-color": "#114A8B"
+								},
+								"children": []
+							},
+							{
+								"type": "element",
+								"name": "stop",
+								"attributes": {
+									"offset": "1",
+									"stop-color": "#0669BC"
+								},
+								"children": []
+							}
+						]
+					},
+					{
+						"type": "element",
+						"name": "linearGradient",
+						"attributes": {
+							"id": "paint1_linear_8587_60561",
+							"x1": "13.7459",
+							"y1": "12.4397",
+							"x2": "12.3125",
+							"y2": "12.9243",
+							"gradientUnits": "userSpaceOnUse"
+						},
+						"children": [
+							{
+								"type": "element",
+								"name": "stop",
+								"attributes": {
+									"stop-opacity": "0.3"
+								},
+								"children": []
+							},
+							{
+								"type": "element",
+								"name": "stop",
+								"attributes": {
+									"offset": "0.071",
+									"stop-opacity": "0.2"
+								},
+								"children": []
+							},
+							{
+								"type": "element",
+								"name": "stop",
+								"attributes": {
+									"offset": "0.321",
+									"stop-opacity": "0.1"
+								},
+								"children": []
+							},
+							{
+								"type": "element",
+								"name": "stop",
+								"attributes": {
+									"offset": "0.623",
+									"stop-opacity": "0.05"
+								},
+								"children": []
+							},
+							{
+								"type": "element",
+								"name": "stop",
+								"attributes": {
+									"offset": "1",
+									"stop-opacity": "0"
+								},
+								"children": []
+							}
+						]
+					},
+					{
+						"type": "element",
+						"name": "linearGradient",
+						"attributes": {
+							"id": "paint2_linear_8587_60561",
+							"x1": "12.9582",
+							"y1": "3.37404",
+							"x2": "19.7606",
+							"y2": "21.4968",
+							"gradientUnits": "userSpaceOnUse"
+						},
+						"children": [
+							{
+								"type": "element",
+								"name": "stop",
+								"attributes": {
+									"stop-color": "#3CCBF4"
+								},
+								"children": []
+							},
+							{
+								"type": "element",
+								"name": "stop",
+								"attributes": {
+									"offset": "1",
+									"stop-color": "#2892DF"
+								},
+								"children": []
+							}
+						]
+					}
+				]
+			}
+		]
+	},
+	"name": "AzureaiText"
+}

+ 14 - 0
web/app/components/base/icons/src/public/llm/AzureaiText.tsx

@@ -0,0 +1,14 @@
+// GENERATE BY script
+// DON NOT EDIT IT MANUALLY
+
+import * as React from 'react'
+import data from './AzureaiText.json'
+import IconBase from '@/app/components/base/icons/IconBase'
+import type { IconBaseProps, IconData } from '@/app/components/base/icons/IconBase'
+
+const Icon = React.forwardRef<React.MutableRefObject<SVGElement>, Omit<IconBaseProps, 'data'>>((
+  props,
+  ref,
+) => <IconBase {...props} ref={ref} data={data as IconData} />)
+
+export default Icon

+ 72 - 0
web/app/components/base/icons/src/public/llm/Chatglm.json

@@ -0,0 +1,72 @@
+{
+	"icon": {
+		"type": "element",
+		"isRootNode": true,
+		"name": "svg",
+		"attributes": {
+			"width": "24",
+			"height": "24",
+			"viewBox": "0 0 24 24",
+			"fill": "none",
+			"xmlns": "http://www.w3.org/2000/svg"
+		},
+		"children": [
+			{
+				"type": "element",
+				"name": "mask",
+				"attributes": {
+					"id": "mask0_8587_60212",
+					"style": "mask-type:luminance",
+					"maskUnits": "userSpaceOnUse",
+					"x": "1",
+					"y": "2",
+					"width": "23",
+					"height": "21"
+				},
+				"children": [
+					{
+						"type": "element",
+						"name": "path",
+						"attributes": {
+							"d": "M23.8 2H1V22.4H23.8V2Z",
+							"fill": "white"
+						},
+						"children": []
+					}
+				]
+			},
+			{
+				"type": "element",
+				"name": "g",
+				"attributes": {
+					"mask": "url(#mask0_8587_60212)"
+				},
+				"children": [
+					{
+						"type": "element",
+						"name": "path",
+						"attributes": {
+							"fill-rule": "evenodd",
+							"clip-rule": "evenodd",
+							"d": "M3.86378 14.4544C3.86378 13.0981 4.67438 11.737 6.25923 10.6634C7.83827 9.59364 10.0864 8.89368 12.6282 8.89368C15.17 8.89368 17.4182 9.59364 18.9972 10.6634C19.7966 11.2049 20.399 11.8196 20.7998 12.4699C21.2873 11.5802 21.4969 10.6351 21.3835 9.69252C21.3759 9.62928 21.3824 9.56766 21.4005 9.5106C21.0758 9.21852 20.7259 8.94624 20.3558 8.69556C18.3272 7.32126 15.5915 6.50964 12.6282 6.50964C9.66497 6.50964 6.92918 7.32126 4.90058 8.69556C2.8778 10.0659 1.45703 12.0812 1.45703 14.4544C1.45703 16.8275 2.8778 18.8428 4.90058 20.2132C6.92918 21.5875 9.66497 22.3991 12.6282 22.3991C15.5915 22.3991 18.3272 21.5875 20.3558 20.2132C22.3786 18.8428 23.7994 16.8275 23.7994 14.4544C23.7994 12.9455 23.225 11.5813 22.2868 10.4355C22.2377 11.4917 21.8621 12.5072 21.238 13.43C21.3409 13.7686 21.3926 14.1116 21.3926 14.4544C21.3926 15.8107 20.582 17.1717 18.9972 18.2453C17.4182 19.3151 15.17 20.015 12.6282 20.015C10.0864 20.015 7.83827 19.3151 6.25923 18.2453C4.67438 17.1717 3.86378 15.8107 3.86378 14.4544Z",
+							"fill": "#3762FF"
+						},
+						"children": []
+					},
+					{
+						"type": "element",
+						"name": "path",
+						"attributes": {
+							"fill-rule": "evenodd",
+							"clip-rule": "evenodd",
+							"d": "M3.84445 11.6838C3.20239 13.4885 3.35368 15.1156 4.18868 16.2838C5.02368 17.452 6.52281 18.1339 8.45459 18.1334C10.3826 18.133 12.6296 17.44 14.6939 15.9922C16.7581 14.5444 18.1643 12.6753 18.8052 10.8739C19.4473 9.0692 19.2959 7.44206 18.461 6.27392C17.626 5.10572 16.1269 4.42389 14.1951 4.42431C12.267 4.42475 10.0201 5.11774 7.95575 6.56552C5.89152 8.01332 4.48529 9.8825 3.84445 11.6838ZM1.53559 10.8778C2.36374 8.55002 4.11254 6.28976 6.54117 4.58645C8.96981 2.88312 11.7029 1.99995 14.1945 1.99939C16.6825 1.99884 19.0426 2.8912 20.4589 4.87263C21.8752 6.85406 21.941 9.35564 21.1141 11.6799C20.2859 14.0077 18.5371 16.2679 16.1085 17.9713C13.6798 19.6746 10.9468 20.5578 8.45513 20.5584C5.9672 20.5589 3.60706 19.6665 2.19075 17.6851C0.774446 15.7036 0.708677 13.2021 1.53559 10.8778Z",
+							"fill": "#1041F3"
+						},
+						"children": []
+					}
+				]
+			}
+		]
+	},
+	"name": "Chatglm"
+}

+ 14 - 0
web/app/components/base/icons/src/public/llm/Chatglm.tsx

@@ -0,0 +1,14 @@
+// GENERATE BY script
+// DON NOT EDIT IT MANUALLY
+
+import * as React from 'react'
+import data from './Chatglm.json'
+import IconBase from '@/app/components/base/icons/IconBase'
+import type { IconBaseProps, IconData } from '@/app/components/base/icons/IconBase'
+
+const Icon = React.forwardRef<React.MutableRefObject<SVGElement>, Omit<IconBaseProps, 'data'>>((
+  props,
+  ref,
+) => <IconBase {...props} ref={ref} data={data as IconData} />)
+
+export default Icon

+ 135 - 0
web/app/components/base/icons/src/public/llm/ChatglmText.json

@@ -0,0 +1,135 @@
+{
+	"icon": {
+		"type": "element",
+		"isRootNode": true,
+		"name": "svg",
+		"attributes": {
+			"width": "100",
+			"height": "24",
+			"viewBox": "0 0 100 24",
+			"fill": "none",
+			"xmlns": "http://www.w3.org/2000/svg"
+		},
+		"children": [
+			{
+				"type": "element",
+				"name": "path",
+				"attributes": {
+					"d": "M56.5415 9.49683C56.3371 9.38235 56.1222 9.28491 55.8984 9.20565C55.4497 9.04653 54.9672 8.95911 54.4654 8.95911C52.0893 8.95911 50.1562 10.9044 50.1562 13.2955C50.1562 15.6867 52.0893 17.6313 54.4654 17.6313C54.9672 17.6313 55.4497 17.5438 55.8984 17.3847C55.9178 17.3778 55.9378 17.3703 55.9572 17.3627C57.2065 16.8986 58.1845 15.8659 58.582 14.5785V12.0125C58.2489 10.9333 57.5083 10.0333 56.5415 9.49683ZM55.9578 13.9446C55.9397 13.986 55.9197 14.0269 55.8991 14.0665C55.6247 14.5804 55.0854 14.9307 54.466 14.9307C53.5698 14.9307 52.8411 14.1973 52.8411 13.2955C52.8411 12.3936 53.5698 11.6603 54.466 11.6603C55.0854 11.6603 55.6241 12.01 55.8991 12.5244C55.9203 12.5647 55.9403 12.6049 55.9578 12.6471C56.0434 12.8458 56.0909 13.0653 56.0909 13.2955C56.0909 13.5257 56.0434 13.7452 55.9578 13.9446Z",
+					"fill": "#1A2029"
+				},
+				"children": []
+			},
+			{
+				"type": "element",
+				"name": "path",
+				"attributes": {
+					"d": "M58.6419 9.49683V17.596H55.959V13.9445C56.0446 13.7458 56.0921 13.5256 56.0921 13.2955C56.0921 13.0653 56.0446 12.8458 55.959 12.6471V9.49683H58.6419Z",
+					"fill": "#1A2029"
+				},
+				"children": []
+			},
+			{
+				"type": "element",
+				"name": "path",
+				"attributes": {
+					"d": "M63.4475 7.46912H60.7637V17.6142H63.4475V7.46912Z",
+					"fill": "#1A2029"
+				},
+				"children": []
+			},
+			{
+				"type": "element",
+				"name": "path",
+				"attributes": {
+					"d": "M64.8417 9.49683H59.3789V12.1974H64.3659C64.3587 12.0773 64.3545 11.9559 64.3545 11.8339C64.3545 11.0031 64.5285 10.2125 64.8417 9.49683Z",
+					"fill": "#1A2029"
+				},
+				"children": []
+			},
+			{
+				"type": "element",
+				"name": "path",
+				"attributes": {
+					"d": "M35.3555 14.908C34.2412 14.908 33.2644 14.3087 32.7257 13.4137C32.4444 12.947 32.2832 12.3999 32.2832 11.8163C32.2832 11.2326 32.4444 10.6849 32.7257 10.2188C33.2644 9.32448 34.2412 8.72448 35.3555 8.72448C36.4699 8.72448 37.4461 9.32388 37.9847 10.2188L40.2809 8.82324C39.2716 7.14714 37.441 6.02454 35.3555 6.02454C33.27 6.02454 31.4388 7.14714 30.4296 8.82324C29.9027 9.69744 29.5996 10.7219 29.5996 11.8169C29.5996 12.9118 29.9027 13.9363 30.4296 14.8105C31.4388 16.4866 33.2694 17.6092 35.3555 17.6092C37.4417 17.6092 39.2716 16.4866 40.2809 14.8105L37.9847 13.415C37.4461 14.3093 36.4692 14.9093 35.3555 14.9093V14.908Z",
+					"fill": "#1A2029"
+				},
+				"children": []
+			},
+			{
+				"type": "element",
+				"name": "path",
+				"attributes": {
+					"d": "M79.4097 14.9232H85.1781V17.6237H77.5179V17.6124H76.7265V6.04407H79.4097V14.9232ZM96.7581 6.04971H93.8625L91.4631 10.1371L89.0631 6.04971H86.0763V17.6181H88.7601V10.5352L91.4637 15.1389L94.0749 10.6918V17.6181H96.7581V6.12141V6.04971ZM70.7661 13.2169H73.1445V13.9779C72.5841 14.581 71.7867 14.959 70.9023 14.959C70.0179 14.959 69.2121 14.5773 68.6511 13.9691C68.5089 13.815 68.3811 13.6458 68.2725 13.4647C67.9911 12.998 67.8297 12.4509 67.8297 11.8672C67.8297 11.2836 67.9911 10.7358 68.2725 10.2697C68.8113 9.37545 69.7881 8.77545 70.9023 8.77545C71.7087 8.77545 72.4425 9.08931 72.9909 9.60249L74.8881 7.69311C73.8537 6.69123 72.4479 6.07491 70.9023 6.07491C68.8161 6.07491 66.9855 7.19751 65.9763 8.87355C65.4495 9.74775 65.1465 10.7723 65.1465 11.8672C65.1465 12.9622 65.4495 13.9867 65.9763 14.8609C66.1983 15.2288 66.4587 15.5703 66.7539 15.8791C67.8027 16.9765 69.2751 17.6596 70.9029 17.6596C72.9885 17.6596 74.8191 16.537 75.8283 14.8609V10.5175H70.7661V13.2181V13.2169Z",
+					"fill": "#1A2029"
+				},
+				"children": []
+			},
+			{
+				"type": "element",
+				"name": "path",
+				"attributes": {
+					"d": "M49.4752 12.5477V17.6174H46.7954V13.1156C46.7954 12.2603 46.106 11.5666 45.2561 11.5666C44.4061 11.5666 43.7168 12.2597 43.7168 13.1156V17.6174H41.0332V6H43.7168V9.8811C44.3343 9.3333 45.1473 9.00186 46.0373 9.00942C47.9484 9.02514 49.4752 10.6244 49.4752 12.5477Z",
+					"fill": "#1A2029"
+				},
+				"children": []
+			},
+			{
+				"type": "element",
+				"name": "mask",
+				"attributes": {
+					"id": "mask0_8587_60467",
+					"style": "mask-type:luminance",
+					"maskUnits": "userSpaceOnUse",
+					"x": "2",
+					"y": "1",
+					"width": "23",
+					"height": "22"
+				},
+				"children": [
+					{
+						"type": "element",
+						"name": "path",
+						"attributes": {
+							"d": "M24.8 1.80005H2V22.2H24.8V1.80005Z",
+							"fill": "white"
+						},
+						"children": []
+					}
+				]
+			},
+			{
+				"type": "element",
+				"name": "g",
+				"attributes": {
+					"mask": "url(#mask0_8587_60467)"
+				},
+				"children": [
+					{
+						"type": "element",
+						"name": "path",
+						"attributes": {
+							"fill-rule": "evenodd",
+							"clip-rule": "evenodd",
+							"d": "M4.86378 14.2544C4.86378 12.8981 5.67438 11.5371 7.25923 10.4634C8.83827 9.39369 11.0864 8.69373 13.6282 8.69373C16.17 8.69373 18.4182 9.39369 19.9972 10.4634C20.7966 11.005 21.399 11.6196 21.7998 12.27C22.2873 11.3803 22.4969 10.4351 22.3835 9.49257C22.3759 9.42933 22.3824 9.36771 22.4005 9.31065C22.0758 9.01857 21.7259 8.74629 21.3558 8.49561C19.3272 7.12131 16.5915 6.30969 13.6282 6.30969C10.665 6.30969 7.92918 7.12131 5.90058 8.49561C3.8778 9.86595 2.45703 11.8813 2.45703 14.2544C2.45703 16.6275 3.8778 18.6429 5.90058 20.0132C7.92918 21.3875 10.665 22.1991 13.6282 22.1991C16.5915 22.1991 19.3272 21.3875 21.3558 20.0132C23.3786 18.6429 24.7994 16.6275 24.7994 14.2544C24.7994 12.7455 24.225 11.3813 23.2868 10.2356C23.2377 11.2918 22.8621 12.3073 22.238 13.2301C22.3409 13.5687 22.3926 13.9117 22.3926 14.2544C22.3926 15.6107 21.582 16.9718 19.9972 18.0454C18.4182 19.1151 16.17 19.8151 13.6282 19.8151C11.0864 19.8151 8.83827 19.1151 7.25923 18.0454C5.67438 16.9718 4.86378 15.6107 4.86378 14.2544Z",
+							"fill": "#3762FF"
+						},
+						"children": []
+					},
+					{
+						"type": "element",
+						"name": "path",
+						"attributes": {
+							"fill-rule": "evenodd",
+							"clip-rule": "evenodd",
+							"d": "M4.84445 11.4838C4.20239 13.2886 4.35368 14.9157 5.18868 16.0839C6.02368 17.2521 7.52281 17.9339 9.45459 17.9334C11.3826 17.933 13.6296 17.24 15.6939 15.7923C17.7581 14.3445 19.1643 12.4753 19.8052 10.674C20.4473 8.86925 20.2959 7.24211 19.461 6.07397C18.626 4.90576 17.1269 4.22394 15.1951 4.22436C13.267 4.22479 11.0201 4.91779 8.95575 6.36557C6.89152 7.81337 5.48529 9.68255 4.84445 11.4838ZM2.53559 10.6778C3.36374 8.35007 5.11254 6.08981 7.54117 4.3865C9.96981 2.68317 12.7029 1.8 15.1945 1.79944C17.6825 1.79889 20.0426 2.69125 21.4589 4.67268C22.8752 6.65411 22.941 9.15569 22.1141 11.48C21.2859 13.8077 19.5371 16.068 17.1085 17.7713C14.6798 19.4747 11.9468 20.3579 9.45513 20.3584C6.9672 20.3589 4.60706 19.4666 3.19075 17.4851C1.77445 15.5037 1.70868 13.0022 2.53559 10.6778Z",
+							"fill": "#1041F3"
+						},
+						"children": []
+					}
+				]
+			}
+		]
+	},
+	"name": "ChatglmText"
+}

+ 14 - 0
web/app/components/base/icons/src/public/llm/ChatglmText.tsx

@@ -0,0 +1,14 @@
+// GENERATE BY script
+// DON NOT EDIT IT MANUALLY
+
+import * as React from 'react'
+import data from './ChatglmText.json'
+import IconBase from '@/app/components/base/icons/IconBase'
+import type { IconBaseProps, IconData } from '@/app/components/base/icons/IconBase'
+
+const Icon = React.forwardRef<React.MutableRefObject<SVGElement>, Omit<IconBaseProps, 'data'>>((
+  props,
+  ref,
+) => <IconBase {...props} ref={ref} data={data as IconData} />)
+
+export default Icon

파일 크기가 너무 크기때문에 변경 상태를 표시하지 않습니다.
+ 122 - 0
web/app/components/base/icons/src/public/llm/Huggingface.json


이 변경점에서 너무 많은 파일들이 변경되어 몇몇 파일들은 표시되지 않았습니다.