System plugin (#2091)

* System template (#2082)

* feat: system plugin (#2024)

* add plugin cost & change plugin avatar (#2030)

* add plugin cost & change plugin avatar

* add author

* feat: duckduckgo plugin

* duckduck search

* perf: templates select system plugin

* perf: system plugin avatar

* feat: duckduck plugins

* doc

* perf: plugin classify

* perf: icon avatar component

* perf: system template avatar

---------

Co-authored-by: heheer <71265218+newfish-cmyk@users.noreply.github.com>

* feat: system plugin search

* perf: plugin packages important

* perf: source avatar

* nextconfig

* perf: i18n

* perf: default model

* perf: system plugin author

---------

Co-authored-by: heheer <71265218+newfish-cmyk@users.noreply.github.com>
This commit is contained in:
Archer
2024-07-19 14:15:01 +08:00
committed by GitHub
parent 1eedb9caba
commit cf7145ab54
165 changed files with 2643 additions and 557 deletions

View File

@@ -77,7 +77,7 @@ docker-compose up -d
商业版用户需要执行一个初始化,格式化团队信息。
发起 1 个 HTTP 请求 ({{rootkey}} 替换成环境变量里的 `rootkey`{{host}} 替换成自己域名)
发起 1 个 HTTP 请求 ({{rootkey}} 替换成环境变量里的 `rootkey`{{host}} 替换成商业版域名)
```bash
curl --location --request POST 'https://{{host}}/api/init/v468' \

View File

@@ -1,5 +1,5 @@
---
title: 'V4.8.7(进行中)'
title: 'V4.8.7'
description: 'FastGPT V4.8.7 更新说明'
icon: 'upgrade'
draft: false
@@ -13,8 +13,8 @@ weight: 817
### 2. 修改镜像
- fastgpt 镜像 tag 修改成 v4.8.7-alpha
- 商业版镜像 tag 修改成 v4.8.7-alpha
- fastgpt 镜像 tag 修改成 v4.8.7
- 商业版镜像 tag 修改成 v4.8.7
-------

View File

@@ -0,0 +1,25 @@
---
title: 'V4.8.8(进行中)'
description: 'FastGPT V4.8.8 更新说明'
icon: 'upgrade'
draft: false
toc: true
weight: 816
---
## 升级指南
### 1. 做好数据库备份
### 2. 修改镜像
- fastgpt 镜像 tag 修改成 v4.8.8-alpha
- 商业版镜像 tag 修改成 v4.8.8-alpha
-------
## V4.8. 8 更新说明
1. 新增 - 重构系统插件的结构。允许向开源社区 PR 系统插件,具体可见: [如何向 FastGPT 社区提交系统插件](https://fael3z0zfze.feishu.cn/wiki/ERZnw9R26iRRG0kXZRec6WL9nwh)。欢迎
2. 新增 - DuckDuckGo 系统插件。
3. 优化 - 节点图标。

View File

@@ -121,8 +121,8 @@ services:
restart: always
fastgpt:
container_name: fastgpt
image: ghcr.io/labring/fastgpt:v4.8.6 # git
# image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt:v4.8.6 # 阿里云
image: ghcr.io/labring/fastgpt:v4.8.7 # git
# image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt:v4.8.7 # 阿里云
ports:
- 3000:3000
networks:

View File

@@ -79,8 +79,8 @@ services:
restart: always
fastgpt:
container_name: fastgpt
image: ghcr.io/labring/fastgpt:v4.8.6 # git
# image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt:v4.8.6 # 阿里云
image: ghcr.io/labring/fastgpt:v4.8.7 # git
# image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt:v4.8.7 # 阿里云
ports:
- 3000:3000
networks:

View File

@@ -60,8 +60,8 @@ services:
restart: always
fastgpt:
container_name: fastgpt
image: ghcr.io/labring/fastgpt:v4.8.6 # git
# image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt:v4.8.6 # 阿里云
image: ghcr.io/labring/fastgpt:v4.8.7 # git
# image: registry.cn-hangzhou.aliyuncs.com/fastgpt/fastgpt:v4.8.7 # 阿里云
ports:
- 3000:3000
networks:

View File

@@ -32,9 +32,12 @@ export type FastGPTFeConfigsType = {
show_promotion?: boolean;
show_team_chat?: boolean;
concatMd?: string;
docUrl?: string;
chatbotUrl?: string;
openAPIDocUrl?: string;
systemPluginCourseUrl?: string;
systemTitle?: string;
systemDescription?: string;
googleClientVerKey?: string;

View File

@@ -2,8 +2,8 @@ import type { LLMModelItemType, VectorModelItemType } from './model.d';
export const defaultQAModels: LLMModelItemType[] = [
{
model: 'gpt-3.5-turbo',
name: 'gpt-3.5-turbo',
model: 'gpt-4o-mini',
name: 'gpt-4o-mini',
maxContext: 16000,
maxResponse: 16000,
quoteMaxToken: 13000,

View File

@@ -8,7 +8,7 @@ import { DatasetSearchModeEnum } from '../dataset/constants';
export const getDefaultAppForm = (): AppSimpleEditFormType => ({
aiSettings: {
model: 'gpt-3.5-turbo',
model: 'gpt-4o-mini',
systemPrompt: '',
temperature: 0,
isResponseAnswerText: true,

View File

@@ -32,7 +32,7 @@ export type PluginItemSchema = {
export type PluginTemplateType = PluginRuntimeType & {
author?: string;
id: string;
source: `${PluginSourceEnum}`;
source: PluginSourceEnum;
templateType: FlowNodeTemplateType['templateType'];
intro: string;
version: string;

View File

@@ -4,6 +4,9 @@ export enum FlowNodeTemplateTypeEnum {
function = 'function',
tools = 'tools',
search = 'search',
multimodal = 'multimodal',
other = 'other',
teamApp = 'teamApp'
}

View File

@@ -67,11 +67,12 @@ export type RuntimeNodeItemType = {
};
export type PluginRuntimeType = {
id: string;
teamId?: string;
name: string;
avatar: string;
showStatus?: boolean;
isTool?: boolean;
currentCost?: number;
nodes: StoreNodeItemType[];
edges: StoreEdgeItemType[];
};

View File

@@ -26,7 +26,7 @@ export const AiChatModule: FlowNodeTemplateType = {
flowNodeType: FlowNodeTypeEnum.chatNode,
sourceHandle: getHandleConfig(true, true, true, true),
targetHandle: getHandleConfig(true, true, true, true),
avatar: '/imgs/workflow/AI.png',
avatar: 'core/workflow/template/aiChat',
name: 'AI 对话',
intro: 'AI 大模型对话',
showStatus: true,

View File

@@ -13,7 +13,7 @@ export const AssignedAnswerModule: FlowNodeTemplateType = {
flowNodeType: FlowNodeTypeEnum.answerNode,
sourceHandle: getHandleConfig(true, true, true, true),
targetHandle: getHandleConfig(true, true, true, true),
avatar: '/imgs/workflow/reply.png',
avatar: 'core/workflow/template/reply',
name: '指定回复',
intro:
'该模块可以直接回复一段指定的内容。常用于引导、提示。非字符串内容传入时,会转成字符串进行输出。',

View File

@@ -25,7 +25,7 @@ export const ClassifyQuestionModule: FlowNodeTemplateType = {
flowNodeType: FlowNodeTypeEnum.classifyQuestion,
sourceHandle: getHandleConfig(false, false, false, false),
targetHandle: getHandleConfig(true, false, true, true),
avatar: '/imgs/workflow/cq.png',
avatar: 'core/workflow/template/questionClassify',
name: '问题分类',
intro: `根据用户的历史记录和当前问题判断该次提问的类型。可以添加多组问题类型,下面是一个模板例子:\n类型1: 打招呼\n类型2: 关于商品“使用”问题\n类型3: 关于商品“购买”问题\n类型4: 其他问题`,
showStatus: true,

View File

@@ -20,7 +20,7 @@ export const ContextExtractModule: FlowNodeTemplateType = {
flowNodeType: FlowNodeTypeEnum.contentExtract,
sourceHandle: getHandleConfig(true, true, true, true),
targetHandle: getHandleConfig(true, true, true, true),
avatar: '/imgs/workflow/extract.png',
avatar: 'core/workflow/template/extractJson',
name: '文本内容提取',
intro: '可从文本中提取指定的数据例如sql语句、搜索关键词、代码等',
showStatus: true,

View File

@@ -13,7 +13,7 @@ export const CustomFeedbackNode: FlowNodeTemplateType = {
flowNodeType: FlowNodeTypeEnum.customFeedback,
sourceHandle: getHandleConfig(true, true, true, true),
targetHandle: getHandleConfig(true, true, true, true),
avatar: '/imgs/workflow/customFeedback.svg',
avatar: 'core/workflow/template/customFeedback',
name: '自定义反馈',
intro: '该模块被触发时,会给当前的对话记录增加一条反馈。可用于自动记录对话效果等。',
version: '486',

View File

@@ -37,7 +37,7 @@ export const DatasetConcatModule: FlowNodeTemplateType = {
templateType: FlowNodeTemplateTypeEnum.other,
sourceHandle: getHandleConfig(true, true, true, true),
targetHandle: getHandleConfig(true, true, true, true),
avatar: '/imgs/workflow/concat.svg',
avatar: 'core/workflow/template/datasetConcat',
name: '知识库搜索引用合并',
intro: '可以将多个知识库搜索结果进行合并输出。使用 RRF 的合并方式进行最终排序输出。',
showStatus: false,

View File

@@ -23,7 +23,7 @@ export const DatasetSearchModule: FlowNodeTemplateType = {
flowNodeType: FlowNodeTypeEnum.datasetSearchNode,
sourceHandle: getHandleConfig(true, true, true, true),
targetHandle: getHandleConfig(true, true, true, true),
avatar: '/imgs/workflow/db.png',
avatar: 'core/workflow/template/datasetSearch',
name: '知识库搜索',
intro: Dataset_SEARCH_DESC,
showStatus: true,

View File

@@ -20,7 +20,7 @@ export const HttpNode468: FlowNodeTemplateType = {
flowNodeType: FlowNodeTypeEnum.httpRequest468,
sourceHandle: getHandleConfig(true, true, true, true),
targetHandle: getHandleConfig(true, true, true, true),
avatar: '/imgs/workflow/http.png',
avatar: 'core/workflow/template/httpRequest',
name: 'HTTP 请求',
intro: '可以发出一个 HTTP 请求,实现更为复杂的操作(联网搜索、数据库查询等)',
showStatus: true,

View File

@@ -18,7 +18,7 @@ export const IfElseNode: FlowNodeTemplateType = {
flowNodeType: FlowNodeTypeEnum.ifElseNode,
sourceHandle: getHandleConfig(false, false, false, false),
targetHandle: getHandleConfig(true, false, true, true),
avatar: '/imgs/workflow/ifElse.svg',
avatar: 'core/workflow/template/ifelse',
name: '判断器',
intro: '根据一定的条件,执行不同的分支。',
showStatus: true,

View File

@@ -26,7 +26,7 @@ export const LafModule: FlowNodeTemplateType = {
flowNodeType: FlowNodeTypeEnum.lafModule,
sourceHandle: getHandleConfig(true, true, true, true),
targetHandle: getHandleConfig(true, true, true, true),
avatar: '/imgs/workflow/laf.png',
avatar: 'core/workflow/template/lafDispatch',
name: 'Laf 函数调用(测试)',
intro: '可以调用Laf账号下的云函数。',
showStatus: true,

View File

@@ -11,7 +11,7 @@ export const PluginInputModule: FlowNodeTemplateType = {
targetHandle: getHandleConfig(false, false, false, false),
unique: true,
forbidDelete: true,
avatar: '/imgs/workflow/input.png',
avatar: 'core/workflow/template/workflowStart',
name: '插件输入',
intro: '可以配置插件需要哪些输入,利用这些输入来运行插件',
showStatus: false,

View File

@@ -11,7 +11,7 @@ export const PluginOutputModule: FlowNodeTemplateType = {
targetHandle: getHandleConfig(false, false, false, true),
unique: true,
forbidDelete: true,
avatar: '/imgs/workflow/output.png',
avatar: 'core/workflow/template/pluginOutput',
name: '自定义插件输出',
intro: '自定义配置外部输出,使用插件时,仅暴露自定义配置的输出',
showStatus: false,

View File

@@ -24,7 +24,7 @@ export const AiQueryExtension: FlowNodeTemplateType = {
flowNodeType: FlowNodeTypeEnum.queryExtension,
sourceHandle: getHandleConfig(true, true, true, true),
targetHandle: getHandleConfig(true, true, true, true),
avatar: '/imgs/workflow/cfr.svg',
avatar: 'core/workflow/template/queryExtension',
name: '问题优化',
intro:
'使用问题优化功能,可以提高知识库连续对话时搜索的精度。使用该功能后,会先利用 AI 根据上下文构建一个或多个新的检索词,这些检索词更利于进行知识库搜索。该模块已内置在知识库搜索模块中,如果您仅进行一次知识库搜索,可直接使用知识库内置的补全功能。',

View File

@@ -19,7 +19,7 @@ export const RunAppModule: FlowNodeTemplateType = {
flowNodeType: FlowNodeTypeEnum.runApp,
sourceHandle: getHandleConfig(true, true, true, true),
targetHandle: getHandleConfig(true, true, true, true),
avatar: '/imgs/workflow/app.png',
avatar: 'core/workflow/template/runApp',
name: '应用调用',
intro: '可以选择一个其他应用进行调用',
showStatus: true,

View File

@@ -21,7 +21,7 @@ export const CodeNode: FlowNodeTemplateType = {
flowNodeType: FlowNodeTypeEnum.code,
sourceHandle: getHandleConfig(true, true, true, true),
targetHandle: getHandleConfig(true, true, true, true),
avatar: '/imgs/workflow/code.svg',
avatar: 'core/workflow/template/codeRun',
name: '代码运行',
intro: '执行一段简单的脚本代码,通常用于进行复杂的数据处理。',
showStatus: true,

View File

@@ -9,7 +9,7 @@ export const StopToolNode: FlowNodeTemplateType = {
flowNodeType: FlowNodeTypeEnum.stopTool,
sourceHandle: getHandleConfig(false, false, false, false),
targetHandle: getHandleConfig(true, true, true, true),
avatar: '/imgs/workflow/toolStop.svg',
avatar: 'core/workflow/template/stopTool',
name: '工具调用终止',
intro:
'该模块需配置工具调用使用。当该模块被执行时本次工具调用将会强制结束并且不再调用AI针对工具调用结果回答问题。',

View File

@@ -9,7 +9,7 @@ export const SystemConfigNode: FlowNodeTemplateType = {
flowNodeType: FlowNodeTypeEnum.systemConfig,
sourceHandle: getHandleConfig(false, false, false, false),
targetHandle: getHandleConfig(false, false, false, false),
avatar: '/imgs/workflow/userGuide.png',
avatar: 'core/workflow/template/systemConfig',
name: '系统配置',
intro: '可以配置应用的系统参数。',
unique: true,

View File

@@ -19,7 +19,7 @@ export const TextEditorNode: FlowNodeTemplateType = {
flowNodeType: FlowNodeTypeEnum.textEditor,
sourceHandle: getHandleConfig(true, true, true, true),
targetHandle: getHandleConfig(true, true, true, true),
avatar: '/imgs/workflow/textEditor.svg',
avatar: 'core/workflow/template/textConcat',
name: '文本拼接',
intro: '可对固定或传入的文本进行加工后输出,非字符串类型数据最终会转成字符串类型。',
version: '486',

View File

@@ -26,7 +26,7 @@ export const ToolModule: FlowNodeTemplateType = {
templateType: FlowNodeTemplateTypeEnum.ai,
sourceHandle: getHandleConfig(true, true, false, true),
targetHandle: getHandleConfig(true, true, false, true),
avatar: '/imgs/workflow/tool.svg',
avatar: 'core/workflow/template/toolCall',
name: '工具调用',
intro: '通过AI模型自动选择一个或多个功能块进行调用也可以对插件进行调用。',
showStatus: true,

View File

@@ -13,7 +13,7 @@ export const VariableUpdateNode: FlowNodeTemplateType = {
flowNodeType: FlowNodeTypeEnum.variableUpdate,
sourceHandle: getHandleConfig(true, true, true, true),
targetHandle: getHandleConfig(true, true, true, true),
avatar: '/imgs/workflow/variable.png',
avatar: 'core/workflow/template/variableUpdate',
name: '变量更新',
intro: '可以更新指定节点的输出值或更新全局变量',
showStatus: false,

View File

@@ -14,7 +14,7 @@ export const WorkflowStart: FlowNodeTemplateType = {
flowNodeType: FlowNodeTypeEnum.workflowStart,
sourceHandle: getHandleConfig(false, true, false, false),
targetHandle: getHandleConfig(false, false, false, false),
avatar: '/imgs/workflow/userChatInput.svg',
avatar: 'core/workflow/template/workflowStart',
name: '流程开始',
intro: '',
forbidDelete: true,

View File

@@ -42,17 +42,29 @@ export type WorkflowTemplateType = {
workflow: WorkflowTemplateBasicType;
};
// template market
export type TemplateMarketItemType = WorkflowTemplateType & {
tags?: { id: string; label: string }[];
};
// system plugin
export type SystemPluginTemplateItemType = WorkflowTemplateType & {
templateType: FlowNodeTemplateTypeEnum;
isTool?: boolean;
// commercial plugin config
originCost: number; // n points/one time
currentCost: number;
isActive?: boolean;
inputConfig?: {
// Render config input form. Find the corresponding node and replace the variable directly
key: string;
label: string;
description: string;
value?: any;
}[];
workflow: WorkflowTemplateBasicType;
};

View File

@@ -70,7 +70,7 @@ export type FlowNodeTemplateType = FlowNodeCommonType & {
export type NodeTemplateListItemType = {
id: string; // 系统节点-系统节点的 id 系统插件-插件的 id团队应用的 id
flowNodeType: FlowNodeTypeEnum; // render node card
parentId?: string;
parentId?: ParentIdType;
isFolder?: boolean;
templateType: FlowNodeTemplateTypeEnum;
avatar?: string;
@@ -79,6 +79,7 @@ export type NodeTemplateListItemType = {
isTool?: boolean;
author?: string;
unique?: boolean; // 唯一的
currentCost?: number; // 当前积分消耗
};
export type NodeTemplateListType = {

View File

@@ -2,11 +2,14 @@
"name": "@fastgpt/plugins",
"version": "1.0.0",
"dependencies": {
"duck-duck-scrape": "^2.2.5",
"lodash": "^4.17.21",
"expr-eval": "^2.0.2"
},
"devDependencies": {
"@fastgpt/global": "workspace:*",
"@fastgpt/service": "workspace:*",
"@types/lodash": "^4.14.191",
"@types/node": "20.14.0"
}
}

View File

@@ -1,57 +1,126 @@
import { PluginSourceEnum } from '@fastgpt/global/core/plugin/constants';
import { FlowNodeTemplateTypeEnum } from '@fastgpt/global/core/workflow/constants';
import { FlowNodeTypeEnum } from '@fastgpt/global/core/workflow/node/constant';
import { SystemPluginResponseType } from './type';
import { NodeTemplateListItemType } from '@fastgpt/global/core/workflow/type/node';
import { isProduction } from '../service/common/system/constants';
import { FastGPTProUrl, isProduction } from '../service/common/system/constants';
import { GET, POST } from '@fastgpt/service/common/api/plusRequest';
import { SystemPluginTemplateItemType } from '@fastgpt/global/core/workflow/type';
import { cloneDeep } from 'lodash';
let list = ['getTime', 'fetchUrl', 'mathExprVal'];
let list = [
'getTime',
'fetchUrl',
'mathExprVal',
'duckduckgo',
'duckduckgo/search',
'duckduckgo/searchImg',
'duckduckgo/searchNews',
'duckduckgo/searchVideo'
];
/* Get plugins */
export const getCommunityPlugins = () => {
if (isProduction && global.communitySystemPlugins) return global.communitySystemPlugins;
return list.map<SystemPluginTemplateItemType>((name) => {
const config = require(`./src/${name}/template.json`);
global.communitySystemPlugins = list.map((name) => ({
...require(`./src/${name}/template.json`),
id: `${PluginSourceEnum.community}-${name}`
}));
const isFolder = list.find((item) => item.startsWith(`${name}/`));
return global.communitySystemPlugins;
const parentIdList = name.split('/').slice(0, -1);
const parentId =
parentIdList.length > 0 ? `${PluginSourceEnum.community}-${parentIdList.join('/')}` : null;
return {
...config,
id: `${PluginSourceEnum.community}-${name}`,
isFolder,
parentId,
isActive: true
};
});
};
const getCommercialPlugins = () => {
return GET<SystemPluginTemplateItemType[]>('/core/app/plugin/getSystemPlugins');
};
export const getSystemPluginTemplates = async (refresh = false) => {
if (isProduction && global.systemPlugins && !refresh) return cloneDeep(global.systemPlugins);
export const getCommunityPluginsTemplateList = () => {
return getCommunityPlugins().map<NodeTemplateListItemType>((plugin) => ({
id: plugin.id,
templateType: plugin.templateType ?? FlowNodeTemplateTypeEnum.other,
flowNodeType: FlowNodeTypeEnum.pluginModule,
avatar: plugin.avatar,
name: plugin.name,
intro: plugin.intro,
isTool: plugin.isTool
}));
try {
if (!global.systemPlugins) {
global.systemPlugins = [];
}
global.systemPlugins = FastGPTProUrl ? await getCommercialPlugins() : getCommunityPlugins();
return cloneDeep(global.systemPlugins);
} catch (error) {
//@ts-ignore
global.systemPlugins = undefined;
return Promise.reject(error);
}
};
export const getCommunityCb = async () => {
if (isProduction && global.communitySystemPluginCb) return global.communitySystemPluginCb;
// Do not modify the following code
const loadModule = async (name: string) => {
const module = await import(`./src/${name}/index`);
return module.default;
};
const result = await Promise.all(
list.map(async (name) => ({
name,
cb: await loadModule(name)
}))
const result = (
await Promise.all(
list.map(async (name) => {
try {
return {
name,
cb: await loadModule(name)
};
} catch (error) {}
})
)
).filter(Boolean) as {
name: string;
cb: any;
}[];
return result.reduce<Record<string, (e: any) => SystemPluginResponseType>>(
(acc, { name, cb }) => {
acc[name] = cb;
return acc;
},
{}
);
global.communitySystemPluginCb = result.reduce<
Record<string, (e: any) => SystemPluginResponseType>
>((acc, { name, cb }) => {
acc[name] = cb;
return acc;
}, {});
return global.communitySystemPluginCb;
};
const getCommercialCb = async () => {
const plugins = await getSystemPluginTemplates();
const result = plugins.map((plugin) => {
const name = plugin.id.split('-')[1];
return {
name,
cb: (e: any) =>
POST<Record<string, any>>('/core/app/plugin/run', {
pluginName: name,
data: e
})
};
});
return result.reduce<Record<string, (e: any) => SystemPluginResponseType>>(
(acc, { name, cb }) => {
acc[name] = cb;
return acc;
},
{}
);
};
export const getSystemPluginCb = async () => {
if (isProduction && global.systemPluginCb) return global.systemPluginCb;
try {
global.systemPluginCb = {};
global.systemPluginCb = FastGPTProUrl ? await getCommercialCb() : await getCommunityCb();
return global.systemPluginCb;
} catch (error) {
//@ts-ignore
global.systemPluginCb = undefined;
return Promise.reject(error);
}
};

View File

@@ -0,0 +1,47 @@
import { search, SafeSearchType } from 'duck-duck-scrape';
import { delay } from '@fastgpt/global/common/system/utils';
import { addLog } from '@fastgpt/service/common/system/log';
type Props = {
query: string;
};
// Response type same as HTTP outputs
type Response = Promise<{
result: string;
}>;
const main = async (props: Props, retry = 3): Response => {
const { query } = props;
try {
const searchResults = await search(query, {
safeSearch: SafeSearchType.STRICT,
time: 'y'
});
const result = searchResults.results
.map((item) => ({
title: item.title,
link: item.url,
snippet: item.description
}))
.slice(0, 10);
return {
result: JSON.stringify(result)
};
} catch (error) {
if (retry <= 0) {
return {
result: 'Failed to fetch data'
};
}
addLog.warn('DuckDuckGo error', { error });
await delay(Math.random() * 2000);
return main(props, retry - 1);
}
};
export default main;

View File

@@ -0,0 +1,260 @@
{
"author": "",
"version": "486",
"name": "DuckDuckGo 网络搜索",
"avatar": "core/workflow/template/duckduckgo",
"intro": "使用 DuckDuckGo 进行网络搜索",
"showStatus": true,
"weight": 10,
"isTool": true,
"templateType": "search",
"workflow": {
"nodes": [
{
"nodeId": "pluginInput",
"name": "自定义插件输入",
"intro": "可以配置插件需要哪些输入,利用这些输入来运行插件",
"avatar": "/imgs/workflow/input.png",
"flowNodeType": "pluginInput",
"showStatus": false,
"position": {
"x": 393.68844551739926,
"y": -58.80666875994541
},
"version": "481",
"inputs": [
{
"renderTypeList": ["reference"],
"selectedTypeIndex": 0,
"valueType": "string",
"canEdit": true,
"key": "query",
"label": "query",
"description": "检索词",
"required": true,
"toolDescription": "检索词"
}
],
"outputs": [
{
"id": "query",
"valueType": "string",
"key": "query",
"label": "query",
"type": "hidden"
}
]
},
{
"nodeId": "pluginOutput",
"name": "自定义插件输出",
"intro": "自定义配置外部输出,使用插件时,仅暴露自定义配置的输出",
"avatar": "/imgs/workflow/output.png",
"flowNodeType": "pluginOutput",
"showStatus": false,
"position": {
"x": 1795.6509902691012,
"y": -47.04550785550961
},
"version": "481",
"inputs": [
{
"renderTypeList": ["reference"],
"valueType": "string",
"canEdit": true,
"key": "result",
"label": "result",
"description": " 检索结果",
"value": ["hjnVuJAOwyXV", "lEyy5QqyIBrK"]
}
],
"outputs": []
},
{
"nodeId": "hjnVuJAOwyXV",
"name": "HTTP 请求",
"intro": "可以发出一个 HTTP 请求,实现更为复杂的操作(联网搜索、数据库查询等)",
"avatar": "/imgs/workflow/http.png",
"flowNodeType": "httpRequest468",
"showStatus": true,
"position": {
"x": 1054.6774638324207,
"y": -403.06127656499825
},
"version": "481",
"inputs": [
{
"key": "system_addInputParam",
"renderTypeList": ["addInputParam"],
"valueType": "dynamic",
"label": "",
"required": false,
"description": "core.module.input.description.HTTP Dynamic Input",
"customInputConfig": {
"selectValueTypeList": [
"string",
"number",
"boolean",
"object",
"arrayString",
"arrayNumber",
"arrayBoolean",
"arrayObject",
"any",
"chatHistory",
"datasetQuote",
"dynamic",
"selectApp",
"selectDataset"
],
"showDescription": false,
"showDefaultValue": true
}
},
{
"key": "system_httpMethod",
"renderTypeList": ["custom"],
"valueType": "string",
"label": "",
"value": "POST",
"required": true
},
{
"key": "system_httpReqUrl",
"renderTypeList": ["hidden"],
"valueType": "string",
"label": "",
"description": "core.module.input.description.Http Request Url",
"placeholder": "https://api.ai.com/getInventory",
"required": false,
"value": "duckduckgo/search"
},
{
"key": "system_httpHeader",
"renderTypeList": ["custom"],
"valueType": "any",
"value": [],
"label": "",
"description": "core.module.input.description.Http Request Header",
"placeholder": "core.module.input.description.Http Request Header",
"required": false
},
{
"key": "system_httpParams",
"renderTypeList": ["hidden"],
"valueType": "any",
"value": [],
"label": "",
"required": false
},
{
"key": "system_httpJsonBody",
"renderTypeList": ["hidden"],
"valueType": "any",
"value": "{\n \"query\": \"{{query}}\"\n}",
"label": "",
"required": false
},
{
"renderTypeList": ["reference"],
"valueType": "string",
"canEdit": true,
"key": "query",
"label": "query",
"customInputConfig": {
"selectValueTypeList": [
"string",
"number",
"boolean",
"object",
"arrayString",
"arrayNumber",
"arrayBoolean",
"arrayObject",
"any",
"chatHistory",
"datasetQuote",
"dynamic",
"selectApp",
"selectDataset"
],
"showDescription": false,
"showDefaultValue": true
},
"required": true,
"value": ["pluginInput", "query"]
}
],
"outputs": [
{
"id": "system_addOutputParam",
"key": "system_addOutputParam",
"type": "dynamic",
"valueType": "dynamic",
"label": "",
"customFieldConfig": {
"selectValueTypeList": [
"string",
"number",
"boolean",
"object",
"arrayString",
"arrayNumber",
"arrayBoolean",
"arrayObject",
"any",
"chatHistory",
"datasetQuote",
"dynamic",
"selectApp",
"selectDataset"
],
"showDescription": false,
"showDefaultValue": false
}
},
{
"id": "error",
"key": "error",
"label": "请求错误",
"description": "HTTP请求错误信息成功时返回空",
"valueType": "object",
"type": "static"
},
{
"id": "httpRawResponse",
"key": "httpRawResponse",
"label": "原始响应",
"required": true,
"description": "HTTP请求的原始响应。只能接受字符串或JSON类型响应数据。",
"valueType": "any",
"type": "static"
},
{
"id": "lEyy5QqyIBrK",
"valueType": "string",
"type": "dynamic",
"key": "result",
"label": "result"
}
]
}
],
"edges": [
{
"source": "pluginInput",
"target": "hjnVuJAOwyXV",
"sourceHandle": "pluginInput-source-right",
"targetHandle": "hjnVuJAOwyXV-target-left"
},
{
"source": "hjnVuJAOwyXV",
"target": "pluginOutput",
"sourceHandle": "hjnVuJAOwyXV-source-right",
"targetHandle": "pluginOutput-target-left"
}
]
}
}

View File

@@ -0,0 +1,46 @@
import { searchImages, SafeSearchType } from 'duck-duck-scrape';
import { delay } from '@fastgpt/global/common/system/utils';
import { addLog } from '@fastgpt/service/common/system/log';
type Props = {
query: string;
};
// Response type same as HTTP outputs
type Response = Promise<{
result: string;
}>;
const main = async (props: Props, retry = 3): Response => {
const { query } = props;
try {
const searchResults = await searchImages(query, {
safeSearch: SafeSearchType.STRICT
});
const result = searchResults.results
.map((item) => ({
title: item.title,
image: item.image
}))
.slice(0, 10);
return {
result: JSON.stringify(result)
};
} catch (error) {
if (retry <= 0) {
return {
result: 'Failed to fetch data'
};
}
addLog.warn('DuckDuckGo error', { error });
await delay(Math.random() * 2000);
return main(props, retry - 1);
}
};
export default main;

View File

@@ -0,0 +1,260 @@
{
"author": "",
"version": "486",
"name": "DuckDuckGo 图片搜索",
"avatar": "core/workflow/template/duckduckgo",
"intro": "使用 DuckDuckGo 进行图片搜索",
"showStatus": true,
"weight": 10,
"isTool": true,
"templateType": "search",
"workflow": {
"nodes": [
{
"nodeId": "pluginInput",
"name": "自定义插件输入",
"intro": "可以配置插件需要哪些输入,利用这些输入来运行插件",
"avatar": "/imgs/workflow/input.png",
"flowNodeType": "pluginInput",
"showStatus": false,
"position": {
"x": 393.68844551739926,
"y": -58.80666875994541
},
"version": "481",
"inputs": [
{
"renderTypeList": ["reference"],
"selectedTypeIndex": 0,
"valueType": "string",
"canEdit": true,
"key": "query",
"label": "query",
"description": "检索词",
"required": true,
"toolDescription": "检索词"
}
],
"outputs": [
{
"id": "query",
"valueType": "string",
"key": "query",
"label": "query",
"type": "hidden"
}
]
},
{
"nodeId": "pluginOutput",
"name": "自定义插件输出",
"intro": "自定义配置外部输出,使用插件时,仅暴露自定义配置的输出",
"avatar": "/imgs/workflow/output.png",
"flowNodeType": "pluginOutput",
"showStatus": false,
"position": {
"x": 1795.6509902691012,
"y": -47.04550785550961
},
"version": "481",
"inputs": [
{
"renderTypeList": ["reference"],
"valueType": "string",
"canEdit": true,
"key": "result",
"label": "result",
"description": " 检索结果",
"value": ["hjnVuJAOwyXV", "lEyy5QqyIBrK"]
}
],
"outputs": []
},
{
"nodeId": "hjnVuJAOwyXV",
"name": "HTTP 请求",
"intro": "可以发出一个 HTTP 请求,实现更为复杂的操作(联网搜索、数据库查询等)",
"avatar": "/imgs/workflow/http.png",
"flowNodeType": "httpRequest468",
"showStatus": true,
"position": {
"x": 1054.6774638324207,
"y": -403.06127656499825
},
"version": "481",
"inputs": [
{
"key": "system_addInputParam",
"renderTypeList": ["addInputParam"],
"valueType": "dynamic",
"label": "",
"required": false,
"description": "core.module.input.description.HTTP Dynamic Input",
"customInputConfig": {
"selectValueTypeList": [
"string",
"number",
"boolean",
"object",
"arrayString",
"arrayNumber",
"arrayBoolean",
"arrayObject",
"any",
"chatHistory",
"datasetQuote",
"dynamic",
"selectApp",
"selectDataset"
],
"showDescription": false,
"showDefaultValue": true
}
},
{
"key": "system_httpMethod",
"renderTypeList": ["custom"],
"valueType": "string",
"label": "",
"value": "POST",
"required": true
},
{
"key": "system_httpReqUrl",
"renderTypeList": ["hidden"],
"valueType": "string",
"label": "",
"description": "core.module.input.description.Http Request Url",
"placeholder": "https://api.ai.com/getInventory",
"required": false,
"value": "duckduckgo/searchImg"
},
{
"key": "system_httpHeader",
"renderTypeList": ["custom"],
"valueType": "any",
"value": [],
"label": "",
"description": "core.module.input.description.Http Request Header",
"placeholder": "core.module.input.description.Http Request Header",
"required": false
},
{
"key": "system_httpParams",
"renderTypeList": ["hidden"],
"valueType": "any",
"value": [],
"label": "",
"required": false
},
{
"key": "system_httpJsonBody",
"renderTypeList": ["hidden"],
"valueType": "any",
"value": "{\n \"query\": \"{{query}}\"\n}",
"label": "",
"required": false
},
{
"renderTypeList": ["reference"],
"valueType": "string",
"canEdit": true,
"key": "query",
"label": "query",
"customInputConfig": {
"selectValueTypeList": [
"string",
"number",
"boolean",
"object",
"arrayString",
"arrayNumber",
"arrayBoolean",
"arrayObject",
"any",
"chatHistory",
"datasetQuote",
"dynamic",
"selectApp",
"selectDataset"
],
"showDescription": false,
"showDefaultValue": true
},
"required": true,
"value": ["pluginInput", "query"]
}
],
"outputs": [
{
"id": "system_addOutputParam",
"key": "system_addOutputParam",
"type": "dynamic",
"valueType": "dynamic",
"label": "",
"customFieldConfig": {
"selectValueTypeList": [
"string",
"number",
"boolean",
"object",
"arrayString",
"arrayNumber",
"arrayBoolean",
"arrayObject",
"any",
"chatHistory",
"datasetQuote",
"dynamic",
"selectApp",
"selectDataset"
],
"showDescription": false,
"showDefaultValue": false
}
},
{
"id": "error",
"key": "error",
"label": "请求错误",
"description": "HTTP请求错误信息成功时返回空",
"valueType": "object",
"type": "static"
},
{
"id": "httpRawResponse",
"key": "httpRawResponse",
"label": "原始响应",
"required": true,
"description": "HTTP请求的原始响应。只能接受字符串或JSON类型响应数据。",
"valueType": "any",
"type": "static"
},
{
"id": "lEyy5QqyIBrK",
"valueType": "string",
"type": "dynamic",
"key": "result",
"label": "result"
}
]
}
],
"edges": [
{
"source": "pluginInput",
"target": "hjnVuJAOwyXV",
"sourceHandle": "pluginInput-source-right",
"targetHandle": "hjnVuJAOwyXV-target-left"
},
{
"source": "hjnVuJAOwyXV",
"target": "pluginOutput",
"sourceHandle": "hjnVuJAOwyXV-source-right",
"targetHandle": "pluginOutput-target-left"
}
]
}
}

View File

@@ -0,0 +1,47 @@
import { searchNews, SafeSearchType } from 'duck-duck-scrape';
import { delay } from '@fastgpt/global/common/system/utils';
import { addLog } from '@fastgpt/service/common/system/log';
type Props = {
query: string;
};
// Response type same as HTTP outputs
type Response = Promise<{
result: string;
}>;
const main = async (props: Props, retry = 3): Response => {
const { query } = props;
try {
const searchResults = await searchNews(query, {
safeSearch: SafeSearchType.STRICT
});
const result = searchResults.results
.map((item) => ({
title: item.title,
excerpt: item.excerpt,
url: item.url
}))
.slice(0, 10);
return {
result: JSON.stringify(result)
};
} catch (error) {
if (retry <= 0) {
return {
result: 'Failed to fetch data'
};
}
addLog.warn('DuckDuckGo error', { error });
await delay(Math.random() * 2000);
return main(props, retry - 1);
}
};
export default main;

View File

@@ -0,0 +1,260 @@
{
"author": "",
"version": "486",
"name": "DuckDuckGo 新闻检索",
"avatar": "core/workflow/template/duckduckgo",
"intro": "使用 DuckDuckGo 进行新闻检索",
"showStatus": true,
"weight": 10,
"isTool": true,
"templateType": "search",
"workflow": {
"nodes": [
{
"nodeId": "pluginInput",
"name": "自定义插件输入",
"intro": "可以配置插件需要哪些输入,利用这些输入来运行插件",
"avatar": "/imgs/workflow/input.png",
"flowNodeType": "pluginInput",
"showStatus": false,
"position": {
"x": 393.68844551739926,
"y": -58.80666875994541
},
"version": "481",
"inputs": [
{
"renderTypeList": ["reference"],
"selectedTypeIndex": 0,
"valueType": "string",
"canEdit": true,
"key": "query",
"label": "query",
"description": "检索词",
"required": true,
"toolDescription": "检索词"
}
],
"outputs": [
{
"id": "query",
"valueType": "string",
"key": "query",
"label": "query",
"type": "hidden"
}
]
},
{
"nodeId": "pluginOutput",
"name": "自定义插件输出",
"intro": "自定义配置外部输出,使用插件时,仅暴露自定义配置的输出",
"avatar": "/imgs/workflow/output.png",
"flowNodeType": "pluginOutput",
"showStatus": false,
"position": {
"x": 1795.6509902691012,
"y": -47.04550785550961
},
"version": "481",
"inputs": [
{
"renderTypeList": ["reference"],
"valueType": "string",
"canEdit": true,
"key": "result",
"label": "result",
"description": " 检索结果",
"value": ["hjnVuJAOwyXV", "lEyy5QqyIBrK"]
}
],
"outputs": []
},
{
"nodeId": "hjnVuJAOwyXV",
"name": "HTTP 请求",
"intro": "可以发出一个 HTTP 请求,实现更为复杂的操作(联网搜索、数据库查询等)",
"avatar": "/imgs/workflow/http.png",
"flowNodeType": "httpRequest468",
"showStatus": true,
"position": {
"x": 1054.6774638324207,
"y": -403.06127656499825
},
"version": "481",
"inputs": [
{
"key": "system_addInputParam",
"renderTypeList": ["addInputParam"],
"valueType": "dynamic",
"label": "",
"required": false,
"description": "core.module.input.description.HTTP Dynamic Input",
"customInputConfig": {
"selectValueTypeList": [
"string",
"number",
"boolean",
"object",
"arrayString",
"arrayNumber",
"arrayBoolean",
"arrayObject",
"any",
"chatHistory",
"datasetQuote",
"dynamic",
"selectApp",
"selectDataset"
],
"showDescription": false,
"showDefaultValue": true
}
},
{
"key": "system_httpMethod",
"renderTypeList": ["custom"],
"valueType": "string",
"label": "",
"value": "POST",
"required": true
},
{
"key": "system_httpReqUrl",
"renderTypeList": ["hidden"],
"valueType": "string",
"label": "",
"description": "core.module.input.description.Http Request Url",
"placeholder": "https://api.ai.com/getInventory",
"required": false,
"value": "duckduckgo/searchNews"
},
{
"key": "system_httpHeader",
"renderTypeList": ["custom"],
"valueType": "any",
"value": [],
"label": "",
"description": "core.module.input.description.Http Request Header",
"placeholder": "core.module.input.description.Http Request Header",
"required": false
},
{
"key": "system_httpParams",
"renderTypeList": ["hidden"],
"valueType": "any",
"value": [],
"label": "",
"required": false
},
{
"key": "system_httpJsonBody",
"renderTypeList": ["hidden"],
"valueType": "any",
"value": "{\n \"query\": \"{{query}}\"\n}",
"label": "",
"required": false
},
{
"renderTypeList": ["reference"],
"valueType": "string",
"canEdit": true,
"key": "query",
"label": "query",
"customInputConfig": {
"selectValueTypeList": [
"string",
"number",
"boolean",
"object",
"arrayString",
"arrayNumber",
"arrayBoolean",
"arrayObject",
"any",
"chatHistory",
"datasetQuote",
"dynamic",
"selectApp",
"selectDataset"
],
"showDescription": false,
"showDefaultValue": true
},
"required": true,
"value": ["pluginInput", "query"]
}
],
"outputs": [
{
"id": "system_addOutputParam",
"key": "system_addOutputParam",
"type": "dynamic",
"valueType": "dynamic",
"label": "",
"customFieldConfig": {
"selectValueTypeList": [
"string",
"number",
"boolean",
"object",
"arrayString",
"arrayNumber",
"arrayBoolean",
"arrayObject",
"any",
"chatHistory",
"datasetQuote",
"dynamic",
"selectApp",
"selectDataset"
],
"showDescription": false,
"showDefaultValue": false
}
},
{
"id": "error",
"key": "error",
"label": "请求错误",
"description": "HTTP请求错误信息成功时返回空",
"valueType": "object",
"type": "static"
},
{
"id": "httpRawResponse",
"key": "httpRawResponse",
"label": "原始响应",
"required": true,
"description": "HTTP请求的原始响应。只能接受字符串或JSON类型响应数据。",
"valueType": "any",
"type": "static"
},
{
"id": "lEyy5QqyIBrK",
"valueType": "string",
"type": "dynamic",
"key": "result",
"label": "result"
}
]
}
],
"edges": [
{
"source": "pluginInput",
"target": "hjnVuJAOwyXV",
"sourceHandle": "pluginInput-source-right",
"targetHandle": "hjnVuJAOwyXV-target-left"
},
{
"source": "hjnVuJAOwyXV",
"target": "pluginOutput",
"sourceHandle": "hjnVuJAOwyXV-source-right",
"targetHandle": "pluginOutput-target-left"
}
]
}
}

View File

@@ -0,0 +1,47 @@
import { searchVideos, SafeSearchType } from 'duck-duck-scrape';
import { delay } from '@fastgpt/global/common/system/utils';
import { addLog } from '@fastgpt/service/common/system/log';
type Props = {
query: string;
};
// Response type same as HTTP outputs
type Response = Promise<{
result: string;
}>;
const main = async (props: Props, retry = 3): Response => {
const { query } = props;
try {
const searchResults = await searchVideos(query, {
safeSearch: SafeSearchType.STRICT
});
const result = searchResults.results
.map((item) => ({
title: item.title,
description: item.description,
url: item.url
}))
.slice(0, 10);
return {
result: JSON.stringify(result)
};
} catch (error) {
if (retry <= 0) {
return {
result: 'Failed to fetch data'
};
}
addLog.warn('DuckDuckGo error', { error });
await delay(Math.random() * 2000);
return main(props, retry - 1);
}
};
export default main;

View File

@@ -0,0 +1,260 @@
{
"author": "",
"version": "486",
"name": "DuckDuckGo 视频搜索",
"avatar": "core/workflow/template/duckduckgo",
"intro": "使用 DuckDuckGo 进行视频搜索",
"showStatus": true,
"weight": 10,
"isTool": true,
"templateType": "search",
"workflow": {
"nodes": [
{
"nodeId": "pluginInput",
"name": "自定义插件输入",
"intro": "可以配置插件需要哪些输入,利用这些输入来运行插件",
"avatar": "/imgs/workflow/input.png",
"flowNodeType": "pluginInput",
"showStatus": false,
"position": {
"x": 393.68844551739926,
"y": -58.80666875994541
},
"version": "481",
"inputs": [
{
"renderTypeList": ["reference"],
"selectedTypeIndex": 0,
"valueType": "string",
"canEdit": true,
"key": "query",
"label": "query",
"description": "检索词",
"required": true,
"toolDescription": "检索词"
}
],
"outputs": [
{
"id": "query",
"valueType": "string",
"key": "query",
"label": "query",
"type": "hidden"
}
]
},
{
"nodeId": "pluginOutput",
"name": "自定义插件输出",
"intro": "自定义配置外部输出,使用插件时,仅暴露自定义配置的输出",
"avatar": "/imgs/workflow/output.png",
"flowNodeType": "pluginOutput",
"showStatus": false,
"position": {
"x": 1795.6509902691012,
"y": -47.04550785550961
},
"version": "481",
"inputs": [
{
"renderTypeList": ["reference"],
"valueType": "string",
"canEdit": true,
"key": "result",
"label": "result",
"description": " 检索结果",
"value": ["hjnVuJAOwyXV", "lEyy5QqyIBrK"]
}
],
"outputs": []
},
{
"nodeId": "hjnVuJAOwyXV",
"name": "HTTP 请求",
"intro": "可以发出一个 HTTP 请求,实现更为复杂的操作(联网搜索、数据库查询等)",
"avatar": "/imgs/workflow/http.png",
"flowNodeType": "httpRequest468",
"showStatus": true,
"position": {
"x": 1054.6774638324207,
"y": -403.06127656499825
},
"version": "481",
"inputs": [
{
"key": "system_addInputParam",
"renderTypeList": ["addInputParam"],
"valueType": "dynamic",
"label": "",
"required": false,
"description": "core.module.input.description.HTTP Dynamic Input",
"customInputConfig": {
"selectValueTypeList": [
"string",
"number",
"boolean",
"object",
"arrayString",
"arrayNumber",
"arrayBoolean",
"arrayObject",
"any",
"chatHistory",
"datasetQuote",
"dynamic",
"selectApp",
"selectDataset"
],
"showDescription": false,
"showDefaultValue": true
}
},
{
"key": "system_httpMethod",
"renderTypeList": ["custom"],
"valueType": "string",
"label": "",
"value": "POST",
"required": true
},
{
"key": "system_httpReqUrl",
"renderTypeList": ["hidden"],
"valueType": "string",
"label": "",
"description": "core.module.input.description.Http Request Url",
"placeholder": "https://api.ai.com/getInventory",
"required": false,
"value": "duckduckgo/searchVideo"
},
{
"key": "system_httpHeader",
"renderTypeList": ["custom"],
"valueType": "any",
"value": [],
"label": "",
"description": "core.module.input.description.Http Request Header",
"placeholder": "core.module.input.description.Http Request Header",
"required": false
},
{
"key": "system_httpParams",
"renderTypeList": ["hidden"],
"valueType": "any",
"value": [],
"label": "",
"required": false
},
{
"key": "system_httpJsonBody",
"renderTypeList": ["hidden"],
"valueType": "any",
"value": "{\n \"query\": \"{{query}}\"\n}",
"label": "",
"required": false
},
{
"renderTypeList": ["reference"],
"valueType": "string",
"canEdit": true,
"key": "query",
"label": "query",
"customInputConfig": {
"selectValueTypeList": [
"string",
"number",
"boolean",
"object",
"arrayString",
"arrayNumber",
"arrayBoolean",
"arrayObject",
"any",
"chatHistory",
"datasetQuote",
"dynamic",
"selectApp",
"selectDataset"
],
"showDescription": false,
"showDefaultValue": true
},
"required": true,
"value": ["pluginInput", "query"]
}
],
"outputs": [
{
"id": "system_addOutputParam",
"key": "system_addOutputParam",
"type": "dynamic",
"valueType": "dynamic",
"label": "",
"customFieldConfig": {
"selectValueTypeList": [
"string",
"number",
"boolean",
"object",
"arrayString",
"arrayNumber",
"arrayBoolean",
"arrayObject",
"any",
"chatHistory",
"datasetQuote",
"dynamic",
"selectApp",
"selectDataset"
],
"showDescription": false,
"showDefaultValue": false
}
},
{
"id": "error",
"key": "error",
"label": "请求错误",
"description": "HTTP请求错误信息成功时返回空",
"valueType": "object",
"type": "static"
},
{
"id": "httpRawResponse",
"key": "httpRawResponse",
"label": "原始响应",
"required": true,
"description": "HTTP请求的原始响应。只能接受字符串或JSON类型响应数据。",
"valueType": "any",
"type": "static"
},
{
"id": "lEyy5QqyIBrK",
"valueType": "string",
"type": "dynamic",
"key": "result",
"label": "result"
}
]
}
],
"edges": [
{
"source": "pluginInput",
"target": "hjnVuJAOwyXV",
"sourceHandle": "pluginInput-source-right",
"targetHandle": "hjnVuJAOwyXV-target-left"
},
{
"source": "hjnVuJAOwyXV",
"target": "pluginOutput",
"sourceHandle": "hjnVuJAOwyXV-source-right",
"targetHandle": "pluginOutput-target-left"
}
]
}
}

View File

@@ -0,0 +1,17 @@
{
"author": "",
"version": "486",
"name": "DuckDuckGo服务",
"avatar": "core/workflow/template/duckduckgo",
"intro": "DuckDuckGo 服务,包含网络搜索、图片搜索、新闻搜索等。",
"showStatus": false,
"weight": 10,
"isTool": true,
"templateType": "tools",
"workflow": {
"nodes": [],
"edges": []
}
}

View File

@@ -1,8 +1,8 @@
{
"author": "FastGPT",
"author": "",
"version": "486",
"name": "网页内容抓取",
"avatar": "/imgs/workflow/fetchUrl.svg",
"avatar": "core/workflow/template/fetchUrl",
"intro": "可获取一个网页链接内容,并以 Markdown 格式输出,仅支持获取静态网站。",
"showStatus": true,
"weight": 10,

View File

@@ -1,9 +1,9 @@
{
"author": "FastGPT Team",
"author": "",
"version": "481",
"templateType": "tools",
"name": "获取当前时间",
"avatar": "/imgs/workflow/getCurrentTime.svg",
"avatar": "core/workflow/template/getTime",
"intro": "获取用户当前时区的时间。",
"showStatus": false,
"isTool": true,

View File

@@ -1,8 +1,8 @@
{
"author": "FastGPT",
"author": "",
"version": "486",
"name": "数学公式执行",
"avatar": "/imgs/workflow/mathExprEval.svg",
"avatar": "core/workflow/template/mathCall",
"intro": "用于执行数学表达式的工具,通过 js 的 expr-eval 库运行表达式并返回结果。",
"showStatus": false,
"weight": 10,

View File

@@ -1,7 +1,9 @@
import { PluginTemplateType } from '@fastgpt/global/core/plugin/type.d';
import { SystemPluginTemplateItemType } from '@fastgpt/global/core/workflow/type';
export type SystemPluginResponseType = Promise<Record<string, any>>;
declare global {
var communitySystemPlugins: SystemPluginTemplateItemType[];
var communitySystemPluginCb: Record<string, (e: any) => SystemPluginResponseType>;
var systemPlugins: SystemPluginTemplateItemType[];
var systemPluginCb: Record<string, (e: any) => SystemPluginResponseType>;
}

View File

@@ -9,7 +9,7 @@ import { getNanoid } from '@fastgpt/global/common/string/tools';
import { cloneDeep } from 'lodash';
import { MongoApp } from '../schema';
import { SystemPluginTemplateItemType } from '@fastgpt/global/core/workflow/type';
import { getCommunityPlugins } from '@fastgpt/plugins/register';
import { getSystemPluginTemplates } from '../../../../plugins/register';
/*
plugin id rule:
@@ -28,7 +28,7 @@ export async function splitCombinePluginId(id: string) {
};
}
const [source, pluginId] = id.split('-') as [`${PluginSourceEnum}`, string];
const [source, pluginId] = id.split('-') as [PluginSourceEnum, string];
if (!source || !pluginId) return Promise.reject('pluginId not found');
return { source, pluginId: id };
@@ -39,14 +39,6 @@ const getPluginTemplateById = async (
): Promise<SystemPluginTemplateItemType & { teamId?: string }> => {
const { source, pluginId } = await splitCombinePluginId(id);
if (source === PluginSourceEnum.community) {
const item = [...global.communityPlugins, ...getCommunityPlugins()].find(
(plugin) => plugin.id === pluginId
);
if (!item) return Promise.reject('plugin not found');
return cloneDeep(item);
}
if (source === PluginSourceEnum.personal) {
const item = await MongoApp.findById(id).lean();
if (!item) return Promise.reject('plugin not found');
@@ -68,8 +60,14 @@ const getPluginTemplateById = async (
originCost: 0,
currentCost: 0
};
} else {
const item = [...global.communityPlugins, ...(await getSystemPluginTemplates())].find(
(plugin) => plugin.id === pluginId
);
if (!item) return Promise.reject('plugin not found');
return cloneDeep(item);
}
return Promise.reject('plugin not found');
};
/* format plugin modules to plugin preview module */
@@ -98,10 +96,12 @@ export async function getPluginRuntimeById(id: string): Promise<PluginRuntimeTyp
const plugin = await getPluginTemplateById(id);
return {
id: plugin.id,
teamId: plugin.teamId,
name: plugin.name,
avatar: plugin.avatar,
showStatus: plugin.showStatus,
currentCost: plugin.currentCost,
nodes: plugin.workflow.nodes,
edges: plugin.workflow.edges
};

View File

@@ -0,0 +1,35 @@
import { connectionMongo, getMongoModel } from '../../../common/mongo/index';
const { Schema } = connectionMongo;
import type { SystemPluginConfigSchemaType } from './type';
export const collectionName = 'app_system_plugins';
const SystemPluginSchema = new Schema({
pluginId: {
type: String,
required: true
},
isActive: {
type: Boolean,
required: true
},
inputConfig: {
type: Array,
default: []
},
originCost: {
type: Number,
default: 0
},
currentCost: {
type: Number,
default: 0
}
});
SystemPluginSchema.index({ pluginId: 1 });
export const MongoSystemPluginSchema = getMongoModel<SystemPluginConfigSchemaType>(
collectionName,
SystemPluginSchema
);

View File

@@ -0,0 +1,10 @@
import { SystemPluginTemplateItemType } from '@fastgpt/global/core/workflow/type';
export type SystemPluginConfigSchemaType = {
pluginId: string;
originCost: number; // n points/one time
currentCost: number;
isActive: boolean;
inputConfig: SystemPluginTemplateItemType['inputConfig'];
};

View File

@@ -0,0 +1,21 @@
import { PluginRuntimeType } from '@fastgpt/global/core/workflow/runtime/type';
import { ChatNodeUsageType } from '@fastgpt/global/support/wallet/bill/type';
import { splitCombinePluginId } from './controller';
import { PluginSourceEnum } from '@fastgpt/global/core/plugin/constants';
/*
1. Commercial plugin: n points per times
2. Other plugin: sum of children points
*/
export const computedPluginUsage = async (
plugin: PluginRuntimeType,
childrenUsage: ChatNodeUsageType[]
) => {
const { source } = await splitCombinePluginId(plugin.id);
if (source === PluginSourceEnum.commercial) {
return plugin.currentCost ?? 0;
}
return childrenUsage.reduce((sum, item) => sum + (item.totalPoints || 0), 0);
};

View File

@@ -67,7 +67,7 @@ const DatasetSchema = new Schema({
agentModel: {
type: String,
required: true,
default: 'gpt-3.5-turbo'
default: 'gpt-4o-mini'
},
intro: {
type: String,

View File

@@ -161,70 +161,86 @@ export const dispatchChatCompletion = async (props: ChatProps): Promise<ChatResp
stream,
messages: requestMessages
};
const response = await ai.chat.completions.create(requestBody, {
headers: {
Accept: 'application/json, text/plain, */*'
}
});
try {
const response = await ai.chat.completions.create(requestBody, {
headers: {
Accept: 'application/json, text/plain, */*'
}
});
const { answerText } = await (async () => {
if (res && stream) {
// sse response
const { answer } = await streamResponse({
res,
detail,
stream: response,
requestBody
});
const { answerText } = await (async () => {
if (res && stream) {
// sse response
const { answer } = await streamResponse({
res,
detail,
stream: response
});
return {
answerText: answer
};
} else {
const unStreamResponse = response as ChatCompletion;
const answer = unStreamResponse.choices?.[0]?.message?.content || '';
if (!answer) {
throw new Error('LLM model response empty');
}
return {
answerText: answer
};
}
})();
return {
answerText: answer
};
} else {
const unStreamResponse = response as ChatCompletion;
const answer = unStreamResponse.choices?.[0]?.message?.content || '';
const completeMessages = filterMessages.concat({
role: ChatCompletionRequestMessageRoleEnum.Assistant,
content: answerText
});
const chatCompleteMessages = GPTMessages2Chats(completeMessages);
return {
answerText: answer
};
}
})();
const tokens = await countMessagesTokens(chatCompleteMessages);
const { totalPoints, modelName } = formatModelChars2Points({
model,
tokens,
modelType: ModelTypeEnum.llm
});
const completeMessages = filterMessages.concat({
role: ChatCompletionRequestMessageRoleEnum.Assistant,
content: answerText
});
const chatCompleteMessages = GPTMessages2Chats(completeMessages);
return {
answerText,
[DispatchNodeResponseKeyEnum.nodeResponse]: {
totalPoints: user.openaiAccount?.key ? 0 : totalPoints,
model: modelName,
const tokens = await countMessagesTokens(chatCompleteMessages);
const { totalPoints, modelName } = formatModelChars2Points({
model,
tokens,
query: `${userChatInput}`,
maxToken: max_tokens,
historyPreview: getHistoryPreview(chatCompleteMessages),
contextTotalLen: completeMessages.length
},
[DispatchNodeResponseKeyEnum.nodeDispatchUsages]: [
{
moduleName: name,
modelType: ModelTypeEnum.llm
});
return {
answerText,
[DispatchNodeResponseKeyEnum.nodeResponse]: {
totalPoints: user.openaiAccount?.key ? 0 : totalPoints,
model: modelName,
tokens
}
],
[DispatchNodeResponseKeyEnum.toolResponses]: answerText,
history: chatCompleteMessages
};
tokens,
query: `${userChatInput}`,
maxToken: max_tokens,
historyPreview: getHistoryPreview(chatCompleteMessages),
contextTotalLen: completeMessages.length
},
[DispatchNodeResponseKeyEnum.nodeDispatchUsages]: [
{
moduleName: name,
totalPoints: user.openaiAccount?.key ? 0 : totalPoints,
model: modelName,
tokens
}
],
[DispatchNodeResponseKeyEnum.toolResponses]: answerText,
history: chatCompleteMessages
};
} catch (error) {
addLog.warn(`LLM response error`, {
baseUrl: user.openaiAccount?.baseUrl,
requestBody
});
if (user.openaiAccount?.baseUrl) {
return Promise.reject(`您的 OpenAI key 出错了: ${JSON.stringify(requestBody)}`);
}
return Promise.reject(error);
}
};
async function filterQuote({
@@ -334,13 +350,11 @@ async function getMaxTokens({
async function streamResponse({
res,
detail,
stream,
requestBody
stream
}: {
res: NextApiResponse;
detail: boolean;
stream: StreamChatType;
requestBody: Record<string, any>;
}) {
const write = responseWriteController({
res,
@@ -364,10 +378,5 @@ async function streamResponse({
});
}
if (!answer) {
addLog.info(`LLM model response empty`, requestBody);
return Promise.reject('core.chat.Chat API is error or undefined');
}
return { answer };
}

View File

@@ -2,7 +2,7 @@ import type { ModuleDispatchProps } from '@fastgpt/global/core/workflow/runtime/
import { dispatchWorkFlow } from '../index';
import { FlowNodeTypeEnum } from '@fastgpt/global/core/workflow/node/constant';
import { DispatchNodeResponseKeyEnum } from '@fastgpt/global/core/workflow/runtime/constants';
import { getPluginRuntimeById, splitCombinePluginId } from '../../../app/plugin/controller';
import { getPluginRuntimeById } from '../../../app/plugin/controller';
import {
getDefaultEntryNodeIds,
initWorkflowEdgeStatus,
@@ -10,9 +10,9 @@ import {
} from '@fastgpt/global/core/workflow/runtime/utils';
import { DispatchNodeResultType } from '@fastgpt/global/core/workflow/runtime/type';
import { updateToolInputValue } from '../agent/runTool/utils';
import { authAppByTmbId } from '../../../../support/permission/app/auth';
import { authPluginByTmbId } from '../../../../support/permission/app/auth';
import { ReadPermissionVal } from '@fastgpt/global/support/permission/constant';
import { PluginSourceEnum } from '@fastgpt/global/core/plugin/constants';
import { computedPluginUsage } from '../../../app/plugin/utils';
type RunPluginProps = ModuleDispatchProps<{
[key: string]: any;
@@ -33,14 +33,12 @@ export const dispatchRunPlugin = async (props: RunPluginProps): Promise<RunPlugi
}
// auth plugin
const { source } = await splitCombinePluginId(pluginId);
if (source === PluginSourceEnum.personal) {
await authAppByTmbId({
appId: pluginId,
tmbId: workflowApp.tmbId,
per: ReadPermissionVal
});
}
await authPluginByTmbId({
appId: pluginId,
tmbId: workflowApp.tmbId,
per: ReadPermissionVal
});
const plugin = await getPluginRuntimeById(pluginId);
// concat dynamic inputs
@@ -78,12 +76,15 @@ export const dispatchRunPlugin = async (props: RunPluginProps): Promise<RunPlugi
output.moduleLogo = plugin.avatar;
}
const isError = !!output?.pluginOutput?.error;
const usagePoints = isError ? 0 : await computedPluginUsage(plugin, flowUsages);
return {
assistantResponses,
// responseData, // debug
[DispatchNodeResponseKeyEnum.nodeResponse]: {
moduleLogo: plugin.avatar,
totalPoints: flowResponses.reduce((sum, item) => sum + (item.totalPoints || 0), 0),
totalPoints: usagePoints,
pluginOutput: output?.pluginOutput,
pluginDetail:
mode === 'test' && plugin.teamId === teamId
@@ -96,8 +97,7 @@ export const dispatchRunPlugin = async (props: RunPluginProps): Promise<RunPlugi
[DispatchNodeResponseKeyEnum.nodeDispatchUsages]: [
{
moduleName: plugin.name,
totalPoints: flowUsages.reduce((sum, item) => sum + (item.totalPoints || 0), 0),
model: plugin.name,
totalPoints: usagePoints,
tokens: 0
}
],

View File

@@ -16,7 +16,7 @@ import { DispatchNodeResultType } from '@fastgpt/global/core/workflow/runtime/ty
import { getErrText } from '@fastgpt/global/common/error/utils';
import { responseWrite } from '../../../../common/response';
import { textAdaptGptResponse } from '@fastgpt/global/core/workflow/runtime/utils';
import { getCommunityCb } from '@fastgpt/plugins/register';
import { getSystemPluginCb } from '../../../../../plugins/register';
type PropsArrType = {
key: string;
@@ -121,9 +121,9 @@ export const dispatchHttp468Request = async (props: HttpRequestProps): Promise<H
try {
const { formatResponse, rawResponse } = await (async () => {
const communityPluginCb = await getCommunityCb();
if (communityPluginCb[httpReqUrl]) {
const pluginResult = await communityPluginCb[httpReqUrl](requestBody);
const systemPluginCb = await getSystemPluginCb();
if (systemPluginCb[httpReqUrl]) {
const pluginResult = await systemPluginCb[httpReqUrl](requestBody);
return {
formatResponse: pluginResult,
rawResponse: pluginResult

View File

@@ -3,7 +3,6 @@
"version": "1.0.0",
"dependencies": {
"@fastgpt/global": "workspace:*",
"@fastgpt/plugins": "workspace:*",
"@node-rs/jieba": "1.10.0",
"@xmldom/xmldom": "^0.8.10",
"@zilliz/milvus2-sdk-node": "2.4.2",

View File

@@ -12,6 +12,27 @@ import { AuthResponseType } from '../type/auth.d';
import { PermissionValueType } from '@fastgpt/global/support/permission/type';
import { AppFolderTypeList } from '@fastgpt/global/core/app/constants';
import { ParentIdType } from '@fastgpt/global/common/parentFolder/type';
import { splitCombinePluginId } from '../../../core/app/plugin/controller';
import { PluginSourceEnum } from '@fastgpt/global/core/plugin/constants';
export const authPluginByTmbId = async ({
tmbId,
appId,
per
}: {
tmbId: string;
appId: string;
per: PermissionValueType;
}) => {
const { source } = await splitCombinePluginId(appId);
if (source === PluginSourceEnum.personal) {
await authAppByTmbId({
appId,
tmbId,
per
});
}
};
export const authAppByTmbId = async ({
tmbId,

View File

@@ -2,9 +2,16 @@ import React from 'react';
import { Image } from '@chakra-ui/react';
import type { ImageProps } from '@chakra-ui/react';
import { LOGO_ICON } from '@fastgpt/global/common/system/constants';
import MyIcon from '../Icon';
import { iconPaths } from '../Icon/constants';
const Avatar = ({ w = '30px', src, ...props }: ImageProps) => {
return (
// @ts-ignore
const isIcon = !!iconPaths[src as any];
return isIcon ? (
<MyIcon name={src as any} w={w} borderRadius={props.borderRadius} />
) : (
<Image
fallbackSrc={LOGO_ICON}
fallbackStrategy={'onError'}

View File

@@ -163,6 +163,45 @@ export const iconPaths = {
'core/workflow/runSkip': () => import('./icons/core/workflow/runSkip.svg'),
'core/workflow/runSuccess': () => import('./icons/core/workflow/runSuccess.svg'),
'core/workflow/running': () => import('./icons/core/workflow/running.svg'),
'core/workflow/template/FileRead': () => import('./icons/core/workflow/template/FileRead.svg'),
'core/workflow/template/aiChat': () => import('./icons/core/workflow/template/aiChat.svg'),
'core/workflow/template/codeRun': () => import('./icons/core/workflow/template/codeRun.svg'),
'core/workflow/template/customFeedback': () =>
import('./icons/core/workflow/template/customFeedback.svg'),
'core/workflow/template/datasetConcat': () =>
import('./icons/core/workflow/template/datasetConcat.svg'),
'core/workflow/template/datasetSearch': () =>
import('./icons/core/workflow/template/datasetSearch.svg'),
'core/workflow/template/duckduckgo': () =>
import('./icons/core/workflow/template/duckduckgo.svg'),
'core/workflow/template/extractJson': () =>
import('./icons/core/workflow/template/extractJson.svg'),
'core/workflow/template/fetchUrl': () => import('./icons/core/workflow/template/fetchUrl.svg'),
'core/workflow/template/getTime': () => import('./icons/core/workflow/template/getTime.svg'),
'core/workflow/template/httpRequest': () =>
import('./icons/core/workflow/template/httpRequest.svg'),
'core/workflow/template/ifelse': () => import('./icons/core/workflow/template/ifelse.svg'),
'core/workflow/template/lafDispatch': () =>
import('./icons/core/workflow/template/lafDispatch.svg'),
'core/workflow/template/mathCall': () => import('./icons/core/workflow/template/mathCall.svg'),
'core/workflow/template/pluginOutput': () =>
import('./icons/core/workflow/template/pluginOutput.svg'),
'core/workflow/template/queryExtension': () =>
import('./icons/core/workflow/template/queryExtension.svg'),
'core/workflow/template/questionClassify': () =>
import('./icons/core/workflow/template/questionClassify.svg'),
'core/workflow/template/reply': () => import('./icons/core/workflow/template/reply.svg'),
'core/workflow/template/runApp': () => import('./icons/core/workflow/template/runApp.svg'),
'core/workflow/template/stopTool': () => import('./icons/core/workflow/template/stopTool.svg'),
'core/workflow/template/systemConfig': () =>
import('./icons/core/workflow/template/systemConfig.svg'),
'core/workflow/template/textConcat': () =>
import('./icons/core/workflow/template/textConcat.svg'),
'core/workflow/template/toolCall': () => import('./icons/core/workflow/template/toolCall.svg'),
'core/workflow/template/variableUpdate': () =>
import('./icons/core/workflow/template/variableUpdate.svg'),
'core/workflow/template/workflowStart': () =>
import('./icons/core/workflow/template/workflowStart.svg'),
'core/workflow/versionHistories': () => import('./icons/core/workflow/versionHistories.svg'),
date: () => import('./icons/date.svg'),
delete: () => import('./icons/delete.svg'),
@@ -206,6 +245,7 @@ export const iconPaths = {
'phoneTabbar/me': () => import('./icons/phoneTabbar/me.svg'),
'phoneTabbar/tool': () => import('./icons/phoneTabbar/tool.svg'),
'phoneTabbar/toolFill': () => import('./icons/phoneTabbar/toolFill.svg'),
'plugins/textEditor': () => import('./icons/plugins/textEditor.svg'),
'price/bg': () => import('./icons/price/bg.svg'),
'price/right': () => import('./icons/price/right.svg'),
save: () => import('./icons/save.svg'),

View File

@@ -0,0 +1,10 @@
<svg viewBox="0 0 36 36" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="36" height="36" fill="url(#paint0_linear_7245_16485)"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M20.7763 8.12977C21.1563 8.34937 21.486 8.65892 22.1453 9.27804L25.0531 12.0087C25.7718 12.6836 26.1312 13.0211 26.387 13.4223C26.6045 13.7632 26.7661 14.1367 26.8658 14.5285C26.9831 14.9897 26.9831 15.4826 26.9831 16.4686V22.262C26.9831 24.4261 26.9831 25.5081 26.5553 26.3317C26.1947 27.0258 25.6288 27.5916 24.9348 27.9522C24.1112 28.38 23.0292 28.38 20.8651 28.38H15.1348C12.9708 28.38 11.8887 28.38 11.0651 27.9522C10.3711 27.5916 9.8052 27.0258 9.44467 26.3317C9.01685 25.5081 9.01685 24.4261 9.01685 22.262V13.7379C9.01685 11.5738 9.01685 10.4918 9.44467 9.66817C9.8052 8.97413 10.3711 8.40823 11.0651 8.0477C11.8887 7.61987 12.9708 7.61987 15.1348 7.61987H17.9572C18.8616 7.61987 19.3138 7.61987 19.7411 7.71991C20.1045 7.80496 20.4533 7.94307 20.7763 8.12977ZM20.3328 10.6525C19.7396 10.0837 19.443 9.79934 19.1884 9.78903C18.9862 9.78085 18.791 9.8641 18.657 10.0157C18.4882 10.2066 18.4882 10.6176 18.4882 11.4394V12.3778C18.4882 13.58 18.4882 14.1811 18.7222 14.6403C18.928 15.0442 19.2564 15.3726 19.6603 15.5784C20.1195 15.8124 20.7206 15.8124 21.9228 15.8124H23.0022C23.8674 15.8124 24.3 15.8124 24.4924 15.6378C24.6451 15.4992 24.7258 15.2984 24.7115 15.0927C24.6935 14.8335 24.3812 14.5342 23.7567 13.9354L20.3328 10.6525ZM13.0047 19.6762C13.0047 19.1239 13.4524 18.6762 14.0047 18.6762H21.9996C22.5519 18.6762 22.9996 19.1239 22.9996 19.6762C22.9996 20.2284 22.5519 20.6762 21.9996 20.6762H14.0047C13.4524 20.6762 13.0047 20.2284 13.0047 19.6762ZM12.993 23.4244C12.993 22.8721 13.4407 22.4244 13.993 22.4244H19.9946C20.5469 22.4244 20.9946 22.8721 20.9946 23.4244C20.9946 23.9767 20.5469 24.4244 19.9946 24.4244H13.993C13.4407 24.4244 12.993 23.9767 12.993 23.4244Z" fill="white"/>
<defs>
<linearGradient id="paint0_linear_7245_16485" x1="18" y1="0" x2="5.5" y2="33" gradientUnits="userSpaceOnUse">
<stop stop-color="#7B98FF"/>
<stop offset="1" stop-color="#7479FF"/>
</linearGradient>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

@@ -0,0 +1,10 @@
<svg viewBox="0 0 36 36" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="36" height="36" fill="url(#paint0_linear_7245_16463)"/>
<path d="M23.128 12.0501H24.25C26.3211 12.0501 28 13.7291 28 15.8001V20.8001C28 22.8711 26.3211 24.55 24.25 24.55H11.75C9.67895 24.55 8 22.8711 8 20.8001V15.8001C8 13.7291 9.67895 12.0501 11.75 12.0501H12.872L12.4153 9.31012C12.3131 8.69728 12.7272 8.11763 13.34 8.01548C13.9529 7.91333 14.5326 8.32738 14.6347 8.94022L15.1347 11.9402C15.1409 11.977 15.1451 12.0137 15.1476 12.0501H20.8524C20.8549 12.0136 20.8591 11.977 20.8653 11.9402L21.3653 8.94022C21.4675 8.32738 22.0471 7.91333 22.66 8.01548C23.2728 8.11763 23.6869 8.69728 23.5847 9.31012L23.128 12.0501ZM12.9 17.3001V18.3001C12.9 18.9214 13.4037 19.4251 14.025 19.4251C14.6463 19.4251 15.15 18.9214 15.15 18.3001V17.3001C15.15 16.6788 14.6463 16.1751 14.025 16.1751C13.4037 16.1751 12.9 16.6788 12.9 17.3001ZM20.85 17.3001V18.3001C20.85 18.9214 21.3537 19.4251 21.975 19.4251C22.5963 19.4251 23.1 18.9214 23.1 18.3001V17.3001C23.1 16.6788 22.5963 16.1751 21.975 16.1751C21.3537 16.1751 20.85 16.6788 20.85 17.3001ZM13 28C12.3787 28 11.875 27.4963 11.875 26.875C11.875 26.2537 12.3787 25.75 13 25.75H23C23.6213 25.75 24.125 26.2537 24.125 26.875C24.125 27.4963 23.6213 28 23 28H13Z" fill="white"/>
<defs>
<linearGradient id="paint0_linear_7245_16463" x1="18" y1="0" x2="5.5" y2="33" gradientUnits="userSpaceOnUse">
<stop stop-color="#7C98FF"/>
<stop offset="1" stop-color="#7479FF"/>
</linearGradient>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@@ -0,0 +1,10 @@
<svg viewBox="0 0 36 36" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="36" height="36" fill="url(#paint0_linear_7245_16518)"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M8 11.7083C8 10.0514 9.34315 8.70825 11 8.70825H25C26.6569 8.70825 28 10.0514 28 11.7083V11.7522H8V11.7083ZM8 13.3522H28V24.2919C28 25.9487 26.6569 27.2919 25 27.2919H11C9.34315 27.2919 8 25.9487 8 24.2919V13.3522ZM17.3879 24.8245C16.9503 24.7637 16.645 24.3596 16.7058 23.9221L17.7098 16.7034C17.7707 16.2659 18.1747 15.9605 18.6123 16.0213C19.0499 16.0822 19.3553 16.4863 19.2944 16.9238L18.2904 24.1424C18.2295 24.58 17.8255 24.8854 17.3879 24.8245ZM11.5976 19.864C11.2852 20.1764 11.2852 20.6829 11.5976 20.9953C11.6306 21.0283 11.6658 21.0579 11.7028 21.0839L14.2858 23.667C14.5982 23.9794 15.1047 23.9794 15.4171 23.667C15.7295 23.3546 15.7295 22.8481 15.4171 22.5357L13.3027 20.4214L15.3684 18.3557C15.6808 18.0433 15.6808 17.5368 15.3684 17.2244C15.056 16.9121 14.5495 16.9121 14.2372 17.2244L11.5976 19.864ZM24.4023 19.864C24.7147 20.1764 24.7147 20.6829 24.4023 20.9953C24.3693 21.0283 24.3341 21.0579 24.2971 21.0839L21.7141 23.667C21.4017 23.9794 20.8952 23.9794 20.5828 23.667C20.2704 23.3546 20.2704 22.8481 20.5828 22.5357L22.6972 20.4214L20.6315 18.3557C20.3191 18.0433 20.3191 17.5368 20.6315 17.2244C20.9439 16.9121 21.4504 16.9121 21.7627 17.2244L24.4023 19.864Z" fill="white"/>
<defs>
<linearGradient id="paint0_linear_7245_16518" x1="18" y1="0" x2="5.5" y2="33" gradientUnits="userSpaceOnUse">
<stop stop-color="#5CD8C9"/>
<stop offset="1" stop-color="#13C993"/>
</linearGradient>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

@@ -0,0 +1,10 @@
<svg viewBox="0 0 36 36" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="36" height="36" fill="url(#paint0_linear_7245_16543)"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M15.1152 12.8164C14.7413 14.4056 13.3142 15.5887 11.6108 15.5887C9.62262 15.5887 8.01084 13.9769 8.01084 11.9887C8.01084 10.0004 9.62262 8.38867 11.6108 8.38867C12.9548 8.38867 14.1267 9.12507 14.7451 10.2164H23.4586C25.9667 10.2164 27.9999 12.2496 27.9999 14.7576C27.9999 17.2657 25.9667 19.2989 23.4586 19.2989H21.963C21.4484 20.658 20.1346 21.6243 18.5952 21.6243C17.0557 21.6243 15.742 20.658 15.2273 19.2989L12.5414 19.2989C11.4693 19.2989 10.6001 20.168 10.6001 21.2402C10.6001 22.3123 11.4693 23.1814 12.5414 23.1814H22.3597V22.1525C22.3597 21.5366 23.0264 21.1517 23.5597 21.4597L27.5935 23.7886C28.1269 24.0965 28.1269 24.8663 27.5935 25.1742L23.5597 27.5032C23.0264 27.8111 22.3597 27.4262 22.3597 26.8104V25.7814L12.5414 25.7814C10.0333 25.7814 8.00012 23.7482 8.00012 21.2402C8.00012 18.7321 10.0333 16.6989 12.5414 16.6989L15.247 16.6989C15.7749 15.3666 17.075 14.4243 18.5952 14.4243C20.1154 14.4243 21.4155 15.3666 21.9434 16.6989H23.4586C24.5307 16.6989 25.3999 15.8298 25.3999 14.7576C25.3999 13.6855 24.5307 12.8164 23.4586 12.8164H15.1152ZM13.2108 11.9887C13.2108 12.8723 12.4945 13.5887 11.6108 13.5887C10.7272 13.5887 10.0108 12.8723 10.0108 11.9887C10.0108 11.105 10.7272 10.3887 11.6108 10.3887C12.4945 10.3887 13.2108 11.105 13.2108 11.9887ZM20.1419 17.9989C20.1419 17.7926 20.1167 17.5924 20.0694 17.4013C19.8264 16.8272 19.2578 16.4243 18.5952 16.4243C17.7115 16.4243 16.9952 17.1407 16.9952 18.0243C16.9952 18.908 17.7115 19.6243 18.5952 19.6243C19.227 19.6243 19.7733 19.2581 20.0334 18.7263C20.1039 18.4968 20.1419 18.2524 20.1419 17.9989Z" fill="white"/>
<defs>
<linearGradient id="paint0_linear_7245_16543" x1="18" y1="0" x2="5.5" y2="33" gradientUnits="userSpaceOnUse">
<stop stop-color="#A6DA72"/>
<stop offset="1" stop-color="#78C952"/>
</linearGradient>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@@ -0,0 +1,10 @@
<svg viewBox="0 0 36 36" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="36" height="36" fill="url(#paint0_linear_7245_16528)"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M9.06162 10.0117C8.28842 10.0117 7.66162 10.6385 7.66162 11.4117C7.66162 12.1849 8.28842 12.8117 9.06162 12.8117H13.3351C13.5886 12.8117 13.8147 12.971 13.9 13.2096L15.3298 17.2054C15.4955 17.6687 16.1178 17.7465 16.3925 17.3383L17.5019 15.6896C17.6084 15.5314 17.6333 15.332 17.569 15.1525L16.5364 12.2663C16.0526 10.9141 14.7713 10.0117 13.3351 10.0117H9.06162ZM9.07444 25.9882C8.30124 25.9882 7.67444 25.3614 7.67444 24.5882C7.67444 23.815 8.30124 23.1882 9.07444 23.1882H13.7724C13.9674 23.1882 14.1503 23.0934 14.2627 22.934L18.3233 17.1769C18.6143 16.7642 19.0879 16.5567 19.5575 16.5865H22.5883V15.8215C22.5883 15.0517 23.4216 14.5705 24.0883 14.9554L27.8383 17.1205C28.505 17.5054 28.505 18.4676 27.8383 18.8525L24.0883 21.0176C23.4216 21.4025 22.5883 20.9214 22.5883 20.1516V19.3865H20.1912L16.5508 24.5478C15.9138 25.451 14.8776 25.9882 13.7724 25.9882H9.07444Z" fill="white"/>
<defs>
<linearGradient id="paint0_linear_7245_16528" x1="18" y1="0" x2="5.5" y2="33" gradientUnits="userSpaceOnUse">
<stop stop-color="#68C0FF"/>
<stop offset="1" stop-color="#52A2FF"/>
</linearGradient>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 1.3 KiB

View File

@@ -0,0 +1,13 @@
<svg viewBox="0 0 36 36" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="36" height="36" fill="url(#paint0_linear_7245_16465)"/>
<path d="M27.1151 12.2072V11.7056L27.1145 11.6586C27.0605 9.33579 23.0005 8 18 8C12.9992 8 8.93848 9.31688 8.8849 11.6586V12.2072H8.8894C8.88641 12.2458 8.8849 12.2847 8.8849 12.324C8.8849 14.088 12.128 15.5179 18 15.5179C23.872 15.5179 27.1151 14.088 27.1151 12.324C27.1151 12.2848 27.1135 12.2458 27.1105 12.2072H27.1151Z" fill="white"/>
<path d="M8.8849 14.9628V18.5214C8.8847 18.5297 8.88477 18.5381 8.88483 18.5464L8.8849 18.5591C8.8849 20.321 12.128 21.7492 18 21.7492C18.4714 21.7492 18.9259 21.74 19.3631 21.7222C20.2048 20.0119 21.965 18.835 24 18.835C24.9917 18.835 25.9182 19.1145 26.7049 19.5991C26.9765 19.2731 27.1151 18.9232 27.1151 18.5591L27.1149 18.5415L27.1146 18.5214L27.1151 14.9628H27.0523C26.5758 16.5689 23.3992 17.8089 18 17.8089C12.6007 17.8089 9.42412 16.5689 8.94764 14.9628H8.8849Z" fill="white"/>
<path d="M18.8438 24.3042C18.9264 25.7274 19.5854 26.9961 20.5908 27.8801C19.7948 27.9584 18.9304 28 18 28C12.2513 28 9.0223 26.4099 8.88919 24.4229H8.8849V20.8458C8.8849 22.7619 12.128 24.3152 18 24.3152C18.2876 24.3152 18.5689 24.3115 18.8438 24.3042Z" fill="white"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M26.0877 26.9562C25.5444 27.3044 24.8983 27.5064 24.2051 27.5064C22.2756 27.5064 20.7115 25.9423 20.7115 24.0129C20.7115 22.0834 22.2756 20.5193 24.2051 20.5193C26.1345 20.5193 27.6986 22.0834 27.6986 24.0129C27.6986 24.7061 27.4966 25.3522 27.1484 25.8955L28.2289 26.976C28.5218 27.2689 28.5218 27.7438 28.2289 28.0367C27.936 28.3296 27.4611 28.3296 27.1682 28.0367L26.0877 26.9562ZM26.1986 24.0129C26.1986 25.1138 25.306 26.0064 24.2051 26.0064C23.1041 26.0064 22.2115 25.1138 22.2115 24.0129C22.2115 22.9119 23.1041 22.0193 24.2051 22.0193C25.306 22.0193 26.1986 22.9119 26.1986 24.0129Z" fill="white"/>
<defs>
<linearGradient id="paint0_linear_7245_16465" x1="18" y1="0" x2="5.5" y2="33" gradientUnits="userSpaceOnUse">
<stop stop-color="#55B8FF"/>
<stop offset="1" stop-color="#149DFF"/>
</linearGradient>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

@@ -0,0 +1 @@
<svg t="1721273358953" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4468" width="200" height="200"><path d="M514.56 509.44m-486.4 0a486.4 486.4 0 1 0 972.8 0 486.4 486.4 0 1 0-972.8 0Z" fill="#CC6633" p-id="4469"></path><path d="M512 512m-448 0a448 448 0 1 0 896 0 448 448 0 1 0-896 0Z" fill="#FFFFFF" p-id="4470"></path><path d="M934.912 516.096c0 199.68-138.24 367.616-324.096 412.672-11.264-21.504-22.016-42.496-31.232-59.904 31.744 28.16 70.144 38.912 91.648 25.6 27.648-16.896 37.376-78.848-5.632-135.168-13.312 0.512-30.72 2.56-50.176 8.192-27.648 8.192-48.128 20.992-61.44 30.72-11.776-17.92-28.16-48.64-36.352-89.6-6.656-33.28-5.12-61.952-2.56-81.408 14.848 10.24 113.664 43.52 162.816 42.496 49.152-1.024 129.536-30.72 120.832-54.784s-88.576 20.992-172.544 13.312c-61.952-5.632-72.704-33.28-58.88-53.76 17.408-25.6 48.64 4.608 100.352-10.752s124.416-43.008 151.04-58.368c61.952-34.816-26.112-49.152-46.592-39.424-19.968 9.216-88.064 26.624-120.32 34.304 17.92-62.976-25.088-172.544-73.216-220.672-15.872-15.872-39.424-25.6-66.56-30.72-10.24-14.336-27.136-28.16-51.2-40.448-46.08-24.064-98.304-32.768-149.504-24.064h-2.56c-6.144 1.024-9.728 3.584-14.848 4.096 6.144 0.512 29.184 11.264 44.032 17.408-7.168 3.072-16.896 4.608-24.576 7.68-3.072 0.512-5.632 1.024-8.704 2.56-7.168 3.072-12.8 15.36-12.288 21.504 34.816-3.584 86.528-1.024 124.416 10.24-26.624 3.584-51.2 10.752-69.12 19.968-0.512 0.512-1.024 0.512-2.048 1.024-2.048 1.024-4.608 1.536-6.144 2.56-56.832 29.696-81.92 99.84-67.072 183.808 13.312 75.776 69.12 336.384 95.232 460.288-164.352-56.32-282.624-214.016-282.624-399.36 0-235.008 190.464-424.96 424.96-424.96s424.96 190.464 424.96 424.96z" fill="#DE5833" p-id="4471"></path><path d="M389.12 446.976m-31.744 0a31.744 31.744 0 1 0 63.488 0 31.744 31.744 0 1 0-63.488 0Z" fill="#336699" p-id="4472"></path><path d="M599.552 401.408c-14.848-0.512-27.648 11.264-28.16 26.112s11.264 27.648 26.112 28.16h2.048c14.848 0 27.136-12.288 27.136-27.136s-12.288-27.136-27.136-27.136zM397.824 355.84s-23.552-10.752-46.592 3.584c-23.04 14.848-22.016 29.696-22.016 29.696s-12.288-27.136 20.48-40.448c32.256-13.824 48.64 7.168 48.128 7.168zM615.936 353.792s-16.896-9.728-30.208-9.728c-27.136 0.512-34.816 12.288-34.816 12.288s4.608-28.672 39.424-23.04c11.264 2.56 20.992 9.728 25.6 20.48z" fill="#336699" p-id="4473"></path><path d="M549.376 522.24c24.576-9.728 35.328-9.728 74.24-17.408 24.576-5.12 56.832-11.776 94.72-23.552 30.208-9.216 36.864-13.824 56.32-15.36 26.112-2.048 62.464 1.024 66.56 15.36 2.048 6.656-4.608 13.824-10.24 20.48-14.336 16.384-32.256 22.016-61.44 30.72-36.352 11.264-38.912 11.264-51.2 15.36-58.368 18.432-55.296 23.552-76.8 25.6-38.912 3.584-60.928-12.8-71.68 0-6.656 8.192-4.608 22.016 0 30.72 6.656 11.776 19.968 15.36 40.96 20.48 25.6 6.144 46.08 5.632 51.2 5.12 18.432-1.024 31.744-4.608 51.2-10.24 40.96-11.776 52.736-21.504 71.68-15.36 3.584 1.024 19.456 6.144 20.48 15.36 2.048 18.432-53.76 43.52-102.4 51.2-47.104 7.168-86.528-2.56-97.28-5.12-7.168-2.048-19.968-6.144-46.08-15.36-29.696-10.24-37.376-13.824-46.08-20.48-9.216-7.168-23.04-17.92-25.6-35.84-2.56-18.432 9.216-33.28 15.36-40.96 9.216-11.264 21.504-20.992 46.08-30.72z" fill="#FDD20A" p-id="4474"></path><path d="M523.776 798.72c4.096-3.584 9.216-7.168 15.36-10.24 11.776-6.144 22.528-9.216 30.72-10.24-1.536 3.584-3.584 6.656-5.12 10.24 14.336-7.168 29.696-13.824 46.08-20.48 25.088-10.24 49.152-18.432 71.68-25.6 7.68 12.288 22.016 36.864 25.6 71.68 3.584 35.328-5.12 63.488-10.24 76.8-6.144 3.584-32.768 17.408-66.56 10.24s-51.712-30.208-56.32-35.84c-1.536 5.12-3.584 10.24-5.12 15.36-5.632 1.024-14.848 2.048-25.6 0-11.776-2.048-20.48-7.168-25.6-10.24-24.064 11.776-47.616 24.064-71.68 35.84-3.584 4.608-9.728 6.656-15.36 5.12-7.68-2.048-10.24-9.728-10.24-10.24-5.632-16.896-11.264-37.888-15.36-61.44-4.096-25.088-5.12-47.616-5.12-66.56-2.048-6.144 0.512-12.8 5.12-15.36s9.728-0.512 10.24 0c18.944 2.56 44.544 7.68 71.68 20.48 13.824 6.656 26.112 13.824 35.84 20.48z" fill="#66CC33" p-id="4475"></path></svg>

After

Width:  |  Height:  |  Size: 4.0 KiB

View File

@@ -0,0 +1,11 @@
<svg viewBox="0 0 36 36" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="36" height="36" fill="url(#paint0_linear_7245_16480)"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M8.35535 15.7015C8.35535 18.0133 10.1708 19.901 12.4538 20.0167V20.0223H13.8556V18.5875C13.8556 17.4756 14.757 16.5742 15.8689 16.5742C16.9808 16.5742 17.8821 17.4756 17.8821 18.5875V20.0223H23.5043V20.0111C25.8068 19.9168 27.6446 18.0204 27.6446 15.6947C27.6446 13.3794 25.8233 11.4896 23.5353 11.3796C23.2332 10.6659 22.7962 10.0171 22.248 9.46891C21.6889 8.90978 21.0251 8.46626 20.2945 8.16366C19.564 7.86107 18.781 7.70532 17.9903 7.70532C17.1996 7.70532 16.4166 7.86107 15.6861 8.16366C14.9555 8.46626 14.2917 8.90979 13.7326 9.46891C13.1825 10.019 12.7443 10.6704 12.4421 11.387C10.1646 11.5085 8.35535 13.3938 8.35535 15.7015Z" fill="white"/>
<path d="M15.8746 17.9688C16.4269 17.9688 16.8746 18.4165 16.8746 18.9688V20.139C16.8746 20.6596 16.8754 20.9898 16.8958 21.2398C16.9153 21.4781 16.9475 21.5542 16.9618 21.5822C17.0385 21.7327 17.1609 21.8551 17.3114 21.9318C17.3395 21.9461 17.4155 21.9783 17.6538 21.9978C17.9038 22.0182 18.2341 22.019 18.7546 22.019H22.3193C22.5741 21.7527 22.9331 21.5869 23.3308 21.5869C24.104 21.5869 24.7308 22.2137 24.7308 22.9869C24.7308 23.7601 24.104 24.3869 23.3308 24.3869C22.9662 24.3869 22.6341 24.2475 22.3849 24.019H18.7169C18.2451 24.019 17.8322 24.0191 17.4909 23.9912C17.2865 23.9745 17.08 23.9462 16.8746 23.892C16.8747 24.4194 16.8766 24.7683 16.8985 25.0372C16.9207 25.3088 16.9584 25.4096 16.9836 25.459C17.0795 25.6472 17.2325 25.8001 17.4206 25.896C17.4701 25.9212 17.5708 25.9589 17.8424 25.9811C18.1258 26.0042 18.498 26.005 19.0746 26.005H20.1289C20.3856 25.6934 20.7746 25.4947 21.2099 25.4947C21.9831 25.4947 22.6099 26.1215 22.6099 26.8947C22.6099 27.6679 21.9831 28.2947 21.2099 28.2947C20.8889 28.2947 20.5932 28.1867 20.357 28.005H19.0361C18.5089 28.005 18.0541 28.005 17.6796 27.9744C17.2842 27.9421 16.891 27.8708 16.5126 27.678C15.9481 27.3904 15.4892 26.9315 15.2016 26.367C15.0088 25.9886 14.9375 25.5954 14.9052 25.2C14.8746 24.8255 14.8746 24.3707 14.8746 23.8436V20.2399C14.8746 20.219 14.8746 20.1979 14.8746 20.1767V18.9688C14.8746 18.4165 15.3223 17.9688 15.8746 17.9688Z" fill="white"/>
<defs>
<linearGradient id="paint0_linear_7245_16480" x1="18" y1="0" x2="5.5" y2="33" gradientUnits="userSpaceOnUse">
<stop stop-color="#61D2C4"/>
<stop offset="1" stop-color="#00C874"/>
</linearGradient>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 2.4 KiB

View File

@@ -0,0 +1,10 @@
<svg viewBox="0 0 36 36" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="36" height="36" fill="url(#paint0_linear_7275_6584)"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M9.3961 16.1278C9.26542 16.7311 9.1966 17.3575 9.1966 18C9.1966 18.6425 9.26542 19.2688 9.3961 19.8722H13.0856C13.0027 19.2617 12.9542 18.6443 12.9412 18.0229C12.9409 18.0076 12.9409 17.9924 12.9412 17.9771C12.9542 17.3557 13.0027 16.7383 13.0856 16.1278H9.3961ZM10.1913 13.9312H13.5404C13.9734 12.3864 14.6335 10.9116 15.5009 9.55638C13.1957 10.2376 11.2847 11.8371 10.1913 13.9312ZM18 9.81135C17.0506 11.06 16.3212 12.4534 15.8358 13.9312H20.1641C19.6788 12.4534 18.9493 11.06 18 9.81135ZM20.6943 16.1278H15.3056C15.2085 16.7444 15.152 17.3697 15.1379 18C15.152 18.6302 15.2085 19.2556 15.3056 19.8722H20.6943C20.7915 19.2556 20.8479 18.6302 20.8621 18C20.8479 17.3697 20.7915 16.7444 20.6943 16.1278ZM22.9143 19.8722C22.9973 19.2617 23.0458 18.6443 23.0587 18.0229C23.059 18.0076 23.059 17.9924 23.0587 17.9771C23.0458 17.3557 22.9973 16.7383 22.9143 16.1278H26.6039C26.7345 16.7311 26.8034 17.3575 26.8034 18C26.8034 18.6425 26.7345 19.2688 26.6039 19.8722H22.9143ZM20.1641 22.0688H15.8358C16.3212 23.5465 17.0506 24.94 18 26.1886C18.9493 24.94 19.6788 23.5465 20.1641 22.0688ZM15.5009 26.4436C14.6335 25.0884 13.9734 23.6136 13.5404 22.0688H10.1913C11.2847 24.1629 13.1957 25.7624 15.5009 26.4436ZM20.4991 26.4436C21.3665 25.0884 22.0266 23.6136 22.4596 22.0688H25.8087C24.7153 24.1629 22.8042 25.7624 20.4991 26.4436ZM25.8087 13.9312H22.4596C22.0266 12.3864 21.3665 10.9116 20.4991 9.55638C22.8042 10.2376 24.7153 11.8371 25.8087 13.9312ZM7 18C7 11.9249 11.9249 7 18 7C24.0751 7 29 11.9249 29 18C29 24.0751 24.0751 29 18 29C11.9249 29 7 24.0751 7 18Z" fill="white"/>
<defs>
<linearGradient id="paint0_linear_7275_6584" x1="18" y1="0" x2="5.5" y2="33" gradientUnits="userSpaceOnUse">
<stop stop-color="#68C0FF"/>
<stop offset="1" stop-color="#52A2FF"/>
</linearGradient>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@@ -0,0 +1,12 @@
<svg viewBox="0 0 36 36" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="36" height="36" fill="url(#paint0_linear_7275_6485)"/>
<path d="M12.048 7.94883C12.4706 8.37148 12.4706 9.05673 12.048 9.47939L9.84755 11.6798C9.4249 12.1025 8.73964 12.1025 8.31699 11.6798C7.89434 11.2572 7.89434 10.5719 8.31699 10.1493L10.5174 7.94883C10.9401 7.52617 11.6253 7.52617 12.048 7.94883Z" fill="white"/>
<path d="M23.952 7.94884C24.3747 7.52618 25.0599 7.52618 25.4826 7.94884L27.683 10.1493C28.1056 10.5719 28.1056 11.2572 27.683 11.6798C27.2603 12.1025 26.5751 12.1025 26.1524 11.6798L23.952 9.4794C23.5294 9.05675 23.5294 8.37149 23.952 7.94884Z" fill="white"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M18 27.2284C19.7368 27.2284 21.359 26.7375 22.7354 25.8868C22.746 25.8984 22.7568 25.9097 22.768 25.9209L24.9684 28.1213C25.3911 28.544 26.0764 28.544 26.499 28.1213C26.9217 27.6987 26.9217 27.0134 26.499 26.5907L24.4361 24.5279C26.0342 22.9004 27.0198 20.6696 27.0198 18.2086C27.0198 13.227 22.9815 9.18873 18 9.18873C13.0185 9.18873 8.98017 13.227 8.98017 18.2086C8.98017 20.6696 9.96581 22.9005 11.5639 24.5279L9.50099 26.5908C9.07834 27.0134 9.07834 27.6987 9.50099 28.1213C9.92365 28.544 10.6089 28.544 11.0316 28.1213L13.232 25.9209C13.2432 25.9097 13.254 25.8984 13.2646 25.8868C14.641 26.7375 16.2631 27.2284 18 27.2284ZM18 13.2945C18.5765 13.2945 19.0438 13.7618 19.0438 14.3383V17.5759L21.378 18.9235C21.8773 19.2118 22.0483 19.8502 21.7601 20.3494C21.4719 20.8486 20.8335 21.0197 20.3342 20.7315L17.5377 19.1169C17.5261 19.1102 17.5146 19.1033 17.5034 19.0962C17.1775 18.9196 16.9562 18.5746 16.9562 18.1779V14.3383C16.9562 13.7618 17.4235 13.2945 18 13.2945Z" fill="white"/>
<defs>
<linearGradient id="paint0_linear_7275_6485" x1="18" y1="0" x2="5.5" y2="33" gradientUnits="userSpaceOnUse">
<stop stop-color="#FCA18D"/>
<stop offset="1" stop-color="#E97359"/>
</linearGradient>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@@ -0,0 +1,10 @@
<svg viewBox="0 0 36 36" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="36" height="36" fill="url(#paint0_linear_7245_16503)"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M6.5174 19.5124C6.5174 23.1879 9.35744 26.2002 12.9628 26.4743V26.4868H13.1653C13.2761 26.492 13.3876 26.4947 13.4997 26.4947C13.6118 26.4947 13.7233 26.492 13.8342 26.4868H22.9882C23.0924 26.492 23.1973 26.4947 23.3028 26.4947C26.7158 26.4947 29.4827 23.7279 29.4827 20.3148C29.4827 17.8113 27.994 15.6556 25.8537 14.6843C25.1036 11.7054 22.4688 9.50513 19.3336 9.50513C17.0173 9.50513 14.9741 10.7061 13.7623 12.5349C13.6752 12.5317 13.5876 12.53 13.4997 12.53C9.64349 12.53 6.5174 15.6561 6.5174 19.5124ZM9.86901 21.5155C9.9592 21.6057 10.087 21.6508 10.2523 21.6508C10.4252 21.6508 10.5548 21.6057 10.6413 21.5155C10.7277 21.4216 10.7709 21.2901 10.7709 21.1209V20.0105H12.4113V21.1209C12.4113 21.2901 12.4545 21.4216 12.5409 21.5155C12.6311 21.6057 12.7608 21.6508 12.9299 21.6508C13.0952 21.6508 13.2211 21.6057 13.3075 21.5155C13.3977 21.4216 13.4428 21.2901 13.4428 21.1209V18.1052C13.4428 17.9323 13.3977 17.8008 13.3075 17.7106C13.2211 17.6204 13.0952 17.5753 12.9299 17.5753C12.7608 17.5753 12.6311 17.6204 12.5409 17.7106C12.4545 17.8008 12.4113 17.9323 12.4113 18.1052V19.1593H10.7709V18.1052C10.7709 17.9323 10.7258 17.8008 10.6356 17.7106C10.5492 17.6204 10.4214 17.5753 10.2523 17.5753C10.087 17.5753 9.9592 17.6204 9.86901 17.7106C9.77882 17.8008 9.73373 17.9323 9.73373 18.1052V21.1209C9.73373 21.2901 9.77882 21.4216 9.86901 21.5155ZM15.6871 21.5155C15.7773 21.6057 15.905 21.6508 16.0704 21.6508C16.2432 21.6508 16.3729 21.6057 16.4593 21.5155C16.5458 21.4216 16.589 21.2919 16.589 21.1266V18.4716H17.474C17.613 18.4716 17.7182 18.4359 17.7896 18.3645C17.8648 18.2893 17.9024 18.1841 17.9024 18.0488C17.9024 17.9098 17.8648 17.8046 17.7896 17.7332C17.7182 17.6618 17.613 17.6261 17.474 17.6261H14.6668C14.5277 17.6261 14.4206 17.6618 14.3455 17.7332C14.2741 17.8046 14.2384 17.9098 14.2384 18.0488C14.2384 18.1841 14.2741 18.2893 14.3455 18.3645C14.4206 18.4359 14.5277 18.4716 14.6668 18.4716H15.5518V21.1266C15.5518 21.2919 15.5969 21.4216 15.6871 21.5155ZM20.2261 21.6508C20.0607 21.6508 19.9329 21.6057 19.8428 21.5155C19.7526 21.4216 19.7075 21.2919 19.7075 21.1266V18.4716H18.8225C18.6834 18.4716 18.5763 18.4359 18.5012 18.3645C18.4298 18.2893 18.3941 18.1841 18.3941 18.0488C18.3941 17.9098 18.4298 17.8046 18.5012 17.7332C18.5763 17.6618 18.6834 17.6261 18.8225 17.6261H21.6297C21.7687 17.6261 21.8739 17.6618 21.9453 17.7332C22.0205 17.8046 22.0581 17.9098 22.0581 18.0488C22.0581 18.1841 22.0205 18.2893 21.9453 18.3645C21.8739 18.4359 21.7687 18.4716 21.6297 18.4716H20.7447V21.1266C20.7447 21.2919 20.7014 21.4216 20.615 21.5155C20.5286 21.6057 20.3989 21.6508 20.2261 21.6508ZM22.9856 21.5155C23.0758 21.6057 23.2036 21.6508 23.369 21.6508C23.5418 21.6508 23.6715 21.6057 23.7579 21.5155C23.8443 21.4216 23.8876 21.2919 23.8876 21.1266V20.2303H24.7613C25.2122 20.2303 25.5598 20.1157 25.8041 19.8865C26.0521 19.6535 26.1761 19.334 26.1761 18.9282C26.1761 18.5223 26.0521 18.2048 25.8041 17.9755C25.5598 17.7426 25.2122 17.6261 24.7613 17.6261H23.3746C23.2092 17.6261 23.0796 17.6712 22.9856 17.7613C22.8955 17.8515 22.8504 17.9812 22.8504 18.1503V21.1266C22.8504 21.2919 22.8955 21.4216 22.9856 21.5155ZM24.5809 19.4355H23.8876V18.4209H24.5809C24.7763 18.4209 24.9266 18.4622 25.0318 18.5449C25.1371 18.6276 25.1897 18.7553 25.1897 18.9282C25.1897 19.0973 25.1371 19.2251 25.0318 19.3115C24.9266 19.3942 24.7763 19.4355 24.5809 19.4355Z" fill="white"/>
<defs>
<linearGradient id="paint0_linear_7245_16503" x1="18" y1="0" x2="5.5" y2="33" gradientUnits="userSpaceOnUse">
<stop stop-color="#7895FE"/>
<stop offset="1" stop-color="#7177FF"/>
</linearGradient>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 3.7 KiB

View File

@@ -0,0 +1,10 @@
<svg viewBox="0 0 36 36" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="36" height="36" fill="url(#paint0_linear_7245_16508)"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M26.6891 10.1841C26.941 9.45667 26.3109 8.72937 25.555 8.87495L21.303 9.69389C20.5471 9.83948 20.2323 10.7488 20.7363 11.3306L21.1948 11.8599L16.254 16.0602H9.26425C8.49085 16.0602 7.86389 16.6872 7.86389 17.4606C7.86389 18.234 8.49085 18.8609 9.26425 18.8609H16.4514C16.5645 18.8609 16.6745 18.8475 16.7799 18.8222C17.1118 18.8304 17.448 18.7212 17.7209 18.4892L23.0287 13.9768L23.5715 14.6035C24.0756 15.1853 25.0204 15.0033 25.2723 14.2759L26.6891 10.1841ZM18.8174 18.9913C18.4653 19.2924 18.4241 19.8219 18.7252 20.1739L21.563 23.4918L20.9894 23.9939C20.4101 24.5009 20.5968 25.4449 21.3255 25.693L25.4245 27.0891C26.1532 27.3372 26.8773 26.7035 26.7278 25.9483L25.8874 21.7006C25.7379 20.9454 24.8271 20.6352 24.2478 21.1422L23.6707 21.6472L20.8535 18.3535C20.5524 18.0014 20.023 17.9601 19.6709 18.2612L18.8174 18.9913Z" fill="white"/>
<defs>
<linearGradient id="paint0_linear_7245_16508" x1="18" y1="0" x2="5.5" y2="33" gradientUnits="userSpaceOnUse">
<stop stop-color="#61D287"/>
<stop offset="1" stop-color="#43CA40"/>
</linearGradient>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@@ -0,0 +1,10 @@
<svg viewBox="0 0 36 36" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="36" height="36" fill="url(#paint0_linear_7245_16538)"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M18.05 7.5C12.2511 7.5 7.55005 12.201 7.55005 18C7.55005 23.799 12.2511 28.5 18.05 28.5C23.849 28.5 28.55 23.799 28.55 18C28.55 12.201 23.849 7.5 18.05 7.5ZM10.4536 16.6776L11.2345 15.8967C12.5284 14.6028 14.6261 14.6028 15.92 15.8967L21.3864 21.3631C19.6613 23.0883 16.8642 23.0883 15.1391 21.3631L10.4536 16.6776ZM19.0437 17.4585L19.8246 16.6776C20.8765 15.6257 22.4598 15.429 23.7104 16.0875C24.2671 16.3806 24.8755 16.6306 25.4995 16.5504C25.4995 16.5504 25.0284 17.5308 24.6367 18.1034C23.8653 19.2312 22.1674 20.5822 22.1674 20.5822L19.0437 17.4585Z" fill="white"/>
<defs>
<linearGradient id="paint0_linear_7245_16538" x1="18" y1="0" x2="5.5" y2="33" gradientUnits="userSpaceOnUse">
<stop stop-color="#5DD9CA"/>
<stop offset="1" stop-color="#14CA93"/>
</linearGradient>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 982 B

View File

@@ -0,0 +1,10 @@
<svg viewBox="0 0 36 36" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="36" height="36" fill="url(#paint0_linear_7275_6588)"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M15.303 9.4C15.303 8.6268 15.9298 8 16.703 8H19.297C20.0702 8 20.697 8.6268 20.697 9.4V11.578C20.697 12.3512 20.0702 12.978 19.297 12.978H16.703C15.9298 12.978 15.303 12.3512 15.303 11.578V9.4ZM15.303 24.422C15.303 23.6488 15.9298 23.022 16.703 23.022H19.297C20.0702 23.022 20.697 23.6488 20.697 24.422V26.6C20.697 27.3732 20.0702 28 19.297 28H16.703C15.9298 28 15.303 27.3732 15.303 26.6V24.422ZM9.7902 15.84C9.017 15.84 8.3902 16.4668 8.3902 17.24V18.76C8.3902 19.5332 9.017 20.16 9.7902 20.16H26.2098C26.983 20.16 27.6098 19.5332 27.6098 18.76V17.24C27.6098 16.4668 26.983 15.84 26.2098 15.84H9.7902Z" fill="white"/>
<defs>
<linearGradient id="paint0_linear_7275_6588" x1="18" y1="0" x2="5.5" y2="33" gradientUnits="userSpaceOnUse">
<stop stop-color="#91A9FE"/>
<stop offset="1" stop-color="#797EFF"/>
</linearGradient>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

@@ -0,0 +1,13 @@
<svg viewBox="0 0 36 36" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="36" height="36" fill="url(#paint0_linear_7399_1292)"/>
<path d="M18.5151 18.0001C18.5151 17.4478 18.9629 17.0001 19.5151 17.0001H27.8021C28.3543 17.0001 28.8021 17.4478 28.8021 18.0001C28.8021 18.5524 28.3543 19.0001 27.8021 19.0001H19.5151C18.9629 19.0001 18.5151 18.5524 18.5151 18.0001Z" fill="white"/>
<path d="M24.5558 14.606C24.9464 14.2155 25.5795 14.2155 25.97 14.606L28.5156 17.1516C28.9062 17.5421 28.9062 18.1753 28.5156 18.5658C28.1251 18.9564 27.4919 18.9564 27.1014 18.5658L24.5558 16.0202C24.1653 15.6297 24.1653 14.9966 24.5558 14.606Z" fill="white"/>
<path d="M24.5558 21.2528C24.1653 20.8623 24.1653 20.2291 24.5558 19.8386L27.1014 17.293C27.4919 16.9025 28.1251 16.9025 28.5156 17.293C28.9061 17.6835 28.9061 18.3167 28.5156 18.7072L25.97 21.2528C25.5795 21.6433 24.9463 21.6433 24.5558 21.2528Z" fill="white"/>
<path d="M12.2499 8C10.593 8 9.24988 9.34314 9.24988 11V25.0001C9.24988 26.6569 10.593 28.0001 12.2499 28.0001H19.397C21.0539 28.0001 22.397 26.6569 22.397 25.0001V21.8676L17.8665 21.2666C17.1885 21.1767 16.6775 20.611 16.6517 19.9327H16.6506V16.0674H16.6517C16.6775 15.3891 17.1885 14.8234 17.8665 14.7335L22.397 14.1325V11C22.397 9.34315 21.0539 8 19.397 8H12.2499Z" fill="white"/>
<defs>
<linearGradient id="paint0_linear_7399_1292" x1="18" y1="0" x2="5.5" y2="33" gradientUnits="userSpaceOnUse">
<stop stop-color="#8DD56B"/>
<stop offset="1" stop-color="#65C144"/>
</linearGradient>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@@ -0,0 +1,10 @@
<svg viewBox="0 0 36 36" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="36" height="36" fill="url(#paint0_linear_7245_16533)"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M24.455 8.34077L24.7201 8.37403C25.4208 8.47071 26.3481 8.60066 26.8731 9.12669C27.3035 9.55603 27.4688 10.2546 27.5675 10.8784L27.6257 11.2796C27.7567 12.2257 27.791 13.4648 27.5675 14.8412C27.1267 17.5576 25.6807 20.799 22.0494 23.3086C22.0297 23.504 22.0286 23.7015 22.0328 23.8991L22.0432 24.1943C22.0598 24.6486 22.0765 25.1019 21.9496 25.5437C21.7521 26.2298 21.0483 26.682 20.3903 27.0064L20.068 27.1592L19.6522 27.3421C18.8746 27.6727 17.8246 28.0116 17.1666 27.3525C16.7715 26.9585 16.6093 26.3805 16.4773 25.8056L16.4285 25.5905C16.3734 25.3188 16.304 25.0502 16.2205 24.7858C16.1686 24.634 16.1124 24.4791 16.0521 24.3232C15.9858 24.4047 15.9153 24.4827 15.8411 24.5571C15.4824 24.9158 14.9471 25.1663 14.5063 25.342C14.025 25.5322 13.4802 25.6986 12.976 25.8358L12.7172 25.9044L12.2213 26.0281L11.7722 26.1321L11.2347 26.2464L10.8989 26.3119C10.7315 26.3429 10.559 26.3327 10.3963 26.2822C10.2337 26.2317 10.0858 26.1424 9.96535 26.0219C9.84492 25.9015 9.7556 25.7536 9.70508 25.5909C9.65456 25.4283 9.64436 25.2558 9.67537 25.0883L9.76477 24.6403L9.92487 23.9147L10.0538 23.3845L10.1515 23.0102C10.2887 22.5071 10.455 21.9623 10.6463 21.482C10.821 21.0402 11.0715 20.5048 11.4302 20.1462L11.5133 20.0661L11.4468 20.0391C11.2691 19.9716 11.0892 19.9102 10.9073 19.8551L10.6193 19.7667C9.89784 19.5484 9.12647 19.3135 8.64723 18.8332C8.06506 18.2521 8.26154 17.3674 8.54223 16.6314L8.65658 16.3465L8.84059 15.9307L8.99341 15.6084C9.31775 14.9514 9.76997 14.2476 10.4561 14.0501C10.8199 13.9462 11.1983 13.9399 11.5788 13.9503L11.8075 13.9576C12.1049 13.968 12.4011 13.9794 12.6912 13.9514C15.2007 10.3191 18.4421 8.87303 21.1585 8.43225C22.2482 8.25352 23.3571 8.22275 24.455 8.34077ZM14.2547 21.5174C14.0911 21.3963 13.8955 21.3258 13.6923 21.3147C13.489 21.3037 13.287 21.3524 13.1112 21.455L12.9968 21.5319L12.9001 21.6182L12.7702 21.7825C12.4999 22.1734 12.346 22.7139 12.2265 23.2192L12.1142 23.7057L12.0612 23.9271L12.2598 23.8793L12.6943 23.7795C13.2952 23.6392 13.9615 23.4572 14.3711 23.0882C14.5492 22.9102 14.6567 22.6736 14.6735 22.4224C14.6903 22.1711 14.6154 21.9223 14.4626 21.7222L14.3774 21.6245L14.3524 21.6006L14.2547 21.5174ZM21.722 14.2674C21.5289 14.0743 21.2998 13.9211 21.0475 13.8166C20.7953 13.712 20.5249 13.6582 20.2519 13.6581C19.9788 13.6581 19.7084 13.7118 19.4562 13.8163C19.2039 13.9207 18.9746 14.0738 18.7815 14.2669C18.5884 14.4599 18.4352 14.6891 18.3307 14.9413C18.2262 15.1936 18.1723 15.4639 18.1723 15.737C18.1722 16.01 18.226 16.2804 18.3304 16.5327C18.4349 16.785 18.588 17.0142 18.781 17.2073C19.1709 17.5973 19.6997 17.8165 20.2511 17.8166C20.8026 17.8167 21.3315 17.5977 21.7215 17.2078C22.1114 16.818 22.3306 16.2892 22.3307 15.7377C22.3308 15.1863 22.1118 14.6574 21.722 14.2674Z" fill="white"/>
<defs>
<linearGradient id="paint0_linear_7245_16533" x1="18" y1="0" x2="5.5" y2="33" gradientUnits="userSpaceOnUse">
<stop stop-color="#759CFF"/>
<stop offset="1" stop-color="#487FFF"/>
</linearGradient>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 3.1 KiB

View File

@@ -0,0 +1,12 @@
<svg viewBox="0 0 36 36" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="36" height="36" fill="url(#paint0_linear_7245_16475)"/>
<path d="M8.43597 10.184C8.02693 10.9868 8.00166 12.0224 8.0001 13.9975H27.9999C27.9983 12.0224 27.9731 10.9868 27.564 10.184C27.1805 9.43139 26.5686 8.81947 25.816 8.43597C24.9603 8 23.8402 8 21.6 8H14.4C12.1598 8 11.0397 8 10.184 8.43597C9.43139 8.81947 8.81947 9.43139 8.43597 10.184Z" fill="white"/>
<path d="M28 15.9975H15.9898L15.9898 28H21.6C23.8402 28 24.9603 28 25.816 27.564C26.5686 27.1805 27.1805 26.5686 27.564 25.816C28 24.9603 28 23.8402 28 21.6V15.9975Z" fill="white"/>
<path d="M13.9898 27.9999L13.9898 15.9975H8V21.6C8 23.8402 8 24.9603 8.43597 25.816C8.81947 26.5686 9.43139 27.1805 10.184 27.564C10.9858 27.9725 12.0197 27.9983 13.9898 27.9999Z" fill="white"/>
<defs>
<linearGradient id="paint0_linear_7245_16475" x1="18" y1="0" x2="5.5" y2="33" gradientUnits="userSpaceOnUse">
<stop stop-color="#EB78FE"/>
<stop offset="1" stop-color="#C071FF"/>
</linearGradient>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 1.0 KiB

View File

@@ -0,0 +1,10 @@
<svg viewBox="0 0 36 36" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="36" height="36" fill="url(#paint0_linear_7245_16495)"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M28 18C28 23.5228 23.5228 28 18 28C16.3347 28 14.7645 27.5929 13.3834 26.8729H10.2223C9.5596 26.8729 9.02234 26.3356 9.02234 25.6729V22.4098C8.3677 21.0796 8 19.5827 8 18C8 12.4772 12.4772 8 18 8C23.5228 8 28 12.4772 28 18ZM14.5962 18C14.5962 18.7028 14.0265 19.2726 13.3237 19.2726C12.6209 19.2726 12.0511 18.7028 12.0511 18C12.0511 17.2972 12.6209 16.7275 13.3237 16.7275C14.0265 16.7275 14.5962 17.2972 14.5962 18ZM19.1724 18C19.1724 18.7028 18.6027 19.2726 17.8999 19.2726C17.1971 19.2726 16.6273 18.7028 16.6273 18C16.6273 17.2972 17.1971 16.7275 17.8999 16.7275C18.6027 16.7275 19.1724 17.2972 19.1724 18ZM23.7485 18C23.7485 18.7028 23.1788 19.2726 22.476 19.2726C21.7732 19.2726 21.2034 18.7028 21.2034 18C21.2034 17.2972 21.7732 16.7275 22.476 16.7275C23.1788 16.7275 23.7485 17.2972 23.7485 18Z" fill="white"/>
<defs>
<linearGradient id="paint0_linear_7245_16495" x1="18" y1="0" x2="5.5" y2="33" gradientUnits="userSpaceOnUse">
<stop stop-color="#69C1FF"/>
<stop offset="1" stop-color="#4C9FFF"/>
</linearGradient>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@@ -0,0 +1,13 @@
<svg viewBox="0 0 36 36" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="36" height="36" fill="url(#paint0_linear_7245_16523)"/>
<path d="M10.3001 9C9.63736 9 9.1001 9.53726 9.1001 10.2V15.8C9.1001 16.4627 9.63736 17 10.3001 17H15.9001C16.5628 17 17.1001 16.4627 17.1001 15.8V10.2C17.1001 9.53726 16.5628 9 15.9001 9H10.3001Z" fill="white"/>
<path d="M20.3001 9C19.6374 9 19.1001 9.53726 19.1001 10.2V15.8C19.1001 16.4627 19.6374 17 20.3001 17H25.9001C26.5628 17 27.1001 16.4627 27.1001 15.8V10.2C27.1001 9.53726 26.5628 9 25.9001 9H20.3001Z" fill="white"/>
<path d="M19.1001 20.2C19.1001 19.5373 19.6374 19 20.3001 19H25.9001C26.5628 19 27.1001 19.5373 27.1001 20.2V25.8C27.1001 26.4627 26.5628 27 25.9001 27H20.3001C19.6374 27 19.1001 26.4627 19.1001 25.8V20.2Z" fill="white"/>
<path d="M10.3001 19C9.63736 19 9.1001 19.5373 9.1001 20.2V25.8C9.1001 26.4627 9.63736 27 10.3001 27H15.9001C16.5628 27 17.1001 26.4627 17.1001 25.8V20.2C17.1001 19.5373 16.5628 19 15.9001 19H10.3001Z" fill="white"/>
<defs>
<linearGradient id="paint0_linear_7245_16523" x1="18" y1="0" x2="5.5" y2="33" gradientUnits="userSpaceOnUse">
<stop stop-color="#CE96FA"/>
<stop offset="1" stop-color="#AF71FF"/>
</linearGradient>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 1.2 KiB

View File

@@ -0,0 +1,10 @@
<svg viewBox="0 0 36 36" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="36" height="36" fill="url(#paint0_linear_7391_1280)"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M18 28.5702C23.8376 28.5702 28.57 23.8378 28.57 18.0002C28.57 12.1625 23.8376 7.43018 18 7.43018C12.1623 7.43018 7.42999 12.1625 7.42999 18.0002C7.42999 23.8378 12.1623 28.5702 18 28.5702ZM15.5024 14.5027C14.9502 14.5027 14.5024 14.9504 14.5024 15.5027V20.4977C14.5024 21.05 14.9502 21.4977 15.5024 21.4977H20.4975C21.0498 21.4977 21.4975 21.05 21.4975 20.4977V15.5027C21.4975 14.9504 21.0498 14.5027 20.4975 14.5027H15.5024Z" fill="white"/>
<defs>
<linearGradient id="paint0_linear_7391_1280" x1="18" y1="0" x2="5.5" y2="33" gradientUnits="userSpaceOnUse">
<stop stop-color="#FA9696"/>
<stop offset="1" stop-color="#E44D4D"/>
</linearGradient>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 851 B

View File

@@ -0,0 +1,10 @@
<svg viewBox="0 0 36 36" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="36" height="36" fill="url(#paint0_linear_7252_16819)"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M8 18C8 23.5228 12.4772 28 18 28C19.6653 28 21.2355 27.5929 22.6166 26.8729H25.7777C26.4404 26.8729 26.9777 26.3356 26.9777 25.6729V22.4098C27.6323 21.0796 28 19.5827 28 18C28 12.4772 23.5228 8 18 8C12.4772 8 8 12.4772 8 18ZM19.232 14.5379H17.8681V17.6328H15.0355V15.9017C15.0355 15.643 15.0215 15.4261 14.9935 15.2513C14.9656 15.0764 14.9131 14.9365 14.8362 14.8316C14.7662 14.7267 14.6683 14.6533 14.5424 14.6113C14.4235 14.5624 14.2731 14.5379 14.0913 14.5379H12.8323V14.8526H12.9372C13.252 14.8526 13.4513 14.9505 13.5353 15.1464C13.6262 15.3352 13.6716 15.587 13.6716 15.9017V21.4621H15.0355V18.1049H17.8681V20.0982C17.8681 20.364 17.8821 20.5843 17.9101 20.7592C17.9381 20.934 17.987 21.0739 18.057 21.1788C18.1339 21.2838 18.2318 21.3572 18.3507 21.3992C18.4766 21.4411 18.6305 21.4621 18.8124 21.4621H20.0713V21.1474H19.9664C19.6517 21.1474 19.4488 21.0529 19.3579 20.8641C19.274 20.6683 19.232 20.413 19.232 20.0982V14.5379ZM22.1457 15.8073C22.2576 15.7024 22.3136 15.559 22.3136 15.3772C22.3136 15.1673 22.2471 14.982 22.1142 14.8211C21.9883 14.6603 21.7925 14.5798 21.5267 14.5798C21.3659 14.5798 21.2295 14.6323 21.1176 14.7372C21.0057 14.8421 20.9497 14.9855 20.9497 15.1673C20.9497 15.3772 21.0127 15.5625 21.1386 15.7234C21.2714 15.8843 21.4708 15.9647 21.7366 15.9647C21.8974 15.9647 22.0338 15.9122 22.1457 15.8073ZM20.9182 17.1397C21.0092 17.3285 21.0546 17.5803 21.0546 17.8951V21.4621H22.4185V17.8951C22.4185 17.6363 22.4045 17.4195 22.3765 17.2446C22.3485 17.0698 22.2961 16.9299 22.2192 16.825C22.1492 16.7201 22.0513 16.6466 21.9254 16.6047C21.8065 16.5557 21.6561 16.5312 21.4743 16.5312H20.2153V16.846H20.3202C20.635 16.846 20.8343 16.9439 20.9182 17.1397Z" fill="white"/>
<defs>
<linearGradient id="paint0_linear_7252_16819" x1="18" y1="0" x2="5.5" y2="33" gradientUnits="userSpaceOnUse">
<stop stop-color="#FB93C5"/>
<stop offset="1" stop-color="#F2759B"/>
</linearGradient>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 2.1 KiB

View File

@@ -0,0 +1,11 @@
<svg viewBox="0 0 36 36" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="36" height="36" fill="url(#paint0_linear_7245_16490)"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M9.12784 10.0483C8.70001 10.8719 8.70001 11.9539 8.70001 14.118V21.882C8.70001 24.0461 8.70001 25.1281 9.12784 25.9517C9.48837 26.6457 10.0543 27.2116 10.7483 27.5722C11.5719 28 12.6539 28 14.818 28H21.182C23.3461 28 24.4281 28 25.2517 27.5722C25.9458 27.2116 26.5117 26.6457 26.8722 25.9517C27.3 25.1281 27.3 24.0461 27.3 21.882V14.118C27.3 11.9539 27.3 10.8719 26.8722 10.0483C26.5117 9.35425 25.9458 8.78836 25.2517 8.42783C24.4281 8 23.3461 8 21.182 8H14.818C12.6539 8 11.5719 8 10.7483 8.42783C10.0543 8.78836 9.48837 9.35425 9.12784 10.0483ZM13.6482 12.9665C13.0959 12.9665 12.6482 13.4142 12.6482 13.9665C12.6482 14.5187 13.0959 14.9665 13.6482 14.9665L22.3518 14.9665C22.9041 14.9665 23.3518 14.5187 23.3518 13.9665C23.3518 13.4142 22.9041 12.9665 22.3518 12.9665L13.6482 12.9665ZM12.6482 18.1329C12.6482 17.5806 13.0959 17.1329 13.6482 17.1329L22.3518 17.1329C22.9041 17.1329 23.3518 17.5806 23.3518 18.1329C23.3518 18.6852 22.9041 19.1329 22.3518 19.1329L13.6482 19.1329C13.0959 19.1329 12.6482 18.6852 12.6482 18.1329ZM13.6482 21.2249C13.0959 21.2249 12.6482 21.6726 12.6482 22.2249C12.6482 22.7772 13.0959 23.2249 13.6482 23.2249L19.1296 23.2249C19.6819 23.2249 20.1296 22.7772 20.1296 22.2249C20.1296 21.6726 19.6819 21.2249 19.1296 21.2249L13.6482 21.2249Z" fill="white"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M10.7008 13.4041C10.964 12.016 12.1835 10.9665 13.6482 10.9665L22.3518 10.9665C23.8165 10.9665 25.036 12.0161 25.2992 13.4042C25.2969 12.6805 25.288 12.1624 25.2534 11.746C25.2104 11.2279 25.1383 11.049 25.0974 10.9702C24.9266 10.6415 24.6585 10.3734 24.3298 10.2027C24.251 10.1618 24.0721 10.0896 23.554 10.0466C23.012 10.0016 22.2976 10 21.182 10H14.818C13.7024 10 12.988 10.0016 12.446 10.0466C11.928 10.0896 11.749 10.1618 11.6703 10.2027C11.3415 10.3734 11.0734 10.6415 10.9027 10.9702C10.8618 11.049 10.7897 11.2279 10.7466 11.746C10.7121 12.1624 10.7031 12.6805 10.7008 13.4041ZM25.3 14.5246C25.1897 15.111 24.9087 15.6372 24.5106 16.0497C24.9087 16.4621 25.1897 16.9883 25.3 17.5747V14.5246ZM25.3 18.691C25.0385 20.0812 23.818 21.1329 22.3518 21.1329H21.9247C22.057 21.4713 22.1296 21.8396 22.1296 22.2249C22.1296 23.8818 20.7865 25.2249 19.1296 25.2249L13.6482 25.2249C12.1851 25.2249 10.9666 24.1775 10.7016 22.7916C10.705 23.4146 10.7153 23.8762 10.7466 24.254C10.7897 24.7721 10.8618 24.951 10.9027 25.0298C11.0734 25.3585 11.3415 25.6266 11.6703 25.7973C11.749 25.8382 11.928 25.9104 12.446 25.9534C12.988 25.9984 13.7024 26 14.818 26H21.182C22.2976 26 23.012 25.9984 23.554 25.9534C24.0721 25.9104 24.251 25.8382 24.3298 25.7973C24.6585 25.6266 24.9266 25.3585 25.0974 25.0298C25.1383 24.951 25.2104 24.7721 25.2534 24.254C25.2984 23.712 25.3 22.9976 25.3 21.882V18.691ZM10.7 21.6666C10.8071 21.0977 11.0747 20.5855 11.4541 20.1789C11.0747 19.7723 10.8071 19.26 10.7 18.6912V21.6666ZM10.7 17.5746C10.8104 16.9882 11.0913 16.4621 11.4894 16.0497C11.0913 15.6373 10.8104 15.1111 10.7 14.5247V17.5746ZM13.6482 12.9665L22.3518 12.9665C22.9041 12.9665 23.3518 13.4142 23.3518 13.9665C23.3518 14.5187 22.9041 14.9665 22.3518 14.9665L13.6482 14.9665C13.0959 14.9665 12.6482 14.5187 12.6482 13.9665C12.6482 13.4142 13.0959 12.9665 13.6482 12.9665ZM13.6482 17.1329L22.3518 17.1329C22.9041 17.1329 23.3518 17.5806 23.3518 18.1329C23.3518 18.6852 22.9041 19.1329 22.3518 19.1329L13.6482 19.1329C13.0959 19.1329 12.6482 18.6852 12.6482 18.1329C12.6482 17.5806 13.0959 17.1329 13.6482 17.1329ZM13.6482 21.2249L19.1296 21.2249C19.6819 21.2249 20.1296 21.6726 20.1296 22.2249C20.1296 22.7772 19.6819 23.2249 19.1296 23.2249L13.6482 23.2249C13.0959 23.2249 12.6482 22.7772 12.6482 22.2249C12.6482 21.6726 13.0959 21.2249 13.6482 21.2249ZM8.70001 14.118C8.70001 11.9539 8.70001 10.8719 9.12784 10.0483C9.48837 9.35425 10.0543 8.78836 10.7483 8.42783C11.5719 8 12.6539 8 14.818 8H21.182C23.3461 8 24.4281 8 25.2517 8.42783C25.9458 8.78836 26.5117 9.35425 26.8722 10.0483C27.3 10.8719 27.3 11.9539 27.3 14.118V21.882C27.3 24.0461 27.3 25.1281 26.8722 25.9517C26.5117 26.6457 25.9458 27.2116 25.2517 27.5722C24.4281 28 23.3461 28 21.182 28H14.818C12.6539 28 11.5719 28 10.7483 27.5722C10.0543 27.2116 9.48837 26.6457 9.12784 25.9517C8.70001 25.1281 8.70001 24.0461 8.70001 21.882V14.118Z" fill="white"/>
<defs>
<linearGradient id="paint0_linear_7245_16490" x1="18" y1="0" x2="5.5" y2="33" gradientUnits="userSpaceOnUse">
<stop stop-color="#FFC75A"/>
<stop offset="1" stop-color="#FAA303"/>
</linearGradient>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 4.5 KiB

View File

@@ -0,0 +1,13 @@
<svg viewBox="0 0 36 36" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="36" height="36" fill="url(#paint0_linear_7245_16470)"/>
<path d="M16.7544 10H19.4801C20.3638 10 21.0801 10.7163 21.0801 11.6V11.9385H22.9998C23.0268 11.9385 23.0535 11.9385 23.0801 11.9385V11.6C23.0801 9.61177 21.4683 8 19.4801 8H16.7544C14.7662 8 13.1544 9.61177 13.1544 11.6V11.9385H15.1544V11.6C15.1544 10.7163 15.8708 10 16.7544 10Z" fill="white"/>
<path d="M28.4359 16.2578H7.56388C7.57774 15.0685 7.64107 14.3631 7.93058 13.7949C8.25654 13.1552 8.77668 12.635 9.41643 12.3091C10.1437 11.9385 11.0958 11.9385 13 11.9385H22.9998C24.904 11.9385 25.8561 11.9385 26.5834 12.3091C27.2231 12.635 27.7432 13.1552 28.0692 13.7949C28.3587 14.3631 28.4221 15.0685 28.4359 16.2578Z" fill="white"/>
<path d="M20.6355 18.0378H28.4398V22.5601C28.4398 24.4643 28.4398 25.4164 28.0692 26.1437C27.7432 26.7834 27.2231 27.3035 26.5834 27.6295C25.8561 28.0001 24.904 28.0001 22.9998 28.0001H13C11.0958 28.0001 10.1437 28.0001 9.41643 27.6295C8.77668 27.3035 8.25654 26.7834 7.93058 26.1437C7.56 25.4164 7.56 24.4643 7.56 22.5601V18.0378H15.3643V21.3228C15.3643 21.6541 15.6329 21.9228 15.9643 21.9228H20.0355C20.3669 21.9228 20.6355 21.6541 20.6355 21.3228V18.0378Z" fill="white"/>
<path d="M16.9643 18.0378H19.0355V20.3228H16.9643V18.0378Z" fill="white"/>
<defs>
<linearGradient id="paint0_linear_7245_16470" x1="18" y1="0" x2="5.5" y2="33" gradientUnits="userSpaceOnUse">
<stop stop-color="#5BA7FF"/>
<stop offset="1" stop-color="#4383FF"/>
</linearGradient>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 1.5 KiB

View File

@@ -0,0 +1,12 @@
<svg viewBox="0 0 36 36" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="36" height="36" fill="url(#paint0_linear_7245_16513)"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M11.5796 26.9153C11.7938 26.9153 11.9675 26.7416 11.9675 26.5274V24.7153C11.9675 24.5011 11.7938 24.3274 11.5796 24.3274C11.3077 24.3274 11.1751 24.2403 11.0931 24.1123C10.9905 23.9444 10.9068 23.5904 10.9068 22.9711V20.9846C10.9068 20.17 10.8199 19.4794 10.6306 18.928C10.5033 18.557 10.3257 18.2383 10.0893 17.99C10.6741 17.3773 10.9068 16.338 10.9068 15.035V12.971C10.9068 12.4371 10.9931 12.1027 11.1124 11.913C11.2128 11.7534 11.349 11.6728 11.5796 11.6728C11.7938 11.6728 11.9675 11.4991 11.9675 11.2849V9.47286C11.9675 9.25863 11.7938 9.08496 11.5796 9.08496C10.5396 9.08496 9.7021 9.37682 9.16909 10.044C8.64841 10.6893 8.43401 11.7393 8.43401 13.0872V15.2481C8.43401 15.8426 8.35093 16.2274 8.22932 16.4508C8.17169 16.5566 8.11045 16.617 8.05257 16.6524C7.99561 16.6873 7.92076 16.711 7.81429 16.711C7.60006 16.711 7.42639 16.8847 7.42639 17.0989V18.8819C7.42639 19.0961 7.60006 19.2698 7.81429 19.2698C8.0075 19.2698 8.13178 19.3406 8.2323 19.5185C8.35119 19.7289 8.43401 20.0944 8.43401 20.6649V22.9905C8.43401 24.3313 8.65018 25.3744 9.18213 26.0028C9.72047 26.6387 10.5521 26.9153 11.5796 26.9153Z" fill="white"/>
<path d="M24.0325 26.5274C24.0325 26.7416 24.2061 26.9153 24.4203 26.9153C25.4479 26.9153 26.2795 26.6387 26.8178 26.0028C27.3498 25.3744 27.5659 24.3313 27.5659 22.9905V20.6649C27.5659 20.0944 27.6488 19.7289 27.7676 19.5185C27.8682 19.3406 27.9925 19.2698 28.1857 19.2698C28.3999 19.2698 28.5736 19.0961 28.5736 18.8819V17.0989C28.5736 16.8847 28.3999 16.711 28.1857 16.711C28.0792 16.711 28.0043 16.6873 27.9474 16.6524C27.8895 16.617 27.8283 16.5566 27.7706 16.4508C27.649 16.2274 27.5659 15.8426 27.5659 15.2481V13.0872C27.5659 11.7392 27.3515 10.6891 26.8307 10.0438C26.2977 9.37677 25.4603 9.08496 24.4203 9.08496C24.2061 9.08496 24.0325 9.25863 24.0325 9.47286V11.2849C24.0325 11.4991 24.2061 11.6728 24.4203 11.6728C24.651 11.6728 24.7871 11.7534 24.8875 11.913C25.0069 12.1027 25.0931 12.4371 25.0931 12.971V15.035C25.0931 16.338 25.3259 17.3773 25.9107 17.99C25.6743 18.2383 25.4966 18.557 25.3693 18.928C25.1801 19.4794 25.0931 20.17 25.0931 20.9846V22.9711C25.0931 23.5904 25.0094 23.9445 24.9068 24.1123C24.8249 24.2404 24.6922 24.3274 24.4203 24.3274C24.2061 24.3274 24.0325 24.5011 24.0325 24.7153V26.5274Z" fill="white"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M13.8172 15.3258C13.4006 14.9093 13.4006 14.2339 13.8172 13.8173C14.2337 13.4007 14.9091 13.4007 15.3257 13.8173L18 16.4916L20.6742 13.8173C21.0908 13.4007 21.7662 13.4007 22.1828 13.8173C22.5994 14.2339 22.5994 14.9093 22.1828 15.3258L19.5085 18.0001L22.1828 20.6744C22.5994 21.091 22.5994 21.7664 22.1828 22.1829C21.7662 22.5995 21.0908 22.5995 20.6742 22.1829L18 19.5087L15.3257 22.1829C14.9091 22.5995 14.2337 22.5995 13.8172 22.1829C13.4006 21.7664 13.4006 21.091 13.8172 20.6744L16.4914 18.0001L13.8172 15.3258Z" fill="white"/>
<defs>
<linearGradient id="paint0_linear_7245_16513" x1="18" y1="0" x2="18" y2="36" gradientUnits="userSpaceOnUse">
<stop stop-color="#FCA490"/>
<stop offset="1" stop-color="#E87056"/>
</linearGradient>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 3.2 KiB

View File

@@ -0,0 +1,10 @@
<svg viewBox="0 0 36 36" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="36" height="36" fill="url(#paint0_linear_7252_16832)"/>
<path fill-rule="evenodd" clip-rule="evenodd" d="M10.2 8.87964C8.43269 8.87964 7 10.3123 7 12.0796V23.9205C7 25.6878 8.43269 27.1205 10.2 27.1205H25.7815C27.5488 27.1205 28.9815 25.6878 28.9815 23.9205V12.0796C28.9815 10.3123 27.5488 8.87964 25.7815 8.87964H10.2ZM11.0333 14.0886C11.0333 13.5363 11.4811 13.0886 12.0333 13.0886H15.0231C15.5754 13.0886 16.0231 13.5363 16.0231 14.0886C16.0231 14.6409 15.5754 15.0886 15.0231 15.0886H14.4282V20.9326H15.0231C15.5754 20.9326 16.0231 21.3803 16.0231 21.9326C16.0231 22.4849 15.5754 22.9326 15.0231 22.9326H12.0333C11.4811 22.9326 11.0333 22.4849 11.0333 21.9326C11.0333 21.3803 11.4811 20.9326 12.0333 20.9326H12.6282L12.6282 15.0886H12.0333C11.4811 15.0886 11.0333 14.6409 11.0333 14.0886ZM19.2645 21.2343C18.874 20.8437 18.2408 20.8437 17.8503 21.2343C17.4598 21.6248 17.4598 22.2579 17.8503 22.6485L17.8574 22.6555C18.2479 23.0461 18.881 23.0461 19.2716 22.6555C19.6621 22.265 19.6621 21.6318 19.2716 21.2413L19.2645 21.2343ZM22.7852 21.2343C22.3947 20.8437 21.7616 20.8437 21.371 21.2343C20.9805 21.6248 20.9805 22.2579 21.371 22.6485L21.3781 22.6555C21.7686 23.0461 22.4018 23.0461 22.7923 22.6555C23.1828 22.265 23.1828 21.6318 22.7923 21.2413L22.7852 21.2343Z" fill="white"/>
<defs>
<linearGradient id="paint0_linear_7252_16832" x1="18" y1="0" x2="5.5" y2="33" gradientUnits="userSpaceOnUse">
<stop stop-color="#769CFF"/>
<stop offset="1" stop-color="#4980FF"/>
</linearGradient>
</defs>
</svg>

After

Width:  |  Height:  |  Size: 1.6 KiB

View File

@@ -0,0 +1 @@
<?xml version="1.0" standalone="no"?><!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd"><svg t="1702446643259" class="icon" viewBox="0 0 1024 1024" version="1.1" xmlns="http://www.w3.org/2000/svg" p-id="4270" xmlns:xlink="http://www.w3.org/1999/xlink" width="128" height="128"><path d="M247.0912 996.1472 100.5568 996.1472c-39.936 0-72.4992-32.5632-72.4992-72.4992L28.0576 81.92c0-39.936 32.5632-72.4992 72.4992-72.4992l766.0544 0c39.936 0 72.4992 32.5632 72.4992 72.4992l0 210.5344c0 12.3904-10.0352 22.528-22.528 22.528s-22.528-10.0352-22.528-22.528L894.0544 81.92c0-15.1552-12.288-27.5456-27.5456-27.5456L100.5568 54.3744c-15.1552 0-27.5456 12.288-27.5456 27.5456L73.0112 923.648c0 15.1552 12.288 27.5456 27.5456 27.5456l146.5344 0c12.3904 0 22.528 10.0352 22.528 22.528S259.4816 996.1472 247.0912 996.1472z" fill="#FF9000" p-id="4271"></path><path d="M745.2672 192.1024 174.6944 192.1024c-12.3904 0-22.528-10.0352-22.528-22.528s10.0352-22.528 22.528-22.528l570.5728 0c12.3904 0 22.528 10.0352 22.528 22.528S757.6576 192.1024 745.2672 192.1024z" fill="#FF9000" p-id="4272"></path><path d="M437.6576 429.6704 174.6944 429.6704c-12.3904 0-22.528-10.0352-22.528-22.528s10.0352-22.528 22.528-22.528l262.9632 0c12.3904 0 22.528 10.0352 22.528 22.528S450.1504 429.6704 437.6576 429.6704z" fill="#FF9000" p-id="4273"></path><path d="M620.6464 310.8864 174.6944 310.8864c-12.3904 0-22.528-10.0352-22.528-22.528s10.0352-22.528 22.528-22.528l445.952 0c12.3904 0 22.528 10.0352 22.528 22.528S633.1392 310.8864 620.6464 310.8864z" fill="#FF9000" p-id="4274"></path><path d="M399.6672 1009.8688c-6.2464 0-12.288-2.56-16.5888-7.2704-5.2224-5.7344-7.168-13.7216-5.12-21.2992l40.8576-146.6368c1.024-3.6864 3.072-7.168 5.7344-9.8304l408.9856-408.9856c14.1312-14.0288 36.9664-14.0288 51.0976 0l97.792 97.792c6.8608 6.8608 10.5472 15.872 10.5472 25.4976s-3.7888 18.7392-10.5472 25.4976L928.8704 618.496c-4.1984 4.1984-9.9328 6.5536-15.872 6.5536s-11.6736-2.3552-15.872-6.5536l-66.048-66.048c-8.8064-8.8064-8.8064-23.04 0-31.8464s23.04-8.8064 31.8464 0l50.176 50.176 31.4368-31.4368L859.136 454.0416 460.6976 852.48 431.104 958.6688 546.7136 936.96l231.7312-231.7312c5.0176-5.4272 50.7904-52.6336 107.2128-56.7296 12.3904-0.9216 23.1424 8.3968 24.064 20.7872 0.9216 12.3904-8.3968 23.1424-20.7872 24.064-40.3456 2.9696-77.4144 42.2912-77.824 42.7008-0.2048 0.2048-0.4096 0.512-0.7168 0.7168L573.5424 973.7216c-3.1744 3.1744-7.2704 5.3248-11.776 6.2464l-158.0032 29.5936C402.432 1009.7664 401.1008 1009.8688 399.6672 1009.8688z" fill="#FF9000" p-id="4275"></path></svg>

After

Width:  |  Height:  |  Size: 2.5 KiB

View File

@@ -12,6 +12,7 @@ import {
import MyIcon from '../Icon';
import MyBox from '../MyBox';
import { useSystem } from '../../../hooks/useSystem';
import Avatar from '../Avatar';
export interface MyModalProps extends ModalContentProps {
iconSrc?: string;
@@ -68,14 +69,18 @@ const MyModal = ({
>
{iconSrc && (
<>
{iconSrc.startsWith('/') ? (
<Image mr={3} objectFit={'contain'} alt="" src={iconSrc} w={'20px'} />
) : (
<MyIcon mr={3} name={iconSrc as any} w={'20px'} />
)}
<Avatar
objectFit={'contain'}
alt=""
src={iconSrc}
w={'1.5rem'}
borderRadius={'md'}
/>
</>
)}
{title}
<Box ml={3} color={'myGray.900'} fontWeight={'500'}>
{title}
</Box>
<Box flex={1} />
{onClose && (
<ModalCloseButton position={'relative'} fontSize={'xs'} top={0} right={0} />

View File

@@ -2,7 +2,7 @@ import React, { useMemo } from 'react';
import { Box, Flex, Grid, Image } from '@chakra-ui/react';
import type { FlexProps, GridProps } from '@chakra-ui/react';
import { useTranslation } from 'next-i18next';
import MyIcon from '../Icon';
import Avatar from '../Avatar';
type Props<ValueType = string> = Omit<GridProps, 'onChange'> & {
list: { icon?: string; label: string | React.ReactNode; value: ValueType }[];
@@ -81,14 +81,10 @@ const LightRowTabs = <ValueType = string,>({
>
{item.icon && (
<>
{item.icon.startsWith('/') ? (
<Image mr={1} src={item.icon} alt={''} w={'16px'} />
) : (
<MyIcon mr={1} name={item.icon as any} w={'16px'} />
)}
<Avatar src={item.icon} alt={''} w={'1.25rem'} borderRadius={'sm'} />
</>
)}
{typeof item.label === 'string' ? t(item.label as any) : item.label}
<Box ml={1}>{typeof item.label === 'string' ? t(item.label as any) : item.label}</Box>
</Flex>
))}
</Grid>

View File

@@ -18,6 +18,16 @@ export const workflowNodeTemplateList = (t: TFunction): NodeTemplateListType =>
label: t('common:core.module.template.Tool module'),
list: []
},
{
type: FlowNodeTemplateTypeEnum.search,
label: t('core.workflow.template.Search'),
list: []
},
{
type: FlowNodeTemplateTypeEnum.multimodal,
label: t('core.workflow.template.Multimodal'),
list: []
},
{
type: FlowNodeTemplateTypeEnum.other,
label: t('common:common.Other'),

View File

@@ -40,6 +40,7 @@
"My Apps": "My Apps",
"Output Field Settings": "Output Field Settings",
"Paste Config": "Paste Config",
"plugin_cost_per_times": "{{cost}}/per time",
"Plugin dispatch": "Plugins",
"Plugin dispatch tip": "It is up to the model to decide which plug-ins to add additional capabilities to. If the plug-in is selected, the knowledge base call is also treated as a special plug-in.",
"Publish channel": "Publish channel",
@@ -60,6 +61,9 @@
"has new version": "has new version"
}
},
"common": {
"plugin_cost_per_times": "{{cost}} points/times"
},
"module": {
"Combine Modules": "Combine Modules",
"Confirm Sync": "The template will be updated to the latest template configuration. Fields that do not exist in the template will be deleted (including all custom fields). You are advised to make a copy of the node and then update the original node version.",

View File

@@ -1046,9 +1046,11 @@
"plugin": {
"Custom headers": "Custom headers",
"Delete http plugin": "Confirm to delete this group of HTTP plugins? This will delete all plugins in the directory.",
"Free": "The plugin requires no points",
"Get Plugin Module Detail Failed": "Plugin loading failed",
"Http plugin intro placeholder": "For display only, no actual effect",
"Intro placeholder": "If this plugin is used as a tool, this introduction will be used as a prompt."
"Intro placeholder": "If this plugin is used as a tool, this introduction will be used as a prompt.",
"cost": "Plugin cost: "
},
"shareChat": {
"Init Error": "Failed to initialize chat dialog",
@@ -1117,6 +1119,10 @@
"OnRevert version confirm": "Confirm to revert to this version? It will save the configuration of the version being edited and create a new published version for the reverted version.",
"histories": "Publishing records"
},
"template": {
"Multimodal": "Multimodal",
"Search": "Search"
},
"tool": {
"Handle": "Tool connector",
"Select Tool": "Select tool"

View File

@@ -39,6 +39,7 @@
"My Apps": "我的应用",
"Output Field Settings": "输出字段编辑",
"Paste Config": "粘贴配置",
"plugin_cost_per_times": "{{cost}}/次",
"Plugin dispatch": "插件调用",
"Plugin dispatch tip": "给模型附加额外的能力,具体调用哪些插件,将由模型自主决定。\n若选择了插件知识库调用将自动作为一个特殊的插件。",
"Publish channel": "发布渠道",
@@ -59,6 +60,9 @@
"has new version": "有新版本"
}
},
"common": {
"plugin_cost_per_times": "{{cost}}积分/次"
},
"module": {
"Combine Modules": "组合模块",
"Confirm Sync": "将会更新至最新的模板配置,不存在模板中的字段将会被删除(包括所有自定义字段),建议您先复制一份节点,再更新原来节点的版本。",

View File

@@ -1055,9 +1055,11 @@
"plugin": {
"Custom headers": "自定义请求头",
"Delete http plugin": "确认删除该组 HTTP 插件?会删除该目录下所有插件。",
"Free": "该插件无需积分消耗~",
"Get Plugin Module Detail Failed": "加载插件异常",
"Http plugin intro placeholder": "仅做展示,无实际效果",
"Intro placeholder": "如果该插件作为工具被调用,则会使用该介绍作为提示词。"
"Intro placeholder": "如果该插件作为工具被调用,则会使用该介绍作为提示词。",
"cost": "积分消耗:"
},
"shareChat": {
"Init Error": "初始化对话框失败",
@@ -1126,6 +1128,10 @@
"OnRevert version confirm": "确认回退至该版本?会为您保存编辑中版本的配置,并为回退版本创建一个新的发布版本。",
"histories": "发布记录"
},
"template": {
"Multimodal": "多模态",
"Search": "搜索"
},
"tool": {
"Handle": "工具连接器",
"Select Tool": "选择工具"

48
pnpm-lock.yaml generated
View File

@@ -81,9 +81,15 @@ importers:
packages/plugins:
dependencies:
duck-duck-scrape:
specifier: ^2.2.5
version: 2.2.5
expr-eval:
specifier: ^2.0.2
version: 2.0.2
lodash:
specifier: ^4.17.21
version: 4.17.21
devDependencies:
'@fastgpt/global':
specifier: workspace:*
@@ -91,6 +97,9 @@ importers:
'@fastgpt/service':
specifier: workspace:*
version: link:../service
'@types/lodash':
specifier: ^4.14.191
version: 4.17.7
'@types/node':
specifier: 20.14.0
version: 20.14.0
@@ -100,9 +109,6 @@ importers:
'@fastgpt/global':
specifier: workspace:*
version: link:../global
'@fastgpt/plugins':
specifier: workspace:*
version: link:../plugins
'@node-rs/jieba':
specifier: 1.10.0
version: 1.10.0
@@ -1871,7 +1877,7 @@ packages:
resolution: {integrity: sha512-5mlW1DquU5HaxjLkfkGN1GA/fvVGdyHURRiX/0FHl2cfIfRxSOfmxEH5YS43edp0OldZrZ+dkBKbngxcNCdZvA==}
peerDependencies:
'@types/react': '*'
react: 18.3.1
react: '>=16.8.0'
peerDependenciesMeta:
'@types/react':
optional: true
@@ -4692,6 +4698,9 @@ packages:
domutils@3.1.0:
resolution: {integrity: sha512-H78uMmQtI2AhgDJjWeQmHwJJ2bLPD3GMmO7Zja/ZZh84wkm+4ut+IUnUdRa8uCGX88DiVx1j6FRe1XfxEgjEZA==}
duck-duck-scrape@2.2.5:
resolution: {integrity: sha512-RTu/Ag5LhgD/j1l2zVGCwTINBoEYCffl58nMoBjtXWJG8tTex72h3gxpDjAr8jVqFaBvhgASNKTUsE31JeqYgw==}
duck@0.1.12:
resolution: {integrity: sha512-wkctla1O6VfP89gQ+J/yDesM0S7B7XLXjKGzXxMDVFg7uEn706niAtyYovKbyq1oT9YwDcly721/iUWoc8MVRg==}
@@ -5425,6 +5434,9 @@ packages:
hoist-non-react-statics@3.3.2:
resolution: {integrity: sha512-/gGivxi8JPKWNm/W0jSmzcMPpfpPLc3dY/6GxhX2hQ9iGj3aDfklV4ET7NjKpSinLpJ5vafa9iiGIEZg10SfBw==}
html-entities@2.5.2:
resolution: {integrity: sha512-K//PSRMQk4FZ78Kyau+mZurHn3FH0Vwr+H36eE0rPbeYkRRi9YxceYPhuN60UwWorxyKHhqoAJl2OFKa4BVtaA==}
html-escaper@2.0.2:
resolution: {integrity: sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==}
@@ -6642,6 +6654,11 @@ packages:
natural-compare@1.4.0:
resolution: {integrity: sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==}
needle@3.3.1:
resolution: {integrity: sha512-6k0YULvhpw+RoLNiQCRKOl09Rv1dPLr8hHnVjHqdolKwDrdNyk+Hmrthi4lIGPPz3r39dLx0hsF5s40sZ3Us4Q==}
engines: {node: '>= 4.4.x'}
hasBin: true
negotiator@0.6.3:
resolution: {integrity: sha512-+EUsqGPLsM+j/zdChZjsnX51g4XrHFOIXwfnCVPGlQk/k5giakcKsuxCObBRu6DSm9opw/O6slWbJdghQM4bBg==}
engines: {node: '>= 0.6'}
@@ -7579,6 +7596,9 @@ packages:
engines: {node: '>=14.0.0'}
hasBin: true
sax@1.4.1:
resolution: {integrity: sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==}
scheduler@0.23.2:
resolution: {integrity: sha512-UOShsPwz7NrMUqhR6t0hWjFduvOzbtv7toDH1/hIrfRNIDBnnBWd0CwJTGvTpngVlmwGCdP9/Zl/tVrDqcuYzQ==}
@@ -13553,6 +13573,11 @@ snapshots:
domelementtype: 2.3.0
domhandler: 5.0.3
duck-duck-scrape@2.2.5:
dependencies:
html-entities: 2.5.2
needle: 3.3.1
duck@0.1.12:
dependencies:
underscore: 1.13.6
@@ -13798,7 +13823,7 @@ snapshots:
eslint: 8.56.0
eslint-import-resolver-node: 0.3.9
eslint-import-resolver-typescript: 3.6.1(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.5.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1(eslint@8.56.0))(eslint@8.56.0)
eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.5.3))(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0)
eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.5.3))(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.5.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1(eslint@8.56.0))(eslint@8.56.0))(eslint@8.56.0)
eslint-plugin-jsx-a11y: 6.9.0(eslint@8.56.0)
eslint-plugin-react: 7.34.4(eslint@8.56.0)
eslint-plugin-react-hooks: 4.6.2(eslint@8.56.0)
@@ -13822,7 +13847,7 @@ snapshots:
enhanced-resolve: 5.17.0
eslint: 8.56.0
eslint-module-utils: 2.8.1(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.5.3))(eslint-import-resolver-node@0.3.9)(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.5.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1(eslint@8.56.0))(eslint@8.56.0))(eslint@8.56.0)
eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.5.3))(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0)
eslint-plugin-import: 2.29.1(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.5.3))(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.5.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1(eslint@8.56.0))(eslint@8.56.0))(eslint@8.56.0)
fast-glob: 3.3.2
get-tsconfig: 4.7.5
is-core-module: 2.14.0
@@ -13844,7 +13869,7 @@ snapshots:
transitivePeerDependencies:
- supports-color
eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.5.3))(eslint-import-resolver-typescript@3.6.1)(eslint@8.56.0):
eslint-plugin-import@2.29.1(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.5.3))(eslint-import-resolver-typescript@3.6.1(@typescript-eslint/parser@6.21.0(eslint@8.56.0)(typescript@5.5.3))(eslint-import-resolver-node@0.3.9)(eslint-plugin-import@2.29.1(eslint@8.56.0))(eslint@8.56.0))(eslint@8.56.0):
dependencies:
array-includes: 3.1.8
array.prototype.findlastindex: 1.2.5
@@ -14603,6 +14628,8 @@ snapshots:
dependencies:
react-is: 16.13.1
html-entities@2.5.2: {}
html-escaper@2.0.2: {}
html-parse-stringify@3.0.1:
@@ -16206,6 +16233,11 @@ snapshots:
natural-compare@1.4.0: {}
needle@3.3.1:
dependencies:
iconv-lite: 0.6.3
sax: 1.4.1
negotiator@0.6.3: {}
neo-async@2.6.2: {}
@@ -17268,6 +17300,8 @@ snapshots:
immutable: 4.3.6
source-map-js: 1.2.0
sax@1.4.1: {}
scheduler@0.23.2:
dependencies:
loose-envify: 1.4.0

View File

@@ -10,16 +10,16 @@
},
"llmModels": [
{
"model": "gpt-3.5-turbo", // 模型名(对应OneAPI中渠道的模型名)
"name": "gpt-3.5-turbo", // 模型别名
"model": "gpt-4o-mini", // 模型名(对应OneAPI中渠道的模型名)
"name": "gpt-4o-mini", // 模型别名
"avatar": "/imgs/model/openai.svg", // 模型的logo
"maxContext": 16000, // 最大上下文
"maxContext": 125000, // 最大上下文
"maxResponse": 4000, // 最大回复
"quoteMaxToken": 13000, // 最大引用内容
"quoteMaxToken": 120000, // 最大引用内容
"maxTemperature": 1.2, // 最大温度
"charsPointsPrice": 0, // n积分/1k token商业版
"censor": false, // 是否开启敏感校验(商业版)
"vision": false, // 是否支持图片输入
"vision": true, // 是否支持图片输入
"datasetProcess": true, // 是否设置为知识库处理模型QA务必保证至少有一个为true否则知识库会报错
"usedInClassify": true, // 是否用于问题分类务必保证至少有一个为true
"usedInExtractFields": true, // 是否用于内容提取务必保证至少有一个为true
@@ -33,44 +33,21 @@
"defaultConfig": {} // 请求API时挟带一些默认配置比如 GLM4 的 top_p
},
{
"model": "gpt-4-0125-preview",
"name": "gpt-4-turbo",
"model": "gpt-4o",
"name": "gpt-4o",
"avatar": "/imgs/model/openai.svg",
"maxContext": 125000,
"maxResponse": 4000,
"quoteMaxToken": 100000,
"maxTemperature": 1.2,
"charsPointsPrice": 0,
"censor": false,
"vision": false,
"datasetProcess": false,
"usedInClassify": true,
"usedInExtractFields": true,
"usedInToolCall": true,
"usedInQueryExtension": true,
"toolChoice": true,
"functionCall": false,
"customCQPrompt": "",
"customExtractPrompt": "",
"defaultSystemChatPrompt": "",
"defaultConfig": {}
},
{
"model": "gpt-4-vision-preview",
"name": "gpt-4-vision",
"avatar": "/imgs/model/openai.svg",
"maxContext": 128000,
"maxResponse": 4000,
"quoteMaxToken": 100000,
"quoteMaxToken": 120000,
"maxTemperature": 1.2,
"charsPointsPrice": 0,
"censor": false,
"vision": true,
"datasetProcess": false,
"usedInClassify": false,
"usedInExtractFields": false,
"usedInToolCall": false,
"usedInQueryExtension": false,
"usedInClassify": true,
"usedInExtractFields": true,
"usedInToolCall": true,
"usedInQueryExtension": true,
"toolChoice": true,
"functionCall": false,
"customCQPrompt": "",
@@ -91,6 +68,27 @@
"defaultConfig": {}, // 自定义额外参数。例如,如果希望使用 embedding3-large 的话,可以传入 dimensions:1024来返回1024维度的向量。目前必须小于1536维度
"dbConfig": {}, // 存储时的额外参数(非对称向量模型时候需要用到)
"queryConfig": {} // 参训时的额外参数
},
{
"model": "text-embedding-3-large",
"name": "text-embedding-3-large",
"avatar": "/imgs/model/openai.svg",
"charsPointsPrice": 0,
"defaultToken": 512,
"maxToken": 3000,
"weight": 100,
"defaultConfig": {
"dimensions": 1024
}
},
{
"model": "text-embedding-3-small",
"name": "text-embedding-3-small",
"avatar": "/imgs/model/openai.svg",
"charsPointsPrice": 0,
"defaultToken": 512,
"maxToken": 3000,
"weight": 100
}
],
"reRankModels": [],

View File

@@ -89,12 +89,7 @@ const nextConfig = {
transpilePackages: ['@fastgpt/*', 'ahooks'],
experimental: {
// 优化 Server Components 的构建和运行,避免不必要的客户端打包。
serverComponentsExternalPackages: [
'mongoose',
'pg',
'@node-rs/jieba',
'@zilliz/milvus2-sdk-node'
],
serverComponentsExternalPackages: ['mongoose', 'pg', '@node-rs/jieba', 'duck-duck-scrape'],
outputFileTracingRoot: path.join(__dirname, '../../')
}
};

View File

@@ -1,15 +1,15 @@
<svg width="28" height="28" viewBox="0 0 28 28" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="28" height="28" rx="6" fill="url(#paint0_linear_6365_1422)"/>
<g clip-path="url(#clip0_6365_1422)">
<path fill-rule="evenodd" clip-rule="evenodd" d="M4.62256 15.2352C4.62256 18.2369 6.94193 20.6969 9.8863 20.9208V20.931H10.0517C10.1422 20.9353 10.2332 20.9374 10.3248 20.9374C10.4163 20.9374 10.5074 20.9353 10.5979 20.931H18.0737C18.1588 20.9353 18.2445 20.9374 18.3306 20.9374C21.118 20.9374 23.3775 18.6778 23.3775 15.8905C23.3775 13.846 22.1618 12.0855 20.4138 11.2923C19.8013 8.85951 17.6496 7.06262 15.0892 7.06262C13.1975 7.06262 11.5289 8.04346 10.5393 9.53692C10.4681 9.53429 10.3966 9.53296 10.3248 9.53296C7.17553 9.53296 4.62256 12.0859 4.62256 15.2352ZM7.35971 16.8711C7.43337 16.9448 7.53771 16.9816 7.67275 16.9816C7.81392 16.9816 7.9198 16.9448 7.99039 16.8711C8.06098 16.7944 8.09627 16.687 8.09627 16.5489V15.642H9.43588V16.5489C9.43588 16.687 9.47118 16.7944 9.54176 16.8711C9.61542 16.9448 9.7213 16.9816 9.85941 16.9816C9.99444 16.9816 10.0973 16.9448 10.1678 16.8711C10.2415 16.7944 10.2783 16.687 10.2783 16.5489V14.086C10.2783 13.9448 10.2415 13.8374 10.1678 13.7638C10.0973 13.6901 9.99444 13.6533 9.85941 13.6533C9.7213 13.6533 9.61542 13.6901 9.54176 13.7638C9.47118 13.8374 9.43588 13.9448 9.43588 14.086V14.9469H8.09627V14.086C8.09627 13.9448 8.05944 13.8374 7.98579 13.7638C7.9152 13.6901 7.81085 13.6533 7.67275 13.6533C7.53771 13.6533 7.43337 13.6901 7.35971 13.7638C7.28606 13.8374 7.24923 13.9448 7.24923 14.086V16.5489C7.24923 16.687 7.28606 16.7944 7.35971 16.8711ZM12.1111 16.8711C12.1848 16.9448 12.2891 16.9816 12.4242 16.9816C12.5653 16.9816 12.6712 16.9448 12.7418 16.8711C12.8124 16.7944 12.8477 16.6885 12.8477 16.5535V14.3852H13.5704C13.684 14.3852 13.7699 14.3561 13.8282 14.2978C13.8896 14.2364 13.9203 14.1505 13.9203 14.04C13.9203 13.9264 13.8896 13.8405 13.8282 13.7822C13.7699 13.7239 13.684 13.6947 13.5704 13.6947H11.2779C11.1643 13.6947 11.0769 13.7239 11.0155 13.7822C10.9572 13.8405 10.928 13.9264 10.928 14.04C10.928 14.1505 10.9572 14.2364 11.0155 14.2978C11.0769 14.3561 11.1643 14.3852 11.2779 14.3852H12.0006V16.5535C12.0006 16.6885 12.0375 16.7944 12.1111 16.8711ZM15.818 16.9816C15.6829 16.9816 15.5786 16.9448 15.5049 16.8711C15.4313 16.7944 15.3945 16.6885 15.3945 16.5535V14.3852H14.6717C14.5582 14.3852 14.4707 14.3561 14.4093 14.2978C14.351 14.2364 14.3218 14.1505 14.3218 14.04C14.3218 13.9264 14.351 13.8405 14.4093 13.7822C14.4707 13.7239 14.5582 13.6947 14.6717 13.6947H16.9642C17.0778 13.6947 17.1637 13.7239 17.222 13.7822C17.2834 13.8405 17.3141 13.9264 17.3141 14.04C17.3141 14.1505 17.2834 14.2364 17.222 14.2978C17.1637 14.3561 17.0778 14.3852 16.9642 14.3852H16.2415V16.5535C16.2415 16.6885 16.2062 16.7944 16.1356 16.8711C16.065 16.9448 15.9591 16.9816 15.818 16.9816ZM18.0716 16.8711C18.1453 16.9448 18.2496 16.9816 18.3847 16.9816C18.5258 16.9816 18.6317 16.9448 18.7023 16.8711C18.7729 16.7944 18.8082 16.6885 18.8082 16.5535V15.8215H19.5217C19.89 15.8215 20.1739 15.7279 20.3734 15.5407C20.5759 15.3504 20.6772 15.0896 20.6772 14.7581C20.6772 14.4267 20.5759 14.1673 20.3734 13.9801C20.1739 13.7899 19.89 13.6947 19.5217 13.6947H18.3893C18.2542 13.6947 18.1484 13.7315 18.0716 13.8052C17.998 13.8789 17.9611 13.9847 17.9611 14.1228V16.5535C17.9611 16.6885 17.998 16.7944 18.0716 16.8711ZM19.3744 15.1724H18.8082V14.3438H19.3744C19.534 14.3438 19.6568 14.3776 19.7427 14.4451C19.8286 14.5126 19.8716 14.6169 19.8716 14.7581C19.8716 14.8962 19.8286 15.0006 19.7427 15.0712C19.6568 15.1387 19.534 15.1724 19.3744 15.1724Z" fill="white"/>
<svg viewBox="0 0 21 21" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="20" height="20" transform="translate(0.5 0.5)" fill="url(#paint0_linear_5846_2946)"/>
<g clip-path="url(#clip0_5846_2946)">
<path fill-rule="evenodd" clip-rule="evenodd" d="M3.80176 11.3822C3.80176 13.5263 5.45845 15.2835 7.56158 15.4434V15.4507H7.67969C7.74434 15.4537 7.80938 15.4552 7.87478 15.4552C7.94018 15.4552 8.00522 15.4537 8.06987 15.4507H13.4097C13.4705 15.4537 13.5317 15.4552 13.5932 15.4552C15.5842 15.4552 17.1982 13.8413 17.1982 11.8503C17.1982 10.39 16.3298 9.13243 15.0813 8.56588C14.6437 6.82817 13.1068 5.54468 11.2779 5.54468C9.9267 5.54468 8.73484 6.24527 8.02798 7.31203C7.97714 7.31015 7.92607 7.30921 7.87478 7.30921C5.62531 7.30921 3.80176 9.13276 3.80176 11.3822ZM5.75687 12.5507C5.80948 12.6034 5.88401 12.6297 5.98047 12.6297C6.0813 12.6297 6.15693 12.6034 6.20735 12.5507C6.25777 12.4959 6.28298 12.4192 6.28298 12.3206V11.6728H7.23985V12.3206C7.23985 12.4192 7.26506 12.4959 7.31548 12.5507C7.36809 12.6034 7.44372 12.6297 7.54236 12.6297C7.63882 12.6297 7.71225 12.6034 7.76267 12.5507C7.81528 12.4959 7.84159 12.4192 7.84159 12.3206V10.5614C7.84159 10.4605 7.81528 10.3838 7.76267 10.3312C7.71225 10.2786 7.63882 10.2523 7.54236 10.2523C7.44372 10.2523 7.36809 10.2786 7.31548 10.3312C7.26506 10.3838 7.23985 10.4605 7.23985 10.5614V11.1763H6.28298V10.5614C6.28298 10.4605 6.25667 10.3838 6.20406 10.3312C6.15364 10.2786 6.07911 10.2523 5.98047 10.2523C5.88401 10.2523 5.80948 10.2786 5.75687 10.3312C5.70426 10.3838 5.67795 10.4605 5.67795 10.5614V12.3206C5.67795 12.4192 5.70426 12.4959 5.75687 12.5507ZM9.15073 12.5507C9.20334 12.6034 9.27788 12.6297 9.37433 12.6297C9.47517 12.6297 9.5508 12.6034 9.60122 12.5507C9.65164 12.4959 9.67685 12.4203 9.67685 12.3239V10.7751H10.1931C10.2742 10.7751 10.3356 10.7543 10.3772 10.7126C10.4211 10.6688 10.443 10.6074 10.443 10.5285C10.443 10.4474 10.4211 10.386 10.3772 10.3444C10.3356 10.3027 10.2742 10.2819 10.1931 10.2819H8.55557C8.47446 10.2819 8.41198 10.3027 8.36814 10.3444C8.32649 10.386 8.30566 10.4474 8.30566 10.5285C8.30566 10.6074 8.32649 10.6688 8.36814 10.7126C8.41198 10.7543 8.47446 10.7751 8.55557 10.7751H9.07181V12.3239C9.07181 12.4203 9.09812 12.4959 9.15073 12.5507ZM11.7985 12.6297C11.702 12.6297 11.6275 12.6034 11.5749 12.5507C11.5223 12.4959 11.496 12.4203 11.496 12.3239V10.7751H10.9797C10.8986 10.7751 10.8361 10.7543 10.7923 10.7126C10.7506 10.6688 10.7298 10.6074 10.7298 10.5285C10.7298 10.4474 10.7506 10.386 10.7923 10.3444C10.8361 10.3027 10.8986 10.2819 10.9797 10.2819H12.6172C12.6984 10.2819 12.7597 10.3027 12.8014 10.3444C12.8452 10.386 12.8671 10.4474 12.8671 10.5285C12.8671 10.6074 12.8452 10.6688 12.8014 10.7126C12.7597 10.7543 12.6984 10.7751 12.6172 10.7751H12.101V12.3239C12.101 12.4203 12.0758 12.4959 12.0254 12.5507C11.9749 12.6034 11.8993 12.6297 11.7985 12.6297ZM13.4082 12.5507C13.4608 12.6034 13.5354 12.6297 13.6318 12.6297C13.7327 12.6297 13.8083 12.6034 13.8587 12.5507C13.9091 12.4959 13.9344 12.4203 13.9344 12.3239V11.801H14.444C14.7071 11.801 14.9099 11.7342 15.0523 11.6005C15.197 11.4645 15.2694 11.2782 15.2694 11.0415C15.2694 10.8047 15.197 10.6195 15.0523 10.4858C14.9099 10.3498 14.7071 10.2819 14.444 10.2819H13.6351C13.5387 10.2819 13.463 10.3082 13.4082 10.3608C13.3556 10.4134 13.3293 10.489 13.3293 10.5877V12.3239C13.3293 12.4203 13.3556 12.4959 13.4082 12.5507ZM14.3388 11.3374H13.9344V10.7455H14.3388C14.4528 10.7455 14.5405 10.7696 14.6019 10.8179C14.6632 10.8661 14.6939 10.9406 14.6939 11.0415C14.6939 11.1401 14.6632 11.2146 14.6019 11.2651C14.5405 11.3133 14.4528 11.3374 14.3388 11.3374Z" fill="white"/>
</g>
<defs>
<linearGradient id="paint0_linear_6365_1422" x1="14" y1="0" x2="4.27778" y2="25.6667" gradientUnits="userSpaceOnUse">
<linearGradient id="paint0_linear_5846_2946" x1="10" y1="0" x2="3.05556" y2="18.3333" gradientUnits="userSpaceOnUse">
<stop stop-color="#FBA8E9"/>
<stop offset="1" stop-color="#FF718A"/>
</linearGradient>
<clipPath id="clip0_6365_1422">
<rect width="19.6" height="19.6" fill="white" transform="translate(4.20001 4.20001)"/>
<clipPath id="clip0_5846_2946">
<rect width="14" height="14" fill="white" transform="translate(3.5 3.5)"/>
</clipPath>
</defs>
</svg>

Before

Width:  |  Height:  |  Size: 3.9 KiB

After

Width:  |  Height:  |  Size: 3.9 KiB

View File

@@ -1,8 +1,8 @@
<svg width="28" height="28" viewBox="0 0 28 28" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="28" height="28" rx="6" fill="url(#paint0_linear_6017_13715)"/>
<path d="M17.2473 22.1667H13.9979V20.497C13.9979 20.421 13.991 20.3449 13.9772 20.2689C13.9634 20.1928 13.9392 20.1203 13.9081 20.0477C13.877 19.9751 13.8424 19.9094 13.7975 19.8472C13.7525 19.7849 13.7041 19.7262 13.6488 19.6709C13.3688 19.3943 12.9609 19.2388 12.5357 19.2457C12.4424 19.2457 12.3491 19.2561 12.2557 19.2733C12.1624 19.2906 12.0725 19.3148 11.9826 19.3494C11.8928 19.384 11.8098 19.422 11.7268 19.4704C11.6439 19.5188 11.5678 19.5741 11.4987 19.6363C11.3086 19.8057 11.0839 20.0926 11.0839 20.5282V22.1667H7.85869C7.79301 22.1667 7.72733 22.1632 7.66165 22.1563C7.59597 22.1494 7.53029 22.139 7.46461 22.1287C7.39893 22.1148 7.33671 22.101 7.27103 22.0803C7.20881 22.0595 7.14659 22.0388 7.08437 22.0146C7.02214 21.9904 6.96338 21.9593 6.90461 21.9282C6.84585 21.897 6.79054 21.8625 6.73523 21.8245C6.67992 21.7864 6.62807 21.7484 6.57622 21.7069C6.52437 21.6654 6.47597 21.6205 6.42758 21.5721C6.37918 21.5237 6.3377 21.4753 6.29276 21.4235C6.25128 21.3716 6.2098 21.3198 6.17523 21.2645C6.13721 21.2091 6.10264 21.1538 6.07153 21.0951C6.04042 21.0363 6.01276 20.9775 5.98511 20.9153C5.96091 20.8531 5.93671 20.7909 5.91943 20.7287C5.89869 20.6664 5.88486 20.6008 5.87103 20.5351C5.85721 20.4694 5.84684 20.4037 5.84338 20.338C5.83646 20.2724 5.83301 20.2067 5.83301 20.141V16.9193H7.49918C7.83449 16.9193 8.15943 16.7775 8.41523 16.5183C8.48782 16.4457 8.55004 16.3696 8.60535 16.2832C8.66066 16.2003 8.70906 16.1104 8.74708 16.017C8.78511 15.9237 8.81276 15.8269 8.8335 15.7267C8.85424 15.6264 8.86116 15.5262 8.86116 15.4259C8.84733 14.6516 8.21128 13.9983 7.46807 13.9983H5.83301V10.742C5.83301 10.6106 5.84683 10.4793 5.87103 10.3479C5.89869 10.2166 5.93671 10.0921 5.98856 9.97112C6.04042 9.85013 6.10264 9.7326 6.17869 9.62544C6.25474 9.51482 6.34116 9.41458 6.43449 9.3247C6.52782 9.23482 6.63153 9.15186 6.74214 9.07927C6.85276 9.00668 6.97029 8.94791 7.09128 8.89952C7.21227 8.85112 7.34017 8.8131 7.46807 8.7889C7.59597 8.7647 7.72733 8.75087 7.85869 8.75433H10.1644V8.22199C10.1644 8.18396 10.1644 8.14248 10.1678 8.10445C10.1713 8.06643 10.1713 8.02495 10.1782 7.98692C10.1816 7.9489 10.1886 7.90742 10.192 7.86939C10.1989 7.83137 10.2058 7.78989 10.2128 7.75186C10.2197 7.71384 10.23 7.67581 10.2404 7.63779L10.2715 7.52371C10.2819 7.48569 10.2957 7.44766 10.3096 7.40964C10.3234 7.37162 10.3372 7.33705 10.351 7.29902C10.3649 7.261 10.3821 7.22643 10.3994 7.19186C10.4167 7.15729 10.434 7.11927 10.4547 7.0847C10.472 7.05013 10.4928 7.01557 10.5135 6.981C10.5342 6.94643 10.555 6.91532 10.5792 6.88075C10.5999 6.84964 10.6241 6.81507 10.6483 6.78396L10.7209 6.69063C10.7451 6.65952 10.7728 6.63186 10.8004 6.60075C10.8281 6.5731 10.8557 6.54199 10.8834 6.51433C10.911 6.48668 10.9421 6.45902 10.9698 6.43483C11.0009 6.40717 11.0286 6.38297 11.0597 6.35878L11.153 6.28618C11.1841 6.26199 11.2187 6.24124 11.2498 6.2205C11.2809 6.19976 11.3155 6.17902 11.35 6.15828C11.3846 6.13754 11.4192 6.12026 11.4537 6.09952C11.4883 6.08223 11.5229 6.06495 11.5609 6.04766C11.5955 6.03038 11.6335 6.01655 11.6715 6.00273C11.7096 5.9889 11.7441 5.97507 11.7821 5.96124C11.8202 5.94742 11.8582 5.93705 11.8962 5.92668L12.0103 5.89557C12.0483 5.8852 12.0863 5.87828 12.1278 5.87137C12.1693 5.86445 12.2073 5.85754 12.2454 5.85408C12.2834 5.85063 12.3249 5.84371 12.3629 5.84026C12.4009 5.8368 12.4424 5.83334 12.4804 5.83334H12.5979C13.8908 5.85754 14.9451 6.93952 14.9451 8.2531V8.75087H17.2473C17.313 8.75087 17.3787 8.75433 17.4444 8.75779C17.51 8.7647 17.5757 8.77161 17.6379 8.78544C17.7036 8.79927 17.7658 8.8131 17.8281 8.83038C17.8903 8.84766 17.9525 8.87186 18.0147 8.89606C18.077 8.92026 18.1357 8.94791 18.1945 8.97902C18.2533 9.01013 18.3086 9.0447 18.3639 9.07927C18.4192 9.11384 18.471 9.15532 18.5229 9.1968C18.5747 9.23828 18.6231 9.28322 18.6681 9.32816C18.713 9.3731 18.7579 9.42495 18.7994 9.47334C18.8409 9.5252 18.8789 9.57705 18.917 9.63236C18.955 9.68766 18.9861 9.74297 19.0172 9.80174C19.0483 9.8605 19.076 9.91927 19.1002 9.98149C19.1244 10.0437 19.1451 10.1059 19.1658 10.1682C19.1831 10.2304 19.2004 10.2961 19.2108 10.3583C19.2246 10.424 19.2315 10.4862 19.2384 10.5519C19.2454 10.6175 19.2454 10.6832 19.2454 10.7489V13.0546H19.7431C21.0775 13.0546 22.1629 14.1124 22.1629 15.4121C22.1629 16.7464 21.0913 17.8319 19.7742 17.8319H19.2454V20.1375C19.2488 21.2541 18.35 22.1667 17.2473 22.1667Z" fill="white"/>
<svg viewBox="0 0 21 21" fill="none" xmlns="http://www.w3.org/2000/svg">
<rect width="20" height="20" transform="translate(0.5 0.5)" fill="url(#paint0_linear_5846_2942)"/>
<path d="M12.8196 16.3334H10.4986V15.1408C10.4986 15.0865 10.4937 15.0322 10.4838 14.9779C10.4739 14.9235 10.4566 14.8717 10.4344 14.8198C10.4122 14.768 10.3875 14.7211 10.3554 14.6766C10.3233 14.6322 10.2887 14.5902 10.2492 14.5507C10.0492 14.3532 9.75786 14.2421 9.45416 14.247C9.38749 14.247 9.32083 14.2544 9.25416 14.2667C9.18749 14.2791 9.12329 14.2964 9.0591 14.3211C8.9949 14.3458 8.93564 14.3729 8.87638 14.4075C8.81712 14.4421 8.7628 14.4816 8.71342 14.526C8.57761 14.647 8.41712 14.8519 8.41712 15.163V16.3334H6.11342C6.0665 16.3334 6.01959 16.3309 5.97268 16.326C5.92576 16.3211 5.87885 16.3137 5.83194 16.3063C5.78502 16.2964 5.74058 16.2865 5.69366 16.2717C5.64922 16.2569 5.60478 16.2421 5.56033 16.2248C5.51589 16.2075 5.47391 16.1853 5.43194 16.163C5.38996 16.1408 5.35045 16.1161 5.31095 16.089C5.27144 16.0618 5.23441 16.0346 5.19737 16.005C5.16033 15.9754 5.12576 15.9433 5.0912 15.9087C5.05663 15.8742 5.027 15.8396 4.9949 15.8026C4.96527 15.7655 4.93564 15.7285 4.91095 15.689C4.88379 15.6495 4.8591 15.61 4.83687 15.568C4.81465 15.526 4.7949 15.484 4.77515 15.4396C4.75786 15.3951 4.74058 15.3507 4.72823 15.3063C4.71342 15.2618 4.70354 15.2149 4.69366 15.168C4.68379 15.1211 4.67638 15.0742 4.67391 15.0272C4.66897 14.9803 4.6665 14.9334 4.6665 14.8865V12.5853H5.85663C6.09613 12.5853 6.32823 12.484 6.51095 12.2988C6.5628 12.247 6.60724 12.1927 6.64675 12.1309C6.68626 12.0717 6.72082 12.0075 6.74799 11.9408C6.77515 11.8742 6.7949 11.805 6.80971 11.7334C6.82453 11.6618 6.82947 11.5902 6.82947 11.5186C6.81959 10.9655 6.36527 10.4988 5.83441 10.4988H4.6665V8.17292C4.6665 8.07909 4.67638 7.98527 4.69366 7.89144C4.71342 7.79761 4.74058 7.70872 4.77762 7.6223C4.81465 7.53588 4.8591 7.45193 4.91342 7.37539C4.96774 7.29638 5.02947 7.22477 5.09613 7.16058C5.1628 7.09638 5.23687 7.03712 5.31589 6.98527C5.3949 6.93341 5.47885 6.89144 5.56527 6.85687C5.65169 6.8223 5.74305 6.79514 5.83441 6.77786C5.92576 6.76058 6.01959 6.7507 6.11342 6.75317H7.76033V6.37292C7.76033 6.34576 7.76033 6.31613 7.7628 6.28897C7.76527 6.26181 7.76527 6.23218 7.77021 6.20502C7.77268 6.17786 7.77761 6.14823 7.78008 6.12107C7.78502 6.09391 7.78996 6.06428 7.7949 6.03712C7.79984 6.00996 7.80724 5.9828 7.81465 5.95564L7.83687 5.87416C7.84428 5.84699 7.85416 5.81983 7.86403 5.79267C7.87391 5.76551 7.88379 5.74082 7.89366 5.71366C7.90354 5.6865 7.91589 5.66181 7.92823 5.63712C7.94058 5.61243 7.95292 5.58527 7.96774 5.56058C7.98008 5.53588 7.9949 5.51119 8.00971 5.4865C8.02453 5.46181 8.03934 5.43959 8.05663 5.4149C8.07144 5.39267 8.08873 5.36798 8.10601 5.34576L8.15786 5.27909C8.17515 5.25687 8.1949 5.23712 8.21465 5.2149C8.23441 5.19514 8.25416 5.17292 8.27391 5.15317C8.29366 5.13341 8.31589 5.11366 8.33564 5.09638C8.35786 5.07662 8.37761 5.05934 8.39984 5.04206L8.4665 4.9902C8.48873 4.97292 8.51342 4.95811 8.53564 4.94329C8.55786 4.92848 8.58255 4.91366 8.60724 4.89885C8.63194 4.88403 8.65663 4.87169 8.68132 4.85687C8.70601 4.84453 8.7307 4.83218 8.75786 4.81983C8.78255 4.80749 8.80971 4.79761 8.83687 4.78774C8.86403 4.77786 8.88873 4.76798 8.91589 4.75811C8.94305 4.74823 8.97021 4.74082 8.99737 4.73341L9.07885 4.71119C9.10601 4.70379 9.13317 4.69885 9.1628 4.69391C9.19243 4.68897 9.21959 4.68403 9.24675 4.68156C9.27391 4.67909 9.30354 4.67416 9.3307 4.67169C9.35786 4.66922 9.38749 4.66675 9.41465 4.66675H9.4986C10.4221 4.68403 11.1751 5.45687 11.1751 6.39514V6.7507H12.8196C12.8665 6.7507 12.9134 6.75317 12.9603 6.75564C13.0072 6.76058 13.0542 6.76551 13.0986 6.77539C13.1455 6.78527 13.19 6.79514 13.2344 6.80749C13.2788 6.81983 13.3233 6.83712 13.3677 6.8544C13.4122 6.87169 13.4542 6.89144 13.4961 6.91366C13.5381 6.93588 13.5776 6.96058 13.6171 6.98527C13.6566 7.00996 13.6937 7.03959 13.7307 7.06922C13.7677 7.09885 13.8023 7.13095 13.8344 7.16304C13.8665 7.19514 13.8986 7.23218 13.9282 7.26675C13.9579 7.30379 13.985 7.34082 14.0122 7.38033C14.0393 7.41983 14.0616 7.45934 14.0838 7.50132C14.106 7.54329 14.1258 7.58527 14.143 7.62971C14.1603 7.67416 14.1751 7.7186 14.19 7.76304C14.2023 7.80749 14.2147 7.8544 14.2221 7.89885C14.2319 7.94576 14.2369 7.9902 14.2418 8.03712C14.2468 8.08403 14.2468 8.13095 14.2468 8.17786V9.82477H14.6023C15.5554 9.82477 16.3307 10.5803 16.3307 11.5087C16.3307 12.4618 15.5653 13.2371 14.6245 13.2371H14.2468V14.884C14.2492 15.6816 13.6072 16.3334 12.8196 16.3334Z" fill="white"/>
<defs>
<linearGradient id="paint0_linear_6017_13715" x1="14" y1="0" x2="4.27778" y2="25.6667" gradientUnits="userSpaceOnUse">
<linearGradient id="paint0_linear_5846_2942" x1="10" y1="0" x2="3.05556" y2="18.3333" gradientUnits="userSpaceOnUse">
<stop stop-color="#61D2C4"/>
<stop offset="1" stop-color="#40CAA1"/>
</linearGradient>

Before

Width:  |  Height:  |  Size: 4.6 KiB

After

Width:  |  Height:  |  Size: 4.6 KiB

Some files were not shown because too many files have changed in this diff Show More