87f618d15c
* Add browser selection to auto-launch * Update readmes * Update readme * Display browser name in a console
397 lines
20 KiB
Markdown
397 lines
20 KiB
Markdown
> [!IMPORTANT]
|
||
> 这里的信息可能已经过时或不完整,仅供您参考。请使用英文版本获取最新信息。
|
||
|
||
<a name="readme-top"></a>
|
||
|
||
![][cover]
|
||
|
||
<div align="center">
|
||
|
||
[English](readme.md) | [German](readme-de_de.md) | 中文 | [繁體中文](readme-zh_tw.md) | [日本語](readme-ja_jp.md) | [Русский](readme-ru_ru.md) | [한국어](readme-ko_kr.md)
|
||
|
||
[](https://github.com/SillyTavern/SillyTavern/stargazers)
|
||
[](https://github.com/SillyTavern/SillyTavern/forks)
|
||
[](https://github.com/SillyTavern/SillyTavern/issues)
|
||
[](https://github.com/SillyTavern/SillyTavern/pulls)
|
||
|
||
</div>
|
||
|
||
---
|
||
|
||
SillyTavern 为众多 LLM API(KoboldAI/CPP、Horde、NovelAI、Ooba、Tabby、OpenAI、OpenRouter、Claude、Mistral 等)提供统一界面,拥有移动设备友好的布局、视觉小说模式、Automatic1111 & ComfyUI API 图像生成集成、TTS、世界书(lorebooks)、可自定义的 UI、自动翻译、超乎您想象的丰富 Prompt 选项,以及通过第三方扩展实现的无限增长潜力。
|
||
|
||
我们有一个[文档网站](https://docs.sillytavern.app/)来回答您的大部分问题并帮助您入门。
|
||
|
||
## SillyTavern 是什么?
|
||
|
||
SillyTavern(简称 ST)是一个本地安装的用户界面,允许您与文本生成 LLM、图像生成引擎和 TTS 语音模型进行交互。
|
||
|
||
SillyTavern 于 2023 年 2 月作为 TavernAI 1.2.8 的一个分支开始,如今已拥有超过 200 名贡献者和 2 年的独立开发经验,并继续作为资深 AI 爱好者领先的软件。
|
||
|
||
## 我们的愿景
|
||
|
||
1. 我们的目标是尽可能为用户提供 LLM Prompt 的最大效用和控制权。陡峭的学习曲线是乐趣的一部分!
|
||
2. 我们不提供任何在线或托管服务,也不会以编程方式跟踪任何用户数据。
|
||
3. SillyTavern 是一个由专注的 LLM 爱好者社区为您带来的充满激情的项目,并且将永远是免费和开源的。
|
||
|
||
## 分支
|
||
|
||
SillyTavern 采用双分支进行开发,以确保所有用户都能获得流畅的使用体验。
|
||
|
||
- `release` -🌟 **推荐给大多数用户。** 这是最稳定、最推荐的分支,只有在重大版本推送时才会更新。适合大多数用户使用。通常每月更新一次。
|
||
- `staging` - ⚠️ **不建议随意使用。** 该分支拥有最新功能,但要谨慎,因为它随时可能崩溃。仅适用于高级用户和爱好者。每天更新数次。
|
||
|
||
如果你不熟悉使用 git 命令行,或者不了解什么是分支,别担心!`release` 分支始终是您的首选。
|
||
|
||
## 除了 SillyTavern,我还需要什么?
|
||
|
||
由于 SillyTavern 只是一个界面,您需要接入一个 LLM 后端来进行推理。您可以使用 AI Horde 进行开箱即用的聊天。除此之外,我们还支持许多其他本地和基于云的 LLM 后端:OpenAI 兼容 API、KoboldAI、Tabby 等等。您可以在[文档](https://docs.sillytavern.app/usage/api-connections/)中阅读更多关于我们支持的 API 的信息。
|
||
|
||
### 我需要一台性能强大的电脑来运行 SillyTavern 吗?
|
||
|
||
硬件要求很低:任何可以运行 NodeJS 18 或更高版本的设备都可以运行它。如果您打算在本地计算机上进行 LLM 推理,我们建议使用至少具有 6GB VRAM 的 3000 系列 NVIDIA 显卡。有关更多详细信息,请查看您后端的文档。
|
||
|
||
### 建议的后端(非附属)
|
||
|
||
- [AI Horde](https://aihorde.net/) - 使用志愿者托管的模型。无需进一步设置。
|
||
- [KoboldCpp](https://github.com/LostRuins/koboldcpp) - 社区最喜欢的在本地运行 GGUF 模型的工具。
|
||
- [tabbyAPI](https://github.com/theroyallab/tabbyAPI) - 一款流行的、轻量级的、本地托管的 exl2 推理 API。
|
||
- [OpenRouter](https://openrouter.ai) - 一个适用于许多云提供商(OpenAI、Claude、Meta Llama 等)以及流行社区模型的单一 API。
|
||
|
||
## 有问题或建议?
|
||
|
||
### Discord 服务器
|
||
|
||
| [![][discord-shield-badge]][discord-link] | [加入我们的 Discord 社区!](https://discord.gg/sillytavern) 获取支持,分享喜爱的角色和 Prompt。 |
|
||
| :---------------------------------------- | :---------------------------------------------------------------------------------------------- |
|
||
|
||
或者直接与开发人员联系:
|
||
|
||
- Discord: cohee, rossascends, wolfsblvt
|
||
- Reddit: [/u/RossAscends](https://www.reddit.com/user/RossAscends/), [/u/sillylossy](https://www.reddit.com/user/sillylossy/), [u/Wolfsblvt](https://www.reddit.com/user/Wolfsblvt/)
|
||
- [提交 GitHub 问题](https://github.com/SillyTavern/SillyTavern/issues)
|
||
|
||
### 我喜欢你的项目!我该如何贡献自己的力量?
|
||
|
||
1. 发送 Pull Request。学习如何贡献:[CONTRIBUTING.md](../CONTRIBUTING.md)
|
||
2. 使用提供的模板发送功能建议和问题报告。
|
||
3. 请先阅读整个 readme 文件并查看文档网站,以避免提交重复的问题。
|
||
|
||
## 屏幕截图
|
||
|
||
<img width="500" alt="image" src="https://github.com/user-attachments/assets/9b5f32f0-c3b3-4102-b3f5-0e9213c0f50f">
|
||
<img width="500" alt="image" src="https://github.com/user-attachments/assets/913fdbaa-7d33-42f1-ae2c-89dca41c53d1">
|
||
|
||
## 角色卡
|
||
|
||
SillyTavern 围绕“角色卡”的概念构建。角色卡是设定 LLM 行为的 Prompt 集合,是在 SillyTavern 中进行持久对话所必需的。它们的功能类似于 ChatGPT 的 GPTs 或 Poe 的 bots。角色卡的内容可以是任何东西:一个抽象的场景、一个为特定任务量身定制的助手、一个著名人物或一个虚构角色。
|
||
|
||
要在不选择角色卡的情况下进行快速对话或仅测试 LLM 连接,只需在打开 SillyTavern 后在欢迎屏幕的输入栏中键入您的 Prompt 输入。这将创建一个空的“助手”角色卡,您可以稍后自定义。
|
||
|
||
要大致了解如何定义角色卡,请参阅默认角色(Seraphina)或从“下载扩展和资源”菜单中下载选定的社区制作卡片。
|
||
|
||
## 主要功能
|
||
|
||
- 高级文本生成设置,包含许多社区制作的预设
|
||
- 世界书支持:创建丰富的传说或节省角色卡上的 Token
|
||
- 群聊:多机器人房间,供角色与您或彼此交谈
|
||
- 丰富的 UI 自定义选项:主题颜色、背景图片、自定义 CSS 等
|
||
- 用户角色:让 AI 了解一些关于您的信息,以获得更强的沉浸感
|
||
- 内置 RAG 支持:将文档添加到您的聊天中供 AI 参考
|
||
- 广泛的聊天命令子系统和自己的[脚本引擎](https://docs.sillytavern.app/usage/st-script/)
|
||
|
||
## 扩展
|
||
|
||
SillyTavern 支持扩展。
|
||
|
||
- 角色情绪表达
|
||
- 聊天记录自动摘要
|
||
- 自动 UI 和聊天翻译
|
||
- Stable Diffusion/FLUX/DALL-E 图像生成
|
||
- AI 回复消息的文本转语音(通过 ElevenLabs、Silero 或操作系统的 TTS)
|
||
- 网络搜索功能,为您的 Prompt 添加额外的现实世界背景信息
|
||
- 更多扩展可从“下载扩展和资源”菜单中下载。
|
||
|
||
有关如何使用它们的使用教程,请参阅[文档](https://docs.sillytavern.app/)。
|
||
|
||
## ⌛ 安装
|
||
|
||
### 🪟 Windows
|
||
|
||
> \[!WARNING]
|
||
>
|
||
> - 请勿安装到任何受 Windows 控制的文件夹(Program Files、System32 等)中。
|
||
> - 请勿以管理员权限运行 Start.bat
|
||
> - 无法在 Windows 7 上安装,因为它无法运行 NodeJS 18.16
|
||
|
||
#### 通过 Git 安装(推荐)
|
||
|
||
1. 安装 [NodeJS](https://nodejs.org/en)(建议使用最新的 LTS 版本)
|
||
2. 安装 [Git for Windows](https://gitforwindows.org/)
|
||
3. 打开 Windows 资源管理器 (`Win+E`)
|
||
4. 浏览或创建一个不受 Windows 控制或监控的文件夹(例如:C:\MySpecialFolder\)
|
||
5. 通过点击顶部的“地址栏”,输入 `cmd`,然后按 Enter,在该文件夹内打开命令提示符。
|
||
6. 弹出黑框(命令提示符)后,键入以下其中一项并按 Enter:
|
||
|
||
- Release 分支:`git clone https://github.com/SillyTavern/SillyTavern -b release`
|
||
- Staging 分支: `git clone https://github.com/SillyTavern/SillyTavern -b staging`
|
||
|
||
7. 等待所有内容克隆完成后,双击 `Start.bat` 以使 NodeJS 安装其依赖项。
|
||
8. 然后服务器将启动,SillyTavern 将在您的浏览器中弹出。
|
||
|
||
#### 通过 GitHub Desktop 安装
|
||
|
||
(这**仅**允许在 GitHub Desktop 中使用 git,如果您也想在命令行上使用 `git`,则还需要安装 [Git for Windows](https://gitforwindows.org/))
|
||
|
||
1. 安装 [NodeJS](https://nodejs.org/en)(建议使用最新的 LTS 版本)
|
||
2. 安装 [GitHub Desktop](https://central.github.com/deployments/desktop/desktop/latest/win32)
|
||
3. 安装 GitHub Desktop 后,点击 `Clone a repository from the internet....`(注意:此步骤**无需**创建 GitHub 帐户)
|
||
4. 在菜单中,点击 URL 选项卡,输入此 URL `https://github.com/SillyTavern/SillyTavern`,然后点击 Clone。您可以更改本地路径以更改 SillyTavern 的下载位置。
|
||
5. 要打开 SillyTavern,请使用 Windows 资源管理器浏览到克隆存储库的文件夹。默认情况下,存储库将克隆到此处:`C:\Users\[您的 Windows 用户名]\Documents\GitHub\SillyTavern`
|
||
6. 双击 `start.bat` 文件。(注意:文件名的 `.bat` 部分可能被您的操作系统隐藏,在这种情况下,它将显示为一个名为“`Start`”的文件。双击此文件以运行 SillyTavern)
|
||
7. 双击后,应打开一个大的黑色命令控制台窗口,SillyTavern 将开始安装其运行所需的组件。
|
||
8. 安装过程完成后,如果一切正常,命令控制台窗口应如下所示,并且您的浏览器中应打开一个 SillyTavern 选项卡:
|
||
9. 连接到任何[支持的 API](https://docs.sillytavern.app/usage/api-connections/) 并开始聊天!
|
||
|
||
### 🐧 Linux & 🍎 MacOS
|
||
|
||
对于 MacOS / Linux,所有这些都将在终端中完成。
|
||
|
||
1. 安装 git 和 nodeJS(具体方法取决于您的操作系统)
|
||
2. 克隆仓库
|
||
|
||
- Release 分支:`git clone https://github.com/SillyTavern/SillyTavern -b release`
|
||
- Staging 分支: `git clone https://github.com/SillyTavern/SillyTavern -b staging`
|
||
|
||
3. `cd SillyTavern` 导航到安装文件夹。
|
||
4. 使用以下命令之一运行 `start.sh` 脚本:
|
||
|
||
- `./start.sh`
|
||
- `bash start.sh`
|
||
|
||
## 🐋 通过 Docker 安装
|
||
|
||
这些说明假定您已安装 Docker,能够访问命令行以安装容器,并熟悉其常规操作。
|
||
|
||
### 使用 GitHub Container Registry
|
||
|
||
#### Docker Compose (最简单)
|
||
|
||
从 [GitHub 仓库](https://github.com/SillyTavern/SillyTavern/blob/release/docker/docker-compose.yml) 获取 `docker-compose.yml` 文件,并在文件所在目录中运行以下命令。这将从 GitHub Container Registry 中拉取最新的 release 镜像并启动容器,自动创建必要的卷。
|
||
|
||
```shell
|
||
docker-compose up
|
||
```
|
||
|
||
根据您的需求自定义 `docker-compose.yml` 文件。默认端口为 8000。如果您想使用环境变量调整服务器配置,请在此处阅读文档:[链接](https://docs.sillytavern.app/administration/config-yaml/#environment-variables)。
|
||
|
||
#### Docker CLI (高级)
|
||
|
||
您将需要两个强制性的目录映射和一个端口映射才能使 SillyTavern 正常运行。在命令中,替换以下位置中的选项:
|
||
|
||
#### 容器变量
|
||
|
||
##### 卷映射
|
||
|
||
- `CONFIG_PATH` - SillyTavern 配置文件将存储在主机上的目录
|
||
- `DATA_PATH` - SillyTavern 用户数据(包括角色)将存储在主机上的目录
|
||
- `PLUGINS_PATH` - (可选) SillyTavern 服务器插件将存储在主机上的目录
|
||
- `EXTENSIONS_PATH` - (可选) 全局 UI 扩展将存储在主机上的目录
|
||
|
||
##### 端口映射
|
||
|
||
- `PUBLIC_PORT` - 暴露流量的端口。这是强制性的,因为您将从其虚拟机容器外部访问实例。**在未实现单独的安全服务的情况下,请勿将其暴露给互联网。**
|
||
|
||
##### 附加设置
|
||
|
||
- `SILLYTAVERN_VERSION` - 在此 GitHub 页面的右侧,您会看到“Packages”。选择“sillytavern”包,您将看到镜像版本。镜像标签“latest”将使您与当前 release 保持同步。您还可以使用指向相应分支的每日镜像的“staging”标签。
|
||
|
||
#### 运行容器
|
||
|
||
1. 打开您的命令行
|
||
2. 在您要存储配置和数据文件的文件夹中运行以下命令:
|
||
|
||
```bash
|
||
SILLYTAVERN_VERSION="latest"
|
||
PUBLIC_PORT="8000"
|
||
CONFIG_PATH="./config"
|
||
DATA_PATH="./data"
|
||
PLUGINS_PATH="./plugins"
|
||
EXTENSIONS_PATH="./extensions"
|
||
|
||
docker run \
|
||
--name="sillytavern" \
|
||
-p "$PUBLIC_PORT:8000/tcp" \
|
||
-v "$CONFIG_PATH:/home/node/app/config:rw" \
|
||
-v "$DATA_PATH:/home/node/app/data:rw" \
|
||
-v "$EXTENSIONS_PATH:/home/node/app/public/scripts/extensions/third-party:rw" \
|
||
-v "$PLUGINS_PATH:/home/node/app/plugins:rw" \
|
||
ghcr.io/sillytavern/sillytavern:"$SILLYTAVERN_VERSION"
|
||
```
|
||
|
||
> 默认情况下,容器将在前台运行。如果要在后台运行它,请将 `-d` 标志添加到 `docker run` 命令中。
|
||
|
||
### 自己构建镜像
|
||
|
||
我们有一个关于在 Docker 中使用 SillyTavern 的综合指南[在此处](http://docs.sillytavern.app/installation/docker/),涵盖了 Windows、macOS 和 Linux 上的安装!如果您希望自己构建镜像,请阅读它。
|
||
|
||
## ⚡ 通过 SillyTavern Launcher 安装
|
||
|
||
SillyTavern Launcher 是一个安装向导,可帮助您进行多种选项的设置,包括为本地推理安装后端。
|
||
|
||
### 对于 Windows 用户
|
||
|
||
1. 在键盘上:按 **`WINDOWS + R`** 打开“运行”对话框。然后,运行以下命令安装 git:
|
||
|
||
```shell
|
||
cmd /c winget install -e --id Git.Git
|
||
```
|
||
|
||
2. 在键盘上:按 **`WINDOWS + E`** 打开文件资源管理器,然后导航到要安装启动器的文件夹。进入所需文件夹后,在地址栏中键入 `cmd` 并按 Enter。然后,运行以下命令:
|
||
|
||
```shell
|
||
git clone https://github.com/SillyTavern/SillyTavern-Launcher.git && cd SillyTavern-Launcher && start installer.bat
|
||
```
|
||
|
||
### 对于 Linux 用户
|
||
|
||
1. 打开您喜欢的终端并安装 git
|
||
2. 使用以下命令克隆 SillyTavern-Launcher:
|
||
|
||
```shell
|
||
git clone https://github.com/SillyTavern/SillyTavern-Launcher.git && cd SillyTavern-Launcher
|
||
```
|
||
|
||
3. 使用以下命令启动 installer.sh:
|
||
|
||
```shell
|
||
chmod +x install.sh && ./install.sh
|
||
```
|
||
|
||
4. 安装后使用以下命令启动 launcher.sh:
|
||
|
||
```shell
|
||
chmod +x launcher.sh && ./launcher.sh
|
||
```
|
||
|
||
### 对于 Mac 用户
|
||
|
||
1. 打开终端并使用以下命令安装 brew:
|
||
|
||
```shell
|
||
/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"
|
||
```
|
||
|
||
2. 使用以下命令安装 git:
|
||
|
||
```shell
|
||
brew install git
|
||
```
|
||
|
||
3. 使用以下命令克隆 SillyTavern-Launcher:
|
||
|
||
```shell
|
||
git clone https://github.com/SillyTavern/SillyTavern-Launcher.git && cd SillyTavern-Launcher
|
||
```
|
||
|
||
4. 使用以下命令启动 installer.sh:
|
||
|
||
```shell
|
||
chmod +x install.sh && ./install.sh
|
||
```
|
||
|
||
5. 安装后使用以下命令启动 launcher.sh:
|
||
|
||
```shell
|
||
chmod +x launcher.sh && ./launcher.sh
|
||
```
|
||
|
||
## 📱 通过 Termux 在 Android OS 上安装
|
||
|
||
> \[!NOTE]
|
||
> **SillyTavern 可以在 Android 设备上使用 Termux 原生运行,但我们不为此用例提供官方支持。**
|
||
>
|
||
> **请参阅 ArroganceComplex#2659 编写的本指南:**
|
||
>
|
||
> - <https://rentry.org/STAI-Termux>
|
||
|
||
**不支持的平台:android arm LEtime-web。** 32 位 Android 需要一个无法通过 npm 安装的外部依赖项。使用以下命令安装它:`pkg install esbuild`。然后运行常规安装步骤。
|
||
|
||
## 命令行参数
|
||
|
||
您可以将命令行参数传递给 SillyTavern 服务器启动脚本,以覆盖 `config.yaml` 中的某些设置。
|
||
|
||
### 示例
|
||
|
||
```shell
|
||
node server.js --port 8000 --listen false
|
||
# 或
|
||
npm run start -- --port 8000 --listen false
|
||
# 或 (仅限 Windows)
|
||
Start.bat --port 8000 --listen false
|
||
```
|
||
|
||
### 支持的参数
|
||
|
||
> \[!TIP]
|
||
> 所有参数都不是必需的。如果您不提供它们,SillyTavern 将使用 `config.yaml` 中的设置。
|
||
|
||
| 选项 | 描述 | 类型 |
|
||
| -------------------------------- | ---------------------------------------------- | ------- |
|
||
| `--version` | 显示版本号 | boolean |
|
||
| `--configPath` | 覆盖 config.yaml 文件的路径 | string |
|
||
| `--dataRoot` | 数据存储的根目录 | string |
|
||
| `--port` | 设置 SillyTavern 将在其下运行的端口 | number |
|
||
| `--listen` | SillyTavern 将侦听所有网络接口 | boolean |
|
||
| `--whitelist` | 启用白名单模式 | boolean |
|
||
| `--basicAuthMode` | 启用基本身份验证 | boolean |
|
||
| `--enableIPv4` | 启用 IPv4 协议 | boolean |
|
||
| `--enableIPv6` | 启用 IPv6 协议 | boolean |
|
||
| `--listenAddressIPv4` | 要侦听的特定 IPv4 地址 | string |
|
||
| `--listenAddressIPv6` | 要侦听的特定 IPv6 地址 | string |
|
||
| `--dnsPreferIPv6` | DNS 首选 IPv6 | boolean |
|
||
| `--ssl` | 启用 SSL | boolean |
|
||
| `--certPath` | 您的证书文件路径 | string |
|
||
| `--keyPath` | 您的私钥文件路径 | string |
|
||
| `--browserLaunchEnabled` | 自动在浏览器中启动 SillyTavern | boolean |
|
||
| `--browserLaunchHostname` | 自动运行主机名 | string |
|
||
| `--browserLaunchPort` | 覆盖自动运行的端口 | string |
|
||
| `--browserLaunchAvoidLocalhost` | 在自动模式下避免使用 'localhost' 进行自动运行 | boolean |
|
||
| `--corsProxy` | 启用 CORS 代理 | boolean |
|
||
| `--requestProxyEnabled` | 为传出请求启用代理 | boolean |
|
||
| `--requestProxyUrl` | 请求代理 URL(HTTP 或 SOCKS 协议) | string |
|
||
| `--requestProxyBypass` | 请求代理绕过列表(以空格分隔的主机列表) | array |
|
||
| `--disableCsrf` | 禁用 CSRF 保护(不推荐) | boolean |
|
||
|
||
## 远程连接
|
||
|
||
这通常适用于那些想在手机上使用 SillyTavern,而他们的电脑在同一 Wi-Fi 网络上运行 ST 服务器的人。但是,它也可以用于允许从任何地方进行远程连接。
|
||
|
||
请在[文档](https://docs.sillytavern.app/usage/remoteconnections/)中阅读有关如何设置远程连接的详细指南。
|
||
|
||
您可能还需要配置 SillyTavern 用户配置文件(可选密码保护):[用户](https://docs.sillytavern.app/administration/multi-user/)。
|
||
|
||
## 许可证和致谢
|
||
|
||
**本程序的分发是希望它能有用,但不提供任何保证;甚至没有对适销性或特定用途适用性的默示保证。有关更多详细信息,请参阅 GNU Affero 通用公共许可证。**
|
||
|
||
- [TavernAI](https://github.com/TavernAI/TavernAI) 1.2.8 by Humi: MIT 许可证
|
||
- CncAnon 的 TavernAITurbo mod 的部分内容经许可使用
|
||
- 视觉小说模式的灵感来自 PepperTaco 的工作 (<https://github.com/peppertaco/Tavern/>)
|
||
- Noto Sans 字体 by Google (OFL 许可证)
|
||
- 图标主题 by Font Awesome <https://fontawesome.com> (图标: CC BY 4.0, 字体: SIL OFL 1.1, 代码: MIT 许可证)
|
||
- 默认内容由 @OtisAlejandro (Seraphina 角色和世界书) 和 @kallmeflocc (10K Discord 用户庆祝背景) 提供
|
||
- Docker 指南由 [@mrguymiah](https://github.com/mrguymiah) 和 [@Bronya-Rand](https://github.com/Bronya-Rand) 提供
|
||
- kokoro-js 库由 [@hexgrad](https://github.com/hexgrad) 提供 (Apache-2.0 许可证)
|
||
- 中文翻译由 [@XXpE3](https://github.com/XXpE3) 完成,中文 ISSUES 可以联系 @XXpE3
|
||
|
||
## 主要贡献者
|
||
|
||
[](https://github.com/SillyTavern/SillyTavern/graphs/contributors)
|
||
|
||
<!-- LINK GROUP -->
|
||
|
||
[cover]: https://github.com/user-attachments/assets/01a6ae9a-16aa-45f2-8bff-32b5dc587e44
|
||
[discord-link]: https://discord.gg/sillytavern
|
||
[discord-shield-badge]: https://img.shields.io/discord/1100685673633153084?color=5865F2&label=discord&labelColor=black&logo=discord&logoColor=white&style=for-the-badge
|