Merge pull request #2897 from SillyTavern/staging Staging
Signed| @@ -1,6 +1,20 @@ | |||
| 1 | > [!IMPORTANT] | ||
| 2 | > ここに掲載されている情報は、古かったり不完全であったりする可能性があります。最新の情報は英語版をご利用ください。 | ||
| 3 | |||
| 4 | ![][cover] | ||
| 5 | |||
| 6 | <div align="center"> | ||
| 7 | |||
| 1 | [English](readme.md) | [中文](readme-zh_cn.md) | 日本語 | [Русский](readme-ru_ru.md) | 8 | [English](readme.md) | [中文](readme-zh_cn.md) | 日本語 | [Русский](readme-ru_ru.md) |
| 2 | 9 | ||
| 3 |  | 10 | [](https://github.com/SillyTavern/SillyTavern/stargazers) |
| 11 | [](https://github.com/SillyTavern/SillyTavern/network) | ||
| 12 | [](https://github.com/SillyTavern/SillyTavern/issues) | ||
| 13 | [](https://github.com/SillyTavern/SillyTavern/pulls) | ||
| 14 | |||
| 15 | </div> | ||
| 16 | |||
| 17 | --- | ||
| 4 | 18 | ||
| 5 | モバイルデバイスにも適したレイアウト・マルチAPI(KoboldAI/CPP、Horde、NovelAI、Ooba、OpenAI、OpenRouter、Claude、Scale)、VN ライクな Waifu モード、Stable Diffusion、TTS、WorldInfo(伝承本)、カスタマイズ可能なUI、自動翻訳、大量のプロンプトオプション+サードパーティの拡張機能をインストールする機能 | 19 | モバイルデバイスにも適したレイアウト・マルチAPI(KoboldAI/CPP、Horde、NovelAI、Ooba、OpenAI、OpenRouter、Claude、Scale)、VN ライクな Waifu モード、Stable Diffusion、TTS、WorldInfo(伝承本)、カスタマイズ可能なUI、自動翻訳、大量のプロンプトオプション+サードパーティの拡張機能をインストールする機能 |
| 6 | 20 | ||
| @@ -76,9 +90,8 @@ Tavern は単なるフロントエンドのUIであり、必要なハードウ | |||
| 76 | 90 | ||
| 77 | ## 拡張機能 | 91 | ## 拡張機能 |
| 78 | 92 | ||
| 79 | SillyTavern は拡張できるようになっており、[SillyTavern Extras API](https://github.com/SillyTavern/SillyTavern-extras) でいくつかの追加AIモジュールをホストしています | 93 | SillyTavern は拡張できるようになっており。 |
| 80 | 94 | ||
| 81 | * 作者ノート/キャラクターバイアス | ||
| 82 | * キャラクターの感情表現(スプライト) | 95 | * キャラクターの感情表現(スプライト) |
| 83 | * チャット履歴の自動サマリー | 96 | * チャット履歴の自動サマリー |
| 84 | * チャットに画像を送り、AI が内容を解釈する | 97 | * チャットに画像を送り、AI が内容を解釈する |
| @@ -282,8 +295,8 @@ ST サーバを再起動すると、ユーザ名とパスワードさえ知っ | |||
| 282 | 295 | ||
| 283 | ## スクリーンショット | 296 | ## スクリーンショット |
| 284 | 297 | ||
| 285 | <img width="400" alt="image" src="https://user-images.githubusercontent.com/18619528/228649245-8061c60f-63dc-488e-9325-f151b7a3ec2d.png"> | 298 | <img width="500" alt="image" src="https://github.com/user-attachments/assets/9b5f32f0-c3b3-4102-b3f5-0e9213c0f50f"> |
| 286 | <img width="400" alt="image" src="https://user-images.githubusercontent.com/18619528/228649856-fbdeef05-d727-4d5a-be80-266cbbc6b811.png"> | 299 | <img width="500" alt="image" src="https://github.com/user-attachments/assets/913fdbaa-7d33-42f1-ae2c-89dca41c53d1"> |
| 287 | 300 | ||
| 288 | ## ライセンスとクレジット | 301 | ## ライセンスとクレジット |
| 289 | 302 | ||
| @@ -312,3 +325,6 @@ ST サーバを再起動すると、ユーザ名とパスワードさえ知っ | |||
| 312 | * @doloroushyeonse による韓国語翻訳 | 325 | * @doloroushyeonse による韓国語翻訳 |
| 313 | * k_euler_a による Horde のサポート <https://github.com/Teashrock> | 326 | * k_euler_a による Horde のサポート <https://github.com/Teashrock> |
| 314 | * [@XXpE3](https://github.com/XXpE3) による中国語翻訳、中国語 ISSUES の連絡先は @XXpE3 | 327 | * [@XXpE3](https://github.com/XXpE3) による中国語翻訳、中国語 ISSUES の連絡先は @XXpE3 |
| 328 | |||
| 329 | <!-- LINK GROUP --> | ||
| 330 | [cover]: https://github.com/user-attachments/assets/01a6ae9a-16aa-45f2-8bff-32b5dc587e44 | ||
| @@ -1,8 +1,22 @@ | |||
| 1 | > [!IMPORTANT] | ||
| 2 | > Приведенная здесь информация может быть устаревшей или неполной и предоставляется только для вашего удобства. Пожалуйста, используйте английскую версию для получения наиболее актуальной информации. | ||
| 3 | |||
| 1 | <a name="readme-top"></a> | 4 | <a name="readme-top"></a> |
| 2 | 5 | ||
| 6 | ![][cover] | ||
| 7 | |||
| 8 | <div align="center"> | ||
| 9 | |||
| 3 | [English](readme.md) | [中文](readme-zh_cn.md) | [日本語](readme-ja_jp.md) | Русский | 10 | [English](readme.md) | [中文](readme-zh_cn.md) | [日本語](readme-ja_jp.md) | Русский |
| 4 | 11 | ||
| 5 | ![][cover] | 12 | [](https://github.com/SillyTavern/SillyTavern/stargazers) |
| 13 | [](https://github.com/SillyTavern/SillyTavern/network) | ||
| 14 | [](https://github.com/SillyTavern/SillyTavern/issues) | ||
| 15 | [](https://github.com/SillyTavern/SillyTavern/pulls) | ||
| 16 | |||
| 17 | </div> | ||
| 18 | |||
| 19 | --- | ||
| 6 | 20 | ||
| 7 | Мобайл-френдли интерфейс, поддержка множества API (KoboldAI/CPP, Horde, NovelAI, Ooba, OpenAI, OpenRouter, Claude, Scale), ВН-образный режим Вайфу, Stable Diffusion, TTS, поддержка миров (лорбуков), кастомизируемый UI, автоперевод, тончайшая настройка промптов + возможность устанавливать расширения. | 21 | Мобайл-френдли интерфейс, поддержка множества API (KoboldAI/CPP, Horde, NovelAI, Ooba, OpenAI, OpenRouter, Claude, Scale), ВН-образный режим Вайфу, Stable Diffusion, TTS, поддержка миров (лорбуков), кастомизируемый UI, автоперевод, тончайшая настройка промптов + возможность устанавливать расширения. |
| 8 | 22 | ||
| @@ -26,8 +40,8 @@ SillyTavern — это форк версии TavernAI 1.2.8, который ра | |||
| 26 | 40 | ||
| 27 | ## Скриншоты | 41 | ## Скриншоты |
| 28 | 42 | ||
| 29 | <img width="400" alt="image" src="https://github.com/SillyTavern/SillyTavern/assets/61471128/e902c7a2-45a6-4415-97aa-c59c597669c1"> | 43 | <img width="500" alt="image" src="https://github.com/user-attachments/assets/9b5f32f0-c3b3-4102-b3f5-0e9213c0f50f"> |
| 30 | <img width="400" alt="image" src="https://github.com/SillyTavern/SillyTavern/assets/61471128/f8a79c47-4fe9-4564-9e4a-bf247ed1c961"> | 44 | <img width="500" alt="image" src="https://github.com/user-attachments/assets/913fdbaa-7d33-42f1-ae2c-89dca41c53d1"> |
| 31 | 45 | ||
| 32 | ### Ветки | 46 | ### Ветки |
| 33 | 47 | ||
| @@ -51,7 +65,7 @@ SillyTavern — это просто интерфейс, поэтому запу | |||
| 51 | ### У нас появился сервер в Discord | 65 | ### У нас появился сервер в Discord |
| 52 | 66 | ||
| 53 | | [![][discord-shield-badge]][discord-link] | [Вступайте в наше Discord-сообщество!](https://discord.gg/sillytavern) Задавайте вопросы, делитесь любимыми персонажами и промптами. | | 67 | | [![][discord-shield-badge]][discord-link] | [Вступайте в наше Discord-сообщество!](https://discord.gg/sillytavern) Задавайте вопросы, делитесь любимыми персонажами и промптами. | |
| 54 | | :---------------------------------------- | :----------------------------------------------------------------------------------------------------------------- | | 68 | | :---------------------------------------- | :----------------------------------------------------------------------------------------------------------------------------------- | |
| 55 | 69 | ||
| 56 | Также можно написать разработчикам напрямую: | 70 | Также можно написать разработчикам напрямую: |
| 57 | 71 | ||
| @@ -74,9 +88,8 @@ SillyTavern — это просто интерфейс, поэтому запу | |||
| 74 | 88 | ||
| 75 | ## Расширения | 89 | ## Расширения |
| 76 | 90 | ||
| 77 | SillyTavern поддерживает расширения, при этом некоторые из ИИ-модулей работают через [SillyTavern Extras API](https://github.com/SillyTavern/SillyTavern-extras) | 91 | SillyTavern поддерживает расширения. |
| 78 | 92 | ||
| 79 | * Заметки автора / Смещение характера | ||
| 80 | * Эмоции для персонажей (спрайты) | 93 | * Эмоции для персонажей (спрайты) |
| 81 | * Автоматический саммарайз (краткий пересказ) истории чата | 94 | * Автоматический саммарайз (краткий пересказ) истории чата |
| 82 | * Возможность отправить в чат картинку, которую ИИ сможет рассмотреть и понять | 95 | * Возможность отправить в чат картинку, которую ИИ сможет рассмотреть и понять |
| @@ -353,7 +366,7 @@ SillyTavern сохраняет ключи от ваших API в файле `sec | |||
| 353 | 366 | ||
| 354 | <!-- LINK GROUP --> | 367 | <!-- LINK GROUP --> |
| 355 | [back-to-top]: https://img.shields.io/badge/-BACK_TO_TOP-151515?style=flat-square | 368 | [back-to-top]: https://img.shields.io/badge/-BACK_TO_TOP-151515?style=flat-square |
| 356 | [cover]: https://github.com/SillyTavern/SillyTavern/assets/18619528/c2be4c3f-aada-4f64-87a3-ae35a68b61a4 | 369 | [cover]: https://github.com/user-attachments/assets/01a6ae9a-16aa-45f2-8bff-32b5dc587e44 |
| 357 | [discord-link]: https://discord.gg/sillytavern | 370 | [discord-link]: https://discord.gg/sillytavern |
| 358 | [discord-shield]: https://img.shields.io/discord/1100685673633153084?color=5865F2&label=discord&labelColor=black&logo=discord&logoColor=white&style=flat-square | 371 | [discord-shield]: https://img.shields.io/discord/1100685673633153084?color=5865F2&label=discord&labelColor=black&logo=discord&logoColor=white&style=flat-square |
| 359 | [discord-shield-badge]: https://img.shields.io/discord/1100685673633153084?color=5865F2&label=discord&labelColor=black&logo=discord&logoColor=white&style=for-the-badge | 372 | [discord-shield-badge]: https://img.shields.io/discord/1100685673633153084?color=5865F2&label=discord&labelColor=black&logo=discord&logoColor=white&style=for-the-badge |
| @@ -1,6 +1,20 @@ | |||
| 1 | > [!IMPORTANT] | ||
| 2 | > 这里的信息可能已经过时或不完整,仅供您参考。请使用英文版本获取最新信息。 | ||
| 3 | |||
| 4 | ![][cover] | ||
| 5 | |||
| 6 | <div align="center"> | ||
| 7 | |||
| 1 | [English](readme.md) | 中文 | [日本語](readme-ja_jp.md) | [Русский](readme-ru_ru.md) | 8 | [English](readme.md) | 中文 | [日本語](readme-ja_jp.md) | [Русский](readme-ru_ru.md) |
| 2 | 9 | ||
| 3 |  | 10 | [](https://github.com/SillyTavern/SillyTavern/stargazers) |
| 11 | [](https://github.com/SillyTavern/SillyTavern/network) | ||
| 12 | [](https://github.com/SillyTavern/SillyTavern/issues) | ||
| 13 | [](https://github.com/SillyTavern/SillyTavern/pulls) | ||
| 14 | |||
| 15 | </div> | ||
| 16 | |||
| 17 | --- | ||
| 4 | 18 | ||
| 5 | 移动设备界面友好,多种人工智能服务或模型支持(KoboldAI/CPP, Horde, NovelAI, Ooba, OpenAI, OpenRouter, Claude, Scale),类似 Galgame 的 老 婆 模 式,Horde SD,文本系统语音生成,世界信息(Lorebooks),可定制的界面,自动翻译,和比你所需要的更多的 Prompt。附带扩展服务,支持文本绘画生成与语音生成和基于向量数据库 的聊天信息总结。 | 19 | 移动设备界面友好,多种人工智能服务或模型支持(KoboldAI/CPP, Horde, NovelAI, Ooba, OpenAI, OpenRouter, Claude, Scale),类似 Galgame 的 老 婆 模 式,Horde SD,文本系统语音生成,世界信息(Lorebooks),可定制的界面,自动翻译,和比你所需要的更多的 Prompt。附带扩展服务,支持文本绘画生成与语音生成和基于向量数据库 的聊天信息总结。 |
| 6 | 20 | ||
| @@ -73,9 +87,8 @@ SillyTavern 本身并无用处,因为它只是一个用户聊天界面。你 | |||
| 73 | 87 | ||
| 74 | ## 扩展 | 88 | ## 扩展 |
| 75 | 89 | ||
| 76 | SillyTavern 支持扩展服务,一些额外的人工智能模块可通过 [SillyTavern Extras API](https://github.com/SillyTavern/SillyTavern-extras) 提供。 | 90 | SillyTavern 支持扩展服务。 |
| 77 | 91 | ||
| 78 | * 作者注释/角色偏见 | ||
| 79 | * 角色情绪识别 | 92 | * 角色情绪识别 |
| 80 | * 聊天记录自动摘要 | 93 | * 聊天记录自动摘要 |
| 81 | * 在聊天窗口发送图片,并由人工智能解释图片内容 | 94 | * 在聊天窗口发送图片,并由人工智能解释图片内容 |
| @@ -276,8 +289,8 @@ SillyTavern 会将 API 密钥保存在目录中的 `secrets.json` 文件内。 | |||
| 276 | 289 | ||
| 277 | ## 屏幕截图 | 290 | ## 屏幕截图 |
| 278 | 291 | ||
| 279 | <img width="400" alt="image" src="https://user-images.githubusercontent.com/18619528/228649245-8061c60f-63dc-488e-9325-f151b7a3ec2d.png"> | 292 | <img width="500" alt="image" src="https://github.com/user-attachments/assets/9b5f32f0-c3b3-4102-b3f5-0e9213c0f50f"> |
| 280 | <img width="400" alt="image" src="https://user-images.githubusercontent.com/18619528/228649856-fbdeef05-d727-4d5a-be80-266cbbc6b811.png"> | 293 | <img width="500" alt="image" src="https://github.com/user-attachments/assets/913fdbaa-7d33-42f1-ae2c-89dca41c53d1"> |
| 281 | 294 | ||
| 282 | ## 许可证和贡献 | 295 | ## 许可证和贡献 |
| 283 | 296 | ||
| @@ -304,3 +317,6 @@ SillyTavern 会将 API 密钥保存在目录中的 `secrets.json` 文件内。 | |||
| 304 | * Default content (characters and lore books) provided by @OtisAlejandro, @RossAscends and @kallmeflocc | 317 | * Default content (characters and lore books) provided by @OtisAlejandro, @RossAscends and @kallmeflocc |
| 305 | * Korean translation by @doloroushyeonse | 318 | * Korean translation by @doloroushyeonse |
| 306 | * 中文翻译由 [@XXpE3](https://github.com/XXpE3) 完成,中文 ISSUES 可以联系 @XXpE3 | 319 | * 中文翻译由 [@XXpE3](https://github.com/XXpE3) 完成,中文 ISSUES 可以联系 @XXpE3 |
| 320 | |||
| 321 | <!-- LINK GROUP --> | ||
| 322 | [cover]: https://github.com/user-attachments/assets/01a6ae9a-16aa-45f2-8bff-32b5dc587e44 | ||
| @@ -1,135 +1,130 @@ | |||
| 1 | <a name="readme-top"></a> | 1 | <a name="readme-top"></a> |
| 2 | 2 | ||
| 3 | English | [中文](readme-zh_cn.md) | [日本語](readme-ja_jp.md) | [Русский](readme-ru_ru.md) | ||
| 4 | |||
| 5 | ![][cover] | 3 | ![][cover] |
| 6 | 4 | ||
| 7 | Mobile-friendly layout, Multi-API (KoboldAI/CPP, Horde, NovelAI, Ooba, OpenAI, OpenRouter, Claude, Scale), VN-like Waifu Mode, Stable Diffusion, TTS, WorldInfo (lorebooks), customizable UI, auto-translate, and more prompt options than you'd ever want or need + ability to install third-party extensions. | 5 | <div align="center"> |
| 8 | 6 | ||
| 9 | Based on a fork of [TavernAI](https://github.com/TavernAI/TavernAI) 1.2.8 | 7 | English | [中文](readme-zh_cn.md) | [日本語](readme-ja_jp.md) | [Русский](readme-ru_ru.md) |
| 10 | 8 | ||
| 11 | ## Important news! | 9 | [](https://github.com/SillyTavern/SillyTavern/stargazers) |
| 10 | [](https://github.com/SillyTavern/SillyTavern/network) | ||
| 11 | [](https://github.com/SillyTavern/SillyTavern/issues) | ||
| 12 | [](https://github.com/SillyTavern/SillyTavern/pulls) | ||
| 12 | 13 | ||
| 13 | 1. We have created a [Documentation website](https://docs.sillytavern.app/) to answer most of your questions and help you get started. | 14 | </div> |
| 14 | 15 | ||
| 15 | 2. Missing extensions after the update? Since the 1.10.6 release version, most of the previously built-in extensions have been converted to downloadable add-ons. You can download them via the built-in "Download Extensions and Assets" menu in the extensions panel (stacked blocks icon in the top bar). | 16 | --- |
| 16 | 17 | ||
| 17 | 3. Unsupported platform: android arm LEtime-web. 32-bit Android requires an external dependency that can't be installed with npm. Use the following command to install it: `pkg install esbuild`. Then run the usual installation steps. | 18 | SillyTavern provides a single unified interface for many LLM APIs (KoboldAI/CPP, Horde, NovelAI, Ooba, Tabby, OpenAI, OpenRouter, Claude, Mistral and more), a mobile-friendly layout, Visual Novel Mode, Automatic1111 & ComfyUI API image generation integration, TTS, WorldInfo (lorebooks), customizable UI, auto-translate, more prompt options than you'd ever want or need, and endless growth potential via third-party extensions. |
| 18 | 19 | ||
| 19 | ### Brought to you by Cohee, RossAscends, and the SillyTavern community | 20 | We have a [Documentation website](https://docs.sillytavern.app/) to answer most of your questions and help you get started. |
| 20 | 21 | ||
| 21 | ### What is SillyTavern or TavernAI? | 22 | ## What is SillyTavern? |
| 22 | 23 | ||
| 23 | SillyTavern is a user interface you can install on your computer (and Android phones) that allows you to interact with text generation AIs and chat/roleplay with characters you or the community create. | 24 | SillyTavern (or ST for short) is a locally installed user interface that allows you to interact with text generation LLMs, image generation engines, and TTS voice models. |
| 24 | 25 | ||
| 25 | SillyTavern is a fork of TavernAI 1.2.8 which is under more active development and has added many major features. At this point, they can be thought of as completely independent programs. | 26 | Beginning in February 2023 as a fork of TavernAI 1.2.8, SillyTavern now has over 100 contributors and 2 years of independent development under its belt, and continues to serve as a leading software for savvy AI hobbyists. |
| 26 | 27 | ||
| 27 | ## Screenshots | 28 | ## Our Vision |
| 28 | 29 | ||
| 29 | <img width="400" alt="image" src="https://github.com/SillyTavern/SillyTavern/assets/61471128/e902c7a2-45a6-4415-97aa-c59c597669c1"> | 30 | 1. We aim to empower users with as much utility and control over their LLM prompts as possible. The steep learning curve is part of the fun! |
| 30 | <img width="400" alt="image" src="https://github.com/SillyTavern/SillyTavern/assets/61471128/f8a79c47-4fe9-4564-9e4a-bf247ed1c961"> | 31 | 2. We do not provide any online or hosted services, nor programmatically track any user data. |
| 32 | 3. SillyTavern is a passion project brought to you by a dedicated community of LLM enthusiasts, and will always be free and open sourced. | ||
| 31 | 33 | ||
| 32 | ### Branches | 34 | ## Branches |
| 33 | 35 | ||
| 34 | SillyTavern is being developed using a two-branch system to ensure a smooth experience for all users. | 36 | SillyTavern is being developed using a two-branch system to ensure a smooth experience for all users. |
| 35 | 37 | ||
| 36 | * release -🌟 **Recommended for most users.** This is the most stable and recommended branch, updated only when major releases are pushed. It's suitable for the majority of users. | 38 | * `release` -🌟 **Recommended for most users.** This is the most stable and recommended branch, updated only when major releases are pushed. It's suitable for the majority of users. Typically updated once a month. |
| 37 | * staging - ⚠️ **Not recommended for casual use.** This branch has the latest features, but be cautious as it may break at any time. Only for power users and enthusiasts. | 39 | * `staging` - ⚠️ **Not recommended for casual use.** This branch has the latest features, but be cautious as it may break at any time. Only for power users and enthusiasts. Updates several times daily. |
| 38 | 40 | ||
| 39 | If you're not familiar with using the git CLI or don't understand what a branch is, don't worry! The release branch is always the preferable option for you. | 41 | If you're not familiar with using the git CLI or don't understand what a branch is, don't worry! The release branch is always the preferable option for you. |
| 40 | 42 | ||
| 41 | ### What do I need other than SillyTavern? | 43 | ## What do I need other than SillyTavern? |
| 42 | 44 | ||
| 43 | On its own SillyTavern is useless, as it's just a user interface. You have to have access to an AI system backend that can act as the roleplay character. There are various supported backends: OpenAPI API (GPT), KoboldAI (either running locally or on Google Colab), and more. You can read more about this in [the FAQ](https://docs.sillytavern.app/usage/faq/). | 45 | Since SillyTavern is only an interface, you will need access to an LLM backend to provide inference. You can use AI Horde for instant out-of-the-box chatting. Aside from that, we support many other local and cloud-based LLM backends: OpenAI-compatible API, KoboldAI, Tabby, and many more. You can read more about our supported APIs in [the FAQ](https://docs.sillytavern.app/usage/api-connections/). |
| 44 | 46 | ||
| 45 | ### Do I need a powerful PC to run SillyTavern? | 47 | ### Do I need a powerful PC to run SillyTavern? |
| 46 | 48 | ||
| 47 | Since SillyTavern is only a user interface, it has tiny hardware requirements, it will run on anything. It's the AI system backend that needs to be powerful. | 49 | The hardware requirements are minimal: it will run on anything that can run NodeJS 18 or higher. If you intend to do LLM inference on your local machine, we recommend a 3000-series NVIDIA graphics card with at least 6GB of VRAM. Check your backend's documentation for more details. |
| 50 | |||
| 51 | ### Suggested Backends (not affiliated) | ||
| 52 | |||
| 53 | * [AI Horde](https://aihorde.net/) - use models hosted by volunteers. Requires no further setup | ||
| 54 | * [KoboldCpp](https://github.com/LostRuins/koboldcpp) - a community's favorite for running GGUF models locally | ||
| 55 | * [tabbyAPI](https://github.com/theroyallab/tabbyAPI) - a popular, lightweight, locally-hosted exl2 inference API | ||
| 56 | * [OpenRouter](https://openrouter.ai) - a single API for many cloud providers (OpenAI, Claude, Meta Llama, etc.) as well as popular community models. | ||
| 48 | 57 | ||
| 49 | ## Questions or suggestions? | 58 | ## Questions or suggestions? |
| 50 | 59 | ||
| 51 | ### We now have a community Discord server | 60 | ### Discord server |
| 52 | 61 | ||
| 53 | | [![][discord-shield-badge]][discord-link] | [Join our Discord community!](https://discord.gg/sillytavern) Get support, share favorite characters and prompts. | | 62 | | [![][discord-shield-badge]][discord-link] | [Join our Discord community!](https://discord.gg/sillytavern) Get support, share favorite characters and prompts. | |
| 54 | | :---------------------------------------- | :----------------------------------------------------------------------------------------------------------------- | | 63 | | :---------------------------------------- | :----------------------------------------------------------------------------------------------------------------- | |
| 55 | 64 | ||
| 56 | Or get in touch with the developers directly: | 65 | Or get in touch with the developers directly: |
| 57 | 66 | ||
| 58 | * Discord: cohee or rossascends | 67 | * Discord: cohee, rossascends, wolfsblvt |
| 59 | * Reddit: [/u/RossAscends](https://www.reddit.com/user/RossAscends/) or [/u/sillylossy](https://www.reddit.com/user/sillylossy/) | 68 | * 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/) |
| 60 | * [Post a GitHub issue](https://github.com/SillyTavern/SillyTavern/issues) | 69 | * [Post a GitHub issue](https://github.com/SillyTavern/SillyTavern/issues) |
| 61 | 70 | ||
| 62 | ## This version includes | 71 | ### I like your project! How do I contribute? |
| 63 | 72 | ||
| 64 | * A heavily modified TavernAI 1.2.8 (more than 50% of code rewritten or optimized) | 73 | 1. Send pull requests. Learn how to contribute: [CONTRIBUTING.md](../CONTRIBUTING.md) |
| 65 | * Swipes | 74 | 2. Send feature suggestions and issue reports using the provided templates. |
| 66 | * Group chats: multi-bot rooms for characters to talk to you or each other | 75 | 3. Read this entire readme file and check the documentation website first, to avoid sending duplicate issues. |
| 67 | * Chat checkpoints / branching | ||
| 68 | * Advanced KoboldAI / TextGen generation settings with a lot of community-made presets | ||
| 69 | * World Info support: create rich lore or save tokens on your character card | ||
| 70 | * [OpenRouter](https://openrouter.ai) connection for various APIs (Claude, GPT-4/3.5 and more) | ||
| 71 | * [Oobabooga's TextGen WebUI](https://github.com/oobabooga/text-generation-webui) API connection | ||
| 72 | * [AI Horde](https://aihorde.net/) connection | ||
| 73 | * Prompt generation formatting tweaking | ||
| 74 | 76 | ||
| 75 | ## Extensions | 77 | ## Screenshots |
| 76 | 78 | ||
| 77 | SillyTavern has extensibility support, with some additional AI modules hosted via [SillyTavern Extras API](https://github.com/SillyTavern/SillyTavern-extras) | 79 | <img width="500" alt="image" src="https://github.com/user-attachments/assets/9b5f32f0-c3b3-4102-b3f5-0e9213c0f50f"> |
| 80 | <img width="500" alt="image" src="https://github.com/user-attachments/assets/913fdbaa-7d33-42f1-ae2c-89dca41c53d1"> | ||
| 78 | 81 | ||
| 79 | * Author's Note / Character Bias | 82 | ## Character Cards |
| 80 | * Character emotional expressions (sprites) | 83 | |
| 81 | * Auto-Summary of the chat history | 84 | SillyTavern is built around the concept of "character cards". A character card is a collection of prompts that set the behavior of the LLM and is required to have persistent conversations in SillyTavern. They function similarly to ChatGPT's GPTs or Poe's bots. The content of a character card can be anything: an abstract scenario, an assistant tailored for a specific task, a famous personality or a fictional character. |
| 82 | * Sending images to chat, and the AI interpreting the content | ||
| 83 | * Stable Diffusion image generation (5 chat-related presets plus 'free mode') | ||
| 84 | * Text-to-speech for AI response messages (via ElevenLabs, Silero, or the OS's System TTS) | ||
| 85 | 85 | ||
| 86 | A full list of included extensions and tutorials on how to use them can be found in the [Docs](https://docs.sillytavern.app/). | 86 | The name field is the only required character card input. To start a neutral conversation with the language model, create a new card simply called "Assistant" and leave the rest of the boxes blank. For a more themed chat, you can provide the language model with various background details, behavior and writing patterns, and a scenario to jump start the chat. |
| 87 | 87 | ||
| 88 | ## UI/CSS/Quality of Life tweaks by RossAscends | 88 | To have a quick conversation without selecting a character card or to just test the LLM connection, simply type your prompt input into the input bar on the Welcome Screen after opening SillyTavern. Please note that such chats are temporary and will not be saved. |
| 89 | 89 | ||
| 90 | * Mobile UI optimized for iOS, and supports saving a shortcut to the home screen and opening in fullscreen mode. | 90 | To get a general idea on how to define character cards, see the default character (Seraphina) or download selected community-made cards from the "Download Extensions & Assets" menu. |
| 91 | * HotKeys | ||
| 92 | * Up = Edit last message in chat | ||
| 93 | * Ctrl+Up = Edit last USER message in chat | ||
| 94 | * Left = swipe left | ||
| 95 | * Right = swipe right (NOTE: swipe hotkeys are disabled when the chat bar has something typed into it) | ||
| 96 | * Ctrl+Left = view locally stored variables (in the browser console window) | ||
| 97 | * Enter (with chat bar selected) = send your message to AI | ||
| 98 | * Ctrl+Enter = Regenerate the last AI response | ||
| 99 | 91 | ||
| 100 | * User Name Changes and Character Deletion no longer force the page to refresh. | 92 | ## Key Features |
| 101 | 93 | ||
| 102 | * Toggle option to automatically connect to API on page load. | 94 | * Advanced text generation settings with many community-made presets |
| 103 | * Toggle option to automatically load the most recently viewed character on page load. | 95 | * World Info support: create rich lore or save tokens on your character card |
| 104 | * Better Token Counter - works on unsaved characters, and shows both permanent and temporary tokens. | 96 | * Group chats: multi-bot rooms for characters to talk to you and/or each other |
| 97 | * Rich UI customization options: theme colors, background images, custom CSS, and more | ||
| 98 | * User personas: let the AI know a bit about you for greater immersion | ||
| 99 | * Built-in RAG support: add documents to your chats for the AI to reference | ||
| 100 | * Extensive chat commands subsystem and own [scripting engine](https://docs.sillytavern.app/usage/st-script/) | ||
| 105 | 101 | ||
| 106 | * Better Past Chats View | 102 | ## Extensions |
| 107 | * New Chat filenames are saved in a readable format of "(character) - (when it was created)" | ||
| 108 | * Chat preview increased from 40 characters to 300. | ||
| 109 | * Multiple options for characters list sorting (by name, creation date, chat sizes). | ||
| 110 | 103 | ||
| 111 | * By default the left and right settings panel will close when you click away from it. | 104 | SillyTavern has extensibility support. |
| 112 | * Clicking the Lock on the nav panel will hold the panel open, and this setting be remembered across sessions. | ||
| 113 | * Nav panel status of open or closed will also be saved across sessions. | ||
| 114 | 105 | ||
| 115 | * Customizable chat UI: | 106 | * Character emotional expressions (sprites) |
| 116 | * Play a sound when a new message arrives | 107 | * Auto-Summary of the chat history |
| 117 | * Switch between round or rectangle avatar styles | 108 | * Automatic UI and chat translation |
| 118 | * Have a wider chat window on the desktop | 109 | * Stable Diffusion/FLUX/DALL-E image generation |
| 119 | * Optional semi-transparent glass-like panels | 110 | * Text-to-speech for AI response messages (via ElevenLabs, Silero, or the OS's System TTS) |
| 120 | * Customizable page colors for 'main text', 'quoted text', and 'italics text'. | 111 | * Web Search capabilities for adding additional real world context to your prompts |
| 121 | * Customizable UI background color and blur amount | 112 | * Many more are available to download from the "Download Extensions & Assets" menu. |
| 113 | |||
| 114 | Tutorials on how to use them can be found in the [Docs](https://docs.sillytavern.app/). | ||
| 122 | 115 | ||
| 123 | # ⌛ Installation | 116 | # ⌛ Installation |
| 124 | 117 | ||
| 125 | > \[!WARNING] | 118 | > \[!WARNING] |
| 119 | > | ||
| 126 | > * DO NOT INSTALL INTO ANY WINDOWS CONTROLLED FOLDER (Program Files, System32, etc). | 120 | > * DO NOT INSTALL INTO ANY WINDOWS CONTROLLED FOLDER (Program Files, System32, etc). |
| 127 | > * DO NOT RUN START.BAT WITH ADMIN PERMISSIONS | 121 | > * DO NOT RUN START.BAT WITH ADMIN PERMISSIONS |
| 128 | > * INSTALLATION ON WINDOWS 7 IS IMPOSSIBLE AS IT CAN NOT RUN NODEJS 18.16 | 122 | > * INSTALLATION ON WINDOWS 7 IS IMPOSSIBLE AS IT CAN NOT RUN NODEJS 18.16 |
| 129 | 123 | ||
| 130 | ## 🪟 Windows | 124 | ## 🪟 Windows |
| 131 | 125 | ||
| 132 | ## Installing via Git | 126 | ### Installing via Git |
| 127 | |||
| 133 | 1. Install [NodeJS](https://nodejs.org/en) (latest LTS version is recommended) | 128 | 1. Install [NodeJS](https://nodejs.org/en) (latest LTS version is recommended) |
| 134 | 2. Install [Git for Windows](https://gitforwindows.org/) | 129 | 2. Install [Git for Windows](https://gitforwindows.org/) |
| 135 | 3. Open Windows Explorer (`Win+E`) | 130 | 3. Open Windows Explorer (`Win+E`) |
| @@ -137,24 +132,16 @@ A full list of included extensions and tutorials on how to use them can be found | |||
| 137 | 5. Open a Command Prompt inside that folder by clicking in the 'Address Bar' at the top, typing `cmd`, and pressing Enter. | 132 | 5. Open a Command Prompt inside that folder by clicking in the 'Address Bar' at the top, typing `cmd`, and pressing Enter. |
| 138 | 6. Once the black box (Command Prompt) pops up, type ONE of the following into it and press Enter: | 133 | 6. Once the black box (Command Prompt) pops up, type ONE of the following into it and press Enter: |
| 139 | 134 | ||
| 140 | - for Release Branch: `git clone https://github.com/SillyTavern/SillyTavern -b release` | 135 | * for Release Branch: `git clone https://github.com/SillyTavern/SillyTavern -b release` |
| 141 | - for Staging Branch: `git clone https://github.com/SillyTavern/SillyTavern -b staging` | 136 | * for Staging Branch: `git clone https://github.com/SillyTavern/SillyTavern -b staging` |
| 142 | 137 | ||
| 143 | 7. Once everything is cloned, double-click `Start.bat` to make NodeJS install its requirements. | 138 | 7. Once everything is cloned, double-click `Start.bat` to make NodeJS install its requirements. |
| 144 | 8. The server will then start, and SillyTavern will pop up in your browser. | 139 | 8. The server will then start, and SillyTavern will pop up in your browser. |
| 145 | 140 | ||
| 146 | ## Installing via SillyTavern Launcher | 141 | ### Installing via GitHub Desktop |
| 147 | 1. On your keyboard: press **`WINDOWS + R`** to open Run dialog box. Then, run the following command to install git: | ||
| 148 | ```shell | ||
| 149 | cmd /c winget install -e --id Git.Git | ||
| 150 | ``` | ||
| 151 | 2. On your keyboard: press **`WINDOWS + E`** to open File Explorer, then navigate to the folder where you want to install the launcher. Once in the desired folder, type `cmd` into the address bar and press enter. Then, run the following command: | ||
| 152 | ```shell | ||
| 153 | git clone https://github.com/SillyTavern/SillyTavern-Launcher.git && cd SillyTavern-Launcher && start installer.bat | ||
| 154 | ``` | ||
| 155 | 142 | ||
| 156 | ## Installing via GitHub Desktop | ||
| 157 | (This allows git usage **only** in GitHub Desktop, if you want to use `git` on the command line too, you also need to install [Git for Windows](https://gitforwindows.org/)) | 143 | (This allows git usage **only** in GitHub Desktop, if you want to use `git` on the command line too, you also need to install [Git for Windows](https://gitforwindows.org/)) |
| 144 | |||
| 158 | 1. Install [NodeJS](https://nodejs.org/en) (latest LTS version is recommended) | 145 | 1. Install [NodeJS](https://nodejs.org/en) (latest LTS version is recommended) |
| 159 | 2. Install [GitHub Desktop](https://central.github.com/deployments/desktop/desktop/latest/win32) | 146 | 2. Install [GitHub Desktop](https://central.github.com/deployments/desktop/desktop/latest/win32) |
| 160 | 3. After installing GitHub Desktop, click on `Clone a repository from the internet....` (Note: You **do NOT need** to create a GitHub account for this step) | 147 | 3. After installing GitHub Desktop, click on `Clone a repository from the internet....` (Note: You **do NOT need** to create a GitHub account for this step) |
| @@ -172,50 +159,82 @@ For MacOS / Linux all of these will be done in a Terminal. | |||
| 172 | 1. Install git and nodeJS (the method for doing this will vary depending on your OS) | 159 | 1. Install git and nodeJS (the method for doing this will vary depending on your OS) |
| 173 | 2. Clone the repo | 160 | 2. Clone the repo |
| 174 | 161 | ||
| 175 | - for Release Branch: `git clone https://github.com/SillyTavern/SillyTavern -b release` | 162 | * for Release Branch: `git clone https://github.com/SillyTavern/SillyTavern -b release` |
| 176 | - for Staging Branch: `git clone https://github.com/SillyTavern/SillyTavern -b staging` | 163 | * for Staging Branch: `git clone https://github.com/SillyTavern/SillyTavern -b staging` |
| 177 | 164 | ||
| 178 | 3. `cd SillyTavern` to navigate into the install folder. | 165 | 3. `cd SillyTavern` to navigate into the install folder. |
| 179 | 4. Run the `start.sh` script with one of these commands: | 166 | 4. Run the `start.sh` script with one of these commands: |
| 180 | 167 | ||
| 181 | - `./start.sh` | 168 | * `./start.sh` |
| 182 | - `bash start.sh` | 169 | * `bash start.sh` |
| 170 | |||
| 171 | ## ⚡ Installing via SillyTavern Launcher | ||
| 183 | 172 | ||
| 184 | ## Installing via SillyTavern Launcher | 173 | SillyTavern Launcher is an installation wizard that will help you get setup with many options, including installing a backend for local inference. |
| 174 | |||
| 175 | ### For Windows users | ||
| 176 | |||
| 177 | 1. On your keyboard: press **`WINDOWS + R`** to open Run dialog box. Then, run the following command to install git: | ||
| 178 | |||
| 179 | ```shell | ||
| 180 | cmd /c winget install -e --id Git.Git | ||
| 181 | ``` | ||
| 182 | |||
| 183 | 2. On your keyboard: press **`WINDOWS + E`** to open File Explorer, then navigate to the folder where you want to install the launcher. Once in the desired folder, type `cmd` into the address bar and press enter. Then, run the following command: | ||
| 184 | |||
| 185 | ```shell | ||
| 186 | git clone https://github.com/SillyTavern/SillyTavern-Launcher.git && cd SillyTavern-Launcher && start installer.bat | ||
| 187 | ``` | ||
| 185 | 188 | ||
| 186 | ### For Linux users | 189 | ### For Linux users |
| 190 | |||
| 187 | 1. Open your favorite terminal and install git | 191 | 1. Open your favorite terminal and install git |
| 188 | 2. Git clone the Sillytavern-Launcher with: | 192 | 2. Git clone the Sillytavern-Launcher with: |
| 193 | |||
| 189 | ```shell | 194 | ```shell |
| 190 | git clone https://github.com/SillyTavern/SillyTavern-Launcher.git && cd SillyTavern-Launcher | 195 | git clone https://github.com/SillyTavern/SillyTavern-Launcher.git && cd SillyTavern-Launcher |
| 191 | ``` | 196 | ``` |
| 197 | |||
| 192 | 3. Start the installer.sh with: | 198 | 3. Start the installer.sh with: |
| 199 | |||
| 193 | ```shell | 200 | ```shell |
| 194 | chmod +x install.sh && ./install.sh | 201 | chmod +x install.sh && ./install.sh |
| 195 | ``` | 202 | ``` |
| 203 | |||
| 196 | 4. After installation start the launcher.sh with: | 204 | 4. After installation start the launcher.sh with: |
| 205 | |||
| 197 | ```shell | 206 | ```shell |
| 198 | chmod +x launcher.sh && ./launcher.sh | 207 | chmod +x launcher.sh && ./launcher.sh |
| 199 | ``` | 208 | ``` |
| 200 | 209 | ||
| 201 | ### For Mac users | 210 | ### For Mac users |
| 211 | |||
| 202 | 1. Open a terminal and install brew with: | 212 | 1. Open a terminal and install brew with: |
| 213 | |||
| 203 | ```shell | 214 | ```shell |
| 204 | /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" | 215 | /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)" |
| 205 | ``` | 216 | ``` |
| 217 | |||
| 206 | 2. Install git with: | 218 | 2. Install git with: |
| 219 | |||
| 207 | ```shell | 220 | ```shell |
| 208 | brew install git | 221 | brew install git |
| 209 | ``` | 222 | ``` |
| 223 | |||
| 210 | 3. Git clone the Sillytavern-Launcher with: | 224 | 3. Git clone the Sillytavern-Launcher with: |
| 225 | |||
| 211 | ```shell | 226 | ```shell |
| 212 | git clone https://github.com/SillyTavern/SillyTavern-Launcher.git && cd SillyTavern-Launcher | 227 | git clone https://github.com/SillyTavern/SillyTavern-Launcher.git && cd SillyTavern-Launcher |
| 213 | ``` | 228 | ``` |
| 229 | |||
| 214 | 4. Start the installer.sh with: | 230 | 4. Start the installer.sh with: |
| 231 | |||
| 215 | ```shell | 232 | ```shell |
| 216 | chmod +x install.sh && ./install.sh | 233 | chmod +x install.sh && ./install.sh |
| 217 | ``` | 234 | ``` |
| 235 | |||
| 218 | 5. After installation start the launcher.sh with: | 236 | 5. After installation start the launcher.sh with: |
| 237 | |||
| 219 | ```shell | 238 | ```shell |
| 220 | chmod +x launcher.sh && ./launcher.sh | 239 | chmod +x launcher.sh && ./launcher.sh |
| 221 | ``` | 240 | ``` |
| @@ -236,18 +255,18 @@ You will need two mandatory directory mappings and a port mapping to allow Silly | |||
| 236 | 255 | ||
| 237 | ##### Volume Mappings | 256 | ##### Volume Mappings |
| 238 | 257 | ||
| 239 | - [config] - The directory where SillyTavern configuration files will be stored on your host machine | 258 | * [config] - The directory where SillyTavern configuration files will be stored on your host machine |
| 240 | - [data] - The directory where SillyTavern user data (including characters) will be stored on your host machine | 259 | * [data] - The directory where SillyTavern user data (including characters) will be stored on your host machine |
| 241 | - [plugins] - (optional) The directory where SillyTavern server plugins will be stored on your host machine | 260 | * [plugins] - (optional) The directory where SillyTavern server plugins will be stored on your host machine |
| 242 | 261 | ||
| 243 | ##### Port Mappings | 262 | ##### Port Mappings |
| 244 | 263 | ||
| 245 | - [PublicPort] - The port to expose the traffic on. This is mandatory, as you will be accessing the instance from outside of its virtual machine container. DO NOT expose this to the internet without implementing a separate service for security. | 264 | * [PublicPort] - The port to expose the traffic on. This is mandatory, as you will be accessing the instance from outside of its virtual machine container. DO NOT expose this to the internet without implementing a separate service for security. |
| 246 | 265 | ||
| 247 | ##### Additional Settings | 266 | ##### Additional Settings |
| 248 | 267 | ||
| 249 | - [DockerNet] - The docker network that the container should be created with a connection to. If you don't know what it is, see the [official Docker documentation](https://docs.docker.com/reference/cli/docker/network/). | 268 | * [DockerNet] - The docker network that the container should be created with a connection to. If you don't know what it is, see the [official Docker documentation](https://docs.docker.com/reference/cli/docker/network/). |
| 250 | - [version] - On the right-hand side of this GitHub page, you'll see "Packages". Select the "sillytavern" package and you'll see the image versions. The image tag "latest" will keep you up-to-date with the current release. You can also utilize "staging" and "release" tags that point to the nightly images of the respective branches, but this may not be appropriate, if you are utilizing extensions that could be broken, and may need time to update. | 269 | * [version] - On the right-hand side of this GitHub page, you'll see "Packages". Select the "sillytavern" package and you'll see the image versions. The image tag "latest" will keep you up-to-date with the current release. You can also utilize "staging" and "release" tags that point to the nightly images of the respective branches, but this may not be appropriate, if you are utilizing extensions that could be broken, and may need time to update. |
| 251 | 270 | ||
| 252 | #### Install command | 271 | #### Install command |
| 253 | 272 | ||
| @@ -258,128 +277,82 @@ You will need two mandatory directory mappings and a port mapping to allow Silly | |||
| 258 | 277 | ||
| 259 | > Note that 8000 is a default listening port. Don't forget to use an appropriate port if you change it in the config. | 278 | > Note that 8000 is a default listening port. Don't forget to use an appropriate port if you change it in the config. |
| 260 | 279 | ||
| 261 | ## 📱 Mobile - Installing via termux | 280 | ## 📱 Installing via Termux on Android OS |
| 262 | 281 | ||
| 263 | > \[!NOTE] | 282 | > \[!NOTE] |
| 264 | > **SillyTavern can be run natively on Android phones using Termux. Please refer to this guide by ArroganceComplex#2659:** | 283 | > **SillyTavern can be run natively on Android devices using Termux, but we do not provide official support for this use case.** |
| 284 | > | ||
| 285 | > **Please refer to this guide by ArroganceComplex#2659:** | ||
| 286 | > | ||
| 265 | > * <https://rentry.org/STAI-Termux> | 287 | > * <https://rentry.org/STAI-Termux> |
| 266 | 288 | ||
| 289 | **Unsupported platform: android arm LEtime-web.** 32-bit Android requires an external dependency that can't be installed with npm. Use the following command to install it: `pkg install esbuild`. Then run the usual installation steps. | ||
| 267 | 290 | ||
| 268 | ## API keys management | 291 | ## API keys management |
| 269 | 292 | ||
| 270 | SillyTavern saves your API keys to a `secrets.json` file in the user data directory (`/data/default-user/secrets.json` is the default path). | 293 | SillyTavern saves your API keys to a `secrets.json` file in the user data directory (`/data/default-user/secrets.json` is the default path). |
| 271 | 294 | ||
| 272 | By default, they will not be exposed to a frontend after you enter them and reload the page. | 295 | By default, API keys will not be visible from the interface after you have saved them and refreshed the page. |
| 273 | 296 | ||
| 274 | In order to enable viewing your keys by clicking a button in the API block: | 297 | In order to enable viewing your keys: |
| 275 | 298 | ||
| 276 | 1. Set the value of `allowKeysExposure` to `true` in `config.yaml` file. | 299 | 1. Set the value of `allowKeysExposure` to `true` in `config.yaml` file. |
| 277 | 2. Restart the SillyTavern server. | 300 | 2. Restart the SillyTavern server. |
| 301 | 3. Click the 'View hidden API keys' link at the bottom right of the API Connection Panel. | ||
| 278 | 302 | ||
| 279 | ## Remote connections | 303 | ## Command-line arguments |
| 280 | |||
| 281 | Most often this is for people who want to use SillyTavern on their mobile phones while their PC runs the ST server on the same wifi network. | ||
| 282 | |||
| 283 | However, it can be used to allow remote connections from anywhere as well. | ||
| 284 | |||
| 285 | **IMPORTANT: Refer to the official guide if you want to configure SillyTavern user accounts with (optional) password protection: [Users](https://docs.sillytavern.app/installation/st-1.12.0-migration-guide/#users).** | ||
| 286 | |||
| 287 | ### 1. Managing whitelisted IPs | ||
| 288 | 304 | ||
| 289 | * Create a new text file inside your SillyTavern base install folder called `whitelist.txt`. | 305 | You can pass command-line arguments to SillyTavern server startup to override some settings in `config.yaml`. |
| 290 | * Open the file in a text editor, and add a list of IPs you want to be allowed to connect. | ||
| 291 | 306 | ||
| 292 | *Both individual IPs and wildcard IP ranges are accepted. Examples:* | 307 | ### Examples |
| 293 | 308 | ||
| 294 | ```txt | 309 | ```shell |
| 295 | 192.168.0.1 | 310 | node server.js --port 8000 --listen false |
| 296 | 192.168.0.20 | 311 | # or |
| 297 | ``` | 312 | npm run start -- --port 8000 --listen false |
| 298 | 313 | # or (Windows only) | |
| 299 | or | 314 | Start.bat --port 8000 --listen false |
| 300 | |||
| 301 | ```txt | ||
| 302 | 192.168.0.* | ||
| 303 | ``` | 315 | ``` |
| 304 | 316 | ||
| 305 | (the above wildcard IP range will allow any device on the local network to connect) | 317 | ### Supported arguments |
| 306 | 318 | ||
| 307 | CIDR masks are also accepted (eg. 10.0.0.0/24). | 319 | | Option | Description | Type | |
| 308 | 320 | |-------------------------|------------------------------------------------------------------------------------------------------|----------| | |
| 309 | * Save the `whitelist.txt` file. | 321 | | `--version` | Show version number | boolean | |
| 310 | * Restart your ST server. | 322 | | `--enableIPv6` | Enables IPv6. | boolean | |
| 311 | 323 | | `--enableIPv4` | Enables IPv4. | boolean | | |
| 312 | Now devices which have the IP specified in the file will be able to connect. | 324 | | `--port` | Sets the port under which SillyTavern will run. If not provided falls back to yaml config 'port'. | number | |
| 313 | 325 | | `--dnsPreferIPv6` | Prefers IPv6 for dns. If not provided falls back to yaml config 'preferIPv6'. | boolean | | |
| 314 | *Note: `config.yaml` also has a `whitelist` array, which you can use in the same way, but this array will be ignored if `whitelist.txt` exists.* | 326 | | `--autorun` | Automatically launch SillyTavern in the browser. If not provided falls back to yaml config 'autorun'.| boolean | |
| 315 | 327 | | `--autorunHostname` | The autorun hostname, probably best left on 'auto'. | string | | |
| 316 | ### 2. Getting the IP for the ST host machine | 328 | | `--autorunPortOverride` | Overrides the port for autorun. | string | |
| 317 | 329 | | `--listen` | SillyTavern is listening on all network interfaces. If not provided falls back to yaml config 'listen'.| boolean | | |
| 318 | After the whitelist has been setup, you'll need the IP of the ST-hosting device. | 330 | | `--corsProxy` | Enables CORS proxy. If not provided falls back to yaml config 'enableCorsProxy'. | boolean | |
| 319 | 331 | | `--disableCsrf` | Disables CSRF protection | boolean | | |
| 320 | If the ST-hosting device is on the same wifi network, you will use the ST-host's internal wifi IP: | 332 | | `--ssl` | Enables SSL | boolean | |
| 321 | 333 | | `--certPath` | Path to your certificate file. | string | | |
| 322 | * For Windows: windows button > type `cmd.exe` in the search bar > type `ipconfig` in the console, hit Enter > look for `IPv4` listing. | 334 | | `--keyPath` | Path to your private key file. | string | |
| 323 | 335 | | `--whitelist` | Enables whitelist mode | boolean | | |
| 324 | If you (or someone else) want to connect to your hosted ST while not being on the same network, you will need the public IP of your ST-hosting device. | 336 | | `--dataRoot` | Root directory for data storage | string | |
| 337 | | `--avoidLocalhost` | Avoids using 'localhost' for autorun in auto mode. | boolean | | ||
| 338 | | `--basicAuthMode` | Enables basic authentication | boolean | | ||
| 339 | | `--requestProxyEnabled` | Enables a use of proxy for outgoing requests | boolean | | ||
| 340 | | `--requestProxyUrl` | Request proxy URL (HTTP or SOCKS protocols) | string | | ||
| 341 | | `--requestProxyBypass` | Request proxy bypass list (space separated list of hosts) | array | | ||
| 325 | 342 | ||
| 326 | * While using the ST-hosting device, access [this page](https://whatismyipaddress.com/) and look for `IPv4`. This is what you would use to connect from the remote device. | 343 | ## Remote connections |
| 327 | |||
| 328 | ### 3. Connect the remote device to the ST host machine | ||
| 329 | |||
| 330 | Whatever IP you ended up with for your situation, you will put that IP address and port number into the remote device's web browser. | ||
| 331 | |||
| 332 | A typical address for an ST host on the same wifi network would look like this: | ||
| 333 | |||
| 334 | `http://192.168.0.5:8000` | ||
| 335 | |||
| 336 | Use http:// NOT https:// | ||
| 337 | |||
| 338 | ### Opening your ST to all IPs | ||
| 339 | |||
| 340 | We do not recommend doing this, but you can open `config.yaml` and change `whitelistMode` to `false`. | ||
| 341 | |||
| 342 | You must remove (or rename) `whitelist.txt` in the SillyTavern base install folder if it exists. | ||
| 343 | |||
| 344 | This is usually an insecure practice, so we require you to set a username and password when you do this. | ||
| 345 | |||
| 346 | The username and password are set in `config.yaml`. | ||
| 347 | 344 | ||
| 348 | After restarting your ST server, any device will be able to connect to it, regardless of their IP as long as they know the username and password. | 345 | Most often this is for people who want to use SillyTavern on their mobile phones while their PC runs the ST server on the same Wi-Fi network. However, it can be used to allow remote connections from anywhere as well. |
| 349 | 346 | ||
| 350 | ### Still Unable To Connect? | 347 | Read the detailed guide on how to set up remote connections in the [Docs](https://docs.sillytavern.app/usage/remoteconnections/). |
| 351 | 348 | ||
| 352 | * Create an inbound/outbound firewall rule for the port found in `config.yaml`. Do NOT mistake this for port-forwarding on your router, otherwise, someone could find your chat logs and that's a big no-no. | 349 | You may also want to configure SillyTavern user profiles with (optional) password protection: [Users](https://docs.sillytavern.app/installation/st-1.12.0-migration-guide/#users). |
| 353 | * Enable the Private Network profile type in Settings > Network and Internet > Ethernet. This is VERY important for Windows 11, otherwise, you would be unable to connect even with the aforementioned firewall rules. | ||
| 354 | 350 | ||
| 355 | ## Performance issues? | 351 | ## Performance issues? |
| 356 | 352 | ||
| 357 | Try enabling the No Blur Effect (Fast UI) mode on the User settings panel. | 353 | 1. Disable the Blur Effect and enable Reduced Motion on the User Settings panel (UI Theme toggles category). |
| 358 | 354 | 2. If using response streaming, set the streaming FPS to a lower value (10-15 FPS is recommended). | |
| 359 | ## I like your project! How do I contribute? | 355 | 3. Make sure the browser is enabled to use GPU acceleration for rendering. |
| 360 | |||
| 361 | ### DO's | ||
| 362 | |||
| 363 | 1. Send pull requests | ||
| 364 | 2. Send feature suggestions and issue reports using established templates | ||
| 365 | 3. Read the readme file and built-in documentation before asking anything | ||
| 366 | |||
| 367 | ### DONT's | ||
| 368 | |||
| 369 | 1. Offer monetary donations | ||
| 370 | 2. Send bug reports without providing any context | ||
| 371 | 3. Ask the questions that were already answered numerous times | ||
| 372 | |||
| 373 | ## Where can I find the old backgrounds? | ||
| 374 | |||
| 375 | We're moving to a 100% original content only policy, so old background images have been removed from this repository. | ||
| 376 | |||
| 377 | You can find them archived here: | ||
| 378 | |||
| 379 | <https://files.catbox.moe/1xevnc.zip> | ||
| 380 | |||
| 381 | |||
| 382 | |||
| 383 | 356 | ||
| 384 | ## License and credits | 357 | ## License and credits |
| 385 | 358 | ||
| @@ -388,32 +361,19 @@ but WITHOUT ANY WARRANTY; without even the implied warranty of | |||
| 388 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the | 361 | MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the |
| 389 | GNU Affero General Public License for more details.** | 362 | GNU Affero General Public License for more details.** |
| 390 | 363 | ||
| 391 | * TAI Base by Humi: MIT | 364 | * [TavernAI](https://github.com/TavernAI/TavernAI) 1.2.8 by Humi: MIT License |
| 392 | * Cohee's modifications and derived code: AGPL v3 | 365 | * Portions of CncAnon's TavernAITurbo mod used with permission |
| 393 | * RossAscends' additions: AGPL v3 | 366 | * Visual Novel Mode inspired by the work of PepperTaco (<https://github.com/peppertaco/Tavern/>) |
| 394 | * Portions of CncAnon's TavernAITurbo mod: Unknown license | ||
| 395 | * kingbri's various commits and suggestions (<https://github.com/bdashore3>) | ||
| 396 | * city_unit's extensions and various QoL features (<https://github.com/city-unit>) | ||
| 397 | * StefanDanielSchwarz's various commits and bug reports (<https://github.com/StefanDanielSchwarz>) | ||
| 398 | * Waifu mode inspired by the work of PepperTaco (<https://github.com/peppertaco/Tavern/>) | ||
| 399 | * Thanks Pygmalion University for being awesome testers and suggesting cool features! | ||
| 400 | * Thanks oobabooga for compiling presets for TextGen | ||
| 401 | * KoboldAI Presets from KAI Lite: <https://lite.koboldai.net/> | ||
| 402 | * Noto Sans font by Google (OFL license) | 367 | * Noto Sans font by Google (OFL license) |
| 403 | * Icon theme by Font Awesome <https://fontawesome.com> (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) | 368 | * Icon theme by Font Awesome <https://fontawesome.com> (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License) |
| 404 | * AI Horde client library by ZeldaFan0225: <https://github.com/ZeldaFan0225/ai_horde> | 369 | * Default content by @OtisAlejandro (Seraphina character and lorebook) and @kallmeflocc (10K Discord Users Celebratory Background) |
| 405 | * Linux startup script by AlpinDale | ||
| 406 | * Thanks paniphons for providing a FAQ document | ||
| 407 | * 10K Discord Users Celebratory Background by @kallmeflocc | ||
| 408 | * Default content (characters and lore books) provided by @OtisAlejandro, @RossAscends and @kallmeflocc | ||
| 409 | * Korean translation by @doloroushyeonse | ||
| 410 | * k_euler_a support for Horde by <https://github.com/Teashrock> | ||
| 411 | * Chinese translation by [@XXpE3](https://github.com/XXpE3), 中文 ISSUES 可以联系 @XXpE3 | ||
| 412 | * Docker guide by [@mrguymiah](https://github.com/mrguymiah) and [@Bronya-Rand](https://github.com/Bronya-Rand) | 370 | * Docker guide by [@mrguymiah](https://github.com/mrguymiah) and [@Bronya-Rand](https://github.com/Bronya-Rand) |
| 413 | 371 | ||
| 372 | ## Top Contributors | ||
| 373 | |||
| 374 | [](https://github.com/SillyTavern/SillyTavern/graphs/contributors) | ||
| 375 | |||
| 414 | <!-- LINK GROUP --> | 376 | <!-- LINK GROUP --> |
| 415 | [back-to-top]: https://img.shields.io/badge/-BACK_TO_TOP-151515?style=flat-square | 377 | [cover]: https://github.com/user-attachments/assets/01a6ae9a-16aa-45f2-8bff-32b5dc587e44 |
| 416 | [cover]: https://github.com/SillyTavern/SillyTavern/assets/18619528/c2be4c3f-aada-4f64-87a3-ae35a68b61a4 | ||
| 417 | [discord-link]: https://discord.gg/sillytavern | 378 | [discord-link]: https://discord.gg/sillytavern |
| 418 | [discord-shield]: https://img.shields.io/discord/1100685673633153084?color=5865F2&label=discord&labelColor=black&logo=discord&logoColor=white&style=flat-square | ||
| 419 | [discord-shield-badge]: https://img.shields.io/discord/1100685673633153084?color=5865F2&label=discord&labelColor=black&logo=discord&logoColor=white&style=for-the-badge | 379 | [discord-shield-badge]: https://img.shields.io/discord/1100685673633153084?color=5865F2&label=discord&labelColor=black&logo=discord&logoColor=white&style=for-the-badge |
| @@ -1,4 +1,4 @@ | |||
| 1 | FROM node:lts-alpine3.18 | 1 | FROM node:lts-alpine3.19 |
| 2 | 2 | ||
| 3 | # Arguments | 3 | # Arguments |
| 4 | ARG APP_HOME=/home/node/app | 4 | ARG APP_HOME=/home/node/app |
| @@ -37,6 +37,16 @@ basicAuthUser: | |||
| 37 | password: "password" | 37 | password: "password" |
| 38 | # Enables CORS proxy middleware | 38 | # Enables CORS proxy middleware |
| 39 | enableCorsProxy: false | 39 | enableCorsProxy: false |
| 40 | # -- REQUEST PROXY CONFIGURATION -- | ||
| 41 | requestProxy: | ||
| 42 | # If a proxy is enabled, all outgoing HTTP/HTTPS requests will be routed through it. | ||
| 43 | enabled: false | ||
| 44 | # Proxy URL. Possible protocols: http, https, socks, socks5, socks4, pac | ||
| 45 | url: "socks5://username:password@example.com:1080" | ||
| 46 | # Proxy bypass list. Requests to these hosts won't be routed through the proxy. | ||
| 47 | bypass: | ||
| 48 | - localhost | ||
| 49 | - 127.0.0.1 | ||
| 40 | # Enable multi-user mode | 50 | # Enable multi-user mode |
| 41 | enableUserAccounts: false | 51 | enableUserAccounts: false |
| 42 | # Enable discreet login mode: hides user list on the login screen | 52 | # Enable discreet login mode: hides user list on the login screen |
| @@ -73,6 +83,8 @@ skipContentCheck: false | |||
| 73 | disableChatBackup: false | 83 | disableChatBackup: false |
| 74 | # Number of backups to keep for each chat and settings file | 84 | # Number of backups to keep for each chat and settings file |
| 75 | numberOfBackups: 50 | 85 | numberOfBackups: 50 |
| 86 | # Interval in milliseconds to throttle chat backups per user | ||
| 87 | chatBackupThrottleInterval: 10000 | ||
| 76 | # Allowed hosts for card downloads | 88 | # Allowed hosts for card downloads |
| 77 | whitelistImportDomains: | 89 | whitelistImportDomains: |
| 78 | - localhost | 90 | - localhost |
| @@ -90,9 +102,17 @@ whitelistImportDomains: | |||
| 90 | ## headers: | 102 | ## headers: |
| 91 | ## User-Agent: "Googlebot/2.1 (+http://www.google.com/bot.html)" | 103 | ## User-Agent: "Googlebot/2.1 (+http://www.google.com/bot.html)" |
| 92 | requestOverrides: [] | 104 | requestOverrides: [] |
| 93 | # -- PLUGIN CONFIGURATION -- | 105 | # -- EXTENSIONS CONFIGURATION -- |
| 94 | # Enable UI extensions | 106 | # Enable UI extensions |
| 95 | enableExtensions: true | 107 | enableExtensions: true |
| 108 | # Automatically update extensions when a release version changes | ||
| 109 | enableExtensionsAutoUpdate: true | ||
| 110 | # Additional model tokenizers can be downloaded on demand. | ||
| 111 | # Disabling will fallback to another locally available tokenizer. | ||
| 112 | enableDownloadableTokenizers: true | ||
| 113 | # Vector storage settings | ||
| 114 | vectors: | ||
| 115 | enableModelScopes: false | ||
| 96 | # Extension settings | 116 | # Extension settings |
| 97 | extras: | 117 | extras: |
| 98 | # Disables automatic model download from HuggingFace | 118 | # Disables automatic model download from HuggingFace |
| @@ -320,6 +320,26 @@ | |||
| 320 | "type": "novel_preset" | 320 | "type": "novel_preset" |
| 321 | }, | 321 | }, |
| 322 | { | 322 | { |
| 323 | "filename": "presets/novel/Erato-Dragonfruit.json", | ||
| 324 | "type": "novel_preset" | ||
| 325 | }, | ||
| 326 | { | ||
| 327 | "filename": "presets/novel/Erato-Golden Arrow.json", | ||
| 328 | "type": "novel_preset" | ||
| 329 | }, | ||
| 330 | { | ||
| 331 | "filename": "presets/novel/Erato-Shosetsu.json", | ||
| 332 | "type": "novel_preset" | ||
| 333 | }, | ||
| 334 | { | ||
| 335 | "filename": "presets/novel/Erato-Wilder.json", | ||
| 336 | "type": "novel_preset" | ||
| 337 | }, | ||
| 338 | { | ||
| 339 | "filename": "presets/novel/Erato-Zany Scribe.json", | ||
| 340 | "type": "novel_preset" | ||
| 341 | }, | ||
| 342 | { | ||
| 323 | "filename": "presets/textgen/Asterism.json", | 343 | "filename": "presets/textgen/Asterism.json", |
| 324 | "type": "textgen_preset" | 344 | "type": "textgen_preset" |
| 325 | }, | 345 | }, |
| @@ -468,10 +488,6 @@ | |||
| 468 | "type": "context" | 488 | "type": "context" |
| 469 | }, | 489 | }, |
| 470 | { | 490 | { |
| 471 | "filename": "presets/context/Alpaca-Roleplay.json", | ||
| 472 | "type": "context" | ||
| 473 | }, | ||
| 474 | { | ||
| 475 | "filename": "presets/context/Alpaca-Single-Turn.json", | 491 | "filename": "presets/context/Alpaca-Single-Turn.json", |
| 476 | "type": "context" | 492 | "type": "context" |
| 477 | }, | 493 | }, |
| @@ -512,10 +528,6 @@ | |||
| 512 | "type": "context" | 528 | "type": "context" |
| 513 | }, | 529 | }, |
| 514 | { | 530 | { |
| 515 | "filename": "presets/context/Mistral.json", | ||
| 516 | "type": "context" | ||
| 517 | }, | ||
| 518 | { | ||
| 519 | "filename": "presets/context/NovelAI.json", | 531 | "filename": "presets/context/NovelAI.json", |
| 520 | "type": "context" | 532 | "type": "context" |
| 521 | }, | 533 | }, |
| @@ -556,10 +568,6 @@ | |||
| 556 | "type": "instruct" | 568 | "type": "instruct" |
| 557 | }, | 569 | }, |
| 558 | { | 570 | { |
| 559 | "filename": "presets/instruct/Alpaca-Roleplay.json", | ||
| 560 | "type": "instruct" | ||
| 561 | }, | ||
| 562 | { | ||
| 563 | "filename": "presets/instruct/Alpaca-Single-Turn.json", | 571 | "filename": "presets/instruct/Alpaca-Single-Turn.json", |
| 564 | "type": "instruct" | 572 | "type": "instruct" |
| 565 | }, | 573 | }, |
| @@ -600,10 +608,6 @@ | |||
| 600 | "type": "instruct" | 608 | "type": "instruct" |
| 601 | }, | 609 | }, |
| 602 | { | 610 | { |
| 603 | "filename": "presets/instruct/Mistral.json", | ||
| 604 | "type": "instruct" | ||
| 605 | }, | ||
| 606 | { | ||
| 607 | "filename": "presets/instruct/OpenOrca-OpenChat.json", | 611 | "filename": "presets/instruct/OpenOrca-OpenChat.json", |
| 608 | "type": "instruct" | 612 | "type": "instruct" |
| 609 | }, | 613 | }, |
| @@ -686,5 +690,77 @@ | |||
| 686 | { | 690 | { |
| 687 | "filename": "presets/instruct/Gemma 2.json", | 691 | "filename": "presets/instruct/Gemma 2.json", |
| 688 | "type": "instruct" | 692 | "type": "instruct" |
| 693 | }, | ||
| 694 | { | ||
| 695 | "filename": "presets/sysprompt/Actor.json", | ||
| 696 | "type": "sysprompt" | ||
| 697 | }, | ||
| 698 | { | ||
| 699 | "filename": "presets/sysprompt/Assistant - Expert.json", | ||
| 700 | "type": "sysprompt" | ||
| 701 | }, | ||
| 702 | { | ||
| 703 | "filename": "presets/sysprompt/Assistant - Simple.json", | ||
| 704 | "type": "sysprompt" | ||
| 705 | }, | ||
| 706 | { | ||
| 707 | "filename": "presets/sysprompt/Chain of Thought.json", | ||
| 708 | "type": "sysprompt" | ||
| 709 | }, | ||
| 710 | { | ||
| 711 | "filename": "presets/sysprompt/Roleplay - Detailed.json", | ||
| 712 | "type": "sysprompt" | ||
| 713 | }, | ||
| 714 | { | ||
| 715 | "filename": "presets/sysprompt/Roleplay - Immersive.json", | ||
| 716 | "type": "sysprompt" | ||
| 717 | }, | ||
| 718 | { | ||
| 719 | "filename": "presets/sysprompt/Roleplay - Simple.json", | ||
| 720 | "type": "sysprompt" | ||
| 721 | }, | ||
| 722 | { | ||
| 723 | "filename": "presets/sysprompt/Text Adventure.json", | ||
| 724 | "type": "sysprompt" | ||
| 725 | }, | ||
| 726 | { | ||
| 727 | "filename": "presets/sysprompt/Writer - Creative.json", | ||
| 728 | "type": "sysprompt" | ||
| 729 | }, | ||
| 730 | { | ||
| 731 | "filename": "presets/sysprompt/Writer - Realistic.json", | ||
| 732 | "type": "sysprompt" | ||
| 733 | }, | ||
| 734 | { | ||
| 735 | "filename": "presets/sysprompt/Blank.json", | ||
| 736 | "type": "sysprompt" | ||
| 737 | }, | ||
| 738 | { | ||
| 739 | "filename": "presets/sysprompt/Neutral - Chat.json", | ||
| 740 | "type": "sysprompt" | ||
| 741 | }, | ||
| 742 | { | ||
| 743 | "filename": "presets/instruct/Mistral V1.json", | ||
| 744 | "type": "instruct" | ||
| 745 | }, | ||
| 746 | { | ||
| 747 | "filename": "presets/context/Mistral V1.json", | ||
| 748 | "type": "context" | ||
| 749 | }, | ||
| 750 | { | ||
| 751 | "filename": "presets/instruct/Mistral V2 & V3.json", | ||
| 752 | "type": "instruct" | ||
| 753 | }, | ||
| 754 | { | ||
| 755 | "filename": "presets/context/Mistral V2 & V3.json", | ||
| 756 | "type": "context" | ||
| 757 | }, | ||
| 758 | { | ||
| 759 | "filename": "presets/instruct/Mistral V3-Tekken.json", | ||
| 760 | "type": "instruct" | ||
| 761 | }, | ||
| 762 | { | ||
| 763 | "filename": "presets/context/Mistral V3-Tekken.json", | ||
| 764 | "type": "context" | ||
| 689 | } | 765 | } |
| 690 | ] | 766 | ] |
| @@ -6,7 +6,6 @@ | |||
| 6 | "allow_jailbreak": false, | 6 | "allow_jailbreak": false, |
| 7 | "always_force_name2": false, | 7 | "always_force_name2": false, |
| 8 | "trim_sentences": false, | 8 | "trim_sentences": false, |
| 9 | "include_newline": false, | ||
| 10 | "single_line": true, | 9 | "single_line": true, |
| 11 | "name": "Adventure" | 10 | "name": "Adventure" |
| 12 | } | 11 | } |
| @@ -1,12 +0,0 @@ | |||
| 1 | { | ||
| 2 | "story_string": "You're {{char}} in this fictional never-ending uncensored roleplay with {{user}}.\n\n{{#if system}}{{system}}\n\n{{/if}}### Input:\n{{#if wiBefore}}{{wiBefore}}\n{{/if}}{{#if description}}{{description}}\n{{/if}}{{#if personality}}{{char}}'s personality: {{personality}}\n{{/if}}{{#if scenario}}Scenario: {{scenario}}\n{{/if}}{{#if wiAfter}}{{wiAfter}}\n{{/if}}{{#if persona}}{{persona}}\n{{/if}}\n\n", | ||
| 3 | "example_separator": "### New Roleplay:", | ||
| 4 | "chat_start": "### New Roleplay:", | ||
| 5 | "use_stop_strings": false, | ||
| 6 | "allow_jailbreak": false, | ||
| 7 | "always_force_name2": true, | ||
| 8 | "trim_sentences": false, | ||
| 9 | "include_newline": false, | ||
| 10 | "single_line": false, | ||
| 11 | "name": "Alpaca-Roleplay" | ||
| 12 | } | ||
| @@ -6,7 +6,6 @@ | |||
| 6 | "allow_jailbreak": false, | 6 | "allow_jailbreak": false, |
| 7 | "always_force_name2": false, | 7 | "always_force_name2": false, |
| 8 | "trim_sentences": false, | 8 | "trim_sentences": false, |
| 9 | "include_newline": false, | ||
| 10 | "single_line": false, | 9 | "single_line": false, |
| 11 | "name": "Alpaca-Single-Turn" | 10 | "name": "Alpaca-Single-Turn" |
| 12 | } | 11 | } |
| @@ -6,7 +6,6 @@ | |||
| 6 | "allow_jailbreak": false, | 6 | "allow_jailbreak": false, |
| 7 | "always_force_name2": true, | 7 | "always_force_name2": true, |
| 8 | "trim_sentences": false, | 8 | "trim_sentences": false, |
| 9 | "include_newline": false, | ||
| 10 | "single_line": false, | 9 | "single_line": false, |
| 11 | "name": "Alpaca" | 10 | "name": "Alpaca" |
| 12 | } | 11 | } |
| @@ -6,7 +6,6 @@ | |||
| 6 | "allow_jailbreak": false, | 6 | "allow_jailbreak": false, |
| 7 | "always_force_name2": true, | 7 | "always_force_name2": true, |
| 8 | "trim_sentences": false, | 8 | "trim_sentences": false, |
| 9 | "include_newline": false, | ||
| 10 | "single_line": false, | 9 | "single_line": false, |
| 11 | "name": "ChatML-Names" | 10 | "name": "ChatML-Names" |
| 12 | } | 11 | } |
| @@ -6,7 +6,6 @@ | |||
| 6 | "allow_jailbreak": false, | 6 | "allow_jailbreak": false, |
| 7 | "always_force_name2": true, | 7 | "always_force_name2": true, |
| 8 | "trim_sentences": false, | 8 | "trim_sentences": false, |
| 9 | "include_newline": false, | ||
| 10 | "single_line": false, | 9 | "single_line": false, |
| 11 | "name": "ChatML" | 10 | "name": "ChatML" |
| 12 | } | 11 | } |
| @@ -6,7 +6,6 @@ | |||
| 6 | "allow_jailbreak": false, | 6 | "allow_jailbreak": false, |
| 7 | "always_force_name2": true, | 7 | "always_force_name2": true, |
| 8 | "trim_sentences": false, | 8 | "trim_sentences": false, |
| 9 | "include_newline": false, | ||
| 10 | "single_line": false, | 9 | "single_line": false, |
| 11 | "name": "Command R" | 10 | "name": "Command R" |
| 12 | } | 11 | } |
| @@ -6,7 +6,6 @@ | |||
| 6 | "allow_jailbreak": false, | 6 | "allow_jailbreak": false, |
| 7 | "always_force_name2": true, | 7 | "always_force_name2": true, |
| 8 | "trim_sentences": false, | 8 | "trim_sentences": false, |
| 9 | "include_newline": false, | ||
| 10 | "single_line": false, | 9 | "single_line": false, |
| 11 | "name": "Default" | 10 | "name": "Default" |
| 12 | } | 11 | } |
| @@ -6,7 +6,6 @@ | |||
| 6 | "allow_jailbreak": false, | 6 | "allow_jailbreak": false, |
| 7 | "always_force_name2": false, | 7 | "always_force_name2": false, |
| 8 | "trim_sentences": true, | 8 | "trim_sentences": true, |
| 9 | "include_newline": false, | ||
| 10 | "single_line": false, | 9 | "single_line": false, |
| 11 | "name": "DreamGen Role-Play V1 ChatML" | 10 | "name": "DreamGen Role-Play V1 ChatML" |
| 12 | } | 11 | } |
| @@ -6,7 +6,6 @@ | |||
| 6 | "allow_jailbreak": false, | 6 | "allow_jailbreak": false, |
| 7 | "always_force_name2": false, | 7 | "always_force_name2": false, |
| 8 | "trim_sentences": true, | 8 | "trim_sentences": true, |
| 9 | "include_newline": false, | ||
| 10 | "single_line": false, | 9 | "single_line": false, |
| 11 | "name": "DreamGen Role-Play V1 Llama3" | 10 | "name": "DreamGen Role-Play V1 Llama3" |
| 12 | } | 11 | } |
| @@ -6,7 +6,6 @@ | |||
| 6 | "allow_jailbreak": false, | 6 | "allow_jailbreak": false, |
| 7 | "always_force_name2": true, | 7 | "always_force_name2": true, |
| 8 | "trim_sentences": false, | 8 | "trim_sentences": false, |
| 9 | "include_newline": false, | ||
| 10 | "single_line": false, | 9 | "single_line": false, |
| 11 | "name": "Gemma 2" | 10 | "name": "Gemma 2" |
| 12 | } | 11 | } |
| @@ -1,12 +1,11 @@ | |||
| 1 | { | 1 | { |
| 2 | "story_string": "### Instruction:\nWrite {{char}}'s next reply in this roleplay with {{user}}. Use the provided character sheet and example dialogue for formatting direction and character speech patterns.\n\n{{#if system}}{{system}}\n\n{{/if}}### Character Sheet:\n{{#if wiBefore}}{{wiBefore}}\n{{/if}}{{#if description}}{{description}}\n{{/if}}{{#if personality}}{{char}}'s personality: {{personality}}\n{{/if}}{{#if scenario}}Scenario: {{scenario}}\n{{/if}}{{#if wiAfter}}{{wiAfter}}\n{{/if}}{{#if persona}}{{persona}}\n{{/if}}", | 2 | "story_string": "### Instruction:\n{{#if system}}{{system}}\n\n{{/if}}### Character Sheet:\n{{#if wiBefore}}{{wiBefore}}\n{{/if}}{{#if description}}{{description}}\n{{/if}}{{#if personality}}{{char}}'s personality: {{personality}}\n{{/if}}{{#if scenario}}Scenario: {{scenario}}\n{{/if}}{{#if wiAfter}}{{wiAfter}}\n{{/if}}{{#if persona}}{{persona}}\n{{/if}}", |
| 3 | "example_separator": "### Example:", | 3 | "example_separator": "### Example:", |
| 4 | "chat_start": "### START ROLEPLAY:", | 4 | "chat_start": "### START ROLEPLAY:", |
| 5 | "use_stop_strings": false, | 5 | "use_stop_strings": false, |
| 6 | "allow_jailbreak": false, | 6 | "allow_jailbreak": false, |
| 7 | "always_force_name2": true, | 7 | "always_force_name2": true, |
| 8 | "trim_sentences": false, | 8 | "trim_sentences": false, |
| 9 | "include_newline": false, | ||
| 10 | "single_line": false, | 9 | "single_line": false, |
| 11 | "name": "Libra-32B" | 10 | "name": "Libra-32B" |
| 12 | } | 11 | } |
| @@ -6,7 +6,6 @@ | |||
| 6 | "allow_jailbreak": false, | 6 | "allow_jailbreak": false, |
| 7 | "always_force_name2": true, | 7 | "always_force_name2": true, |
| 8 | "trim_sentences": false, | 8 | "trim_sentences": false, |
| 9 | "include_newline": false, | ||
| 10 | "single_line": false, | 9 | "single_line": false, |
| 11 | "name": "Lightning 1.1" | 10 | "name": "Lightning 1.1" |
| 12 | } | 11 | } |
| @@ -6,7 +6,6 @@ | |||
| 6 | "allow_jailbreak": false, | 6 | "allow_jailbreak": false, |
| 7 | "always_force_name2": true, | 7 | "always_force_name2": true, |
| 8 | "trim_sentences": false, | 8 | "trim_sentences": false, |
| 9 | "include_newline": false, | ||
| 10 | "single_line": false, | 9 | "single_line": false, |
| 11 | "name": "Llama 2 Chat" | 10 | "name": "Llama 2 Chat" |
| 12 | } | 11 | } |
| @@ -6,7 +6,6 @@ | |||
| 6 | "allow_jailbreak": false, | 6 | "allow_jailbreak": false, |
| 7 | "always_force_name2": true, | 7 | "always_force_name2": true, |
| 8 | "trim_sentences": false, | 8 | "trim_sentences": false, |
| 9 | "include_newline": false, | ||
| 10 | "single_line": false, | 9 | "single_line": false, |
| 11 | "name": "Llama 3 Instruct" | 10 | "name": "Llama 3 Instruct" |
| 12 | } | 11 | } |
| @@ -6,7 +6,6 @@ | |||
| 6 | "allow_jailbreak": false, | 6 | "allow_jailbreak": false, |
| 7 | "always_force_name2": true, | 7 | "always_force_name2": true, |
| 8 | "trim_sentences": false, | 8 | "trim_sentences": false, |
| 9 | "include_newline": false, | ||
| 10 | "single_line": false, | 9 | "single_line": false, |
| 11 | "name": "Llama-3-Instruct-Names" | 10 | "name": "Llama-3-Instruct-Names" |
| 12 | } | 11 | } |
| @@ -6,7 +6,6 @@ | |||
| 6 | "allow_jailbreak": false, | 6 | "allow_jailbreak": false, |
| 7 | "always_force_name2": true, | 7 | "always_force_name2": true, |
| 8 | "trim_sentences": false, | 8 | "trim_sentences": false, |
| 9 | "include_newline": false, | ||
| 10 | "single_line": false, | 9 | "single_line": false, |
| 11 | "name": "Minimalist" | 10 | "name": "Minimalist" |
| 12 | } | 11 | } |
| @@ -0,0 +1,11 @@ | |||
| 1 | { | ||
| 2 | "story_string": " [INST] {{#if system}}{{system}}\n{{/if}}{{#if wiBefore}}{{wiBefore}}\n{{/if}}{{#if description}}{{description}}\n{{/if}}{{#if personality}}{{personality}}\n{{/if}}{{#if scenario}}{{scenario}}\n{{/if}}{{#if wiAfter}}{{wiAfter}}\n{{/if}}{{#if persona}}{{persona}}\n{{/if}}{{trim}} [/INST] Understood.</s>", | ||
| 3 | "example_separator": "", | ||
| 4 | "chat_start": "", | ||
| 5 | "use_stop_strings": false, | ||
| 6 | "allow_jailbreak": false, | ||
| 7 | "always_force_name2": true, | ||
| 8 | "trim_sentences": false, | ||
| 9 | "single_line": false, | ||
| 10 | "name": "Mistral V1" | ||
| 11 | } | ||
| @@ -1,12 +1,11 @@ | |||
| 1 | { | 1 | { |
| 2 | "story_string": "[INST] {{#if system}}{{system}}\n{{/if}}{{#if wiBefore}}{{wiBefore}}\n{{/if}}{{#if description}}{{description}}\n{{/if}}{{#if personality}}{{char}}'s personality: {{personality}}\n{{/if}}{{#if scenario}}Scenario: {{scenario}}\n{{/if}}{{#if wiAfter}}{{wiAfter}}\n{{/if}}{{#if persona}}{{persona}}\n{{/if}}{{trim}} [/INST]", | 2 | "story_string": "[INST] {{#if system}}{{system}}\n{{/if}}{{#if wiBefore}}{{wiBefore}}\n{{/if}}{{#if description}}{{description}}\n{{/if}}{{#if personality}}{{personality}}\n{{/if}}{{#if scenario}}{{scenario}}\n{{/if}}{{#if wiAfter}}{{wiAfter}}\n{{/if}}{{#if persona}}{{persona}}\n{{/if}}{{trim}}[/INST] Understood.</s>", |
| 3 | "example_separator": "Examples:", | 3 | "example_separator": "", |
| 4 | "chat_start": "", | 4 | "chat_start": "", |
| 5 | "use_stop_strings": false, | 5 | "use_stop_strings": false, |
| 6 | "allow_jailbreak": false, | 6 | "allow_jailbreak": false, |
| 7 | "always_force_name2": true, | 7 | "always_force_name2": true, |
| 8 | "trim_sentences": false, | 8 | "trim_sentences": false, |
| 9 | "include_newline": false, | ||
| 10 | "single_line": false, | 9 | "single_line": false, |
| 11 | "name": "Mistral" | 10 | "name": "Mistral V2 & V3" |
| 12 | } | 11 | } |
| @@ -0,0 +1,11 @@ | |||
| 1 | { | ||
| 2 | "story_string": "[INST]{{#if system}}{{system}}\n{{/if}}{{#if wiBefore}}{{wiBefore}}\n{{/if}}{{#if description}}{{description}}\n{{/if}}{{#if personality}}{{personality}}\n{{/if}}{{#if scenario}}{{scenario}}\n{{/if}}{{#if wiAfter}}{{wiAfter}}\n{{/if}}{{#if persona}}{{persona}}\n{{/if}}{{trim}}[/INST]Understood.</s>", | ||
| 3 | "example_separator": "", | ||
| 4 | "chat_start": "", | ||
| 5 | "use_stop_strings": false, | ||
| 6 | "allow_jailbreak": false, | ||
| 7 | "always_force_name2": true, | ||
| 8 | "trim_sentences": false, | ||
| 9 | "single_line": false, | ||
| 10 | "name": "Mistral V3-Tekken" | ||
| 11 | } | ||
| @@ -6,7 +6,6 @@ | |||
| 6 | "allow_jailbreak": false, | 6 | "allow_jailbreak": false, |
| 7 | "always_force_name2": true, | 7 | "always_force_name2": true, |
| 8 | "trim_sentences": false, | 8 | "trim_sentences": false, |
| 9 | "include_newline": false, | ||
| 10 | "single_line": false, | 9 | "single_line": false, |
| 11 | "name": "NovelAI" | 10 | "name": "NovelAI" |
| 12 | } | 11 | } |
| @@ -6,7 +6,6 @@ | |||
| 6 | "allow_jailbreak": false, | 6 | "allow_jailbreak": false, |
| 7 | "always_force_name2": true, | 7 | "always_force_name2": true, |
| 8 | "trim_sentences": false, | 8 | "trim_sentences": false, |
| 9 | "include_newline": false, | ||
| 10 | "single_line": false, | 9 | "single_line": false, |
| 11 | "name": "OldDefault" | 10 | "name": "OldDefault" |
| 12 | } | 11 | } |
| @@ -6,7 +6,6 @@ | |||
| 6 | "allow_jailbreak": false, | 6 | "allow_jailbreak": false, |
| 7 | "always_force_name2": true, | 7 | "always_force_name2": true, |
| 8 | "trim_sentences": false, | 8 | "trim_sentences": false, |
| 9 | "include_newline": false, | ||
| 10 | "single_line": false, | 9 | "single_line": false, |
| 11 | "name": "Phi" | 10 | "name": "Phi" |
| 12 | } | 11 | } |
| @@ -6,7 +6,6 @@ | |||
| 6 | "allow_jailbreak": false, | 6 | "allow_jailbreak": false, |
| 7 | "always_force_name2": true, | 7 | "always_force_name2": true, |
| 8 | "trim_sentences": false, | 8 | "trim_sentences": false, |
| 9 | "include_newline": false, | ||
| 10 | "single_line": false, | 9 | "single_line": false, |
| 11 | "name": "Pygmalion" | 10 | "name": "Pygmalion" |
| 12 | } | 11 | } |
| @@ -6,7 +6,6 @@ | |||
| 6 | "allow_jailbreak": false, | 6 | "allow_jailbreak": false, |
| 7 | "always_force_name2": true, | 7 | "always_force_name2": true, |
| 8 | "trim_sentences": false, | 8 | "trim_sentences": false, |
| 9 | "include_newline": false, | ||
| 10 | "single_line": false, | 9 | "single_line": false, |
| 11 | "name": "Story" | 10 | "name": "Story" |
| 12 | } | 11 | } |
| @@ -6,7 +6,6 @@ | |||
| 6 | "allow_jailbreak": false, | 6 | "allow_jailbreak": false, |
| 7 | "always_force_name2": true, | 7 | "always_force_name2": true, |
| 8 | "trim_sentences": false, | 8 | "trim_sentences": false, |
| 9 | "include_newline": false, | ||
| 10 | "single_line": false, | 9 | "single_line": false, |
| 11 | "name": "Synthia" | 10 | "name": "Synthia" |
| 12 | } | 11 | } |
| @@ -6,7 +6,6 @@ | |||
| 6 | "allow_jailbreak": false, | 6 | "allow_jailbreak": false, |
| 7 | "always_force_name2": true, | 7 | "always_force_name2": true, |
| 8 | "trim_sentences": false, | 8 | "trim_sentences": false, |
| 9 | "include_newline": false, | ||
| 10 | "single_line": false, | 9 | "single_line": false, |
| 11 | "name": "simple-proxy-for-tavern" | 10 | "name": "simple-proxy-for-tavern" |
| 12 | } | 11 | } |
| @@ -1,5 +1,4 @@ | |||
| 1 | { | 1 | { |
| 2 | "system_prompt": "[Enter Adventure Mode. Narrate the story based on {{user}}'s dialogue and actions after \">\". Describe the surroundings in vivid detail. Be detailed, creative, verbose, and proactive. Move the story forward by introducing fantasy elements and interesting characters.]", | ||
| 3 | "input_sequence": "", | 2 | "input_sequence": "", |
| 4 | "output_sequence": "", | 3 | "output_sequence": "", |
| 5 | "last_output_sequence": "", | 4 | "last_output_sequence": "", |
| @@ -7,8 +6,7 @@ | |||
| 7 | "stop_sequence": "", | 6 | "stop_sequence": "", |
| 8 | "wrap": true, | 7 | "wrap": true, |
| 9 | "macro": true, | 8 | "macro": true, |
| 10 | "names": false, | 9 | "names_behavior": "none", |
| 11 | "names_force_groups": false, | ||
| 12 | "activation_regex": "", | 10 | "activation_regex": "", |
| 13 | "system_sequence_prefix": "", | 11 | "system_sequence_prefix": "", |
| 14 | "system_sequence_suffix": "", | 12 | "system_sequence_suffix": "", |
| @@ -1,24 +0,0 @@ | |||
| 1 | { | ||
| 2 | "system_prompt": "Develop the plot slowly, always stay in character. Describe all actions in full, elaborate, explicit, graphic, and vivid detail. Mention all relevant sensory perceptions.", | ||
| 3 | "input_sequence": "### Instruction:", | ||
| 4 | "output_sequence": "### Response:", | ||
| 5 | "last_output_sequence": "### Response (2 paragraphs, engaging, natural, authentic, descriptive, creative):", | ||
| 6 | "system_sequence": "### Input:", | ||
| 7 | "stop_sequence": "", | ||
| 8 | "wrap": true, | ||
| 9 | "macro": true, | ||
| 10 | "names": true, | ||
| 11 | "names_force_groups": true, | ||
| 12 | "activation_regex": "", | ||
| 13 | "system_sequence_prefix": "", | ||
| 14 | "system_sequence_suffix": "", | ||
| 15 | "first_output_sequence": "", | ||
| 16 | "skip_examples": false, | ||
| 17 | "output_suffix": "\n\n", | ||
| 18 | "input_suffix": "\n\n", | ||
| 19 | "system_suffix": "\n\n", | ||
| 20 | "user_alignment_message": "", | ||
| 21 | "system_same_as_user": false, | ||
| 22 | "last_system_sequence": "", | ||
| 23 | "name": "Alpaca-Roleplay" | ||
| 24 | } | ||
| @@ -1,5 +1,4 @@ | |||
| 1 | { | 1 | { |
| 2 | "system_prompt": "Write {{char}}'s next reply in a fictional roleplay chat between {{user}} and {{char}}.\nWrite 1 reply only, italicize actions, and avoid quotation marks. Use markdown. Be proactive, creative, and drive the plot and conversation forward. Include dialog as well as narration.", | ||
| 3 | "input_sequence": "", | 2 | "input_sequence": "", |
| 4 | "output_sequence": "", | 3 | "output_sequence": "", |
| 5 | "last_output_sequence": "\n### Response:", | 4 | "last_output_sequence": "\n### Response:", |
| @@ -7,12 +6,11 @@ | |||
| 7 | "stop_sequence": "", | 6 | "stop_sequence": "", |
| 8 | "wrap": true, | 7 | "wrap": true, |
| 9 | "macro": true, | 8 | "macro": true, |
| 10 | "names": false, | 9 | "names_behavior": "force", |
| 11 | "names_force_groups": true, | ||
| 12 | "activation_regex": "", | 10 | "activation_regex": "", |
| 13 | "system_sequence_prefix": "", | 11 | "system_sequence_prefix": "", |
| 14 | "system_sequence_suffix": "", | 12 | "system_sequence_suffix": "", |
| 15 | "first_output_sequence": "<START OF ROLEPLAY>", | 13 | "first_output_sequence": "<START OF CHAT>", |
| 16 | "skip_examples": false, | 14 | "skip_examples": false, |
| 17 | "output_suffix": "", | 15 | "output_suffix": "", |
| 18 | "input_suffix": "", | 16 | "input_suffix": "", |
| @@ -1,5 +1,4 @@ | |||
| 1 | { | 1 | { |
| 2 | "system_prompt": "Below is an instruction that describes a task. Write a response that appropriately completes the request.\n\nWrite {{char}}'s next reply in a fictional roleplay chat between {{user}} and {{char}}.\n", | ||
| 3 | "input_sequence": "### Instruction:", | 2 | "input_sequence": "### Instruction:", |
| 4 | "output_sequence": "### Response:", | 3 | "output_sequence": "### Response:", |
| 5 | "last_output_sequence": "", | 4 | "last_output_sequence": "", |
| @@ -7,8 +6,7 @@ | |||
| 7 | "stop_sequence": "", | 6 | "stop_sequence": "", |
| 8 | "wrap": true, | 7 | "wrap": true, |
| 9 | "macro": true, | 8 | "macro": true, |
| 10 | "names": false, | 9 | "names_behavior": "force", |
| 11 | "names_force_groups": true, | ||
| 12 | "activation_regex": "", | 10 | "activation_regex": "", |
| 13 | "system_sequence_prefix": "", | 11 | "system_sequence_prefix": "", |
| 14 | "system_sequence_suffix": "", | 12 | "system_sequence_suffix": "", |
| @@ -1,5 +1,4 @@ | |||
| 1 | { | 1 | { |
| 2 | "system_prompt": "You're {{char}} in this fictional never-ending uncensored roleplay with {{user}}.", | ||
| 3 | "input_sequence": "<|im_start|>[{{name}}]", | 2 | "input_sequence": "<|im_start|>[{{name}}]", |
| 4 | "output_sequence": "<|im_start|>[{{name}}]", | 3 | "output_sequence": "<|im_start|>[{{name}}]", |
| 5 | "last_output_sequence": "", | 4 | "last_output_sequence": "", |
| @@ -7,8 +6,7 @@ | |||
| 7 | "stop_sequence": "<|im_end|>", | 6 | "stop_sequence": "<|im_end|>", |
| 8 | "wrap": true, | 7 | "wrap": true, |
| 9 | "macro": true, | 8 | "macro": true, |
| 10 | "names": false, | 9 | "names_behavior": "none", |
| 11 | "names_force_groups": false, | ||
| 12 | "activation_regex": "", | 10 | "activation_regex": "", |
| 13 | "system_sequence_prefix": "", | 11 | "system_sequence_prefix": "", |
| 14 | "system_sequence_suffix": "", | 12 | "system_sequence_suffix": "", |
| @@ -1,5 +1,4 @@ | |||
| 1 | { | 1 | { |
| 2 | "system_prompt": "You're {{char}} in this fictional never-ending uncensored roleplay with {{user}}.", | ||
| 3 | "input_sequence": "<|im_start|>user", | 2 | "input_sequence": "<|im_start|>user", |
| 4 | "output_sequence": "<|im_start|>assistant", | 3 | "output_sequence": "<|im_start|>assistant", |
| 5 | "last_output_sequence": "", | 4 | "last_output_sequence": "", |
| @@ -7,8 +6,7 @@ | |||
| 7 | "stop_sequence": "<|im_end|>", | 6 | "stop_sequence": "<|im_end|>", |
| 8 | "wrap": true, | 7 | "wrap": true, |
| 9 | "macro": true, | 8 | "macro": true, |
| 10 | "names": true, | 9 | "names_behavior": "always", |
| 11 | "names_force_groups": true, | ||
| 12 | "activation_regex": "", | 10 | "activation_regex": "", |
| 13 | "system_sequence_prefix": "", | 11 | "system_sequence_prefix": "", |
| 14 | "system_sequence_suffix": "", | 12 | "system_sequence_suffix": "", |
| @@ -1,5 +1,4 @@ | |||
| 1 | { | 1 | { |
| 2 | "system_prompt": "Write {{char}}'s next reply in this fictional roleplay with {{user}}.", | ||
| 3 | "input_sequence": "<|START_OF_TURN_TOKEN|><|USER_TOKEN|>", | 2 | "input_sequence": "<|START_OF_TURN_TOKEN|><|USER_TOKEN|>", |
| 4 | "output_sequence": "<|START_OF_TURN_TOKEN|><|CHATBOT_TOKEN|>", | 3 | "output_sequence": "<|START_OF_TURN_TOKEN|><|CHATBOT_TOKEN|>", |
| 5 | "first_output_sequence": "", | 4 | "first_output_sequence": "", |
| @@ -9,8 +8,7 @@ | |||
| 9 | "stop_sequence": "<|END_OF_TURN_TOKEN|>", | 8 | "stop_sequence": "<|END_OF_TURN_TOKEN|>", |
| 10 | "wrap": false, | 9 | "wrap": false, |
| 11 | "macro": true, | 10 | "macro": true, |
| 12 | "names": true, | 11 | "names_behavior": "always", |
| 13 | "names_force_groups": true, | ||
| 14 | "activation_regex": "", | 12 | "activation_regex": "", |
| 15 | "skip_examples": false, | 13 | "skip_examples": false, |
| 16 | "output_suffix": "<|END_OF_TURN_TOKEN|>", | 14 | "output_suffix": "<|END_OF_TURN_TOKEN|>", |
| @@ -1,5 +1,4 @@ | |||
| 1 | { | 1 | { |
| 2 | "system_prompt": "You are an intelligent, skilled, versatile writer.\n\nYour task is to write a role-play based on the information below.", | ||
| 3 | "input_sequence": "\n<|im_start|>text names= {{name}}\n", | 2 | "input_sequence": "\n<|im_start|>text names= {{name}}\n", |
| 4 | "output_sequence": "\n<|im_start|>text names= {{name}}\n", | 3 | "output_sequence": "\n<|im_start|>text names= {{name}}\n", |
| 5 | "last_output_sequence": "", | 4 | "last_output_sequence": "", |
| @@ -7,8 +6,7 @@ | |||
| 7 | "stop_sequence": "\n<|im_start|>", | 6 | "stop_sequence": "\n<|im_start|>", |
| 8 | "wrap": false, | 7 | "wrap": false, |
| 9 | "macro": true, | 8 | "macro": true, |
| 10 | "names": false, | 9 | "names_behavior": "none", |
| 11 | "names_force_groups": false, | ||
| 12 | "activation_regex": "", | 10 | "activation_regex": "", |
| 13 | "system_sequence_prefix": "", | 11 | "system_sequence_prefix": "", |
| 14 | "system_sequence_suffix": "", | 12 | "system_sequence_suffix": "", |
| @@ -1,5 +1,4 @@ | |||
| 1 | { | 1 | { |
| 2 | "system_prompt": "You are an intelligent, skilled, versatile writer.\n\nYour task is to write a role-play based on the information below.", | ||
| 3 | "input_sequence": "<|eot_id|>\n<|start_header_id|>writer character: {{user}}<|end_header_id|>\n\n", | 2 | "input_sequence": "<|eot_id|>\n<|start_header_id|>writer character: {{user}}<|end_header_id|>\n\n", |
| 4 | "output_sequence": "<|eot_id|>\n<|start_header_id|>writer character: {{char}}<|end_header_id|>\n\n", | 3 | "output_sequence": "<|eot_id|>\n<|start_header_id|>writer character: {{char}}<|end_header_id|>\n\n", |
| 5 | "first_output_sequence": "", | 4 | "first_output_sequence": "", |
| @@ -10,8 +9,7 @@ | |||
| 10 | "separator_sequence": "", | 9 | "separator_sequence": "", |
| 11 | "wrap": false, | 10 | "wrap": false, |
| 12 | "macro": true, | 11 | "macro": true, |
| 13 | "names": false, | 12 | "names_behavior": "none", |
| 14 | "names_force_groups": false, | ||
| 15 | "activation_regex": "", | 13 | "activation_regex": "", |
| 16 | "skip_examples": false, | 14 | "skip_examples": false, |
| 17 | "name": "DreamGen Role-Play V1 Llama3" | 15 | "name": "DreamGen Role-Play V1 Llama3" |
| @@ -1,5 +1,4 @@ | |||
| 1 | { | 1 | { |
| 2 | "system_prompt": "Continue writing this story and portray characters realistically.", | ||
| 3 | "input_sequence": "<start_of_turn>user", | 2 | "input_sequence": "<start_of_turn>user", |
| 4 | "output_sequence": "<start_of_turn>model", | 3 | "output_sequence": "<start_of_turn>model", |
| 5 | "last_output_sequence": "", | 4 | "last_output_sequence": "", |
| @@ -7,8 +6,7 @@ | |||
| 7 | "stop_sequence": "<end_of_turn>", | 6 | "stop_sequence": "<end_of_turn>", |
| 8 | "wrap": true, | 7 | "wrap": true, |
| 9 | "macro": true, | 8 | "macro": true, |
| 10 | "names": false, | 9 | "names_behavior": "none", |
| 11 | "names_force_groups": false, | ||
| 12 | "activation_regex": "", | 10 | "activation_regex": "", |
| 13 | "system_sequence_prefix": "", | 11 | "system_sequence_prefix": "", |
| 14 | "system_sequence_suffix": "", | 12 | "system_sequence_suffix": "", |
| @@ -1,5 +1,4 @@ | |||
| 1 | { | 1 | { |
| 2 | "system_prompt": "Write {{char}}'s next reply in a fictional roleplay chat between {{user}} and {{char}}.\n", | ||
| 3 | "input_sequence": "USER: ", | 2 | "input_sequence": "USER: ", |
| 4 | "output_sequence": "GPT: ", | 3 | "output_sequence": "GPT: ", |
| 5 | "last_output_sequence": "", | 4 | "last_output_sequence": "", |
| @@ -7,8 +6,7 @@ | |||
| 7 | "stop_sequence": "", | 6 | "stop_sequence": "", |
| 8 | "wrap": false, | 7 | "wrap": false, |
| 9 | "macro": true, | 8 | "macro": true, |
| 10 | "names": false, | 9 | "names_behavior": "force", |
| 11 | "names_force_groups": true, | ||
| 12 | "activation_regex": "", | 10 | "activation_regex": "", |
| 13 | "system_sequence_prefix": "BEGINNING OF CONVERSATION: ", | 11 | "system_sequence_prefix": "BEGINNING OF CONVERSATION: ", |
| 14 | "system_sequence_suffix": "", | 12 | "system_sequence_suffix": "", |
| @@ -1,5 +1,4 @@ | |||
| 1 | { | 1 | { |
| 2 | "system_prompt": "Avoid repetition, don't loop. Develop the plot slowly, always stay in character. Describe all actions in full, elaborate, explicit, graphic, and vivid detail. Mention all relevant sensory perceptions.", | ||
| 3 | "input_sequence": "", | 2 | "input_sequence": "", |
| 4 | "output_sequence": "", | 3 | "output_sequence": "", |
| 5 | "last_output_sequence": "\n### Response:", | 4 | "last_output_sequence": "\n### Response:", |
| @@ -7,8 +6,7 @@ | |||
| 7 | "stop_sequence": "", | 6 | "stop_sequence": "", |
| 8 | "wrap": true, | 7 | "wrap": true, |
| 9 | "macro": true, | 8 | "macro": true, |
| 10 | "names": true, | 9 | "names_behavior": "always", |
| 11 | "names_force_groups": true, | ||
| 12 | "activation_regex": "", | 10 | "activation_regex": "", |
| 13 | "system_sequence_prefix": "", | 11 | "system_sequence_prefix": "", |
| 14 | "system_sequence_suffix": "", | 12 | "system_sequence_suffix": "", |
| @@ -1,5 +1,4 @@ | |||
| 1 | { | 1 | { |
| 2 | "system_prompt": "Below is an instruction that describes a task. Write a response that appropriately completes the request.\n\n### Instruction:\nTake the role of {{char}} in a play that leaves a lasting impression on {{user}}. Write {{char}}'s next reply.\nNever skip or gloss over {{char}}’s actions. Progress the scene at a naturally slow pace.\n\n", | ||
| 3 | "input_sequence": "### Instruction:", | 2 | "input_sequence": "### Instruction:", |
| 4 | "output_sequence": "### Response: (length = unlimited)", | 3 | "output_sequence": "### Response: (length = unlimited)", |
| 5 | "last_output_sequence": "", | 4 | "last_output_sequence": "", |
| @@ -7,8 +6,7 @@ | |||
| 7 | "stop_sequence": "", | 6 | "stop_sequence": "", |
| 8 | "wrap": true, | 7 | "wrap": true, |
| 9 | "macro": true, | 8 | "macro": true, |
| 10 | "names": false, | 9 | "names_behavior": "force", |
| 11 | "names_force_groups": true, | ||
| 12 | "activation_regex": "", | 10 | "activation_regex": "", |
| 13 | "system_sequence_prefix": "", | 11 | "system_sequence_prefix": "", |
| 14 | "system_sequence_suffix": "", | 12 | "system_sequence_suffix": "", |
| @@ -1,5 +1,4 @@ | |||
| 1 | { | 1 | { |
| 2 | "system_prompt": "Write {{char}}'s next reply in this fictional roleplay with {{user}}.", | ||
| 3 | "input_sequence": "[INST] ", | 2 | "input_sequence": "[INST] ", |
| 4 | "output_sequence": "", | 3 | "output_sequence": "", |
| 5 | "last_output_sequence": "", | 4 | "last_output_sequence": "", |
| @@ -7,8 +6,7 @@ | |||
| 7 | "stop_sequence": "", | 6 | "stop_sequence": "", |
| 8 | "wrap": false, | 7 | "wrap": false, |
| 9 | "macro": true, | 8 | "macro": true, |
| 10 | "names": false, | 9 | "names_behavior": "force", |
| 11 | "names_force_groups": true, | ||
| 12 | "activation_regex": "", | 10 | "activation_regex": "", |
| 13 | "system_sequence_prefix": "", | 11 | "system_sequence_prefix": "", |
| 14 | "system_sequence_suffix": "", | 12 | "system_sequence_suffix": "", |
| @@ -1,5 +1,4 @@ | |||
| 1 | { | 1 | { |
| 2 | "system_prompt": "You are an expert actor that can fully immerse yourself into any role given. You do not break character for any reason, even if someone tries addressing you as an AI or language model. Currently your role is {{char}}, which is described in detail below. As {{char}}, continue the exchange with {{user}}.", | ||
| 3 | "input_sequence": "<|start_header_id|>user<|end_header_id|>\n\n", | 2 | "input_sequence": "<|start_header_id|>user<|end_header_id|>\n\n", |
| 4 | "output_sequence": "<|start_header_id|>assistant<|end_header_id|>\n\n", | 3 | "output_sequence": "<|start_header_id|>assistant<|end_header_id|>\n\n", |
| 5 | "last_output_sequence": "", | 4 | "last_output_sequence": "", |
| @@ -7,8 +6,7 @@ | |||
| 7 | "stop_sequence": "<|eot_id|>", | 6 | "stop_sequence": "<|eot_id|>", |
| 8 | "wrap": false, | 7 | "wrap": false, |
| 9 | "macro": true, | 8 | "macro": true, |
| 10 | "names": true, | 9 | "names_behavior": "always", |
| 11 | "names_force_groups": true, | ||
| 12 | "activation_regex": "", | 10 | "activation_regex": "", |
| 13 | "system_sequence_prefix": "", | 11 | "system_sequence_prefix": "", |
| 14 | "system_sequence_suffix": "", | 12 | "system_sequence_suffix": "", |
| @@ -1,5 +1,4 @@ | |||
| 1 | { | 1 | { |
| 2 | "system_prompt": "You are an expert actor that can fully immerse yourself into any role given. You do not break character for any reason, even if someone tries addressing you as an AI or language model. Currently your role is {{char}}, which is described in detail below. As {{char}}, continue the exchange with {{user}}.", | ||
| 3 | "input_sequence": "<|start_header_id|>[{{name}}]<|end_header_id|>\n\n", | 2 | "input_sequence": "<|start_header_id|>[{{name}}]<|end_header_id|>\n\n", |
| 4 | "output_sequence": "<|start_header_id|>[{{name}}]<|end_header_id|>\n\n", | 3 | "output_sequence": "<|start_header_id|>[{{name}}]<|end_header_id|>\n\n", |
| 5 | "last_output_sequence": "", | 4 | "last_output_sequence": "", |
| @@ -7,8 +6,7 @@ | |||
| 7 | "stop_sequence": "<|eot_id|>", | 6 | "stop_sequence": "<|eot_id|>", |
| 8 | "wrap": false, | 7 | "wrap": false, |
| 9 | "macro": true, | 8 | "macro": true, |
| 10 | "names": false, | 9 | "names_behavior": "none", |
| 11 | "names_force_groups": false, | ||
| 12 | "activation_regex": "", | 10 | "activation_regex": "", |
| 13 | "system_sequence_prefix": "", | 11 | "system_sequence_prefix": "", |
| 14 | "system_sequence_suffix": "", | 12 | "system_sequence_suffix": "", |
| @@ -1,5 +1,4 @@ | |||
| 1 | { | 1 | { |
| 2 | "system_prompt": "Enter roleplay mode. You must act as {{char}}, whose persona follows:", | ||
| 3 | "input_sequence": "<|user|>", | 2 | "input_sequence": "<|user|>", |
| 4 | "output_sequence": "<|model|>", | 3 | "output_sequence": "<|model|>", |
| 5 | "last_output_sequence": "", | 4 | "last_output_sequence": "", |
| @@ -7,8 +6,7 @@ | |||
| 7 | "stop_sequence": "</s>", | 6 | "stop_sequence": "</s>", |
| 8 | "wrap": false, | 7 | "wrap": false, |
| 9 | "macro": true, | 8 | "macro": true, |
| 10 | "names": false, | 9 | "names_behavior": "force", |
| 11 | "names_force_groups": true, | ||
| 12 | "activation_regex": "", | 10 | "activation_regex": "", |
| 13 | "system_sequence_prefix": "<|system|>", | 11 | "system_sequence_prefix": "<|system|>", |
| 14 | "system_sequence_suffix": "", | 12 | "system_sequence_suffix": "", |
| @@ -0,0 +1,22 @@ | |||
| 1 | { | ||
| 2 | "input_sequence": " [INST] ", | ||
| 3 | "output_sequence": " [/INST] ", | ||
| 4 | "last_output_sequence": " [/INST]", | ||
| 5 | "system_sequence": "", | ||
| 6 | "stop_sequence": "", | ||
| 7 | "wrap": false, | ||
| 8 | "macro": true, | ||
| 9 | "names_behavior": "always", | ||
| 10 | "activation_regex": "", | ||
| 11 | "system_sequence_prefix": "", | ||
| 12 | "system_sequence_suffix": "", | ||
| 13 | "first_output_sequence": "", | ||
| 14 | "skip_examples": false, | ||
| 15 | "output_suffix": "</s>", | ||
| 16 | "input_suffix": "", | ||
| 17 | "system_suffix": "", | ||
| 18 | "user_alignment_message": "Let's get started. Please respond based on the information and instructions provided above.", | ||
| 19 | "system_same_as_user": true, | ||
| 20 | "last_system_sequence": "", | ||
| 21 | "name": "Mistral V1" | ||
| 22 | } | ||
| @@ -1,24 +1,22 @@ | |||
| 1 | { | 1 | { |
| 2 | "system_prompt": "Write {{char}}'s next reply in this fictional roleplay with {{user}}.", | ||
| 3 | "input_sequence": "[INST] ", | 2 | "input_sequence": "[INST] ", |
| 4 | "output_sequence": "", | 3 | "output_sequence": "[/INST] ", |
| 5 | "last_output_sequence": "", | 4 | "last_output_sequence": "[/INST]", |
| 6 | "system_sequence": "", | 5 | "system_sequence": "", |
| 7 | "stop_sequence": "", | 6 | "stop_sequence": "", |
| 8 | "wrap": false, | 7 | "wrap": false, |
| 9 | "macro": true, | 8 | "macro": true, |
| 10 | "names": true, | 9 | "names_behavior": "always", |
| 11 | "names_force_groups": true, | ||
| 12 | "activation_regex": "", | 10 | "activation_regex": "", |
| 13 | "system_sequence_prefix": "", | 11 | "system_sequence_prefix": "", |
| 14 | "system_sequence_suffix": "", | 12 | "system_sequence_suffix": "", |
| 15 | "first_output_sequence": "", | 13 | "first_output_sequence": "", |
| 16 | "skip_examples": false, | 14 | "skip_examples": false, |
| 17 | "output_suffix": "\n", | 15 | "output_suffix": "</s>", |
| 18 | "input_suffix": " [/INST]\n", | 16 | "input_suffix": "", |
| 19 | "system_suffix": "", | 17 | "system_suffix": "", |
| 20 | "user_alignment_message": "Let's get started. Please respond based on the information and instructions provided above.", | 18 | "user_alignment_message": "Let's get started. Please respond based on the information and instructions provided above.", |
| 21 | "system_same_as_user": true, | 19 | "system_same_as_user": true, |
| 22 | "last_system_sequence": "", | 20 | "last_system_sequence": "", |
| 23 | "name": "Mistral" | 21 | "name": "Mistral V2 & V3" |
| 24 | } | 22 | } |
| @@ -0,0 +1,22 @@ | |||
| 1 | { | ||
| 2 | "input_sequence": "[INST]", | ||
| 3 | "output_sequence": "[/INST]", | ||
| 4 | "last_output_sequence": "", | ||
| 5 | "system_sequence": "", | ||
| 6 | "stop_sequence": "", | ||
| 7 | "wrap": false, | ||
| 8 | "macro": true, | ||
| 9 | "names_behavior": "always", | ||
| 10 | "activation_regex": "", | ||
| 11 | "system_sequence_prefix": "", | ||
| 12 | "system_sequence_suffix": "", | ||
| 13 | "first_output_sequence": "", | ||
| 14 | "skip_examples": false, | ||
| 15 | "output_suffix": "</s>", | ||
| 16 | "input_suffix": "", | ||
| 17 | "system_suffix": "", | ||
| 18 | "user_alignment_message": "Let's get started. Please respond based on the information and instructions provided above.", | ||
| 19 | "system_same_as_user": true, | ||
| 20 | "last_system_sequence": "", | ||
| 21 | "name": "Mistral V3-Tekken" | ||
| 22 | } | ||
| @@ -1,5 +1,4 @@ | |||
| 1 | { | 1 | { |
| 2 | "system_prompt": "You are a helpful assistant. Please answer truthfully and write out your thinking step by step to be sure you get the right answer. If you make a mistake or encounter an error in your thinking, say so out loud and attempt to correct it. If you don't know or aren't sure about something, say so clearly. You will act as a professional logician, mathematician, and physicist. You will also act as the most appropriate type of expert to answer any particular question or solve the relevant problem; state which expert type your are, if so. Also think of any particular named expert that would be ideal to answer the relevant question or solve the relevant problem; name and act as them, if appropriate.\n", | ||
| 3 | "input_sequence": "\nUser: ", | 2 | "input_sequence": "\nUser: ", |
| 4 | "output_sequence": "\nAssistant: ", | 3 | "output_sequence": "\nAssistant: ", |
| 5 | "last_output_sequence": "", | 4 | "last_output_sequence": "", |
| @@ -7,8 +6,7 @@ | |||
| 7 | "stop_sequence": "", | 6 | "stop_sequence": "", |
| 8 | "wrap": false, | 7 | "wrap": false, |
| 9 | "macro": true, | 8 | "macro": true, |
| 10 | "names": false, | 9 | "names_behavior": "force", |
| 11 | "names_force_groups": true, | ||
| 12 | "activation_regex": "", | 10 | "activation_regex": "", |
| 13 | "system_sequence_prefix": "", | 11 | "system_sequence_prefix": "", |
| 14 | "system_sequence_suffix": "", | 12 | "system_sequence_suffix": "", |
| @@ -1,5 +1,4 @@ | |||
| 1 | { | 1 | { |
| 2 | "system_prompt": "Write {{char}}'s next reply in this fictional roleplay with {{user}}.", | ||
| 3 | "input_sequence": "<|user|>\n", | 2 | "input_sequence": "<|user|>\n", |
| 4 | "output_sequence": "<|assistant|>\n", | 3 | "output_sequence": "<|assistant|>\n", |
| 5 | "first_output_sequence": "", | 4 | "first_output_sequence": "", |
| @@ -9,8 +8,7 @@ | |||
| 9 | "stop_sequence": "<|end|>", | 8 | "stop_sequence": "<|end|>", |
| 10 | "wrap": false, | 9 | "wrap": false, |
| 11 | "macro": true, | 10 | "macro": true, |
| 12 | "names": true, | 11 | "names_behavior": "always", |
| 13 | "names_force_groups": true, | ||
| 14 | "activation_regex": "", | 12 | "activation_regex": "", |
| 15 | "skip_examples": false, | 13 | "skip_examples": false, |
| 16 | "output_suffix": "<|end|>\n", | 14 | "output_suffix": "<|end|>\n", |
| @@ -1,5 +1,4 @@ | |||
| 1 | { | 1 | { |
| 2 | "system_prompt": "Enter RP mode. You shall reply to {{user}} while staying in character. Your responses must be detailed, creative, immersive, and drive the scenario forward. You will follow {{char}}'s persona.", | ||
| 3 | "input_sequence": "<|user|>", | 2 | "input_sequence": "<|user|>", |
| 4 | "output_sequence": "<|model|>", | 3 | "output_sequence": "<|model|>", |
| 5 | "last_output_sequence": "", | 4 | "last_output_sequence": "", |
| @@ -7,8 +6,7 @@ | |||
| 7 | "stop_sequence": "<|user|>", | 6 | "stop_sequence": "<|user|>", |
| 8 | "wrap": false, | 7 | "wrap": false, |
| 9 | "macro": true, | 8 | "macro": true, |
| 10 | "names": true, | 9 | "names_behavior": "always", |
| 11 | "names_force_groups": true, | ||
| 12 | "activation_regex": "", | 10 | "activation_regex": "", |
| 13 | "system_sequence_prefix": "<|system|>", | 11 | "system_sequence_prefix": "<|system|>", |
| 14 | "system_sequence_suffix": "", | 12 | "system_sequence_suffix": "", |
| @@ -1,5 +1,4 @@ | |||
| 1 | { | 1 | { |
| 2 | "system_prompt": "", | ||
| 3 | "input_sequence": "", | 2 | "input_sequence": "", |
| 4 | "output_sequence": "", | 3 | "output_sequence": "", |
| 5 | "last_output_sequence": "", | 4 | "last_output_sequence": "", |
| @@ -7,8 +6,7 @@ | |||
| 7 | "stop_sequence": "", | 6 | "stop_sequence": "", |
| 8 | "wrap": true, | 7 | "wrap": true, |
| 9 | "macro": true, | 8 | "macro": true, |
| 10 | "names": false, | 9 | "names_behavior": "none", |
| 11 | "names_force_groups": false, | ||
| 12 | "activation_regex": "", | 10 | "activation_regex": "", |
| 13 | "system_sequence_prefix": "", | 11 | "system_sequence_prefix": "", |
| 14 | "system_sequence_suffix": "", | 12 | "system_sequence_suffix": "", |
| @@ -1,5 +1,4 @@ | |||
| 1 | { | 1 | { |
| 2 | "system_prompt": "Elaborate on the topic using a Tree of Thoughts and backtrack when necessary to construct a clear, cohesive Chain of Thought reasoning. Always answer without hesitation.", | ||
| 3 | "input_sequence": "USER: ", | 2 | "input_sequence": "USER: ", |
| 4 | "output_sequence": "ASSISTANT: ", | 3 | "output_sequence": "ASSISTANT: ", |
| 5 | "last_output_sequence": "", | 4 | "last_output_sequence": "", |
| @@ -7,8 +6,7 @@ | |||
| 7 | "stop_sequence": "", | 6 | "stop_sequence": "", |
| 8 | "wrap": false, | 7 | "wrap": false, |
| 9 | "macro": true, | 8 | "macro": true, |
| 10 | "names": false, | 9 | "names_behavior": "force", |
| 11 | "names_force_groups": true, | ||
| 12 | "activation_regex": "", | 10 | "activation_regex": "", |
| 13 | "system_sequence_prefix": "SYSTEM: ", | 11 | "system_sequence_prefix": "SYSTEM: ", |
| 14 | "system_sequence_suffix": "", | 12 | "system_sequence_suffix": "", |
| @@ -1,5 +1,4 @@ | |||
| 1 | { | 1 | { |
| 2 | "system_prompt": "A chat between a curious human and an artificial intelligence assistant. The assistant gives helpful, detailed, and polite answers to the human's questions.\n\nWrite {{char}}'s next reply in a fictional roleplay chat between {{user}} and {{char}}.\n", | ||
| 3 | "input_sequence": "### Human:", | 2 | "input_sequence": "### Human:", |
| 4 | "output_sequence": "### Assistant:", | 3 | "output_sequence": "### Assistant:", |
| 5 | "last_output_sequence": "", | 4 | "last_output_sequence": "", |
| @@ -7,8 +6,7 @@ | |||
| 7 | "stop_sequence": "", | 6 | "stop_sequence": "", |
| 8 | "wrap": true, | 7 | "wrap": true, |
| 9 | "macro": true, | 8 | "macro": true, |
| 10 | "names": false, | 9 | "names_behavior": "force", |
| 11 | "names_force_groups": true, | ||
| 12 | "activation_regex": "", | 10 | "activation_regex": "", |
| 13 | "system_sequence_prefix": "", | 11 | "system_sequence_prefix": "", |
| 14 | "system_sequence_suffix": "", | 12 | "system_sequence_suffix": "", |
| @@ -1,5 +1,4 @@ | |||
| 1 | { | 1 | { |
| 2 | "system_prompt": "A chat between a curious user and an artificial intelligence assistant. The assistant gives helpful, detailed, and polite answers to the user's questions.\n\nWrite {{char}}'s next reply in a fictional roleplay chat between {{user}} and {{char}}.\n", | ||
| 3 | "input_sequence": "\nUSER: ", | 2 | "input_sequence": "\nUSER: ", |
| 4 | "output_sequence": "\nASSISTANT: ", | 3 | "output_sequence": "\nASSISTANT: ", |
| 5 | "last_output_sequence": "", | 4 | "last_output_sequence": "", |
| @@ -7,8 +6,7 @@ | |||
| 7 | "stop_sequence": "", | 6 | "stop_sequence": "", |
| 8 | "wrap": false, | 7 | "wrap": false, |
| 9 | "macro": true, | 8 | "macro": true, |
| 10 | "names": false, | 9 | "names_behavior": "force", |
| 11 | "names_force_groups": true, | ||
| 12 | "activation_regex": "", | 10 | "activation_regex": "", |
| 13 | "system_sequence_prefix": "BEGINNING OF CONVERSATION:", | 11 | "system_sequence_prefix": "BEGINNING OF CONVERSATION:", |
| 14 | "system_sequence_suffix": "", | 12 | "system_sequence_suffix": "", |
| @@ -1,5 +1,4 @@ | |||
| 1 | { | 1 | { |
| 2 | "system_prompt": "A chat between a curious user and an artificial intelligence assistant. The assistant gives helpful, detailed, and polite answers to the user's questions.\n\nWrite {{char}}'s next detailed reply in a fictional roleplay chat between {{user}} and {{char}}.", | ||
| 3 | "input_sequence": "USER: ", | 2 | "input_sequence": "USER: ", |
| 4 | "output_sequence": "ASSISTANT: ", | 3 | "output_sequence": "ASSISTANT: ", |
| 5 | "last_output_sequence": "", | 4 | "last_output_sequence": "", |
| @@ -7,8 +6,7 @@ | |||
| 7 | "stop_sequence": "", | 6 | "stop_sequence": "", |
| 8 | "wrap": true, | 7 | "wrap": true, |
| 9 | "macro": true, | 8 | "macro": true, |
| 10 | "names": false, | 9 | "names_behavior": "force", |
| 11 | "names_force_groups": true, | ||
| 12 | "activation_regex": "", | 10 | "activation_regex": "", |
| 13 | "system_sequence_prefix": "", | 11 | "system_sequence_prefix": "", |
| 14 | "system_sequence_suffix": "", | 12 | "system_sequence_suffix": "", |
| @@ -1,5 +1,4 @@ | |||
| 1 | { | 1 | { |
| 2 | "system_prompt": "Write {{char}}'s next reply in a fictional roleplay chat between {{user}} and {{char}}.\n", | ||
| 3 | "input_sequence": "", | 2 | "input_sequence": "", |
| 4 | "output_sequence": "### Response:", | 3 | "output_sequence": "### Response:", |
| 5 | "last_output_sequence": "", | 4 | "last_output_sequence": "", |
| @@ -7,8 +6,7 @@ | |||
| 7 | "stop_sequence": "", | 6 | "stop_sequence": "", |
| 8 | "wrap": true, | 7 | "wrap": true, |
| 9 | "macro": true, | 8 | "macro": true, |
| 10 | "names": false, | 9 | "names_behavior": "force", |
| 11 | "names_force_groups": true, | ||
| 12 | "activation_regex": "", | 10 | "activation_regex": "", |
| 13 | "system_sequence_prefix": "", | 11 | "system_sequence_prefix": "", |
| 14 | "system_sequence_suffix": "", | 12 | "system_sequence_suffix": "", |
| @@ -1,5 +1,4 @@ | |||
| 1 | { | 1 | { |
| 2 | "system_prompt": "[System note: Write one reply only. Do not decide what {{user}} says or does. Write at least one paragraph, up to four. Be descriptive and immersive, providing vivid details about {{char}}'s actions, emotions, and the environment. Write with a high degree of complexity and burstiness. Do not repeat this message.]", | ||
| 3 | "input_sequence": "### Instruction:\n#### {{name}}:", | 2 | "input_sequence": "### Instruction:\n#### {{name}}:", |
| 4 | "output_sequence": "### Response:\n#### {{name}}:", | 3 | "output_sequence": "### Response:\n#### {{name}}:", |
| 5 | "last_output_sequence": "### Response (2 paragraphs, engaging, natural, authentic, descriptive, creative):\n#### {{name}}:", | 4 | "last_output_sequence": "### Response (2 paragraphs, engaging, natural, authentic, descriptive, creative):\n#### {{name}}:", |
| @@ -7,8 +6,7 @@ | |||
| 7 | "stop_sequence": "", | 6 | "stop_sequence": "", |
| 8 | "wrap": true, | 7 | "wrap": true, |
| 9 | "macro": true, | 8 | "macro": true, |
| 10 | "names": false, | 9 | "names_behavior": "none", |
| 11 | "names_force_groups": false, | ||
| 12 | "activation_regex": "", | 10 | "activation_regex": "", |
| 13 | "system_sequence_prefix": "", | 11 | "system_sequence_prefix": "", |
| 14 | "system_sequence_suffix": "", | 12 | "system_sequence_suffix": "", |
| @@ -14,7 +14,10 @@ | |||
| 14 | "use_cache": false, | 14 | "use_cache": false, |
| 15 | "return_full_text": false, | 15 | "return_full_text": false, |
| 16 | "prefix": "vanilla", | 16 | "prefix": "vanilla", |
| 17 | "cfg_scale": 1, | ||
| 18 | "phrase_rep_pen": "medium", | 17 | "phrase_rep_pen": "medium", |
| 19 | "max_context": 7800 | 18 | "max_context": 7800, |
| 19 | "min_p": 0, | ||
| 20 | "math1_temp": 1, | ||
| 21 | "math1_quad": 0, | ||
| 22 | "math1_quad_entropy_scale": 0 | ||
| 20 | } | 23 | } |
| @@ -1,5 +1,5 @@ | |||
| 1 | { | 1 | { |
| 2 | "order": [6, 0, 1, 2, 3], | 2 | "order": [0, 1, 2, 3], |
| 3 | "temperature": 1, | 3 | "temperature": 1, |
| 4 | "max_length": 150, | 4 | "max_length": 150, |
| 5 | "min_length": 1, | 5 | "min_length": 1, |
| @@ -14,6 +14,9 @@ | |||
| 14 | "return_full_text": false, | 14 | "return_full_text": false, |
| 15 | "prefix": "vanilla", | 15 | "prefix": "vanilla", |
| 16 | "phrase_rep_pen": "medium", | 16 | "phrase_rep_pen": "medium", |
| 17 | "cfg_scale": 1.55, | 17 | "max_context": 7800, |
| 18 | "max_context": 7800 | 18 | "min_p": 0, |
| 19 | "math1_temp": 1, | ||
| 20 | "math1_quad": 0, | ||
| 21 | "math1_quad_entropy_scale": 0 | ||
| 19 | } | 22 | } |
| @@ -1,5 +1,5 @@ | |||
| 1 | { | 1 | { |
| 2 | "order": [6, 2, 3, 1, 0], | 2 | "order": [2, 3, 1, 0], |
| 3 | "temperature": 1, | 3 | "temperature": 1, |
| 4 | "max_length": 150, | 4 | "max_length": 150, |
| 5 | "min_length": 1, | 5 | "min_length": 1, |
| @@ -15,6 +15,9 @@ | |||
| 15 | "return_full_text": false, | 15 | "return_full_text": false, |
| 16 | "prefix": "vanilla", | 16 | "prefix": "vanilla", |
| 17 | "phrase_rep_pen": "very_aggressive", | 17 | "phrase_rep_pen": "very_aggressive", |
| 18 | "cfg_scale": 1.3, | 18 | "max_context": 7800, |
| 19 | "max_context": 7800 | 19 | "min_p": 0, |
| 20 | "math1_temp": 1, | ||
| 21 | "math1_quad": 0, | ||
| 22 | "math1_quad_entropy_scale": 0 | ||
| 20 | } | 23 | } |
| @@ -15,7 +15,10 @@ | |||
| 15 | "use_cache": false, | 15 | "use_cache": false, |
| 16 | "return_full_text": false, | 16 | "return_full_text": false, |
| 17 | "prefix": "vanilla", | 17 | "prefix": "vanilla", |
| 18 | "cfg_scale": 1, | ||
| 19 | "phrase_rep_pen": "aggressive", | 18 | "phrase_rep_pen": "aggressive", |
| 20 | "max_context": 7800 | 19 | "max_context": 7800, |
| 20 | "min_p": 0, | ||
| 21 | "math1_temp": 1, | ||
| 22 | "math1_quad": 0, | ||
| 23 | "math1_quad_entropy_scale": 0 | ||
| 21 | } | 24 | } |
| @@ -1,5 +1,5 @@ | |||
| 1 | { | 1 | { |
| 2 | "order": [8, 6, 5, 0, 3], | 2 | "order": [8, 5, 0, 3], |
| 3 | "temperature": 0.9, | 3 | "temperature": 0.9, |
| 4 | "max_length": 150, | 4 | "max_length": 150, |
| 5 | "min_length": 1, | 5 | "min_length": 1, |
| @@ -15,6 +15,9 @@ | |||
| 15 | "return_full_text": false, | 15 | "return_full_text": false, |
| 16 | "prefix": "vanilla", | 16 | "prefix": "vanilla", |
| 17 | "phrase_rep_pen": "off", | 17 | "phrase_rep_pen": "off", |
| 18 | "cfg_scale": 1.48, | 18 | "max_context": 7800, |
| 19 | "max_context": 7800 | 19 | "min_p": 0, |
| 20 | "math1_temp": 1, | ||
| 21 | "math1_quad": 0, | ||
| 22 | "math1_quad_entropy_scale": 0 | ||
| 20 | } | 23 | } |
| @@ -15,7 +15,10 @@ | |||
| 15 | "use_cache": false, | 15 | "use_cache": false, |
| 16 | "return_full_text": false, | 16 | "return_full_text": false, |
| 17 | "prefix": "vanilla", | 17 | "prefix": "vanilla", |
| 18 | "cfg_scale": 1, | ||
| 19 | "phrase_rep_pen": "very_light", | 18 | "phrase_rep_pen": "very_light", |
| 20 | "max_context": 7800 | 19 | "max_context": 7800, |
| 20 | "min_p": 0, | ||
| 21 | "math1_temp": 1, | ||
| 22 | "math1_quad": 0, | ||
| 23 | "math1_quad_entropy_scale": 0 | ||
| 21 | } | 24 | } |
| @@ -0,0 +1,31 @@ | |||
| 1 | { | ||
| 2 | "max_context": 8000, | ||
| 3 | "temperature": 1.37, | ||
| 4 | "max_length": 150, | ||
| 5 | "min_length": 1, | ||
| 6 | "top_k": 0, | ||
| 7 | "top_p": 1, | ||
| 8 | "top_a": 0.1, | ||
| 9 | "typical_p": 0.875, | ||
| 10 | "tail_free_sampling": 0.87, | ||
| 11 | "repetition_penalty": 3.25, | ||
| 12 | "repetition_penalty_range": 6000, | ||
| 13 | "repetition_penalty_slope": 3.25, | ||
| 14 | "repetition_penalty_frequency": 0, | ||
| 15 | "repetition_penalty_presence": 0, | ||
| 16 | "phrase_rep_pen": "off", | ||
| 17 | "mirostat_lr": 0.2, | ||
| 18 | "mirostat_tau": 4, | ||
| 19 | "math1_temp": 0.9, | ||
| 20 | "math1_quad": 0.07, | ||
| 21 | "math1_quad_entropy_scale": -0.05, | ||
| 22 | "min_p": 0.035, | ||
| 23 | "order": [ | ||
| 24 | 0, | ||
| 25 | 5, | ||
| 26 | 9, | ||
| 27 | 10, | ||
| 28 | 8, | ||
| 29 | 4 | ||
| 30 | ] | ||
| 31 | } | ||
| @@ -0,0 +1,27 @@ | |||
| 1 | { | ||
| 2 | "max_context": 8000, | ||
| 3 | "temperature": 1, | ||
| 4 | "max_length": 150, | ||
| 5 | "min_length": 1, | ||
| 6 | "top_k": 0, | ||
| 7 | "top_p": 0.995, | ||
| 8 | "top_a": 1, | ||
| 9 | "typical_p": 1, | ||
| 10 | "tail_free_sampling": 0.87, | ||
| 11 | "repetition_penalty": 1.5, | ||
| 12 | "repetition_penalty_range": 2240, | ||
| 13 | "repetition_penalty_slope": 1, | ||
| 14 | "repetition_penalty_frequency": 0, | ||
| 15 | "repetition_penalty_presence": 0, | ||
| 16 | "phrase_rep_pen": "light", | ||
| 17 | "mirostat_lr": 1, | ||
| 18 | "mirostat_tau": 0, | ||
| 19 | "math1_temp": 0.3, | ||
| 20 | "math1_quad": 0.19, | ||
| 21 | "math1_quad_entropy_scale": 0, | ||
| 22 | "min_p": 0, | ||
| 23 | "order": [ | ||
| 24 | 9, | ||
| 25 | 2 | ||
| 26 | ] | ||
| 27 | } | ||
| @@ -0,0 +1,27 @@ | |||
| 1 | { | ||
| 2 | "max_context": 8000, | ||
| 3 | "temperature": 1, | ||
| 4 | "max_length": 150, | ||
| 5 | "min_length": 1, | ||
| 6 | "top_k": 50, | ||
| 7 | "top_p": 0.85, | ||
| 8 | "top_a": 1, | ||
| 9 | "typical_p": 1, | ||
| 10 | "tail_free_sampling": 0.895, | ||
| 11 | "repetition_penalty": 1.63, | ||
| 12 | "repetition_penalty_range": 1024, | ||
| 13 | "repetition_penalty_slope": 3.33, | ||
| 14 | "repetition_penalty_frequency": 0.0035, | ||
| 15 | "repetition_penalty_presence": 0, | ||
| 16 | "phrase_rep_pen": "medium", | ||
| 17 | "mirostat_lr": 1, | ||
| 18 | "mirostat_tau": 0, | ||
| 19 | "math1_temp": 0.3, | ||
| 20 | "math1_quad": 0.0645, | ||
| 21 | "math1_quad_entropy_scale": 0.05, | ||
| 22 | "min_p": 0.05, | ||
| 23 | "order": [ | ||
| 24 | 9, | ||
| 25 | 10 | ||
| 26 | ] | ||
| 27 | } | ||
| @@ -0,0 +1,27 @@ | |||
| 1 | { | ||
| 2 | "max_context": 8000, | ||
| 3 | "temperature": 1, | ||
| 4 | "max_length": 150, | ||
| 5 | "min_length": 1, | ||
| 6 | "top_k": 300, | ||
| 7 | "top_p": 0.98, | ||
| 8 | "top_a": 0.004, | ||
| 9 | "typical_p": 0.96, | ||
| 10 | "tail_free_sampling": 0.96, | ||
| 11 | "repetition_penalty": 1.48, | ||
| 12 | "repetition_penalty_range": 2240, | ||
| 13 | "repetition_penalty_slope": 0.64, | ||
| 14 | "repetition_penalty_frequency": 0, | ||
| 15 | "repetition_penalty_presence": 0, | ||
| 16 | "phrase_rep_pen": "medium", | ||
| 17 | "mirostat_lr": 1, | ||
| 18 | "mirostat_tau": 0, | ||
| 19 | "math1_temp": -0.0485, | ||
| 20 | "math1_quad": 0.145, | ||
| 21 | "math1_quad_entropy_scale": 0, | ||
| 22 | "min_p": 0.02, | ||
| 23 | "order": [ | ||
| 24 | 9, | ||
| 25 | 10 | ||
| 26 | ] | ||
| 27 | } | ||
| @@ -0,0 +1,27 @@ | |||
| 1 | { | ||
| 2 | "max_context": 8000, | ||
| 3 | "temperature": 1, | ||
| 4 | "max_length": 150, | ||
| 5 | "min_length": 1, | ||
| 6 | "top_k": 0, | ||
| 7 | "top_p": 0.99, | ||
| 8 | "top_a": 1, | ||
| 9 | "typical_p": 1, | ||
| 10 | "tail_free_sampling": 0.99, | ||
| 11 | "repetition_penalty": 1, | ||
| 12 | "repetition_penalty_range": 64, | ||
| 13 | "repetition_penalty_slope": 1, | ||
| 14 | "repetition_penalty_frequency": 0.75, | ||
| 15 | "repetition_penalty_presence": 1.5, | ||
| 16 | "phrase_rep_pen": "medium", | ||
| 17 | "mirostat_lr": 1, | ||
| 18 | "mirostat_tau": 1, | ||
| 19 | "math1_temp": -0.4, | ||
| 20 | "math1_quad": 0.6, | ||
| 21 | "math1_quad_entropy_scale": -0.1, | ||
| 22 | "min_p": 0.08, | ||
| 23 | "order": [ | ||
| 24 | 9, | ||
| 25 | 2 | ||
| 26 | ] | ||
| 27 | } | ||
| @@ -16,7 +16,10 @@ | |||
| 16 | "use_cache": false, | 16 | "use_cache": false, |
| 17 | "return_full_text": false, | 17 | "return_full_text": false, |
| 18 | "prefix": "vanilla", | 18 | "prefix": "vanilla", |
| 19 | "cfg_scale": 1, | ||
| 20 | "phrase_rep_pen": "very_light", | 19 | "phrase_rep_pen": "very_light", |
| 21 | "max_context": 7800 | 20 | "max_context": 7800, |
| 21 | "min_p": 0, | ||
| 22 | "math1_temp": 1, | ||
| 23 | "math1_quad": 0, | ||
| 24 | "math1_quad_entropy_scale": 0 | ||
| 22 | } | 25 | } |
| @@ -14,7 +14,10 @@ | |||
| 14 | "use_cache": false, | 14 | "use_cache": false, |
| 15 | "return_full_text": false, | 15 | "return_full_text": false, |
| 16 | "prefix": "vanilla", | 16 | "prefix": "vanilla", |
| 17 | "cfg_scale": 1, | ||
| 18 | "phrase_rep_pen": "off", | 17 | "phrase_rep_pen": "off", |
| 19 | "max_context": 7800 | 18 | "max_context": 7800, |
| 19 | "min_p": 0, | ||
| 20 | "math1_temp": 1, | ||
| 21 | "math1_quad": 0, | ||
| 22 | "math1_quad_entropy_scale": 0 | ||
| 20 | } | 23 | } |
| @@ -1,5 +1,5 @@ | |||
| 1 | { | 1 | { |
| 2 | "order": [6, 0, 8, 5, 3], | 2 | "order": [0, 8, 5, 3], |
| 3 | "temperature": 1.5, | 3 | "temperature": 1.5, |
| 4 | "max_length": 150, | 4 | "max_length": 150, |
| 5 | "min_length": 1, | 5 | "min_length": 1, |
| @@ -15,6 +15,9 @@ | |||
| 15 | "return_full_text": false, | 15 | "return_full_text": false, |
| 16 | "prefix": "vanilla", | 16 | "prefix": "vanilla", |
| 17 | "phrase_rep_pen": "very_aggressive", | 17 | "phrase_rep_pen": "very_aggressive", |
| 18 | "cfg_scale": 1.4, | 18 | "max_context": 7800, |
| 19 | "max_context": 7800 | 19 | "min_p": 0, |
| 20 | "math1_temp": 1, | ||
| 21 | "math1_quad": 0, | ||
| 22 | "math1_quad_entropy_scale": 0 | ||
| 20 | } | 23 | } |
| @@ -16,7 +16,10 @@ | |||
| 16 | "use_cache": false, | 16 | "use_cache": false, |
| 17 | "return_full_text": false, | 17 | "return_full_text": false, |
| 18 | "prefix": "vanilla", | 18 | "prefix": "vanilla", |
| 19 | "cfg_scale": 1, | ||
| 20 | "phrase_rep_pen": "very_light", | 19 | "phrase_rep_pen": "very_light", |
| 21 | "max_context": 7800 | 20 | "max_context": 7800, |
| 21 | "min_p": 0, | ||
| 22 | "math1_temp": 1, | ||
| 23 | "math1_quad": 0, | ||
| 24 | "math1_quad_entropy_scale": 0 | ||
| 22 | } | 25 | } |
| @@ -16,7 +16,10 @@ | |||
| 16 | "use_cache": false, | 16 | "use_cache": false, |
| 17 | "return_full_text": false, | 17 | "return_full_text": false, |
| 18 | "prefix": "vanilla", | 18 | "prefix": "vanilla", |
| 19 | "cfg_scale": 1, | ||
| 20 | "phrase_rep_pen": "very_light", | 19 | "phrase_rep_pen": "very_light", |
| 21 | "max_context": 7800 | 20 | "max_context": 7800, |
| 21 | "min_p": 0, | ||
| 22 | "math1_temp": 1, | ||
| 23 | "math1_quad": 0, | ||
| 24 | "math1_quad_entropy_scale": 0 | ||
| 22 | } | 25 | } |
| @@ -1,5 +1,5 @@ | |||
| 1 | { | 1 | { |
| 2 | "order": [6, 0, 4, 1, 2, 5, 3], | 2 | "order": [0, 4, 1, 2, 5, 3], |
| 3 | "temperature": 1.31, | 3 | "temperature": 1.31, |
| 4 | "max_length": 150, | 4 | "max_length": 150, |
| 5 | "min_length": 1, | 5 | "min_length": 1, |
| @@ -17,6 +17,9 @@ | |||
| 17 | "return_full_text": false, | 17 | "return_full_text": false, |
| 18 | "prefix": "vanilla", | 18 | "prefix": "vanilla", |
| 19 | "phrase_rep_pen": "medium", | 19 | "phrase_rep_pen": "medium", |
| 20 | "cfg_scale": 1.35, | 20 | "max_context": 7800, |
| 21 | "max_context": 7800 | 21 | "min_p": 0, |
| 22 | "math1_temp": 1, | ||
| 23 | "math1_quad": 0, | ||
| 24 | "math1_quad_entropy_scale": 0 | ||
| 22 | } | 25 | } |
| @@ -15,6 +15,9 @@ | |||
| 15 | "return_full_text": false, | 15 | "return_full_text": false, |
| 16 | "prefix": "vanilla", | 16 | "prefix": "vanilla", |
| 17 | "phrase_rep_pen": "medium", | 17 | "phrase_rep_pen": "medium", |
| 18 | "cfg_scale": 1.0, | 18 | "max_context": 7800, |
| 19 | "max_context": 7800 | 19 | "min_p": 0, |
| 20 | "math1_temp": 1, | ||
| 21 | "math1_quad": 0, | ||
| 22 | "math1_quad_entropy_scale": 0 | ||
| 20 | } | 23 | } |
| @@ -13,5 +13,9 @@ | |||
| 13 | "return_full_text": false, | 13 | "return_full_text": false, |
| 14 | "prefix": "vanilla", | 14 | "prefix": "vanilla", |
| 15 | "phrase_rep_pen": "medium", | 15 | "phrase_rep_pen": "medium", |
| 16 | "max_context": 7800 | 16 | "max_context": 7800, |
| 17 | "min_p": 0, | ||
| 18 | "math1_temp": 1, | ||
| 19 | "math1_quad": 0, | ||
| 20 | "math1_quad_entropy_scale": 0 | ||
| 17 | } | 21 | } |
| @@ -16,7 +16,10 @@ | |||
| 16 | "use_cache": false, | 16 | "use_cache": false, |
| 17 | "return_full_text": false, | 17 | "return_full_text": false, |
| 18 | "prefix": "vanilla", | 18 | "prefix": "vanilla", |
| 19 | "cfg_scale": 1, | ||
| 20 | "phrase_rep_pen": "very_light", | 19 | "phrase_rep_pen": "very_light", |
| 21 | "max_context": 7800 | 20 | "max_context": 7800, |
| 21 | "min_p": 0, | ||
| 22 | "math1_temp": 1, | ||
| 23 | "math1_quad": 0, | ||
| 24 | "math1_quad_entropy_scale": 0 | ||
| 22 | } | 25 | } |
| @@ -14,6 +14,9 @@ | |||
| 14 | "return_full_text": false, | 14 | "return_full_text": false, |
| 15 | "prefix": "vanilla", | 15 | "prefix": "vanilla", |
| 16 | "phrase_rep_pen": "aggressive", | 16 | "phrase_rep_pen": "aggressive", |
| 17 | "cfg_scale": 1.0, | 17 | "max_context": 7800, |
| 18 | "max_context": 7800 | 18 | "min_p": 0, |
| 19 | "math1_temp": 1, | ||
| 20 | "math1_quad": 0, | ||
| 21 | "math1_quad_entropy_scale": 0 | ||
| 19 | } | 22 | } |
| @@ -1,5 +1,5 @@ | |||
| 1 | { | 1 | { |
| 2 | "order": [6, 0, 5], | 2 | "order": [0, 5], |
| 3 | "temperature": 0.895, | 3 | "temperature": 0.895, |
| 4 | "max_length": 150, | 4 | "max_length": 150, |
| 5 | "min_length": 1, | 5 | "min_length": 1, |
| @@ -13,6 +13,9 @@ | |||
| 13 | "return_full_text": false, | 13 | "return_full_text": false, |
| 14 | "prefix": "vanilla", | 14 | "prefix": "vanilla", |
| 15 | "phrase_rep_pen": "aggressive", | 15 | "phrase_rep_pen": "aggressive", |
| 16 | "cfg_scale": 1.3, | 16 | "max_context": 7800, |
| 17 | "max_context": 7800 | 17 | "min_p": 0, |
| 18 | "math1_temp": 1, | ||
| 19 | "math1_quad": 0, | ||
| 20 | "math1_quad_entropy_scale": 0 | ||
| 18 | } | 21 | } |
| @@ -16,7 +16,10 @@ | |||
| 16 | "use_cache": false, | 16 | "use_cache": false, |
| 17 | "return_full_text": false, | 17 | "return_full_text": false, |
| 18 | "prefix": "vanilla", | 18 | "prefix": "vanilla", |
| 19 | "cfg_scale": 1, | ||
| 20 | "phrase_rep_pen": "very_light", | 19 | "phrase_rep_pen": "very_light", |
| 21 | "max_context": 7800 | 20 | "max_context": 7800, |
| 21 | "min_p": 0, | ||
| 22 | "math1_temp": 1, | ||
| 23 | "math1_quad": 0, | ||
| 24 | "math1_quad_entropy_scale": 0 | ||
| 22 | } | 25 | } |
| @@ -17,5 +17,9 @@ | |||
| 17 | "return_full_text": false, | 17 | "return_full_text": false, |
| 18 | "prefix": "vanilla", | 18 | "prefix": "vanilla", |
| 19 | "phrase_rep_pen": "very_aggressive", | 19 | "phrase_rep_pen": "very_aggressive", |
| 20 | "max_context": 7800 | 20 | "max_context": 7800, |
| 21 | "min_p": 0, | ||
| 22 | "math1_temp": 1, | ||
| 23 | "math1_quad": 0, | ||
| 24 | "math1_quad_entropy_scale": 0 | ||
| 21 | } | 25 | } |
| @@ -8,7 +8,7 @@ | |||
| 8 | "openrouter_force_instruct": false, | 8 | "openrouter_force_instruct": false, |
| 9 | "openrouter_group_models": false, | 9 | "openrouter_group_models": false, |
| 10 | "openrouter_sort_models": "alphabetically", | 10 | "openrouter_sort_models": "alphabetically", |
| 11 | "ai21_model": "j2-ultra", | 11 | "ai21_model": "jamba-1.5-large", |
| 12 | "mistralai_model": "mistral-large-latest", | 12 | "mistralai_model": "mistral-large-latest", |
| 13 | "custom_model": "", | 13 | "custom_model": "", |
| 14 | "custom_url": "", | 14 | "custom_url": "", |
| @@ -19,7 +19,6 @@ | |||
| 19 | "temperature": 1, | 19 | "temperature": 1, |
| 20 | "frequency_penalty": 0, | 20 | "frequency_penalty": 0, |
| 21 | "presence_penalty": 0, | 21 | "presence_penalty": 0, |
| 22 | "count_penalty": 0, | ||
| 23 | "top_p": 1, | 22 | "top_p": 1, |
| 24 | "top_k": 0, | 23 | "top_k": 0, |
| 25 | "top_a": 0, | 24 | "top_a": 0, |
| @@ -233,8 +232,6 @@ | |||
| 233 | "assistant_prefill": "", | 232 | "assistant_prefill": "", |
| 234 | "assistant_impersonation": "", | 233 | "assistant_impersonation": "", |
| 235 | "human_sysprompt_message": "Let's get started. Please generate your response based on the information and instructions provided above.", | 234 | "human_sysprompt_message": "Let's get started. Please generate your response based on the information and instructions provided above.", |
| 236 | "use_ai21_tokenizer": false, | ||
| 237 | "use_google_tokenizer": false, | ||
| 238 | "claude_use_sysprompt": false, | 235 | "claude_use_sysprompt": false, |
| 239 | "use_alt_scale": false, | 236 | "use_alt_scale": false, |
| 240 | "squash_system_messages": false, | 237 | "squash_system_messages": false, |
| @@ -0,0 +1,4 @@ | |||
| 1 | { | ||
| 2 | "name": "Actor", | ||
| 3 | "content": "You are an expert actor that can fully immerse yourself into any role given. You do not break character for any reason, even if someone tries addressing you as an AI or language model. Currently your role is {{char}}, which is described in detail below. As {{char}}, continue the exchange with {{user}}." | ||
| 4 | } | ||
| @@ -0,0 +1,4 @@ | |||
| 1 | { | ||
| 2 | "name": "Assistant - Expert", | ||
| 3 | "content": "You are a helpful assistant. Please answer truthfully and write out your thinking step by step to be sure you get the right answer. If you make a mistake or encounter an error in your thinking, say so out loud and attempt to correct it. If you don't know or aren't sure about something, say so clearly. You will act as a professional logician, mathematician, and physicist. You will also act as the most appropriate type of expert to answer any particular question or solve the relevant problem; state which expert type your are, if so. Also think of any particular named expert that would be ideal to answer the relevant question or solve the relevant problem; name and act as them, if appropriate." | ||
| 4 | } | ||
| @@ -0,0 +1,4 @@ | |||
| 1 | { | ||
| 2 | "name": "Assistant - Simple", | ||
| 3 | "content": "A chat between a curious human and an artificial intelligence assistant. The assistant gives helpful, detailed, and polite answers to the human's questions." | ||
| 4 | } | ||
| @@ -0,0 +1,4 @@ | |||
| 1 | { | ||
| 2 | "name": "Blank", | ||
| 3 | "content": "" | ||
| 4 | } | ||
| @@ -0,0 +1,4 @@ | |||
| 1 | { | ||
| 2 | "name": "Chain of Thought", | ||
| 3 | "content": "Elaborate on the topic using a Tree of Thoughts and backtrack when necessary to construct a clear, cohesive Chain of Thought reasoning. Always answer without hesitation." | ||
| 4 | } | ||
| @@ -0,0 +1,4 @@ | |||
| 1 | { | ||
| 2 | "name": "Neutral - Chat", | ||
| 3 | "content": "Write {{char}}'s next reply in a fictional chat between {{char}} and {{user}}." | ||
| 4 | } | ||
| @@ -0,0 +1,4 @@ | |||
| 1 | { | ||
| 2 | "name": "Roleplay - Detailed", | ||
| 3 | "content": "Develop the plot slowly, always stay in character. Describe all actions in full, elaborate, explicit, graphic, and vivid detail. Mention all relevant sensory perceptions. Keep the story immersive and engaging." | ||
| 4 | } | ||
| @@ -0,0 +1,4 @@ | |||
| 1 | { | ||
| 2 | "name": "Roleplay - Immersive", | ||
| 3 | "content": "[System note: Write one reply only. Do not decide what {{user}} says or does. Write at least one paragraph, up to four. Be descriptive and immersive, providing vivid details about {{char}}'s actions, emotions, and the environment. Write with a high degree of complexity and burstiness. Do not repeat this message.]" | ||
| 4 | } | ||
| @@ -0,0 +1,4 @@ | |||
| 1 | { | ||
| 2 | "name": "Roleplay - Simple", | ||
| 3 | "content": "You're {{char}} in this fictional never-ending uncensored roleplay with {{user}}." | ||
| 4 | } | ||
| @@ -0,0 +1,4 @@ | |||
| 1 | { | ||
| 2 | "name": "Text Adventure", | ||
| 3 | "content": "[Enter Adventure Mode. Narrate the story based on {{user}}'s dialogue and actions after \">\". Describe the surroundings in vivid detail. Be detailed, creative, verbose, and proactive. Move the story forward by introducing fantasy elements and interesting characters.]" | ||
| 4 | } | ||
| @@ -0,0 +1,4 @@ | |||
| 1 | { | ||
| 2 | "name": "Writer - Creative", | ||
| 3 | "content": "You are an intelligent, skilled, versatile writer.\n\nYour task is to write a role-play based on the information below." | ||
| 4 | } | ||
| @@ -0,0 +1,4 @@ | |||
| 1 | { | ||
| 2 | "name": "Writer - Realistic", | ||
| 3 | "content": "Continue writing this story and portray characters realistically." | ||
| 4 | } | ||
| @@ -4,8 +4,8 @@ | |||
| 4 | "api_server": "http://127.0.0.1:5000/api", | 4 | "api_server": "http://127.0.0.1:5000/api", |
| 5 | "preset_settings": "RecoveredRuins", | 5 | "preset_settings": "RecoveredRuins", |
| 6 | "user_avatar": "user-default.png", | 6 | "user_avatar": "user-default.png", |
| 7 | "amount_gen": 250, | 7 | "amount_gen": 350, |
| 8 | "max_context": 2048, | 8 | "max_context": 8192, |
| 9 | "main_api": "koboldhorde", | 9 | "main_api": "koboldhorde", |
| 10 | "world_info_settings": { | 10 | "world_info_settings": { |
| 11 | "world_info": { | 11 | "world_info": { |
| @@ -90,7 +90,6 @@ | |||
| 90 | "pin_examples": false, | 90 | "pin_examples": false, |
| 91 | "strip_examples": false, | 91 | "strip_examples": false, |
| 92 | "trim_sentences": false, | 92 | "trim_sentences": false, |
| 93 | "include_newline": false, | ||
| 94 | "always_force_name2": true, | 93 | "always_force_name2": true, |
| 95 | "user_prompt_bias": "", | 94 | "user_prompt_bias": "", |
| 96 | "show_user_prompt_bias": true, | 95 | "show_user_prompt_bias": true, |
| @@ -142,6 +141,7 @@ | |||
| 142 | "timestamps_enabled": true, | 141 | "timestamps_enabled": true, |
| 143 | "timestamp_model_icon": true, | 142 | "timestamp_model_icon": true, |
| 144 | "mesIDDisplay_enabled": false, | 143 | "mesIDDisplay_enabled": false, |
| 144 | "hideChatAvatars_enabled": false, | ||
| 145 | "max_context_unlocked": false, | 145 | "max_context_unlocked": false, |
| 146 | "prefer_character_prompt": true, | 146 | "prefer_character_prompt": true, |
| 147 | "prefer_character_jailbreak": true, | 147 | "prefer_character_jailbreak": true, |
| @@ -149,11 +149,9 @@ | |||
| 149 | "continue_on_send": false, | 149 | "continue_on_send": false, |
| 150 | "trim_spaces": true, | 150 | "trim_spaces": true, |
| 151 | "relaxed_api_urls": false, | 151 | "relaxed_api_urls": false, |
| 152 | "default_instruct": "", | ||
| 153 | "instruct": { | 152 | "instruct": { |
| 154 | "enabled": false, | 153 | "enabled": false, |
| 155 | "preset": "Alpaca", | 154 | "preset": "Alpaca", |
| 156 | "system_prompt": "Below is an instruction that describes a task. Write a response that appropriately completes the request.\n\nWrite {{char}}'s next reply in a fictional roleplay chat between {{user}} and {{char}}.\n", | ||
| 157 | "input_sequence": "### Instruction:", | 155 | "input_sequence": "### Instruction:", |
| 158 | "output_sequence": "### Response:", | 156 | "output_sequence": "### Response:", |
| 159 | "last_output_sequence": "", | 157 | "last_output_sequence": "", |
| @@ -161,8 +159,7 @@ | |||
| 161 | "stop_sequence": "", | 159 | "stop_sequence": "", |
| 162 | "wrap": true, | 160 | "wrap": true, |
| 163 | "macro": true, | 161 | "macro": true, |
| 164 | "names": false, | 162 | "names_behavior": "force", |
| 165 | "names_force_groups": true, | ||
| 166 | "activation_regex": "", | 163 | "activation_regex": "", |
| 167 | "system_sequence_prefix": "", | 164 | "system_sequence_prefix": "", |
| 168 | "system_sequence_suffix": "", | 165 | "system_sequence_suffix": "", |
| @@ -174,7 +171,11 @@ | |||
| 174 | "user_alignment_message": "", | 171 | "user_alignment_message": "", |
| 175 | "system_same_as_user": false | 172 | "system_same_as_user": false |
| 176 | }, | 173 | }, |
| 177 | "default_context": "Default", | 174 | "sysprompt": { |
| 175 | "enabled": true, | ||
| 176 | "name": "Neutral - Chat", | ||
| 177 | "content": "Write {{char}}'s next reply in a fictional chat between {{char}} and {{user}}." | ||
| 178 | }, | ||
| 178 | "context": { | 179 | "context": { |
| 179 | "preset": "Default", | 180 | "preset": "Default", |
| 180 | "story_string": "{{#if system}}{{system}}\n{{/if}}{{#if wiBefore}}{{wiBefore}}\n{{/if}}{{#if description}}{{description}}\n{{/if}}{{#if personality}}{{char}}'s personality: {{personality}}\n{{/if}}{{#if scenario}}Scenario: {{scenario}}\n{{/if}}{{#if wiAfter}}{{wiAfter}}\n{{/if}}{{#if persona}}{{persona}}\n{{/if}}", | 181 | "story_string": "{{#if system}}{{system}}\n{{/if}}{{#if wiBefore}}{{wiBefore}}\n{{/if}}{{#if description}}{{description}}\n{{/if}}{{#if personality}}{{char}}'s personality: {{personality}}\n{{/if}}{{#if scenario}}Scenario: {{scenario}}\n{{/if}}{{#if wiAfter}}{{wiAfter}}\n{{/if}}{{#if persona}}{{persona}}\n{{/if}}", |
| @@ -195,7 +196,15 @@ | |||
| 195 | "enableLabMode": false, | 196 | "enableLabMode": false, |
| 196 | "enableZenSliders": false, | 197 | "enableZenSliders": false, |
| 197 | "ui_mode": 1, | 198 | "ui_mode": 1, |
| 198 | "forbid_external_media": true | 199 | "forbid_external_media": true, |
| 200 | "stscript": { | ||
| 201 | "parser": { | ||
| 202 | "flags": { | ||
| 203 | "1": true, | ||
| 204 | "2": true | ||
| 205 | } | ||
| 206 | } | ||
| 207 | } | ||
| 199 | }, | 208 | }, |
| 200 | "extension_settings": { | 209 | "extension_settings": { |
| 201 | "apiUrl": "http://localhost:5100", | 210 | "apiUrl": "http://localhost:5100", |
| @@ -226,7 +235,7 @@ | |||
| 226 | "lengthPenaltyStep": 0.1, | 235 | "lengthPenaltyStep": 0.1, |
| 227 | "memoryFrozen": false, | 236 | "memoryFrozen": false, |
| 228 | "source": "extras", | 237 | "source": "extras", |
| 229 | "prompt": "[Pause your roleplay. Summarize the most important facts and events that have happened in the chat so far. If a summary already exists in your memory, use that as a base and expand with new facts. Limit the summary to {{words}} words or less. Your response should include nothing but the summary.]", | 238 | "prompt": "Ignore previous instructions. Summarize the most important facts and events in the story so far. If a summary already exists in your memory, use that as a base and expand with new facts. Limit the summary to {{words}} words or less. Your response should include nothing but the summary.", |
| 230 | "promptWords": 200, | 239 | "promptWords": 200, |
| 231 | "promptMinWords": 25, | 240 | "promptMinWords": 25, |
| 232 | "promptMaxWords": 1000, | 241 | "promptMaxWords": 1000, |
| @@ -289,13 +298,13 @@ | |||
| 289 | "horde_karras": true, | 298 | "horde_karras": true, |
| 290 | "refine_mode": false, | 299 | "refine_mode": false, |
| 291 | "prompts": { | 300 | "prompts": { |
| 292 | "0": "[In the next response I want you to provide only a detailed comma-delimited list of keywords and phrases which describe {{char}}. The list must include all of the following items in this order: name, species and race, gender, age, clothing, occupation, physical features and appearances. Do not include descriptions of non-visual qualities such as personality, movements, scents, mental traits, or anything which could not be seen in a still photograph. Do not write in full sentences. Prefix your description with the phrase 'full body portrait,']", | 301 | "0": "In the next response I want you to provide only a detailed comma-delimited list of keywords and phrases which describe {{char}}. The list must include all of the following items in this order: name, species and race, gender, age, clothing, occupation, physical features and appearances. Do not include descriptions of non-visual qualities such as personality, movements, scents, mental traits, or anything which could not be seen in a still photograph. Do not write in full sentences. Prefix your description with the phrase 'full body portrait,'", |
| 293 | "1": "[Pause your roleplay and provide a detailed description of {{user}}'s physical appearance from the perspective of {{char}} in the form of a comma-delimited list of keywords and phrases. The list must include all of the following items in this order: name, species and race, gender, age, clothing, occupation, physical features and appearances. Do not include descriptions of non-visual qualities such as personality, movements, scents, mental traits, or anything which could not be seen in a still photograph. Do not write in full sentences. Prefix your description with the phrase 'full body portrait,'. Ignore the rest of the story when crafting this description. Do not roleplay as {{char}} when writing this description, and do not attempt to continue the story.]", | 302 | "1": "Ignore previous instructions and provide a detailed description of {{user}}'s physical appearance from the perspective of {{char}} in the form of a comma-delimited list of keywords and phrases. The list must include all of the following items in this order: name, species and race, gender, age, clothing, occupation, physical features and appearances. Do not include descriptions of non-visual qualities such as personality, movements, scents, mental traits, or anything which could not be seen in a still photograph. Do not write in full sentences. Prefix your description with the phrase 'full body portrait,'. Ignore the rest of the story when crafting this description. Do not reply as {{char}} when writing this description, and do not attempt to continue the story.", |
| 294 | "2": "[Pause your roleplay and provide a detailed description for all of the following: a brief recap of recent events in the story, {{char}}'s appearance, and {{char}}'s surroundings. Do not roleplay while writing this description.]", | 303 | "2": "Ignore previous instructions and provide a detailed description for all of the following: a brief recap of recent events in the story, {{char}}'s appearance, and {{char}}'s surroundings. Do not reply as {{char}} when writing this description, and do not attempt to continue the story.", |
| 295 | "3": "[Pause your roleplay and provide ONLY the last chat message string back to me verbatim. Do not write anything after the string. Do not roleplay at all in your response. Do not continue the roleplay story.]", | 304 | "3": "Ignore previous instructions and provide ONLY the last chat message string back to me verbatim. Do not write anything after the string. Do not reply as {{char}} when writing this description, and do not attempt to continue the story.", |
| 296 | "4": "[Pause your roleplay. Your next response must be formatted as a single comma-delimited list of concise keywords. The list will describe of the visual details included in the last chat message.\n\n Only mention characters by using pronouns ('he','his','she','her','it','its') or neutral nouns ('male', 'the man', 'female', 'the woman').\n\n Ignore non-visible things such as feelings, personality traits, thoughts, and spoken dialog.\n\n Add keywords in this precise order:\n a keyword to describe the location of the scene,\n a keyword to mention how many characters of each gender or type are present in the scene (minimum of two characters:\n {{user}} and {{char}}, example: '2 men ' or '1 man 1 woman ', '1 man 3 robots'),\n\n keywords to describe the relative physical positioning of the characters to each other (if a commonly known term for the positioning is known use it instead of describing the positioning in detail) + 'POV',\n\n a single keyword or phrase to describe the primary act taking place in the last chat message,\n\n keywords to describe {{char}}'s physical appearance and facial expression,\n keywords to describe {{char}}'s actions,\n keywords to describe {{user}}'s physical appearance and actions.\n\n If character actions involve direct physical interaction with another character, mention specifically which body parts interacting and how.\n\n A correctly formatted example response would be:\n '(location),(character list by gender),(primary action), (relative character position) POV, (character 1's description and actions), (character 2's description and actions)']", | 305 | "4": "Ignore previous instructions. Your next response must be formatted as a single comma-delimited list of concise keywords. The list will describe of the visual details included in the last chat message.\n\n Only mention characters by using pronouns ('he','his','she','her','it','its') or neutral nouns ('male', 'the man', 'female', 'the woman').\n\n Ignore non-visible things such as feelings, personality traits, thoughts, and spoken dialog.\n\n Add keywords in this precise order:\n a keyword to describe the location of the scene,\n a keyword to mention how many characters of each gender or type are present in the scene (minimum of two characters:\n {{user}} and {{char}}, example: '2 men ' or '1 man 1 woman ', '1 man 3 robots'),\n\n keywords to describe the relative physical positioning of the characters to each other (if a commonly known term for the positioning is known use it instead of describing the positioning in detail) + 'POV',\n\n a single keyword or phrase to describe the primary act taking place in the last chat message,\n\n keywords to describe {{char}}'s physical appearance and facial expression,\n keywords to describe {{char}}'s actions,\n keywords to describe {{user}}'s physical appearance and actions.\n\n If character actions involve direct physical interaction with another character, mention specifically which body parts interacting and how.\n\n A correctly formatted example response would be:\n '(location),(character list by gender),(primary action), (relative character position) POV, (character 1's description and actions), (character 2's description and actions)'", |
| 297 | "5": "[In the next response I want you to provide only a detailed comma-delimited list of keywords and phrases which describe {{char}}. The list must include all of the following items in this order: name, species and race, gender, age, facial features and expressions, occupation, hair and hair accessories (if any), what they are wearing on their upper body (if anything). Do not describe anything below their neck. Do not include descriptions of non-visual qualities such as personality, movements, scents, mental traits, or anything which could not be seen in a still photograph. Do not write in full sentences. Prefix your description with the phrase 'close up facial portrait,']", | 306 | "5": "In the next response I want you to provide only a detailed comma-delimited list of keywords and phrases which describe {{char}}. The list must include all of the following items in this order: name, species and race, gender, age, facial features and expressions, occupation, hair and hair accessories (if any), what they are wearing on their upper body (if anything). Do not describe anything below their neck. Do not include descriptions of non-visual qualities such as personality, movements, scents, mental traits, or anything which could not be seen in a still photograph. Do not write in full sentences. Prefix your description with the phrase 'close up facial portrait,'", |
| 298 | "7": "[Pause your roleplay and provide a detailed description of {{char}}'s surroundings in the form of a comma-delimited list of keywords and phrases. The list must include all of the following items in this order: location, time of day, weather, lighting, and any other relevant details. Do not include descriptions of characters and non-visual qualities such as names, personality, movements, scents, mental traits, or anything which could not be seen in a still photograph. Do not write in full sentences. Prefix your description with the phrase 'background,'. Ignore the rest of the story when crafting this description. Do not roleplay as {{user}} when writing this description, and do not attempt to continue the story.]" | 307 | "7": "Ignore previous instructions and provide a detailed description of {{char}}'s surroundings in the form of a comma-delimited list of keywords and phrases. The list must include all of the following items in this order: location, time of day, weather, lighting, and any other relevant details. Do not include descriptions of characters and non-visual qualities such as names, personality, movements, scents, mental traits, or anything which could not be seen in a still photograph. Do not write in full sentences. Prefix your description with the phrase 'background,'. Ignore the rest of the story when crafting this description. Do not reply as {{user}} when writing this description, and do not attempt to continue the story." |
| 299 | }, | 308 | }, |
| 300 | "character_prompts": {} | 309 | "character_prompts": {} |
| 301 | }, | 310 | }, |
| @@ -309,9 +318,9 @@ | |||
| 309 | "objective": { | 318 | "objective": { |
| 310 | "customPrompts": { | 319 | "customPrompts": { |
| 311 | "default": { | 320 | "default": { |
| 312 | "createTask": "Pause your roleplay and generate a list of tasks to complete an objective. Your next response must be formatted as a numbered list of plain text entries. Do not include anything but the numbered list. The list must be prioritized in the order that tasks must be completed.\n\nThe objective that you must make a numbered task list for is: [{{objective}}].\nThe tasks created should take into account the character traits of {{char}}. These tasks may or may not involve {{user}} directly. Be sure to include the objective as the final task.\n\nGiven an example objective of 'Make me a four course dinner', here is an example output:\n1. Determine what the courses will be\n2. Find recipes for each course\n3. Go shopping for supplies with {{user}}\n4. Cook the food\n5. Get {{user}} to set the table\n6. Serve the food\n7. Enjoy eating the meal with {{user}}\n ", | 321 | "createTask": "Ignore previous instructions and generate a list of tasks to complete an objective. Your next response must be formatted as a numbered list of plain text entries. Do not include anything but the numbered list. The list must be prioritized in the order that tasks must be completed.\n\nThe objective that you must make a numbered task list for is: [{{objective}}].\nThe tasks created should take into account the character traits of {{char}}. These tasks may or may not involve {{user}} directly. Be sure to include the objective as the final task.\n\nGiven an example objective of 'Make me a four course dinner', here is an example output:\n1. Determine what the courses will be\n2. Find recipes for each course\n3. Go shopping for supplies with {{user}}\n4. Cook the food\n5. Get {{user}} to set the table\n6. Serve the food\n7. Enjoy eating the meal with {{user}}\n ", |
| 313 | "checkTaskCompleted": "Pause your roleplay. Determine if this task is completed: [{{task}}].\nTo do this, examine the most recent messages. Your response must only contain either true or false, nothing other words.\nExample output:\ntrue\n ", | 322 | "checkTaskCompleted": "Ignore previous instructions. Determine if this task is completed: [{{task}}].\nTo do this, examine the most recent messages. Your response must only contain either true or false, nothing other words.\nExample output:\ntrue\n ", |
| 314 | "currentTask": "Your current task is [{{task}}]. Balance existing roleplay with completing this task." | 323 | "currentTask": "Your current task is [{{task}}]. Balance existing story with completing this task." |
| 315 | } | 324 | } |
| 316 | } | 325 | } |
| 317 | }, | 326 | }, |
| @@ -408,7 +417,6 @@ | |||
| 408 | "preset_settings_novel": "Talker-Chat-Clio", | 417 | "preset_settings_novel": "Talker-Chat-Clio", |
| 409 | "streaming_novel": true, | 418 | "streaming_novel": true, |
| 410 | "preamble": "[ Style: chat, complex, sensory, visceral ]", | 419 | "preamble": "[ Style: chat, complex, sensory, visceral ]", |
| 411 | "cfg_uc": "", | ||
| 412 | "banned_tokens": "", | 420 | "banned_tokens": "", |
| 413 | "order": [ | 421 | "order": [ |
| 414 | 1, | 422 | 1, |
| @@ -451,7 +459,6 @@ | |||
| 451 | "temp_openai": 1.0, | 459 | "temp_openai": 1.0, |
| 452 | "freq_pen_openai": 0, | 460 | "freq_pen_openai": 0, |
| 453 | "pres_pen_openai": 0, | 461 | "pres_pen_openai": 0, |
| 454 | "count_pen": 0, | ||
| 455 | "top_p_openai": 1, | 462 | "top_p_openai": 1, |
| 456 | "top_k_openai": 0, | 463 | "top_k_openai": 0, |
| 457 | "stream_openai": true, | 464 | "stream_openai": true, |
| @@ -613,7 +620,7 @@ | |||
| 613 | "wi_format": "{0}", | 620 | "wi_format": "{0}", |
| 614 | "openai_model": "gpt-4-turbo", | 621 | "openai_model": "gpt-4-turbo", |
| 615 | "claude_model": "claude-3-5-sonnet-20240620", | 622 | "claude_model": "claude-3-5-sonnet-20240620", |
| 616 | "ai21_model": "j2-ultra", | 623 | "ai21_model": "jamba-1.5-large", |
| 617 | "windowai_model": "", | 624 | "windowai_model": "", |
| 618 | "openrouter_model": "OR_Website", | 625 | "openrouter_model": "OR_Website", |
| 619 | "jailbreak_system": true, | 626 | "jailbreak_system": true, |
| @@ -624,7 +631,6 @@ | |||
| 624 | "show_external_models": false, | 631 | "show_external_models": false, |
| 625 | "proxy_password": "", | 632 | "proxy_password": "", |
| 626 | "assistant_prefill": "", | 633 | "assistant_prefill": "", |
| 627 | "assistant_impersonation": "", | 634 | "assistant_impersonation": "" |
| 628 | "use_ai21_tokenizer": false | ||
| 629 | } | 635 | } |
| 630 | } | 636 | } |
| @@ -23,6 +23,7 @@ | |||
| 23 | "timestamps_enabled": true, | 23 | "timestamps_enabled": true, |
| 24 | "timestamp_model_icon": false, | 24 | "timestamp_model_icon": false, |
| 25 | "mesIDDisplay_enabled": true, | 25 | "mesIDDisplay_enabled": true, |
| 26 | "hideChatAvatars_enabled": false, | ||
| 26 | "message_token_count_enabled": false, | 27 | "message_token_count_enabled": false, |
| 27 | "expand_message_actions": false, | 28 | "expand_message_actions": false, |
| 28 | "enableZenSliders": false, | 29 | "enableZenSliders": false, |
| @@ -23,6 +23,7 @@ | |||
| 23 | "timestamps_enabled": true, | 23 | "timestamps_enabled": true, |
| 24 | "timestamp_model_icon": true, | 24 | "timestamp_model_icon": true, |
| 25 | "mesIDDisplay_enabled": true, | 25 | "mesIDDisplay_enabled": true, |
| 26 | "hideChatAvatars_enabled": false, | ||
| 26 | "message_token_count_enabled": false, | 27 | "message_token_count_enabled": false, |
| 27 | "expand_message_actions": false, | 28 | "expand_message_actions": false, |
| 28 | "enableZenSliders": false, | 29 | "enableZenSliders": false, |
| @@ -23,6 +23,7 @@ | |||
| 23 | "timestamps_enabled": true, | 23 | "timestamps_enabled": true, |
| 24 | "timestamp_model_icon": true, | 24 | "timestamp_model_icon": true, |
| 25 | "mesIDDisplay_enabled": false, | 25 | "mesIDDisplay_enabled": false, |
| 26 | "hideChatAvatars_enabled": false, | ||
| 26 | "message_token_count_enabled": false, | 27 | "message_token_count_enabled": false, |
| 27 | "expand_message_actions": false, | 28 | "expand_message_actions": false, |
| 28 | "enableZenSliders": "", | 29 | "enableZenSliders": "", |
Binary file
| @@ -1,12 +1,12 @@ | |||
| 1 | { | 1 | { |
| 2 | "name": "sillytavern", | 2 | "name": "sillytavern", |
| 3 | "version": "1.12.5", | 3 | "version": "1.12.6", |
| 4 | "lockfileVersion": 3, | 4 | "lockfileVersion": 3, |
| 5 | "requires": true, | 5 | "requires": true, |
| 6 | "packages": { | 6 | "packages": { |
| 7 | "": { | 7 | "": { |
| 8 | "name": "sillytavern", | 8 | "name": "sillytavern", |
| 9 | "version": "1.12.5", | 9 | "version": "1.12.6", |
| 10 | "hasInstallScript": true, | 10 | "hasInstallScript": true, |
| 11 | "license": "AGPL-3.0", | 11 | "license": "AGPL-3.0", |
| 12 | "dependencies": { | 12 | "dependencies": { |
| @@ -22,7 +22,7 @@ | |||
| 22 | "cookie-session": "^2.1.0", | 22 | "cookie-session": "^2.1.0", |
| 23 | "cors": "^2.8.5", | 23 | "cors": "^2.8.5", |
| 24 | "csrf-csrf": "^2.2.3", | 24 | "csrf-csrf": "^2.2.3", |
| 25 | "express": "^4.20.0", | 25 | "express": "^4.21.0", |
| 26 | "form-data": "^4.0.0", | 26 | "form-data": "^4.0.0", |
| 27 | "google-translate-api-browser": "^3.0.1", | 27 | "google-translate-api-browser": "^3.0.1", |
| 28 | "he": "^1.2.0", | 28 | "he": "^1.2.0", |
| @@ -40,12 +40,13 @@ | |||
| 40 | "png-chunk-text": "^1.0.0", | 40 | "png-chunk-text": "^1.0.0", |
| 41 | "png-chunks-encode": "^1.0.0", | 41 | "png-chunks-encode": "^1.0.0", |
| 42 | "png-chunks-extract": "^1.0.0", | 42 | "png-chunks-extract": "^1.0.0", |
| 43 | "proxy-agent": "^6.4.0", | ||
| 43 | "rate-limiter-flexible": "^5.0.0", | 44 | "rate-limiter-flexible": "^5.0.0", |
| 44 | "response-time": "^2.3.2", | 45 | "response-time": "^2.3.2", |
| 45 | "sanitize-filename": "^1.6.3", | 46 | "sanitize-filename": "^1.6.3", |
| 46 | "sillytavern-transformers": "2.14.6", | 47 | "sillytavern-transformers": "2.14.6", |
| 47 | "simple-git": "^3.19.1", | 48 | "simple-git": "^3.19.1", |
| 48 | "tiktoken": "^1.0.15", | 49 | "tiktoken": "^1.0.16", |
| 49 | "vectra": "^0.2.2", | 50 | "vectra": "^0.2.2", |
| 50 | "wavefile": "^11.0.0", | 51 | "wavefile": "^11.0.0", |
| 51 | "write-file-atomic": "^5.0.1", | 52 | "write-file-atomic": "^5.0.1", |
| @@ -941,6 +942,12 @@ | |||
| 941 | "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==", | 942 | "integrity": "sha512-OvjF+z51L3ov0OyAU0duzsYuvO01PH7x4t6DJx+guahgTnBHkhJdG7soQeTSFLWN3efnHyibZ4Z8l2EuWwJN3A==", |
| 942 | "license": "MIT" | 943 | "license": "MIT" |
| 943 | }, | 944 | }, |
| 945 | "node_modules/@tootallnate/quickjs-emscripten": { | ||
| 946 | "version": "0.23.0", | ||
| 947 | "resolved": "https://registry.npmjs.org/@tootallnate/quickjs-emscripten/-/quickjs-emscripten-0.23.0.tgz", | ||
| 948 | "integrity": "sha512-C5Mc6rdnsaJDjO3UpGW/CQTHtCKaYlScZTly4JIu97Jxo/odCiH0ITnDXSJPTOrEKk/ycSZ0AOgTmkDtkOsvIA==", | ||
| 949 | "license": "MIT" | ||
| 950 | }, | ||
| 944 | "node_modules/@types/cacheable-request": { | 951 | "node_modules/@types/cacheable-request": { |
| 945 | "version": "6.0.3", | 952 | "version": "6.0.3", |
| 946 | "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz", | 953 | "resolved": "https://registry.npmjs.org/@types/cacheable-request/-/cacheable-request-6.0.3.tgz", |
| @@ -1080,6 +1087,41 @@ | |||
| 1080 | "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" | 1087 | "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" |
| 1081 | } | 1088 | } |
| 1082 | }, | 1089 | }, |
| 1090 | "node_modules/agent-base": { | ||
| 1091 | "version": "7.1.1", | ||
| 1092 | "resolved": "https://registry.npmjs.org/agent-base/-/agent-base-7.1.1.tgz", | ||
| 1093 | "integrity": "sha512-H0TSyFNDMomMNJQBn8wFV5YC/2eJ+VXECwOadZJT554xP6cODZHPX3H9QMQECxvrgiSOP1pHjy1sMWQVYJOUOA==", | ||
| 1094 | "license": "MIT", | ||
| 1095 | "dependencies": { | ||
| 1096 | "debug": "^4.3.4" | ||
| 1097 | }, | ||
| 1098 | "engines": { | ||
| 1099 | "node": ">= 14" | ||
| 1100 | } | ||
| 1101 | }, | ||
| 1102 | "node_modules/agent-base/node_modules/debug": { | ||
| 1103 | "version": "4.3.7", | ||
| 1104 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", | ||
| 1105 | "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", | ||
| 1106 | "license": "MIT", | ||
| 1107 | "dependencies": { | ||
| 1108 | "ms": "^2.1.3" | ||
| 1109 | }, | ||
| 1110 | "engines": { | ||
| 1111 | "node": ">=6.0" | ||
| 1112 | }, | ||
| 1113 | "peerDependenciesMeta": { | ||
| 1114 | "supports-color": { | ||
| 1115 | "optional": true | ||
| 1116 | } | ||
| 1117 | } | ||
| 1118 | }, | ||
| 1119 | "node_modules/agent-base/node_modules/ms": { | ||
| 1120 | "version": "2.1.3", | ||
| 1121 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", | ||
| 1122 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", | ||
| 1123 | "license": "MIT" | ||
| 1124 | }, | ||
| 1083 | "node_modules/agentkeepalive": { | 1125 | "node_modules/agentkeepalive": { |
| 1084 | "version": "4.5.0", | 1126 | "version": "4.5.0", |
| 1085 | "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.5.0.tgz", | 1127 | "resolved": "https://registry.npmjs.org/agentkeepalive/-/agentkeepalive-4.5.0.tgz", |
| @@ -1382,6 +1424,18 @@ | |||
| 1382 | "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", | 1424 | "integrity": "sha512-PCVAQswWemu6UdxsDFFX/+gVeYqKAod3D3UVm91jHwynguOwAvYPhx8nNlM++NqRcK6CxxpUafjmhIdKiHibqg==", |
| 1383 | "license": "MIT" | 1425 | "license": "MIT" |
| 1384 | }, | 1426 | }, |
| 1427 | "node_modules/ast-types": { | ||
| 1428 | "version": "0.13.4", | ||
| 1429 | "resolved": "https://registry.npmjs.org/ast-types/-/ast-types-0.13.4.tgz", | ||
| 1430 | "integrity": "sha512-x1FCFnFifvYDDzTaLII71vG5uvDwgtmDTEVWAxrgeiR8VjMONcCXJx7E+USjDtHlwFmt9MysbqgF9b9Vjr6w+w==", | ||
| 1431 | "license": "MIT", | ||
| 1432 | "dependencies": { | ||
| 1433 | "tslib": "^2.0.1" | ||
| 1434 | }, | ||
| 1435 | "engines": { | ||
| 1436 | "node": ">=4" | ||
| 1437 | } | ||
| 1438 | }, | ||
| 1385 | "node_modules/async": { | 1439 | "node_modules/async": { |
| 1386 | "version": "3.2.5", | 1440 | "version": "3.2.5", |
| 1387 | "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", | 1441 | "resolved": "https://registry.npmjs.org/async/-/async-3.2.5.tgz", |
| @@ -1445,6 +1499,15 @@ | |||
| 1445 | ], | 1499 | ], |
| 1446 | "license": "MIT" | 1500 | "license": "MIT" |
| 1447 | }, | 1501 | }, |
| 1502 | "node_modules/basic-ftp": { | ||
| 1503 | "version": "5.0.5", | ||
| 1504 | "resolved": "https://registry.npmjs.org/basic-ftp/-/basic-ftp-5.0.5.tgz", | ||
| 1505 | "integrity": "sha512-4Bcg1P8xhUuqcii/S0Z9wiHIrQVPMermM1any+MX5GeGD7faD3/msQUDGLol9wOcz4/jbg/WJnGqoJF6LiBdtg==", | ||
| 1506 | "license": "MIT", | ||
| 1507 | "engines": { | ||
| 1508 | "node": ">=10.0.0" | ||
| 1509 | } | ||
| 1510 | }, | ||
| 1448 | "node_modules/bing-translate-api": { | 1511 | "node_modules/bing-translate-api": { |
| 1449 | "version": "2.9.1", | 1512 | "version": "2.9.1", |
| 1450 | "resolved": "https://registry.npmjs.org/bing-translate-api/-/bing-translate-api-2.9.1.tgz", | 1513 | "resolved": "https://registry.npmjs.org/bing-translate-api/-/bing-translate-api-2.9.1.tgz", |
| @@ -1505,21 +1568,6 @@ | |||
| 1505 | "node": ">=0.10.0" | 1568 | "node": ">=0.10.0" |
| 1506 | } | 1569 | } |
| 1507 | }, | 1570 | }, |
| 1508 | "node_modules/body-parser/node_modules/qs": { | ||
| 1509 | "version": "6.13.0", | ||
| 1510 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", | ||
| 1511 | "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", | ||
| 1512 | "license": "BSD-3-Clause", | ||
| 1513 | "dependencies": { | ||
| 1514 | "side-channel": "^1.0.6" | ||
| 1515 | }, | ||
| 1516 | "engines": { | ||
| 1517 | "node": ">=0.6" | ||
| 1518 | }, | ||
| 1519 | "funding": { | ||
| 1520 | "url": "https://github.com/sponsors/ljharb" | ||
| 1521 | } | ||
| 1522 | }, | ||
| 1523 | "node_modules/boolbase": { | 1571 | "node_modules/boolbase": { |
| 1524 | "version": "1.0.0", | 1572 | "version": "1.0.0", |
| 1525 | "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", | 1573 | "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", |
| @@ -1665,6 +1713,7 @@ | |||
| 1665 | "version": "2.7.0", | 1713 | "version": "2.7.0", |
| 1666 | "resolved": "https://registry.npmjs.org/centra/-/centra-2.7.0.tgz", | 1714 | "resolved": "https://registry.npmjs.org/centra/-/centra-2.7.0.tgz", |
| 1667 | "integrity": "sha512-PbFMgMSrmgx6uxCdm57RUos9Tc3fclMvhLSATYN39XsDV29B89zZ3KA89jmY0vwSGazyU+uerqwa6t+KaodPcg==", | 1715 | "integrity": "sha512-PbFMgMSrmgx6uxCdm57RUos9Tc3fclMvhLSATYN39XsDV29B89zZ3KA89jmY0vwSGazyU+uerqwa6t+KaodPcg==", |
| 1716 | "license": "MIT", | ||
| 1668 | "dependencies": { | 1717 | "dependencies": { |
| 1669 | "follow-redirects": "^1.15.6" | 1718 | "follow-redirects": "^1.15.6" |
| 1670 | } | 1719 | } |
| @@ -2250,6 +2299,15 @@ | |||
| 2250 | "url": "https://github.com/sponsors/fb55" | 2299 | "url": "https://github.com/sponsors/fb55" |
| 2251 | } | 2300 | } |
| 2252 | }, | 2301 | }, |
| 2302 | "node_modules/data-uri-to-buffer": { | ||
| 2303 | "version": "6.0.2", | ||
| 2304 | "resolved": "https://registry.npmjs.org/data-uri-to-buffer/-/data-uri-to-buffer-6.0.2.tgz", | ||
| 2305 | "integrity": "sha512-7hvf7/GW8e86rW0ptuwS3OcBGDjIi6SZva7hCyWC0yYry2cOPmLIjXAUHI6DK2HsnwJd9ifmt57i8eV2n4YNpw==", | ||
| 2306 | "license": "MIT", | ||
| 2307 | "engines": { | ||
| 2308 | "node": ">= 14" | ||
| 2309 | } | ||
| 2310 | }, | ||
| 2253 | "node_modules/debug": { | 2311 | "node_modules/debug": { |
| 2254 | "version": "2.6.9", | 2312 | "version": "2.6.9", |
| 2255 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", | 2313 | "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", |
| @@ -2316,6 +2374,20 @@ | |||
| 2316 | "node": ">=8" | 2374 | "node": ">=8" |
| 2317 | } | 2375 | } |
| 2318 | }, | 2376 | }, |
| 2377 | "node_modules/degenerator": { | ||
| 2378 | "version": "5.0.1", | ||
| 2379 | "resolved": "https://registry.npmjs.org/degenerator/-/degenerator-5.0.1.tgz", | ||
| 2380 | "integrity": "sha512-TllpMR/t0M5sqCXfj85i4XaAzxmS5tVA16dqvdkMwGmzI+dXLXnw3J+3Vdv7VKw+ThlTMboK6i9rnZ6Nntj5CQ==", | ||
| 2381 | "license": "MIT", | ||
| 2382 | "dependencies": { | ||
| 2383 | "ast-types": "^0.13.4", | ||
| 2384 | "escodegen": "^2.1.0", | ||
| 2385 | "esprima": "^4.0.1" | ||
| 2386 | }, | ||
| 2387 | "engines": { | ||
| 2388 | "node": ">= 14" | ||
| 2389 | } | ||
| 2390 | }, | ||
| 2319 | "node_modules/delayed-stream": { | 2391 | "node_modules/delayed-stream": { |
| 2320 | "version": "1.0.0", | 2392 | "version": "1.0.0", |
| 2321 | "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", | 2393 | "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", |
| @@ -2454,9 +2526,9 @@ | |||
| 2454 | "license": "MIT" | 2526 | "license": "MIT" |
| 2455 | }, | 2527 | }, |
| 2456 | "node_modules/encodeurl": { | 2528 | "node_modules/encodeurl": { |
| 2457 | "version": "1.0.2", | 2529 | "version": "2.0.0", |
| 2458 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", | 2530 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", |
| 2459 | "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", | 2531 | "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", |
| 2460 | "license": "MIT", | 2532 | "license": "MIT", |
| 2461 | "engines": { | 2533 | "engines": { |
| 2462 | "node": ">= 0.8" | 2534 | "node": ">= 0.8" |
| @@ -2528,6 +2600,27 @@ | |||
| 2528 | "node": ">=0.8.0" | 2600 | "node": ">=0.8.0" |
| 2529 | } | 2601 | } |
| 2530 | }, | 2602 | }, |
| 2603 | "node_modules/escodegen": { | ||
| 2604 | "version": "2.1.0", | ||
| 2605 | "resolved": "https://registry.npmjs.org/escodegen/-/escodegen-2.1.0.tgz", | ||
| 2606 | "integrity": "sha512-2NlIDTwUWJN0mRPQOdtQBzbUHvdGY2P1VXSyU83Q3xKxM7WHX2Ql8dKq782Q9TgQUNOLEzEYu9bzLNj1q88I5w==", | ||
| 2607 | "license": "BSD-2-Clause", | ||
| 2608 | "dependencies": { | ||
| 2609 | "esprima": "^4.0.1", | ||
| 2610 | "estraverse": "^5.2.0", | ||
| 2611 | "esutils": "^2.0.2" | ||
| 2612 | }, | ||
| 2613 | "bin": { | ||
| 2614 | "escodegen": "bin/escodegen.js", | ||
| 2615 | "esgenerate": "bin/esgenerate.js" | ||
| 2616 | }, | ||
| 2617 | "engines": { | ||
| 2618 | "node": ">=6.0" | ||
| 2619 | }, | ||
| 2620 | "optionalDependencies": { | ||
| 2621 | "source-map": "~0.6.1" | ||
| 2622 | } | ||
| 2623 | }, | ||
| 2531 | "node_modules/eslint": { | 2624 | "node_modules/eslint": { |
| 2532 | "version": "8.57.0", | 2625 | "version": "8.57.0", |
| 2533 | "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", | 2626 | "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", |
| @@ -2683,6 +2776,19 @@ | |||
| 2683 | "url": "https://opencollective.com/eslint" | 2776 | "url": "https://opencollective.com/eslint" |
| 2684 | } | 2777 | } |
| 2685 | }, | 2778 | }, |
| 2779 | "node_modules/esprima": { | ||
| 2780 | "version": "4.0.1", | ||
| 2781 | "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", | ||
| 2782 | "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", | ||
| 2783 | "license": "BSD-2-Clause", | ||
| 2784 | "bin": { | ||
| 2785 | "esparse": "bin/esparse.js", | ||
| 2786 | "esvalidate": "bin/esvalidate.js" | ||
| 2787 | }, | ||
| 2788 | "engines": { | ||
| 2789 | "node": ">=4" | ||
| 2790 | } | ||
| 2791 | }, | ||
| 2686 | "node_modules/esquery": { | 2792 | "node_modules/esquery": { |
| 2687 | "version": "1.5.0", | 2793 | "version": "1.5.0", |
| 2688 | "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", | 2794 | "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.5.0.tgz", |
| @@ -2713,7 +2819,6 @@ | |||
| 2713 | "version": "5.3.0", | 2819 | "version": "5.3.0", |
| 2714 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", | 2820 | "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", |
| 2715 | "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", | 2821 | "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", |
| 2716 | "dev": true, | ||
| 2717 | "license": "BSD-2-Clause", | 2822 | "license": "BSD-2-Clause", |
| 2718 | "engines": { | 2823 | "engines": { |
| 2719 | "node": ">=4.0" | 2824 | "node": ">=4.0" |
| @@ -2723,7 +2828,6 @@ | |||
| 2723 | "version": "2.0.3", | 2828 | "version": "2.0.3", |
| 2724 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", | 2829 | "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", |
| 2725 | "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", | 2830 | "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", |
| 2726 | "dev": true, | ||
| 2727 | "license": "BSD-2-Clause", | 2831 | "license": "BSD-2-Clause", |
| 2728 | "engines": { | 2832 | "engines": { |
| 2729 | "node": ">=0.10.0" | 2833 | "node": ">=0.10.0" |
| @@ -2761,9 +2865,9 @@ | |||
| 2761 | "integrity": "sha512-c2bQfLNbMzLPmzQuOr8fy0csy84WmwnER81W88DzTp9CYNPJ6yzOj2EZAh9pywYpqHnshVLHQJ8WzldAyfY+Iw==" | 2865 | "integrity": "sha512-c2bQfLNbMzLPmzQuOr8fy0csy84WmwnER81W88DzTp9CYNPJ6yzOj2EZAh9pywYpqHnshVLHQJ8WzldAyfY+Iw==" |
| 2762 | }, | 2866 | }, |
| 2763 | "node_modules/express": { | 2867 | "node_modules/express": { |
| 2764 | "version": "4.20.0", | 2868 | "version": "4.21.0", |
| 2765 | "resolved": "https://registry.npmjs.org/express/-/express-4.20.0.tgz", | 2869 | "resolved": "https://registry.npmjs.org/express/-/express-4.21.0.tgz", |
| 2766 | "integrity": "sha512-pLdae7I6QqShF5PnNTCVn4hI91Dx0Grkn2+IAsMTgMIKuQVte2dN9PeGSSAME2FR8anOhVA62QDIUaWVfEXVLw==", | 2870 | "integrity": "sha512-VqcNGcj/Id5ZT1LZ/cfihi3ttTn+NJmkli2eZADigjq29qTlWi/hAQ43t/VLPq8+UX06FCEx3ByOYet6ZFblng==", |
| 2767 | "license": "MIT", | 2871 | "license": "MIT", |
| 2768 | "dependencies": { | 2872 | "dependencies": { |
| 2769 | "accepts": "~1.3.8", | 2873 | "accepts": "~1.3.8", |
| @@ -2778,7 +2882,7 @@ | |||
| 2778 | "encodeurl": "~2.0.0", | 2882 | "encodeurl": "~2.0.0", |
| 2779 | "escape-html": "~1.0.3", | 2883 | "escape-html": "~1.0.3", |
| 2780 | "etag": "~1.8.1", | 2884 | "etag": "~1.8.1", |
| 2781 | "finalhandler": "1.2.0", | 2885 | "finalhandler": "1.3.1", |
| 2782 | "fresh": "0.5.2", | 2886 | "fresh": "0.5.2", |
| 2783 | "http-errors": "2.0.0", | 2887 | "http-errors": "2.0.0", |
| 2784 | "merge-descriptors": "1.0.3", | 2888 | "merge-descriptors": "1.0.3", |
| @@ -2787,11 +2891,11 @@ | |||
| 2787 | "parseurl": "~1.3.3", | 2891 | "parseurl": "~1.3.3", |
| 2788 | "path-to-regexp": "0.1.10", | 2892 | "path-to-regexp": "0.1.10", |
| 2789 | "proxy-addr": "~2.0.7", | 2893 | "proxy-addr": "~2.0.7", |
| 2790 | "qs": "6.11.0", | 2894 | "qs": "6.13.0", |
| 2791 | "range-parser": "~1.2.1", | 2895 | "range-parser": "~1.2.1", |
| 2792 | "safe-buffer": "5.2.1", | 2896 | "safe-buffer": "5.2.1", |
| 2793 | "send": "0.19.0", | 2897 | "send": "0.19.0", |
| 2794 | "serve-static": "1.16.0", | 2898 | "serve-static": "1.16.2", |
| 2795 | "setprototypeof": "1.2.0", | 2899 | "setprototypeof": "1.2.0", |
| 2796 | "statuses": "2.0.1", | 2900 | "statuses": "2.0.1", |
| 2797 | "type-is": "~1.6.18", | 2901 | "type-is": "~1.6.18", |
| @@ -2810,15 +2914,6 @@ | |||
| 2810 | "node": ">= 0.6" | 2914 | "node": ">= 0.6" |
| 2811 | } | 2915 | } |
| 2812 | }, | 2916 | }, |
| 2813 | "node_modules/express/node_modules/encodeurl": { | ||
| 2814 | "version": "2.0.0", | ||
| 2815 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-2.0.0.tgz", | ||
| 2816 | "integrity": "sha512-Q0n9HRi4m6JuGIV1eFlmvJB7ZEVxu93IrMyiMsGC0lrMJMWzRgx6WGquyfQgZVb31vhGgXnfmPNNXmxnOkRBrg==", | ||
| 2817 | "license": "MIT", | ||
| 2818 | "engines": { | ||
| 2819 | "node": ">= 0.8" | ||
| 2820 | } | ||
| 2821 | }, | ||
| 2822 | "node_modules/express/node_modules/safe-buffer": { | 2917 | "node_modules/express/node_modules/safe-buffer": { |
| 2823 | "version": "5.2.1", | 2918 | "version": "5.2.1", |
| 2824 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", | 2919 | "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.2.1.tgz", |
| @@ -2915,13 +3010,13 @@ | |||
| 2915 | } | 3010 | } |
| 2916 | }, | 3011 | }, |
| 2917 | "node_modules/finalhandler": { | 3012 | "node_modules/finalhandler": { |
| 2918 | "version": "1.2.0", | 3013 | "version": "1.3.1", |
| 2919 | "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.2.0.tgz", | 3014 | "resolved": "https://registry.npmjs.org/finalhandler/-/finalhandler-1.3.1.tgz", |
| 2920 | "integrity": "sha512-5uXcUVftlQMFnWC9qu/svkWv3GTd2PfUhK/3PLkYNAe7FbqJMt3515HaxE6eRL74GdsriiwujiawdaB1BpEISg==", | 3015 | "integrity": "sha512-6BN9trH7bp3qvnrRyzsBz+g3lZxTNZTbVO2EV1CS0WIcDbawYVdYvGflME/9QP0h0pYlCDBCTjYa9nZzMDpyxQ==", |
| 2921 | "license": "MIT", | 3016 | "license": "MIT", |
| 2922 | "dependencies": { | 3017 | "dependencies": { |
| 2923 | "debug": "2.6.9", | 3018 | "debug": "2.6.9", |
| 2924 | "encodeurl": "~1.0.2", | 3019 | "encodeurl": "~2.0.0", |
| 2925 | "escape-html": "~1.0.3", | 3020 | "escape-html": "~1.0.3", |
| 2926 | "on-finished": "2.4.1", | 3021 | "on-finished": "2.4.1", |
| 2927 | "parseurl": "~1.3.3", | 3022 | "parseurl": "~1.3.3", |
| @@ -3071,6 +3166,20 @@ | |||
| 3071 | "node": ">= 0.6" | 3166 | "node": ">= 0.6" |
| 3072 | } | 3167 | } |
| 3073 | }, | 3168 | }, |
| 3169 | "node_modules/fs-extra": { | ||
| 3170 | "version": "11.2.0", | ||
| 3171 | "resolved": "https://registry.npmjs.org/fs-extra/-/fs-extra-11.2.0.tgz", | ||
| 3172 | "integrity": "sha512-PmDi3uwK5nFuXh7XDTlVnS17xJS7vW36is2+w3xcv8SVxiB4NyATf4ctkVY5bkSjX0Y4nbvZCq1/EjtEyr9ktw==", | ||
| 3173 | "license": "MIT", | ||
| 3174 | "dependencies": { | ||
| 3175 | "graceful-fs": "^4.2.0", | ||
| 3176 | "jsonfile": "^6.0.1", | ||
| 3177 | "universalify": "^2.0.0" | ||
| 3178 | }, | ||
| 3179 | "engines": { | ||
| 3180 | "node": ">=14.14" | ||
| 3181 | } | ||
| 3182 | }, | ||
| 3074 | "node_modules/fs.realpath": { | 3183 | "node_modules/fs.realpath": { |
| 3075 | "version": "1.0.0", | 3184 | "version": "1.0.0", |
| 3076 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", | 3185 | "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", |
| @@ -3130,6 +3239,44 @@ | |||
| 3130 | "url": "https://github.com/sponsors/sindresorhus" | 3239 | "url": "https://github.com/sponsors/sindresorhus" |
| 3131 | } | 3240 | } |
| 3132 | }, | 3241 | }, |
| 3242 | "node_modules/get-uri": { | ||
| 3243 | "version": "6.0.3", | ||
| 3244 | "resolved": "https://registry.npmjs.org/get-uri/-/get-uri-6.0.3.tgz", | ||
| 3245 | "integrity": "sha512-BzUrJBS9EcUb4cFol8r4W3v1cPsSyajLSthNkz5BxbpDcHN5tIrM10E2eNvfnvBn3DaT3DUgx0OpsBKkaOpanw==", | ||
| 3246 | "license": "MIT", | ||
| 3247 | "dependencies": { | ||
| 3248 | "basic-ftp": "^5.0.2", | ||
| 3249 | "data-uri-to-buffer": "^6.0.2", | ||
| 3250 | "debug": "^4.3.4", | ||
| 3251 | "fs-extra": "^11.2.0" | ||
| 3252 | }, | ||
| 3253 | "engines": { | ||
| 3254 | "node": ">= 14" | ||
| 3255 | } | ||
| 3256 | }, | ||
| 3257 | "node_modules/get-uri/node_modules/debug": { | ||
| 3258 | "version": "4.3.7", | ||
| 3259 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", | ||
| 3260 | "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", | ||
| 3261 | "license": "MIT", | ||
| 3262 | "dependencies": { | ||
| 3263 | "ms": "^2.1.3" | ||
| 3264 | }, | ||
| 3265 | "engines": { | ||
| 3266 | "node": ">=6.0" | ||
| 3267 | }, | ||
| 3268 | "peerDependenciesMeta": { | ||
| 3269 | "supports-color": { | ||
| 3270 | "optional": true | ||
| 3271 | } | ||
| 3272 | } | ||
| 3273 | }, | ||
| 3274 | "node_modules/get-uri/node_modules/ms": { | ||
| 3275 | "version": "2.1.3", | ||
| 3276 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", | ||
| 3277 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", | ||
| 3278 | "license": "MIT" | ||
| 3279 | }, | ||
| 3133 | "node_modules/gifwrap": { | 3280 | "node_modules/gifwrap": { |
| 3134 | "version": "0.10.1", | 3281 | "version": "0.10.1", |
| 3135 | "resolved": "https://registry.npmjs.org/gifwrap/-/gifwrap-0.10.1.tgz", | 3282 | "resolved": "https://registry.npmjs.org/gifwrap/-/gifwrap-0.10.1.tgz", |
| @@ -3369,6 +3516,42 @@ | |||
| 3369 | "node": ">= 0.8" | 3516 | "node": ">= 0.8" |
| 3370 | } | 3517 | } |
| 3371 | }, | 3518 | }, |
| 3519 | "node_modules/http-proxy-agent": { | ||
| 3520 | "version": "7.0.2", | ||
| 3521 | "resolved": "https://registry.npmjs.org/http-proxy-agent/-/http-proxy-agent-7.0.2.tgz", | ||
| 3522 | "integrity": "sha512-T1gkAiYYDWYx3V5Bmyu7HcfcvL7mUrTWiM6yOfa3PIphViJ/gFPbvidQ+veqSOHci/PxBcDabeUNCzpOODJZig==", | ||
| 3523 | "license": "MIT", | ||
| 3524 | "dependencies": { | ||
| 3525 | "agent-base": "^7.1.0", | ||
| 3526 | "debug": "^4.3.4" | ||
| 3527 | }, | ||
| 3528 | "engines": { | ||
| 3529 | "node": ">= 14" | ||
| 3530 | } | ||
| 3531 | }, | ||
| 3532 | "node_modules/http-proxy-agent/node_modules/debug": { | ||
| 3533 | "version": "4.3.7", | ||
| 3534 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", | ||
| 3535 | "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", | ||
| 3536 | "license": "MIT", | ||
| 3537 | "dependencies": { | ||
| 3538 | "ms": "^2.1.3" | ||
| 3539 | }, | ||
| 3540 | "engines": { | ||
| 3541 | "node": ">=6.0" | ||
| 3542 | }, | ||
| 3543 | "peerDependenciesMeta": { | ||
| 3544 | "supports-color": { | ||
| 3545 | "optional": true | ||
| 3546 | } | ||
| 3547 | } | ||
| 3548 | }, | ||
| 3549 | "node_modules/http-proxy-agent/node_modules/ms": { | ||
| 3550 | "version": "2.1.3", | ||
| 3551 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", | ||
| 3552 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", | ||
| 3553 | "license": "MIT" | ||
| 3554 | }, | ||
| 3372 | "node_modules/http2-wrapper": { | 3555 | "node_modules/http2-wrapper": { |
| 3373 | "version": "1.0.3", | 3556 | "version": "1.0.3", |
| 3374 | "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", | 3557 | "resolved": "https://registry.npmjs.org/http2-wrapper/-/http2-wrapper-1.0.3.tgz", |
| @@ -3382,6 +3565,42 @@ | |||
| 3382 | "node": ">=10.19.0" | 3565 | "node": ">=10.19.0" |
| 3383 | } | 3566 | } |
| 3384 | }, | 3567 | }, |
| 3568 | "node_modules/https-proxy-agent": { | ||
| 3569 | "version": "7.0.5", | ||
| 3570 | "resolved": "https://registry.npmjs.org/https-proxy-agent/-/https-proxy-agent-7.0.5.tgz", | ||
| 3571 | "integrity": "sha512-1e4Wqeblerz+tMKPIq2EMGiiWW1dIjZOksyHWSUm1rmuvw/how9hBHZ38lAGj5ID4Ik6EdkOw7NmWPy6LAwalw==", | ||
| 3572 | "license": "MIT", | ||
| 3573 | "dependencies": { | ||
| 3574 | "agent-base": "^7.0.2", | ||
| 3575 | "debug": "4" | ||
| 3576 | }, | ||
| 3577 | "engines": { | ||
| 3578 | "node": ">= 14" | ||
| 3579 | } | ||
| 3580 | }, | ||
| 3581 | "node_modules/https-proxy-agent/node_modules/debug": { | ||
| 3582 | "version": "4.3.7", | ||
| 3583 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", | ||
| 3584 | "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", | ||
| 3585 | "license": "MIT", | ||
| 3586 | "dependencies": { | ||
| 3587 | "ms": "^2.1.3" | ||
| 3588 | }, | ||
| 3589 | "engines": { | ||
| 3590 | "node": ">=6.0" | ||
| 3591 | }, | ||
| 3592 | "peerDependenciesMeta": { | ||
| 3593 | "supports-color": { | ||
| 3594 | "optional": true | ||
| 3595 | } | ||
| 3596 | } | ||
| 3597 | }, | ||
| 3598 | "node_modules/https-proxy-agent/node_modules/ms": { | ||
| 3599 | "version": "2.1.3", | ||
| 3600 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", | ||
| 3601 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", | ||
| 3602 | "license": "MIT" | ||
| 3603 | }, | ||
| 3385 | "node_modules/humanize-ms": { | 3604 | "node_modules/humanize-ms": { |
| 3386 | "version": "1.2.1", | 3605 | "version": "1.2.1", |
| 3387 | "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", | 3606 | "resolved": "https://registry.npmjs.org/humanize-ms/-/humanize-ms-1.2.1.tgz", |
| @@ -3485,6 +3704,19 @@ | |||
| 3485 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", | 3704 | "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", |
| 3486 | "license": "ISC" | 3705 | "license": "ISC" |
| 3487 | }, | 3706 | }, |
| 3707 | "node_modules/ip-address": { | ||
| 3708 | "version": "9.0.5", | ||
| 3709 | "resolved": "https://registry.npmjs.org/ip-address/-/ip-address-9.0.5.tgz", | ||
| 3710 | "integrity": "sha512-zHtQzGojZXTwZTHQqra+ETKd4Sn3vgi7uBmlPoXVWZqYvuKmtI0l/VZTjqGmJY9x88GGOaZ9+G9ES8hC4T4X8g==", | ||
| 3711 | "license": "MIT", | ||
| 3712 | "dependencies": { | ||
| 3713 | "jsbn": "1.1.0", | ||
| 3714 | "sprintf-js": "^1.1.3" | ||
| 3715 | }, | ||
| 3716 | "engines": { | ||
| 3717 | "node": ">= 12" | ||
| 3718 | } | ||
| 3719 | }, | ||
| 3488 | "node_modules/ip-matching": { | 3720 | "node_modules/ip-matching": { |
| 3489 | "version": "2.1.2", | 3721 | "version": "2.1.2", |
| 3490 | "resolved": "https://registry.npmjs.org/ip-matching/-/ip-matching-2.1.2.tgz", | 3722 | "resolved": "https://registry.npmjs.org/ip-matching/-/ip-matching-2.1.2.tgz", |
| @@ -3669,6 +3901,12 @@ | |||
| 3669 | "js-yaml": "bin/js-yaml.js" | 3901 | "js-yaml": "bin/js-yaml.js" |
| 3670 | } | 3902 | } |
| 3671 | }, | 3903 | }, |
| 3904 | "node_modules/jsbn": { | ||
| 3905 | "version": "1.1.0", | ||
| 3906 | "resolved": "https://registry.npmjs.org/jsbn/-/jsbn-1.1.0.tgz", | ||
| 3907 | "integrity": "sha512-4bYVV3aAMtDTTu4+xsDYa6sy9GyJ69/amsu9sYF2zqjiEoZA5xJi3BrfX3uY+/IekIu7MwdObdbDWpoZdBv3/A==", | ||
| 3908 | "license": "MIT" | ||
| 3909 | }, | ||
| 3672 | "node_modules/json-buffer": { | 3910 | "node_modules/json-buffer": { |
| 3673 | "version": "3.0.1", | 3911 | "version": "3.0.1", |
| 3674 | "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", | 3912 | "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", |
| @@ -3761,6 +3999,18 @@ | |||
| 3761 | "dev": true, | 3999 | "dev": true, |
| 3762 | "license": "MIT" | 4000 | "license": "MIT" |
| 3763 | }, | 4001 | }, |
| 4002 | "node_modules/jsonfile": { | ||
| 4003 | "version": "6.1.0", | ||
| 4004 | "resolved": "https://registry.npmjs.org/jsonfile/-/jsonfile-6.1.0.tgz", | ||
| 4005 | "integrity": "sha512-5dgndWOriYSm5cnYaJNhalLNDKOqFwyDB/rr1E9ZsGciGvKPs8R2xYGCacuf3z6K1YKDz182fd+fY3cn3pMqXQ==", | ||
| 4006 | "license": "MIT", | ||
| 4007 | "dependencies": { | ||
| 4008 | "universalify": "^2.0.0" | ||
| 4009 | }, | ||
| 4010 | "optionalDependencies": { | ||
| 4011 | "graceful-fs": "^4.1.6" | ||
| 4012 | } | ||
| 4013 | }, | ||
| 3764 | "node_modules/keygrip": { | 4014 | "node_modules/keygrip": { |
| 3765 | "version": "1.1.0", | 4015 | "version": "1.1.0", |
| 3766 | "resolved": "https://registry.npmjs.org/keygrip/-/keygrip-1.1.0.tgz", | 4016 | "resolved": "https://registry.npmjs.org/keygrip/-/keygrip-1.1.0.tgz", |
| @@ -3807,9 +4057,9 @@ | |||
| 3807 | } | 4057 | } |
| 3808 | }, | 4058 | }, |
| 3809 | "node_modules/load-bmfont": { | 4059 | "node_modules/load-bmfont": { |
| 3810 | "version": "1.4.1", | 4060 | "version": "1.4.2", |
| 3811 | "resolved": "https://registry.npmjs.org/load-bmfont/-/load-bmfont-1.4.1.tgz", | 4061 | "resolved": "https://registry.npmjs.org/load-bmfont/-/load-bmfont-1.4.2.tgz", |
| 3812 | "integrity": "sha512-8UyQoYmdRDy81Brz6aLAUhfZLwr5zV0L3taTQ4hju7m6biuwiWiJXjPhBJxbUQJA8PrkvJ/7Enqmwk2sM14soA==", | 4062 | "integrity": "sha512-qElWkmjW9Oq1F9EI5Gt7aD9zcdHb9spJCW1L/dmPf7KzCCEJxq8nhHz5eCgI9aMf7vrG/wyaCqdsI+Iy9ZTlog==", |
| 3813 | "license": "MIT", | 4063 | "license": "MIT", |
| 3814 | "dependencies": { | 4064 | "dependencies": { |
| 3815 | "buffer-equal": "0.0.1", | 4065 | "buffer-equal": "0.0.1", |
| @@ -3817,7 +4067,7 @@ | |||
| 3817 | "parse-bmfont-ascii": "^1.0.3", | 4067 | "parse-bmfont-ascii": "^1.0.3", |
| 3818 | "parse-bmfont-binary": "^1.0.5", | 4068 | "parse-bmfont-binary": "^1.0.5", |
| 3819 | "parse-bmfont-xml": "^1.1.4", | 4069 | "parse-bmfont-xml": "^1.1.4", |
| 3820 | "phin": "^2.9.1", | 4070 | "phin": "^3.7.1", |
| 3821 | "xhr": "^2.0.1", | 4071 | "xhr": "^2.0.1", |
| 3822 | "xtend": "^4.0.0" | 4072 | "xtend": "^4.0.0" |
| 3823 | } | 4073 | } |
| @@ -4053,6 +4303,15 @@ | |||
| 4053 | "node": ">= 0.6" | 4303 | "node": ">= 0.6" |
| 4054 | } | 4304 | } |
| 4055 | }, | 4305 | }, |
| 4306 | "node_modules/netmask": { | ||
| 4307 | "version": "2.0.2", | ||
| 4308 | "resolved": "https://registry.npmjs.org/netmask/-/netmask-2.0.2.tgz", | ||
| 4309 | "integrity": "sha512-dBpDMdxv9Irdq66304OLfEmQ9tbNRFnFTuZiLo+bD+r332bBmMJ8GBLXklIXXgxd3+v9+KUnZaUR5PJMa75Gsg==", | ||
| 4310 | "license": "MIT", | ||
| 4311 | "engines": { | ||
| 4312 | "node": ">= 0.4.0" | ||
| 4313 | } | ||
| 4314 | }, | ||
| 4056 | "node_modules/node-domexception": { | 4315 | "node_modules/node-domexception": { |
| 4057 | "version": "1.0.0", | 4316 | "version": "1.0.0", |
| 4058 | "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", | 4317 | "resolved": "https://registry.npmjs.org/node-domexception/-/node-domexception-1.0.0.tgz", |
| @@ -4323,6 +4582,61 @@ | |||
| 4323 | "url": "https://github.com/sponsors/sindresorhus" | 4582 | "url": "https://github.com/sponsors/sindresorhus" |
| 4324 | } | 4583 | } |
| 4325 | }, | 4584 | }, |
| 4585 | "node_modules/pac-proxy-agent": { | ||
| 4586 | "version": "7.0.2", | ||
| 4587 | "resolved": "https://registry.npmjs.org/pac-proxy-agent/-/pac-proxy-agent-7.0.2.tgz", | ||
| 4588 | "integrity": "sha512-BFi3vZnO9X5Qt6NRz7ZOaPja3ic0PhlsmCRYLOpN11+mWBCR6XJDqW5RF3j8jm4WGGQZtBA+bTfxYzeKW73eHg==", | ||
| 4589 | "license": "MIT", | ||
| 4590 | "dependencies": { | ||
| 4591 | "@tootallnate/quickjs-emscripten": "^0.23.0", | ||
| 4592 | "agent-base": "^7.0.2", | ||
| 4593 | "debug": "^4.3.4", | ||
| 4594 | "get-uri": "^6.0.1", | ||
| 4595 | "http-proxy-agent": "^7.0.0", | ||
| 4596 | "https-proxy-agent": "^7.0.5", | ||
| 4597 | "pac-resolver": "^7.0.1", | ||
| 4598 | "socks-proxy-agent": "^8.0.4" | ||
| 4599 | }, | ||
| 4600 | "engines": { | ||
| 4601 | "node": ">= 14" | ||
| 4602 | } | ||
| 4603 | }, | ||
| 4604 | "node_modules/pac-proxy-agent/node_modules/debug": { | ||
| 4605 | "version": "4.3.7", | ||
| 4606 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", | ||
| 4607 | "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", | ||
| 4608 | "license": "MIT", | ||
| 4609 | "dependencies": { | ||
| 4610 | "ms": "^2.1.3" | ||
| 4611 | }, | ||
| 4612 | "engines": { | ||
| 4613 | "node": ">=6.0" | ||
| 4614 | }, | ||
| 4615 | "peerDependenciesMeta": { | ||
| 4616 | "supports-color": { | ||
| 4617 | "optional": true | ||
| 4618 | } | ||
| 4619 | } | ||
| 4620 | }, | ||
| 4621 | "node_modules/pac-proxy-agent/node_modules/ms": { | ||
| 4622 | "version": "2.1.3", | ||
| 4623 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", | ||
| 4624 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", | ||
| 4625 | "license": "MIT" | ||
| 4626 | }, | ||
| 4627 | "node_modules/pac-resolver": { | ||
| 4628 | "version": "7.0.1", | ||
| 4629 | "resolved": "https://registry.npmjs.org/pac-resolver/-/pac-resolver-7.0.1.tgz", | ||
| 4630 | "integrity": "sha512-5NPgf87AT2STgwa2ntRMr45jTKrYBGkVU36yT0ig/n/GMAa3oPqhZfIQ2kMEimReg0+t9kZViDVZ83qfVUlckg==", | ||
| 4631 | "license": "MIT", | ||
| 4632 | "dependencies": { | ||
| 4633 | "degenerator": "^5.0.0", | ||
| 4634 | "netmask": "^2.0.2" | ||
| 4635 | }, | ||
| 4636 | "engines": { | ||
| 4637 | "node": ">= 14" | ||
| 4638 | } | ||
| 4639 | }, | ||
| 4326 | "node_modules/pako": { | 4640 | "node_modules/pako": { |
| 4327 | "version": "1.0.11", | 4641 | "version": "1.0.11", |
| 4328 | "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", | 4642 | "resolved": "https://registry.npmjs.org/pako/-/pako-1.0.11.tgz", |
| @@ -4355,13 +4669,13 @@ | |||
| 4355 | "license": "MIT" | 4669 | "license": "MIT" |
| 4356 | }, | 4670 | }, |
| 4357 | "node_modules/parse-bmfont-xml": { | 4671 | "node_modules/parse-bmfont-xml": { |
| 4358 | "version": "1.1.4", | 4672 | "version": "1.1.6", |
| 4359 | "resolved": "https://registry.npmjs.org/parse-bmfont-xml/-/parse-bmfont-xml-1.1.4.tgz", | 4673 | "resolved": "https://registry.npmjs.org/parse-bmfont-xml/-/parse-bmfont-xml-1.1.6.tgz", |
| 4360 | "integrity": "sha512-bjnliEOmGv3y1aMEfREMBJ9tfL3WR0i0CKPj61DnSLaoxWR3nLrsQrEbCId/8rF4NyRF0cCqisSVXyQYWM+mCQ==", | 4674 | "integrity": "sha512-0cEliVMZEhrFDwMh4SxIyVJpqYoOWDJ9P895tFuS+XuNzI5UBmBk5U5O4KuJdTnZpSBI4LFA2+ZiJaiwfSwlMA==", |
| 4361 | "license": "MIT", | 4675 | "license": "MIT", |
| 4362 | "dependencies": { | 4676 | "dependencies": { |
| 4363 | "xml-parse-from-string": "^1.0.0", | 4677 | "xml-parse-from-string": "^1.0.0", |
| 4364 | "xml2js": "^0.4.5" | 4678 | "xml2js": "^0.5.0" |
| 4365 | } | 4679 | } |
| 4366 | }, | 4680 | }, |
| 4367 | "node_modules/parse-headers": { | 4681 | "node_modules/parse-headers": { |
| @@ -4477,6 +4791,7 @@ | |||
| 4477 | "version": "3.7.1", | 4791 | "version": "3.7.1", |
| 4478 | "resolved": "https://registry.npmjs.org/phin/-/phin-3.7.1.tgz", | 4792 | "resolved": "https://registry.npmjs.org/phin/-/phin-3.7.1.tgz", |
| 4479 | "integrity": "sha512-GEazpTWwTZaEQ9RhL7Nyz0WwqilbqgLahDM3D0hxWwmVDI52nXEybHqiN6/elwpkJBhcuj+WbBu+QfT0uhPGfQ==", | 4793 | "integrity": "sha512-GEazpTWwTZaEQ9RhL7Nyz0WwqilbqgLahDM3D0hxWwmVDI52nXEybHqiN6/elwpkJBhcuj+WbBu+QfT0uhPGfQ==", |
| 4794 | "license": "MIT", | ||
| 4480 | "dependencies": { | 4795 | "dependencies": { |
| 4481 | "centra": "^2.7.0" | 4796 | "centra": "^2.7.0" |
| 4482 | }, | 4797 | }, |
| @@ -4618,6 +4933,57 @@ | |||
| 4618 | "node": ">= 0.10" | 4933 | "node": ">= 0.10" |
| 4619 | } | 4934 | } |
| 4620 | }, | 4935 | }, |
| 4936 | "node_modules/proxy-agent": { | ||
| 4937 | "version": "6.4.0", | ||
| 4938 | "resolved": "https://registry.npmjs.org/proxy-agent/-/proxy-agent-6.4.0.tgz", | ||
| 4939 | "integrity": "sha512-u0piLU+nCOHMgGjRbimiXmA9kM/L9EHh3zL81xCdp7m+Y2pHIsnmbdDoEDoAz5geaonNR6q6+yOPQs6n4T6sBQ==", | ||
| 4940 | "license": "MIT", | ||
| 4941 | "dependencies": { | ||
| 4942 | "agent-base": "^7.0.2", | ||
| 4943 | "debug": "^4.3.4", | ||
| 4944 | "http-proxy-agent": "^7.0.1", | ||
| 4945 | "https-proxy-agent": "^7.0.3", | ||
| 4946 | "lru-cache": "^7.14.1", | ||
| 4947 | "pac-proxy-agent": "^7.0.1", | ||
| 4948 | "proxy-from-env": "^1.1.0", | ||
| 4949 | "socks-proxy-agent": "^8.0.2" | ||
| 4950 | }, | ||
| 4951 | "engines": { | ||
| 4952 | "node": ">= 14" | ||
| 4953 | } | ||
| 4954 | }, | ||
| 4955 | "node_modules/proxy-agent/node_modules/debug": { | ||
| 4956 | "version": "4.3.7", | ||
| 4957 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", | ||
| 4958 | "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", | ||
| 4959 | "license": "MIT", | ||
| 4960 | "dependencies": { | ||
| 4961 | "ms": "^2.1.3" | ||
| 4962 | }, | ||
| 4963 | "engines": { | ||
| 4964 | "node": ">=6.0" | ||
| 4965 | }, | ||
| 4966 | "peerDependenciesMeta": { | ||
| 4967 | "supports-color": { | ||
| 4968 | "optional": true | ||
| 4969 | } | ||
| 4970 | } | ||
| 4971 | }, | ||
| 4972 | "node_modules/proxy-agent/node_modules/lru-cache": { | ||
| 4973 | "version": "7.18.3", | ||
| 4974 | "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-7.18.3.tgz", | ||
| 4975 | "integrity": "sha512-jumlc0BIUrS3qJGgIkWZsyfAM7NCWiBcCDhnd+3NNM5KbBmLTgHVfWBcg6W+rLUsIpzpERPsvwUP7CckAQSOoA==", | ||
| 4976 | "license": "ISC", | ||
| 4977 | "engines": { | ||
| 4978 | "node": ">=12" | ||
| 4979 | } | ||
| 4980 | }, | ||
| 4981 | "node_modules/proxy-agent/node_modules/ms": { | ||
| 4982 | "version": "2.1.3", | ||
| 4983 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", | ||
| 4984 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", | ||
| 4985 | "license": "MIT" | ||
| 4986 | }, | ||
| 4621 | "node_modules/proxy-from-env": { | 4987 | "node_modules/proxy-from-env": { |
| 4622 | "version": "1.1.0", | 4988 | "version": "1.1.0", |
| 4623 | "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", | 4989 | "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", |
| @@ -4644,12 +5010,12 @@ | |||
| 4644 | } | 5010 | } |
| 4645 | }, | 5011 | }, |
| 4646 | "node_modules/qs": { | 5012 | "node_modules/qs": { |
| 4647 | "version": "6.11.0", | 5013 | "version": "6.13.0", |
| 4648 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.11.0.tgz", | 5014 | "resolved": "https://registry.npmjs.org/qs/-/qs-6.13.0.tgz", |
| 4649 | "integrity": "sha512-MvjoMCJwEarSbUYk5O+nmoSzSutSsTwF85zcHPQ9OrlFoZOYIjaqBAJIqIXjptyD5vThxGq52Xu/MaJzRkIk4Q==", | 5015 | "integrity": "sha512-+38qI9SOr8tfZ4QmJNplMUxqjbe7LKvvZgWdExBOmd+egZTtjLB67Gu0HRX3u/XOq7UU2Nx6nsjvS16Z9uwfpg==", |
| 4650 | "license": "BSD-3-Clause", | 5016 | "license": "BSD-3-Clause", |
| 4651 | "dependencies": { | 5017 | "dependencies": { |
| 4652 | "side-channel": "^1.0.4" | 5018 | "side-channel": "^1.0.6" |
| 4653 | }, | 5019 | }, |
| 4654 | "engines": { | 5020 | "engines": { |
| 4655 | "node": ">=0.6" | 5021 | "node": ">=0.6" |
| @@ -4956,9 +5322,9 @@ | |||
| 4956 | } | 5322 | } |
| 4957 | }, | 5323 | }, |
| 4958 | "node_modules/sax": { | 5324 | "node_modules/sax": { |
| 4959 | "version": "1.2.4", | 5325 | "version": "1.4.1", |
| 4960 | "resolved": "https://registry.npmjs.org/sax/-/sax-1.2.4.tgz", | 5326 | "resolved": "https://registry.npmjs.org/sax/-/sax-1.4.1.tgz", |
| 4961 | "integrity": "sha512-NqVDv9TpANUjFm0N8uM5GxL36UgKi9/atZw+x7YFnQ8ckwFGKrl4xX4yWtrey3UJm5nP1kUbnYgLopqWNSRhWw==", | 5327 | "integrity": "sha512-+aWOz7yVScEGoKNd4PA10LZ8sk0A/z5+nXQG5giUO5rprX9jgYsTdov9qCchZiPIZezbZH+jRut8nPodFAX4Jg==", |
| 4962 | "license": "ISC" | 5328 | "license": "ISC" |
| 4963 | }, | 5329 | }, |
| 4964 | "node_modules/send": { | 5330 | "node_modules/send": { |
| @@ -4985,6 +5351,15 @@ | |||
| 4985 | "node": ">= 0.8.0" | 5351 | "node": ">= 0.8.0" |
| 4986 | } | 5352 | } |
| 4987 | }, | 5353 | }, |
| 5354 | "node_modules/send/node_modules/encodeurl": { | ||
| 5355 | "version": "1.0.2", | ||
| 5356 | "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", | ||
| 5357 | "integrity": "sha512-TPJXq8JqFaVYm2CWmPvnP2Iyo4ZSM7/QKcSmuMLDObfpH5fi7RUGmd/rTDf+rut/saiDiQEeVTNgAmJEdAOx0w==", | ||
| 5358 | "license": "MIT", | ||
| 5359 | "engines": { | ||
| 5360 | "node": ">= 0.8" | ||
| 5361 | } | ||
| 5362 | }, | ||
| 4988 | "node_modules/send/node_modules/ms": { | 5363 | "node_modules/send/node_modules/ms": { |
| 4989 | "version": "2.1.3", | 5364 | "version": "2.1.3", |
| 4990 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", | 5365 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", |
| @@ -4992,15 +5367,15 @@ | |||
| 4992 | "license": "MIT" | 5367 | "license": "MIT" |
| 4993 | }, | 5368 | }, |
| 4994 | "node_modules/serve-static": { | 5369 | "node_modules/serve-static": { |
| 4995 | "version": "1.16.0", | 5370 | "version": "1.16.2", |
| 4996 | "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.0.tgz", | 5371 | "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.16.2.tgz", |
| 4997 | "integrity": "sha512-pDLK8zwl2eKaYrs8mrPZBJua4hMplRWJ1tIFksVC3FtBEBnl8dxgeHtsaMS8DhS9i4fLObaon6ABoc4/hQGdPA==", | 5372 | "integrity": "sha512-VqpjJZKadQB/PEbEwvFdO43Ax5dFBZ2UECszz8bQ7pi7wt//PWe1P6MN7eCnjsatYtBT6EuiClbjSWP2WrIoTw==", |
| 4998 | "license": "MIT", | 5373 | "license": "MIT", |
| 4999 | "dependencies": { | 5374 | "dependencies": { |
| 5000 | "encodeurl": "~1.0.2", | 5375 | "encodeurl": "~2.0.0", |
| 5001 | "escape-html": "~1.0.3", | 5376 | "escape-html": "~1.0.3", |
| 5002 | "parseurl": "~1.3.3", | 5377 | "parseurl": "~1.3.3", |
| 5003 | "send": "0.18.0" | 5378 | "send": "0.19.0" |
| 5004 | }, | 5379 | }, |
| 5005 | "engines": { | 5380 | "engines": { |
| 5006 | "node": ">= 0.8.0" | 5381 | "node": ">= 0.8.0" |
| @@ -5135,6 +5510,83 @@ | |||
| 5135 | "integrity": "sha512-VZBmZP8WU3sMOZm1bdgTadsQbcscK0UM8oKxKVBs4XAhUo2Xxzm/OFMGBkPusxw9xL3Uy8LrzEqGqJhclsr0yA==", | 5510 | "integrity": "sha512-VZBmZP8WU3sMOZm1bdgTadsQbcscK0UM8oKxKVBs4XAhUo2Xxzm/OFMGBkPusxw9xL3Uy8LrzEqGqJhclsr0yA==", |
| 5136 | "license": "MIT" | 5511 | "license": "MIT" |
| 5137 | }, | 5512 | }, |
| 5513 | "node_modules/smart-buffer": { | ||
| 5514 | "version": "4.2.0", | ||
| 5515 | "resolved": "https://registry.npmjs.org/smart-buffer/-/smart-buffer-4.2.0.tgz", | ||
| 5516 | "integrity": "sha512-94hK0Hh8rPqQl2xXc3HsaBoOXKV20MToPkcXvwbISWLEs+64sBq5kFgn2kJDHb1Pry9yrP0dxrCI9RRci7RXKg==", | ||
| 5517 | "license": "MIT", | ||
| 5518 | "engines": { | ||
| 5519 | "node": ">= 6.0.0", | ||
| 5520 | "npm": ">= 3.0.0" | ||
| 5521 | } | ||
| 5522 | }, | ||
| 5523 | "node_modules/socks": { | ||
| 5524 | "version": "2.8.3", | ||
| 5525 | "resolved": "https://registry.npmjs.org/socks/-/socks-2.8.3.tgz", | ||
| 5526 | "integrity": "sha512-l5x7VUUWbjVFbafGLxPWkYsHIhEvmF85tbIeFZWc8ZPtoMyybuEhL7Jye/ooC4/d48FgOjSJXgsF/AJPYCW8Zw==", | ||
| 5527 | "license": "MIT", | ||
| 5528 | "dependencies": { | ||
| 5529 | "ip-address": "^9.0.5", | ||
| 5530 | "smart-buffer": "^4.2.0" | ||
| 5531 | }, | ||
| 5532 | "engines": { | ||
| 5533 | "node": ">= 10.0.0", | ||
| 5534 | "npm": ">= 3.0.0" | ||
| 5535 | } | ||
| 5536 | }, | ||
| 5537 | "node_modules/socks-proxy-agent": { | ||
| 5538 | "version": "8.0.4", | ||
| 5539 | "resolved": "https://registry.npmjs.org/socks-proxy-agent/-/socks-proxy-agent-8.0.4.tgz", | ||
| 5540 | "integrity": "sha512-GNAq/eg8Udq2x0eNiFkr9gRg5bA7PXEWagQdeRX4cPSG+X/8V38v637gim9bjFptMk1QWsCTr0ttrJEiXbNnRw==", | ||
| 5541 | "license": "MIT", | ||
| 5542 | "dependencies": { | ||
| 5543 | "agent-base": "^7.1.1", | ||
| 5544 | "debug": "^4.3.4", | ||
| 5545 | "socks": "^2.8.3" | ||
| 5546 | }, | ||
| 5547 | "engines": { | ||
| 5548 | "node": ">= 14" | ||
| 5549 | } | ||
| 5550 | }, | ||
| 5551 | "node_modules/socks-proxy-agent/node_modules/debug": { | ||
| 5552 | "version": "4.3.7", | ||
| 5553 | "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", | ||
| 5554 | "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", | ||
| 5555 | "license": "MIT", | ||
| 5556 | "dependencies": { | ||
| 5557 | "ms": "^2.1.3" | ||
| 5558 | }, | ||
| 5559 | "engines": { | ||
| 5560 | "node": ">=6.0" | ||
| 5561 | }, | ||
| 5562 | "peerDependenciesMeta": { | ||
| 5563 | "supports-color": { | ||
| 5564 | "optional": true | ||
| 5565 | } | ||
| 5566 | } | ||
| 5567 | }, | ||
| 5568 | "node_modules/socks-proxy-agent/node_modules/ms": { | ||
| 5569 | "version": "2.1.3", | ||
| 5570 | "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", | ||
| 5571 | "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", | ||
| 5572 | "license": "MIT" | ||
| 5573 | }, | ||
| 5574 | "node_modules/source-map": { | ||
| 5575 | "version": "0.6.1", | ||
| 5576 | "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", | ||
| 5577 | "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", | ||
| 5578 | "license": "BSD-3-Clause", | ||
| 5579 | "optional": true, | ||
| 5580 | "engines": { | ||
| 5581 | "node": ">=0.10.0" | ||
| 5582 | } | ||
| 5583 | }, | ||
| 5584 | "node_modules/sprintf-js": { | ||
| 5585 | "version": "1.1.3", | ||
| 5586 | "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.1.3.tgz", | ||
| 5587 | "integrity": "sha512-Oo+0REFV59/rz3gfJNKQiBlwfHaSESl1pcGyABQsnnIfWOFt6JNj5gCog2U6MLZ//IGYD+nA8nI+mTShREReaA==", | ||
| 5588 | "license": "BSD-3-Clause" | ||
| 5589 | }, | ||
| 5138 | "node_modules/statuses": { | 5590 | "node_modules/statuses": { |
| 5139 | "version": "2.0.1", | 5591 | "version": "2.0.1", |
| 5140 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", | 5592 | "resolved": "https://registry.npmjs.org/statuses/-/statuses-2.0.1.tgz", |
| @@ -5286,9 +5738,10 @@ | |||
| 5286 | "license": "MIT" | 5738 | "license": "MIT" |
| 5287 | }, | 5739 | }, |
| 5288 | "node_modules/tiktoken": { | 5740 | "node_modules/tiktoken": { |
| 5289 | "version": "1.0.15", | 5741 | "version": "1.0.16", |
| 5290 | "resolved": "https://registry.npmjs.org/tiktoken/-/tiktoken-1.0.15.tgz", | 5742 | "resolved": "https://registry.npmjs.org/tiktoken/-/tiktoken-1.0.16.tgz", |
| 5291 | "integrity": "sha512-sCsrq/vMWUSEW29CJLNmPvWxlVp7yh2tlkAjpJltIKqp5CKf98ZNpdeHRmAlPVFlGEbswDc6SmI8vz64W/qErw==" | 5743 | "integrity": "sha512-hRcORIGF2YlAgWx3nzrGJOrKSJwLoc81HpXmMQk89632XAgURc7IeV2FgQ2iXo9z/J96fCvpsHg2kWoHcbj9fg==", |
| 5744 | "license": "MIT" | ||
| 5292 | }, | 5745 | }, |
| 5293 | "node_modules/timm": { | 5746 | "node_modules/timm": { |
| 5294 | "version": "1.7.1", | 5747 | "version": "1.7.1", |
| @@ -5348,6 +5801,12 @@ | |||
| 5348 | "utf8-byte-length": "^1.0.1" | 5801 | "utf8-byte-length": "^1.0.1" |
| 5349 | } | 5802 | } |
| 5350 | }, | 5803 | }, |
| 5804 | "node_modules/tslib": { | ||
| 5805 | "version": "2.7.0", | ||
| 5806 | "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.7.0.tgz", | ||
| 5807 | "integrity": "sha512-gLXCKdN1/j47AiHiOkJN69hJmcbGTHI0ImLmbYLHykhgeN0jVGola9yVjFgzCUklsZQMW55o+dW7IXv3RCXDzA==", | ||
| 5808 | "license": "0BSD" | ||
| 5809 | }, | ||
| 5351 | "node_modules/tsscmp": { | 5810 | "node_modules/tsscmp": { |
| 5352 | "version": "1.0.6", | 5811 | "version": "1.0.6", |
| 5353 | "resolved": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.6.tgz", | 5812 | "resolved": "https://registry.npmjs.org/tsscmp/-/tsscmp-1.0.6.tgz", |
| @@ -5407,6 +5866,15 @@ | |||
| 5407 | "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", | 5866 | "integrity": "sha512-JlCMO+ehdEIKqlFxk6IfVoAUVmgz7cU7zD/h9XZ0qzeosSHmUJVOzSQvvYSYWXkFXC+IfLKSIffhv0sVZup6pA==", |
| 5408 | "license": "MIT" | 5867 | "license": "MIT" |
| 5409 | }, | 5868 | }, |
| 5869 | "node_modules/universalify": { | ||
| 5870 | "version": "2.0.1", | ||
| 5871 | "resolved": "https://registry.npmjs.org/universalify/-/universalify-2.0.1.tgz", | ||
| 5872 | "integrity": "sha512-gptHNQghINnc/vTGIk0SOFGFNXw7JVrlRUtConJRlvaw6DuX0wO5Jeko9sWrMBhh+PsYAZ7oXAiOnf/UKogyiw==", | ||
| 5873 | "license": "MIT", | ||
| 5874 | "engines": { | ||
| 5875 | "node": ">= 10.0.0" | ||
| 5876 | } | ||
| 5877 | }, | ||
| 5410 | "node_modules/unpipe": { | 5878 | "node_modules/unpipe": { |
| 5411 | "version": "1.0.0", | 5879 | "version": "1.0.0", |
| 5412 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", | 5880 | "resolved": "https://registry.npmjs.org/unpipe/-/unpipe-1.0.0.tgz", |
| @@ -12,7 +12,7 @@ | |||
| 12 | "cookie-session": "^2.1.0", | 12 | "cookie-session": "^2.1.0", |
| 13 | "cors": "^2.8.5", | 13 | "cors": "^2.8.5", |
| 14 | "csrf-csrf": "^2.2.3", | 14 | "csrf-csrf": "^2.2.3", |
| 15 | "express": "^4.20.0", | 15 | "express": "^4.21.0", |
| 16 | "form-data": "^4.0.0", | 16 | "form-data": "^4.0.0", |
| 17 | "google-translate-api-browser": "^3.0.1", | 17 | "google-translate-api-browser": "^3.0.1", |
| 18 | "he": "^1.2.0", | 18 | "he": "^1.2.0", |
| @@ -30,12 +30,13 @@ | |||
| 30 | "png-chunk-text": "^1.0.0", | 30 | "png-chunk-text": "^1.0.0", |
| 31 | "png-chunks-encode": "^1.0.0", | 31 | "png-chunks-encode": "^1.0.0", |
| 32 | "png-chunks-extract": "^1.0.0", | 32 | "png-chunks-extract": "^1.0.0", |
| 33 | "proxy-agent": "^6.4.0", | ||
| 33 | "rate-limiter-flexible": "^5.0.0", | 34 | "rate-limiter-flexible": "^5.0.0", |
| 34 | "response-time": "^2.3.2", | 35 | "response-time": "^2.3.2", |
| 35 | "sanitize-filename": "^1.6.3", | 36 | "sanitize-filename": "^1.6.3", |
| 36 | "sillytavern-transformers": "2.14.6", | 37 | "sillytavern-transformers": "2.14.6", |
| 37 | "simple-git": "^3.19.1", | 38 | "simple-git": "^3.19.1", |
| 38 | "tiktoken": "^1.0.15", | 39 | "tiktoken": "^1.0.16", |
| 39 | "vectra": "^0.2.2", | 40 | "vectra": "^0.2.2", |
| 40 | "wavefile": "^11.0.0", | 41 | "wavefile": "^11.0.0", |
| 41 | "write-file-atomic": "^5.0.1", | 42 | "write-file-atomic": "^5.0.1", |
| @@ -48,23 +49,14 @@ | |||
| 48 | "node": ">= 18" | 49 | "node": ">= 18" |
| 49 | }, | 50 | }, |
| 50 | "overrides": { | 51 | "overrides": { |
| 51 | "parse-bmfont-xml": { | ||
| 52 | "xml2js": "^0.5.0" | ||
| 53 | }, | ||
| 54 | "vectra": { | 52 | "vectra": { |
| 55 | "openai": "^4.17.0" | 53 | "openai": "^4.17.0" |
| 56 | }, | 54 | }, |
| 57 | "load-bmfont": { | ||
| 58 | "phin": "^3.7.1" | ||
| 59 | }, | ||
| 60 | "axios": { | 55 | "axios": { |
| 61 | "follow-redirects": "^1.15.4" | 56 | "follow-redirects": "^1.15.4" |
| 62 | }, | 57 | }, |
| 63 | "node-fetch": { | 58 | "node-fetch": { |
| 64 | "whatwg-url": "^14.0.0" | 59 | "whatwg-url": "^14.0.0" |
| 65 | }, | ||
| 66 | "express": { | ||
| 67 | "send": "^0.19.0" | ||
| 68 | } | 60 | } |
| 69 | }, | 61 | }, |
| 70 | "name": "sillytavern", | 62 | "name": "sillytavern", |
| @@ -74,7 +66,7 @@ | |||
| 74 | "type": "git", | 66 | "type": "git", |
| 75 | "url": "https://github.com/SillyTavern/SillyTavern.git" | 67 | "url": "https://github.com/SillyTavern/SillyTavern.git" |
| 76 | }, | 68 | }, |
| 77 | "version": "1.12.5", | 69 | "version": "1.12.6", |
| 78 | "scripts": { | 70 | "scripts": { |
| 79 | "start": "node server.js", | 71 | "start": "node server.js", |
| 80 | "start:no-csrf": "node server.js --disableCsrf", | 72 | "start:no-csrf": "node server.js --disableCsrf", |
| @@ -1,11 +1,14 @@ | |||
| 1 | // Plugin manager script. | 1 | // Plugin manager script. |
| 2 | // Usage: node plugins.js update | 2 | // Usage: |
| 3 | // 1. node plugins.js update | ||
| 4 | // 2. node plugins.js install <plugin-git-url> | ||
| 3 | // More operations coming soon. | 5 | // More operations coming soon. |
| 4 | const { default: git } = require('simple-git'); | 6 | const { default: git } = require('simple-git'); |
| 5 | const fs = require('fs'); | 7 | const fs = require('fs'); |
| 6 | const path = require('path'); | 8 | const path = require('path'); |
| 7 | const { color } = require('./src/util'); | 9 | const { color } = require('./src/util'); |
| 8 | 10 | ||
| 11 | process.chdir(__dirname); | ||
| 9 | const pluginsPath = './plugins'; | 12 | const pluginsPath = './plugins'; |
| 10 | 13 | ||
| 11 | const command = process.argv[2]; | 14 | const command = process.argv[2]; |
| @@ -55,7 +58,6 @@ async function updatePlugins() { | |||
| 55 | } | 58 | } |
| 56 | 59 | ||
| 57 | console.log(color.magenta('All plugins updated!')); | 60 | console.log(color.magenta('All plugins updated!')); |
| 58 | |||
| 59 | } | 61 | } |
| 60 | 62 | ||
| 61 | async function installPlugin(pluginName) { | 63 | async function installPlugin(pluginName) { |
| @@ -1,6 +1,16 @@ | |||
| 1 | /*will apply to anything 1000px or less. this catches ipads, horizontal phones, and vertical phones)*/ | 1 | /*will apply to anything 1000px or less. this catches ipads, horizontal phones, and vertical phones)*/ |
| 2 | @media screen and (max-width: 1000px) { | 2 | @media screen and (max-width: 1000px) { |
| 3 | 3 | ||
| 4 | #UI-Theme-Block, | ||
| 5 | #UI-Customization, | ||
| 6 | #power-user-options-block, | ||
| 7 | #ContextSettings, | ||
| 8 | #InstructSettingsColumn, | ||
| 9 | #InstructSequencesColumn { | ||
| 10 | flex-basis: 100%; | ||
| 11 | } | ||
| 12 | |||
| 13 | |||
| 4 | #send_form.compact #leftSendForm, | 14 | #send_form.compact #leftSendForm, |
| 5 | #send_form.compact #rightSendForm { | 15 | #send_form.compact #rightSendForm { |
| 6 | flex-wrap: nowrap; | 16 | flex-wrap: nowrap; |
| @@ -93,7 +103,6 @@ | |||
| 93 | touch-action: none; | 103 | touch-action: none; |
| 94 | overflow: hidden; | 104 | overflow: hidden; |
| 95 | position: fixed; | 105 | position: fixed; |
| 96 | |||
| 97 | } | 106 | } |
| 98 | 107 | ||
| 99 | .world_entry_form_control { | 108 | .world_entry_form_control { |
| @@ -102,7 +111,7 @@ | |||
| 102 | 111 | ||
| 103 | .drawer-content { | 112 | .drawer-content { |
| 104 | min-width: unset; | 113 | min-width: unset; |
| 105 | width: 100%; | 114 | width: 100dvw; |
| 106 | max-height: calc(100vh - 45px); | 115 | max-height: calc(100vh - 45px); |
| 107 | max-height: calc(100dvh - 45px); | 116 | max-height: calc(100dvh - 45px); |
| 108 | position: fixed; | 117 | position: fixed; |
| @@ -149,9 +158,9 @@ | |||
| 149 | #sheld, | 158 | #sheld, |
| 150 | #character_popup, | 159 | #character_popup, |
| 151 | .drawer-content { | 160 | .drawer-content { |
| 152 | width: 100% !important; | 161 | width: 100dvw !important; |
| 153 | margin: 0 auto; | 162 | margin: 0 auto; |
| 154 | max-width: 100%; | 163 | max-width: 100dvw; |
| 155 | left: 0 !important; | 164 | left: 0 !important; |
| 156 | resize: none !important; | 165 | resize: none !important; |
| 157 | top: var(--topBarBlockSize); | 166 | top: var(--topBarBlockSize); |
| @@ -223,9 +232,9 @@ | |||
| 223 | /* 100vh are fallback units for browsers that don't support dvh */ | 232 | /* 100vh are fallback units for browsers that don't support dvh */ |
| 224 | height: calc(100vh - 45px); | 233 | height: calc(100vh - 45px); |
| 225 | height: calc(100dvh - 45px); | 234 | height: calc(100dvh - 45px); |
| 226 | min-width: 100% !important; | 235 | min-width: 100dvw !important; |
| 227 | width: 100% !important; | 236 | width: 100dvw !important; |
| 228 | max-width: 100% !important; | 237 | max-width: 100dvw !important; |
| 229 | overflow-y: hidden; | 238 | overflow-y: hidden; |
| 230 | border-left: 1px solid var(--SmartThemeBorderColor); | 239 | border-left: 1px solid var(--SmartThemeBorderColor); |
| 231 | border-right: 1px solid var(--SmartThemeBorderColor); | 240 | border-right: 1px solid var(--SmartThemeBorderColor); |
| @@ -342,17 +351,6 @@ | |||
| 342 | } | 351 | } |
| 343 | } | 352 | } |
| 344 | 353 | ||
| 345 | @media screen and (min-width: 1001px) { | ||
| 346 | |||
| 347 | #PygOverrides, | ||
| 348 | #ContextFormatting, | ||
| 349 | #UI-Theme-Block, | ||
| 350 | #UI-Customization, | ||
| 351 | #power-user-options-block { | ||
| 352 | flex: 1; | ||
| 353 | } | ||
| 354 | } | ||
| 355 | |||
| 356 | /*landscape mode phones and ipads*/ | 354 | /*landscape mode phones and ipads*/ |
| 357 | @media screen and (max-width: 1000px) and (orientation: landscape) { | 355 | @media screen and (max-width: 1000px) and (orientation: landscape) { |
| 358 | body.waifuMode img.expression { | 356 | body.waifuMode img.expression { |
| @@ -482,10 +480,10 @@ | |||
| 482 | margin: 0 auto; | 480 | margin: 0 auto; |
| 483 | height: calc(100vh - 70px); | 481 | height: calc(100vh - 70px); |
| 484 | height: calc(100dvh - 70px); | 482 | height: calc(100dvh - 70px); |
| 485 | width: calc(100% - 5px); | 483 | width: calc(100dvw - 5px); |
| 486 | max-height: calc(100vh - 70px); | 484 | max-height: calc(100vh - 70px); |
| 487 | max-height: calc(100dvh - 70px); | 485 | max-height: calc(100dvh - 70px); |
| 488 | max-width: calc(100% - 5px); | 486 | max-width: calc(100dvw - 5px); |
| 489 | 487 | ||
| 490 | } | 488 | } |
| 491 | 489 | ||
| @@ -47,6 +47,10 @@ dialog { | |||
| 47 | padding: 1px; | 47 | padding: 1px; |
| 48 | } | 48 | } |
| 49 | 49 | ||
| 50 | .popup:not(:has(.img_enlarged_container)) .popup-body { | ||
| 51 | max-height: 95dvh; | ||
| 52 | } | ||
| 53 | |||
| 50 | .popup .popup-content { | 54 | .popup .popup-content { |
| 51 | margin-top: 10px; | 55 | margin-top: 10px; |
| 52 | padding: 0 8px; | 56 | padding: 0 8px; |
| @@ -91,15 +91,34 @@ | |||
| 91 | #completion_prompt_manager_popup #completion_prompt_manager_popup_inspect { | 91 | #completion_prompt_manager_popup #completion_prompt_manager_popup_inspect { |
| 92 | display: none; | 92 | display: none; |
| 93 | padding: 0.5em; | 93 | padding: 0.5em; |
| 94 | height: 100%; | ||
| 95 | display: flex; | ||
| 96 | flex-direction: column; | ||
| 94 | } | 97 | } |
| 95 | 98 | ||
| 96 | #completion_prompt_manager_popup .completion_prompt_manager_popup_entry { | 99 | #completion_prompt_manager_popup .completion_prompt_manager_popup_entry { |
| 97 | padding: 1em; | 100 | padding: 0.5em; |
| 98 | margin-top: 2em; | 101 | flex: 1; |
| 102 | } | ||
| 103 | |||
| 104 | #completion_prompt_manager_popup .completion_prompt_manager_popup_entry_form { | ||
| 105 | height: 100%; | ||
| 106 | display: flex; | ||
| 107 | flex-direction: column; | ||
| 108 | } | ||
| 109 | |||
| 110 | #completion_prompt_manager_popup .completion_prompt_manager_popup_entry_form_control:has(#completion_prompt_manager_popup_entry_form_prompt) { | ||
| 111 | flex: 1; | ||
| 112 | display: flex; | ||
| 113 | flex-direction: column; | ||
| 114 | } | ||
| 115 | |||
| 116 | #completion_prompt_manager_popup #completion_prompt_manager_popup_entry_form_prompt { | ||
| 117 | flex: 1; | ||
| 99 | } | 118 | } |
| 100 | 119 | ||
| 101 | #completion_prompt_manager_popup #completion_prompt_manager_popup_inspect .completion_prompt_manager_popup_entry { | 120 | #completion_prompt_manager_popup #completion_prompt_manager_popup_inspect .completion_prompt_manager_popup_entry { |
| 102 | padding: 1em; | 121 | padding: 0.5em; |
| 103 | } | 122 | } |
| 104 | 123 | ||
| 105 | #completion_prompt_manager_popup #completion_prompt_manager_popup_entry_form_inspect_list { | 124 | #completion_prompt_manager_popup #completion_prompt_manager_popup_entry_form_inspect_list { |
| @@ -248,7 +267,7 @@ | |||
| 248 | } | 267 | } |
| 249 | 268 | ||
| 250 | #completion_prompt_manager_footer_append_prompt { | 269 | #completion_prompt_manager_footer_append_prompt { |
| 251 | font-size: 16px; | 270 | font-size: 1em; |
| 252 | } | 271 | } |
| 253 | 272 | ||
| 254 | #prompt-manager-export-format-popup { | 273 | #prompt-manager-export-format-popup { |
| @@ -303,10 +322,6 @@ | |||
| 303 | justify-content: space-between; | 322 | justify-content: space-between; |
| 304 | } | 323 | } |
| 305 | 324 | ||
| 306 | #prompt-manager-export-format-popup span { | ||
| 307 | font-size: 16px; | ||
| 308 | } | ||
| 309 | |||
| 310 | @media screen and (max-width: 412px) { | 325 | @media screen and (max-width: 412px) { |
| 311 | #completion_prompt_manager_popup { | 326 | #completion_prompt_manager_popup { |
| 312 | max-width: 100%; | 327 | max-width: 100%; |
| @@ -316,3 +331,15 @@ | |||
| 316 | margin-left: 0.5em; | 331 | margin-left: 0.5em; |
| 317 | } | 332 | } |
| 318 | } | 333 | } |
| 334 | |||
| 335 | .completion_prompt_manager_popup_entry_form_control:has(#completion_prompt_manager_popup_entry_form_prompt:disabled)>div:first-child::after { | ||
| 336 | content: 'The content of this prompt is pulled from elsewhere and cannot be edited here.'; | ||
| 337 | display: block; | ||
| 338 | width: 100%; | ||
| 339 | font-weight: 600; | ||
| 340 | text-align: center; | ||
| 341 | } | ||
| 342 | |||
| 343 | .completion_prompt_manager_popup_entry_form_control #completion_prompt_manager_popup_entry_form_prompt:disabled { | ||
| 344 | visibility: hidden; | ||
| 345 | } | ||
| @@ -15,8 +15,13 @@ | |||
| 15 | z-index: 40000; | 15 | z-index: 40000; |
| 16 | } | 16 | } |
| 17 | 17 | ||
| 18 | .select2-selection__clear { | 18 | .select2-container .select2-selection .select2-selection__clear { |
| 19 | color: var(--SmartThemeBodyColor); | 19 | color: var(--SmartThemeBodyColor); |
| 20 | font-size: 24px; | ||
| 21 | padding: 0; | ||
| 22 | position: absolute; | ||
| 23 | right: 5px; | ||
| 24 | top: 0; | ||
| 20 | } | 25 | } |
| 21 | 26 | ||
| 22 | .select2-container .select2-search__field { | 27 | .select2-container .select2-search__field { |
| @@ -360,6 +360,10 @@ | |||
| 360 | margin-right: 2px; | 360 | margin-right: 2px; |
| 361 | } | 361 | } |
| 362 | 362 | ||
| 363 | .flexAuto { | ||
| 364 | flex: auto; | ||
| 365 | } | ||
| 366 | |||
| 363 | .flex0 { | 367 | .flex0 { |
| 364 | flex: 0; | 368 | flex: 0; |
| 365 | } | 369 | } |
| @@ -495,6 +499,10 @@ textarea:disabled { | |||
| 495 | filter: brightness(0.5); | 499 | filter: brightness(0.5); |
| 496 | } | 500 | } |
| 497 | 501 | ||
| 502 | #AdvancedFormatting .disabled { | ||
| 503 | filter: brightness(0.5); | ||
| 504 | } | ||
| 505 | |||
| 498 | .debug-red { | 506 | .debug-red { |
| 499 | border: 1px solid red !important; | 507 | border: 1px solid red !important; |
| 500 | } | 508 | } |
| @@ -28,8 +28,8 @@ body.hideChatAvatars .mesAvatarWrapper .avatar { | |||
| 28 | display: none !important; | 28 | display: none !important; |
| 29 | } | 29 | } |
| 30 | 30 | ||
| 31 | body.hideChatAvatars .last_mes { | 31 | body.hideChatAvatars .last_mes:not(.smallSysMes) { |
| 32 | padding-bottom: 40px !important; | 32 | padding-bottom: 20px !important; |
| 33 | } | 33 | } |
| 34 | 34 | ||
| 35 | body.square-avatars .avatar, | 35 | body.square-avatars .avatar, |
| @@ -455,3 +455,7 @@ body.expandMessageActions .mes .mes_buttons .extraMesButtonsHint { | |||
| 455 | #smooth_streaming:checked~#smooth_streaming_speed_control { | 455 | #smooth_streaming:checked~#smooth_streaming_speed_control { |
| 456 | display: block; | 456 | display: block; |
| 457 | } | 457 | } |
| 458 | |||
| 459 | .mdhotkey_icon { | ||
| 460 | opacity: 0.6; | ||
| 461 | } | ||
| @@ -274,3 +274,7 @@ select.keyselect+span.select2-container .select2-selection--multiple { | |||
| 274 | align-self: center; | 274 | align-self: center; |
| 275 | width: 100%; | 275 | width: 100%; |
| 276 | } | 276 | } |
| 277 | |||
| 278 | .world_entry:has(input[name="delay_until_recursion"]:not(:checked)) .world_entry_form_control:has(input[name="delayUntilRecursionLevel"]) { | ||
| 279 | display: none; | ||
| 280 | } | ||
Binary file
| @@ -0,0 +1,3 @@ | |||
| 1 | <svg xmlns="http://www.w3.org/2000/svg" width="10" height="7"> | ||
| 2 | <polygon points="0,0 10,0 5,7" fill="#888888" /> | ||
| 3 | </svg> | ||
Binary file
| @@ -5,7 +5,7 @@ | |||
| 5 | <title>SillyTavern</title> | 5 | <title>SillyTavern</title> |
| 6 | <base href="/"> | 6 | <base href="/"> |
| 7 | <meta charset="utf-8"> | 7 | <meta charset="utf-8"> |
| 8 | <meta name="viewport" content="width=device-width, viewport-fit=cover, initial-scale=1, maximum-scale=1.0, user-scalable=no"> | 8 | <meta name="viewport" content="width=device-width, viewport-fit=cover, initial-scale=1, maximum-scale=1.0, user-scalable=no, interactive-widget=resizes-content"> |
| 9 | <meta name="apple-mobile-web-app-capable" content="yes"> | 9 | <meta name="apple-mobile-web-app-capable" content="yes"> |
| 10 | <meta name="darkreader-lock"> | 10 | <meta name="darkreader-lock"> |
| 11 | <meta name="robots" content="noindex, nofollow" /> | 11 | <meta name="robots" content="noindex, nofollow" /> |
| @@ -65,7 +65,7 @@ | |||
| 65 | <!-- background selection menu --> | 65 | <!-- background selection menu --> |
| 66 | <div id="ai-config-button" class="drawer"> | 66 | <div id="ai-config-button" class="drawer"> |
| 67 | <div class="drawer-toggle drawer-header"> | 67 | <div class="drawer-toggle drawer-header"> |
| 68 | <div id="leftNavDrawerIcon" class="drawer-icon fa-solid fa-sliders closedIcon" title="AI Response Configuration" data-i18n="[title]AI Response Configuration"></div> | 68 | <div id="leftNavDrawerIcon" class="drawer-icon fa-solid fa-sliders fa-fw closedIcon" title="AI Response Configuration" data-i18n="[title]AI Response Configuration"></div> |
| 69 | </div> | 69 | </div> |
| 70 | <div id="left-nav-panel" class="drawer-content fillLeft closedDrawer"> | 70 | <div id="left-nav-panel" class="drawer-content fillLeft closedDrawer"> |
| 71 | <div id="left-nav-panelheader" class="fa-solid fa-grip drag-grabber"></div> | 71 | <div id="left-nav-panelheader" class="fa-solid fa-grip drag-grabber"></div> |
| @@ -98,12 +98,12 @@ | |||
| 98 | </select> | 98 | </select> |
| 99 | <div class="flex-container marginLeft5 "> | 99 | <div class="flex-container marginLeft5 "> |
| 100 | <input type="file" hidden data-preset-manager-file="kobold" accept=".json, .settings"> | 100 | <input type="file" hidden data-preset-manager-file="kobold" accept=".json, .settings"> |
| 101 | <i data-newbie-hidden data-preset-manager-update="kobold" class="menu_button fa-solid fa-save" title="Update current preset" data-i18n="[title]Update current preset"></i> | 101 | <i data-preset-manager-update="kobold" class="menu_button fa-solid fa-save" title="Update current preset" data-i18n="[title]Update current preset"></i> |
| 102 | <i data-newbie-hidden data-preset-manager-new="kobold" class="menu_button fa-solid fa-file-circle-plus" title="Save preset as" data-i18n="[title]Save preset as"></i> | 102 | <i data-preset-manager-new="kobold" class="menu_button fa-solid fa-file-circle-plus" title="Save preset as" data-i18n="[title]Save preset as"></i> |
| 103 | <i data-newbie-hidden data-preset-manager-import="kobold" class="menu_button fa-solid fa-file-import" title="Import preset" data-i18n="[title]Import preset"></i> | 103 | <i data-preset-manager-import="kobold" class="menu_button fa-solid fa-file-import" title="Import preset" data-i18n="[title]Import preset"></i> |
| 104 | <i data-newbie-hidden data-preset-manager-export="kobold" class="menu_button fa-solid fa-file-export" title="Export preset" data-i18n="[title]Export preset"></i> | 104 | <i data-preset-manager-export="kobold" class="menu_button fa-solid fa-file-export" title="Export preset" data-i18n="[title]Export preset"></i> |
| 105 | <i data-newbie-hidden data-preset-manager-restore="kobold" class="menu_button fa-solid fa-recycle" title="Restore current preset" data-i18n="[title]Restore current preset"></i> | 105 | <i data-preset-manager-restore="kobold" class="menu_button fa-solid fa-recycle" title="Restore current preset" data-i18n="[title]Restore current preset"></i> |
| 106 | <i data-newbie-hidden data-preset-manager-delete="kobold" class="menu_button fa-solid fa-trash-can" title="Delete the preset" data-i18n="[title]Delete the preset"></i> | 106 | <i data-preset-manager-delete="kobold" class="menu_button fa-solid fa-trash-can" title="Delete the preset" data-i18n="[title]Delete the preset"></i> |
| 107 | </div> | 107 | </div> |
| 108 | </div> | 108 | </div> |
| 109 | </div> | 109 | </div> |
| @@ -119,13 +119,13 @@ | |||
| 119 | <option value="gui" data-i18n="Default">Default</option> | 119 | <option value="gui" data-i18n="Default">Default</option> |
| 120 | </select> | 120 | </select> |
| 121 | <div class="flex-container marginLeft5 "> | 121 | <div class="flex-container marginLeft5 "> |
| 122 | <input type="file" hidden data-preset-manager-file="novel" accept=".json, .settings"> | 122 | <input type="file" hidden data-preset-manager-file="novel" accept=".json, .settings, .preset"> |
| 123 | <i data-newbie-hidden data-preset-manager-update="novel" class="menu_button fa-solid fa-save" title="Update current preset" data-i18n="[title]Update current preset"></i> | 123 | <i data-preset-manager-update="novel" class="menu_button fa-solid fa-save" title="Update current preset" data-i18n="[title]Update current preset"></i> |
| 124 | <i data-newbie-hidden data-preset-manager-new="novel" class="menu_button fa-solid fa-file-circle-plus" title="Save preset as" data-i18n="[title]Save preset as"></i> | 124 | <i data-preset-manager-new="novel" class="menu_button fa-solid fa-file-circle-plus" title="Save preset as" data-i18n="[title]Save preset as"></i> |
| 125 | <i data-newbie-hidden data-preset-manager-import="novel" class="menu_button fa-solid fa-file-import" title="Import preset" data-i18n="[title]Import preset"></i> | 125 | <i data-preset-manager-import="novel" class="menu_button fa-solid fa-file-import" title="Import preset" data-i18n="[title]Import preset"></i> |
| 126 | <i data-newbie-hidden data-preset-manager-export="novel" class="menu_button fa-solid fa-file-export" title="Export preset" data-i18n="[title]Export preset"></i> | 126 | <i data-preset-manager-export="novel" class="menu_button fa-solid fa-file-export" title="Export preset" data-i18n="[title]Export preset"></i> |
| 127 | <i data-newbie-hidden data-preset-manager-restore="novel" class="menu_button fa-solid fa-recycle" title="Restore current preset" data-i18n="[title]Restore current preset"></i> | 127 | <i data-preset-manager-restore="novel" class="menu_button fa-solid fa-recycle" title="Restore current preset" data-i18n="[title]Restore current preset"></i> |
| 128 | <i data-newbie-hidden data-preset-manager-delete="novel" class="menu_button fa-solid fa-trash-can" title="Delete the preset" data-i18n="[title]Delete the preset"></i> | 128 | <i data-preset-manager-delete="novel" class="menu_button fa-solid fa-trash-can" title="Delete the preset" data-i18n="[title]Delete the preset"></i> |
| 129 | </div> | 129 | </div> |
| 130 | </div> | 130 | </div> |
| 131 | </div> | 131 | </div> |
| @@ -140,9 +140,9 @@ | |||
| 140 | <input id="openai_preset_import_file" type="file" accept=".json,.settings" hidden /> | 140 | <input id="openai_preset_import_file" type="file" accept=".json,.settings" hidden /> |
| 141 | <i id="update_oai_preset" class="menu_button fa-solid fa-save" title="Update current preset" data-i18n="[title]Update current preset"></i> | 141 | <i id="update_oai_preset" class="menu_button fa-solid fa-save" title="Update current preset" data-i18n="[title]Update current preset"></i> |
| 142 | <i id="new_oai_preset" class="menu_button fa-solid fa-file-circle-plus" title="Save preset as" data-i18n="[title]Save preset as"></i> | 142 | <i id="new_oai_preset" class="menu_button fa-solid fa-file-circle-plus" title="Save preset as" data-i18n="[title]Save preset as"></i> |
| 143 | <i data-newbie-hidden id="import_oai_preset" class="menu_button fa-solid fa-file-import" title="Import preset" data-i18n="[title]Import preset"></i> | 143 | <i id="import_oai_preset" class="menu_button fa-solid fa-file-import" title="Import preset" data-i18n="[title]Import preset"></i> |
| 144 | <i data-newbie-hidden id="export_oai_preset" class="menu_button fa-solid fa-file-export" title="Export preset" data-i18n="[title]Export preset"></i> | 144 | <i id="export_oai_preset" class="menu_button fa-solid fa-file-export" title="Export preset" data-i18n="[title]Export preset"></i> |
| 145 | <i data-newbie-hidden id="delete_oai_preset" class="menu_button fa-solid fa-trash-can" title="Delete the preset" data-i18n="[title]Delete the preset"></i> | 145 | <i id="delete_oai_preset" class="menu_button fa-solid fa-trash-can" title="Delete the preset" data-i18n="[title]Delete the preset"></i> |
| 146 | </div> | 146 | </div> |
| 147 | </div> | 147 | </div> |
| 148 | </div> | 148 | </div> |
| @@ -154,17 +154,17 @@ | |||
| 154 | </select> | 154 | </select> |
| 155 | <div class="flex-container marginLeft5 "> | 155 | <div class="flex-container marginLeft5 "> |
| 156 | <input type="file" hidden data-preset-manager-file="textgenerationwebui" accept=".json, .settings"> | 156 | <input type="file" hidden data-preset-manager-file="textgenerationwebui" accept=".json, .settings"> |
| 157 | <i data-newbie-hidden data-preset-manager-update="textgenerationwebui" class="menu_button fa-solid fa-save" title="Update current preset" data-i18n="[title]Update current preset"></i> | 157 | <i data-preset-manager-update="textgenerationwebui" class="menu_button fa-solid fa-save" title="Update current preset" data-i18n="[title]Update current preset"></i> |
| 158 | <i data-newbie-hidden data-preset-manager-new="textgenerationwebui" class="menu_button fa-solid fa-file-circle-plus" title="Save preset as" data-i18n="[title]Save preset as"></i> | 158 | <i data-preset-manager-new="textgenerationwebui" class="menu_button fa-solid fa-file-circle-plus" title="Save preset as" data-i18n="[title]Save preset as"></i> |
| 159 | <i data-newbie-hidden data-preset-manager-import="textgenerationwebui" class="menu_button fa-solid fa-file-import" title="Import preset" data-i18n="[title]Import preset"></i> | 159 | <i data-preset-manager-import="textgenerationwebui" class="menu_button fa-solid fa-file-import" title="Import preset" data-i18n="[title]Import preset"></i> |
| 160 | <i data-newbie-hidden data-preset-manager-export="textgenerationwebui" class="menu_button fa-solid fa-file-export" title="Export preset" data-i18n="[title]Export preset"></i> | 160 | <i data-preset-manager-export="textgenerationwebui" class="menu_button fa-solid fa-file-export" title="Export preset" data-i18n="[title]Export preset"></i> |
| 161 | <i data-newbie-hidden data-preset-manager-restore="textgenerationwebui" class="menu_button fa-solid fa-recycle" title="Restore current preset" data-i18n="[title]Restore current preset"></i> | 161 | <i data-preset-manager-restore="textgenerationwebui" class="menu_button fa-solid fa-recycle" title="Restore current preset" data-i18n="[title]Restore current preset"></i> |
| 162 | <i data-newbie-hidden data-preset-manager-delete="textgenerationwebui" class="menu_button fa-solid fa-trash-can" title="Delete the preset" data-i18n="[title]Delete the preset"></i> | 162 | <i data-preset-manager-delete="textgenerationwebui" class="menu_button fa-solid fa-trash-can" title="Delete the preset" data-i18n="[title]Delete the preset"></i> |
| 163 | </div> | 163 | </div> |
| 164 | </div> | 164 | </div> |
| 165 | </div> | 165 | </div> |
| 166 | </div> | 166 | </div> |
| 167 | <div data-newbie-hidden id="ai_module_block_novel" class="width100p"> | 167 | <div id="ai_module_block_novel" class="width100p"> |
| 168 | <div class="range-block"> | 168 | <div class="range-block"> |
| 169 | <div class="range-block-title justifyLeft" data-i18n="AI Module"> | 169 | <div class="range-block-title justifyLeft" data-i18n="AI Module"> |
| 170 | AI Module | 170 | AI Module |
| @@ -215,7 +215,7 @@ | |||
| 215 | <label class="checkbox_label"> | 215 | <label class="checkbox_label"> |
| 216 | <input id="max_context_unlocked" type="checkbox" /> | 216 | <input id="max_context_unlocked" type="checkbox" /> |
| 217 | <small><span data-i18n="unlocked">Unlocked</span> | 217 | <small><span data-i18n="unlocked">Unlocked</span> |
| 218 | <div id="max_context_unlocked_warning" class="fa-solid fa-circle-info opacity50p " data-i18n="[title]Only enable this if your model supports context sizes greater than 4096 tokens" title="Only enable this if your model supports context sizes greater than 4096 tokens. Increase only if you know what you're doing."></div> | 218 | <div id="max_context_unlocked_warning" class="fa-solid fa-circle-info opacity50p " data-i18n="[title]Only enable this if your model supports context sizes greater than 8192 tokens" title="Only enable this if your model supports context sizes greater than 8192 tokens. Increase only if you know what you're doing."></div> |
| 219 | </small> | 219 | </small> |
| 220 | </label> | 220 | </label> |
| 221 | </div> | 221 | </div> |
| @@ -271,7 +271,7 @@ | |||
| 271 | </div> | 271 | </div> |
| 272 | </div> | 272 | </div> |
| 273 | </div> | 273 | </div> |
| 274 | <div data-newbie-hidden class="range-block"> | 274 | <div class="range-block"> |
| 275 | <div class="range-block-title" data-i18n="Rep. Pen. Range."> | 275 | <div class="range-block-title" data-i18n="Rep. Pen. Range."> |
| 276 | Rep Pen Range | 276 | Rep Pen Range |
| 277 | </div> | 277 | </div> |
| @@ -284,7 +284,7 @@ | |||
| 284 | </div> | 284 | </div> |
| 285 | </div> | 285 | </div> |
| 286 | </div> | 286 | </div> |
| 287 | <div data-newbie-hidden class="range-block"> | 287 | <div class="range-block"> |
| 288 | <div class="range-block-title" data-i18n="Rep. Pen. Slope"> | 288 | <div class="range-block-title" data-i18n="Rep. Pen. Slope"> |
| 289 | Repetition Penalty Slope | 289 | Repetition Penalty Slope |
| 290 | </div> | 290 | </div> |
| @@ -297,7 +297,7 @@ | |||
| 297 | </div> | 297 | </div> |
| 298 | </div> | 298 | </div> |
| 299 | </div> | 299 | </div> |
| 300 | <div data-newbie-hidden class="range-block"> | 300 | <div class="range-block"> |
| 301 | <div class="range-block-title" data-i18n="Rep. Pen. Freq."> | 301 | <div class="range-block-title" data-i18n="Rep. Pen. Freq."> |
| 302 | Repetition Penalty Frequency | 302 | Repetition Penalty Frequency |
| 303 | </div> | 303 | </div> |
| @@ -310,7 +310,7 @@ | |||
| 310 | </div> | 310 | </div> |
| 311 | </div> | 311 | </div> |
| 312 | </div> | 312 | </div> |
| 313 | <div data-newbie-hidden class="range-block"> | 313 | <div class="range-block"> |
| 314 | <div class="range-block-title" data-i18n="Rep. Pen. Presence"> | 314 | <div class="range-block-title" data-i18n="Rep. Pen. Presence"> |
| 315 | Repetition Penalty Presence | 315 | Repetition Penalty Presence |
| 316 | </div> | 316 | </div> |
| @@ -323,7 +323,20 @@ | |||
| 323 | </div> | 323 | </div> |
| 324 | </div> | 324 | </div> |
| 325 | </div> | 325 | </div> |
| 326 | <div data-newbie-hidden class="range-block"> | 326 | <div class="range-block"> |
| 327 | <div class="range-block-title" data-i18n="Min P"> | ||
| 328 | Min P | ||
| 329 | </div> | ||
| 330 | <div class="range-block-range-and-counter"> | ||
| 331 | <div class="range-block-range"> | ||
| 332 | <input type="range" id="min_p_novel" name="volume" min="0" max="1" step="0.001"> | ||
| 333 | </div> | ||
| 334 | <div class="range-block-counter"> | ||
| 335 | <input type="number" min="0" max="1" step="0.001" data-for="min_p_novel" id="min_p_counter_novel"> | ||
| 336 | </div> | ||
| 337 | </div> | ||
| 338 | </div> | ||
| 339 | <div class="range-block"> | ||
| 327 | <div class="range-block-title" data-i18n="TFS"> | 340 | <div class="range-block-title" data-i18n="TFS"> |
| 328 | TFS | 341 | TFS |
| 329 | </div> | 342 | </div> |
| @@ -336,7 +349,137 @@ | |||
| 336 | </div> | 349 | </div> |
| 337 | </div> | 350 | </div> |
| 338 | </div> | 351 | </div> |
| 339 | <div data-newbie-hidden class="range-block"> | 352 | <div class="range-block"> |
| 353 | <div class="range-block-title" data-i18n="Top P"> | ||
| 354 | Top P | ||
| 355 | </div> | ||
| 356 | <div class="range-block-range-and-counter"> | ||
| 357 | <div class="range-block-range"> | ||
| 358 | <input type="range" id="top_p_novel" name="volume" min="0" max="1" step="0.001"> | ||
| 359 | </div> | ||
| 360 | <div class="range-block-counter"> | ||
| 361 | <input type="number" min="0" max="1" step="0.001" data-for="top_p_novel" id="top_p_counter_novel"> | ||
| 362 | </div> | ||
| 363 | </div> | ||
| 364 | </div> | ||
| 365 | <div class="range-block"> | ||
| 366 | <div class="range-block-title" data-i18n="Top A"> | ||
| 367 | Top A | ||
| 368 | </div> | ||
| 369 | <div class="range-block-range-and-counter"> | ||
| 370 | <div class="range-block-range"> | ||
| 371 | <input type="range" id="top_a_novel" name="volume" min="0" max="1" step="0.001"> | ||
| 372 | </div> | ||
| 373 | <div class="range-block-counter"> | ||
| 374 | <input type="number" min="0" max="1" step="0.001" data-for="top_a_novel" id="top_a_counter_novel"> | ||
| 375 | </div> | ||
| 376 | </div> | ||
| 377 | </div> | ||
| 378 | <div class="range-block"> | ||
| 379 | <div class="range-block-title" data-i18n="Top K"> | ||
| 380 | Top K | ||
| 381 | </div> | ||
| 382 | <div class="range-block-range-and-counter"> | ||
| 383 | <div class="range-block-range"> | ||
| 384 | <input type="range" id="top_k_novel" name="volume" min="0" max="300" step="1"> | ||
| 385 | </div> | ||
| 386 | <div class="range-block-counter"> | ||
| 387 | <input type="number" min="0" max="300" step="1" data-for="top_k_novel" id="top_k_counter_novel"> | ||
| 388 | </div> | ||
| 389 | </div> | ||
| 390 | </div> | ||
| 391 | <div class="range-block"> | ||
| 392 | <div class="range-block-title" data-i18n="Mirostat Tau"> | ||
| 393 | Mirostat Tau | ||
| 394 | </div> | ||
| 395 | <div class="range-block-range-and-counter"> | ||
| 396 | <div class="range-block-range"> | ||
| 397 | <input type="range" id="mirostat_tau_novel" name="volume" min="0" max="6" step="0.01"> | ||
| 398 | </div> | ||
| 399 | <div class="range-block-counter"> | ||
| 400 | <input type="number" min="0" max="6" step="0.01" data-for="mirostat_tau_novel" id="mirostat_tau_counter_novel"> | ||
| 401 | </div> | ||
| 402 | </div> | ||
| 403 | </div> | ||
| 404 | <div class="range-block"> | ||
| 405 | <div class="range-block-title" data-i18n="Mirostat LR"> | ||
| 406 | Mirostat LR | ||
| 407 | </div> | ||
| 408 | <div class="range-block-range-and-counter"> | ||
| 409 | <div class="range-block-range"> | ||
| 410 | <input type="range" id="mirostat_lr_novel" name="volume" min="0" max="1" step="0.01"> | ||
| 411 | </div> | ||
| 412 | <div class="range-block-counter"> | ||
| 413 | <input type="number" min="0" max="1" step="0.01" data-for="mirostat_lr_novel" id="mirostat_lr_counter_novel"> | ||
| 414 | </div> | ||
| 415 | </div> | ||
| 416 | </div> | ||
| 417 | <div class="range-block"> | ||
| 418 | <div class="range-block-title" data-i18n="Typical P"> | ||
| 419 | Typical P | ||
| 420 | </div> | ||
| 421 | <div class="range-block-range-and-counter"> | ||
| 422 | <div class="range-block-range"> | ||
| 423 | <input type="range" id="typical_p_novel" name="volume" min="0" max="1" step="0.001"> | ||
| 424 | </div> | ||
| 425 | <div class="range-block-counter"> | ||
| 426 | <input type="number" min="0" max="1" step="0.001" data-for="typical_p_novel" id="typical_p_counter_novel"> | ||
| 427 | </div> | ||
| 428 | </div> | ||
| 429 | </div> | ||
| 430 | <div class="range-block"> | ||
| 431 | <div class="range-block-title" data-i18n="Linear"> | ||
| 432 | Linear | ||
| 433 | </div> | ||
| 434 | <div class="range-block-range-and-counter"> | ||
| 435 | <div class="range-block-range"> | ||
| 436 | <input type="range" id="math1_temp_novel" name="volume" min="0" max="1.5" step="0.01"> | ||
| 437 | </div> | ||
| 438 | <div class="range-block-counter"> | ||
| 439 | <input type="number" min="0" max="1.5" step="0.01" data-for="math1_temp_novel" id="math1_temp_counter_novel"> | ||
| 440 | </div> | ||
| 441 | </div> | ||
| 442 | </div> | ||
| 443 | <div class="range-block"> | ||
| 444 | <div class="range-block-title" data-i18n="Quad"> | ||
| 445 | Quad | ||
| 446 | </div> | ||
| 447 | <div class="range-block-range-and-counter"> | ||
| 448 | <div class="range-block-range"> | ||
| 449 | <input type="range" id="math1_quad_novel" name="volume" min="0" max="0.4" step="0.01"> | ||
| 450 | </div> | ||
| 451 | <div class="range-block-counter"> | ||
| 452 | <input type="number" min="0" max="0.4" step="0.01" data-for="math1_quad_novel" id="math1_quad_counter_novel"> | ||
| 453 | </div> | ||
| 454 | </div> | ||
| 455 | </div> | ||
| 456 | <div class="range-block"> | ||
| 457 | <div class="range-block-title" data-i18n="Conf"> | ||
| 458 | Conf | ||
| 459 | </div> | ||
| 460 | <div class="range-block-range-and-counter"> | ||
| 461 | <div class="range-block-range"> | ||
| 462 | <input type="range" id="math1_quad_entropy_scale_novel" name="volume" min="-0.4" max="0.4" step="0.01"> | ||
| 463 | </div> | ||
| 464 | <div class="range-block-counter"> | ||
| 465 | <input type="number" min="-0.4" max="0.4" step="0.01" data-for="math1_quad_entropy_scale_novel" id="math1_quad_entropy_scale_counter_novel"> | ||
| 466 | </div> | ||
| 467 | </div> | ||
| 468 | </div> | ||
| 469 | <div class="range-block"> | ||
| 470 | <div class="range-block-title" data-i18n="Min Length"> | ||
| 471 | Min Length | ||
| 472 | </div> | ||
| 473 | <div class="range-block-range-and-counter"> | ||
| 474 | <div class="range-block-range"> | ||
| 475 | <input type="range" id="min_length_novel" name="volume" min="1" max="150" step="1"> | ||
| 476 | </div> | ||
| 477 | <div class="range-block-counter"> | ||
| 478 | <input type="number" min="1" max="150" step="1" data-for="min_length_novel" id="min_length_counter_novel"> | ||
| 479 | </div> | ||
| 480 | </div> | ||
| 481 | </div> | ||
| 482 | <div class="range-block"> | ||
| 340 | <div class="range-block-title" data-i18n="Phrase Repetition Penalty"> | 483 | <div class="range-block-title" data-i18n="Phrase Repetition Penalty"> |
| 341 | Phrase Repetition Penalty | 484 | Phrase Repetition Penalty |
| 342 | </div> | 485 | </div> |
| @@ -349,9 +492,49 @@ | |||
| 349 | <option value="very_aggressive" data-i18n="Very aggressive">Very aggressive</option> | 492 | <option value="very_aggressive" data-i18n="Very aggressive">Very aggressive</option> |
| 350 | </select> | 493 | </select> |
| 351 | </div> | 494 | </div> |
| 495 | <div class="range-block"> | ||
| 496 | <div class="range-block-title openai_restorable"> | ||
| 497 | <span data-i18n="Preamble">Preamble</span> | ||
| 498 | <div id="nai_preamble_restore" title="Restore default prompt" data-i18n="[title]Restore default prompt" class="right_menu_button"> | ||
| 499 | <div class="fa-solid fa-clock-rotate-left "></div> | ||
| 500 | </div> | ||
| 501 | </div> | ||
| 502 | <div class="toggle-description justifyLeft" data-i18n="Use style tags to modify the writing style of the output."> | ||
| 503 | Use style tags to modify the writing style of the output. | ||
| 504 | </div> | ||
| 505 | <div class="wide100p"> | ||
| 506 | <textarea id="nai_preamble_textarea" class="text_pole textarea_compact" name="nai_preamble" rows="2" placeholder=""></textarea> | ||
| 507 | </div> | ||
| 508 | </div> | ||
| 509 | <div class="range-block"> | ||
| 510 | <div class="range-block-title justifyLeft"> | ||
| 511 | <span data-i18n="Banned Tokens">Banned Tokens</span> | ||
| 512 | </div> | ||
| 513 | <div class="toggle-description justifyLeft" data-i18n="Sequences you don't want to appear in the output. One per line."> | ||
| 514 | Sequences you don't want to appear in the output. One per line. Text or [token ids]. | ||
| 515 | </div> | ||
| 516 | <div class="wide100p"> | ||
| 517 | <textarea id="nai_banned_tokens" class="text_pole textarea_compact" name="nai_banned_tokens" rows="3" placeholder="Example: some text [42, 69, 1337]"></textarea> | ||
| 518 | </div> | ||
| 519 | </div> | ||
| 520 | <div class="range-block"> | ||
| 521 | <div id="logit_bias_novel" class="range-block-title title_restorable"> | ||
| 522 | <span data-i18n="Logit Bias">Logit Bias</span> | ||
| 523 | <div id="novelai_logit_bias_new_entry" class="menu_button menu_button_icon"> | ||
| 524 | <i class="fa-xs fa-solid fa-plus"></i> | ||
| 525 | <small data-i18n="Add">Add</small> | ||
| 526 | </div> | ||
| 527 | </div> | ||
| 528 | <div class="toggle-description justifyLeft" data-i18n="Helps to ban or reenforce the usage of certain words"> | ||
| 529 | Helps to ban or reinforce the usage of certain tokens. | ||
| 530 | </div> | ||
| 531 | <div class="flex-container flexFlowColumn wide100p"> | ||
| 532 | <div class="logit_bias_list"></div> | ||
| 533 | </div> | ||
| 534 | </div> | ||
| 352 | </div> | 535 | </div> |
| 353 | <div id="range_block_openai"> | 536 | <div id="range_block_openai"> |
| 354 | <div data-newbie-hidden class="range-block"> | 537 | <div class="range-block"> |
| 355 | <label class="checkbox_label"> | 538 | <label class="checkbox_label"> |
| 356 | <input id="oai_max_context_unlocked" type="checkbox" /> | 539 | <input id="oai_max_context_unlocked" type="checkbox" /> |
| 357 | <span data-i18n="Unlocked Context Size"> | 540 | <span data-i18n="Unlocked Context Size"> |
| @@ -383,7 +566,7 @@ | |||
| 383 | Max Response Length (tokens) | 566 | Max Response Length (tokens) |
| 384 | </div> | 567 | </div> |
| 385 | <div class="wide100p"> | 568 | <div class="wide100p"> |
| 386 | <input type="number" id="openai_max_tokens" name="openai_max_tokens" class="text_pole" min="1" max="16384"> | 569 | <input type="number" id="openai_max_tokens" name="openai_max_tokens" class="text_pole" min="1" max="65536"> |
| 387 | </div> | 570 | </div> |
| 388 | </div> | 571 | </div> |
| 389 | <div class="range-block" data-source="openai,custom"> | 572 | <div class="range-block" data-source="openai,custom"> |
| @@ -436,7 +619,7 @@ | |||
| 436 | </div> | 619 | </div> |
| 437 | </div> | 620 | </div> |
| 438 | </div> | 621 | </div> |
| 439 | <div data-newbie-hidden class="range-block" data-source="openai,openrouter,ai21,custom,cohere,perplexity,groq"> | 622 | <div class="range-block" data-source="openai,openrouter,custom,cohere,perplexity,groq"> |
| 440 | <div class="range-block-title" data-i18n="Frequency Penalty"> | 623 | <div class="range-block-title" data-i18n="Frequency Penalty"> |
| 441 | Frequency Penalty | 624 | Frequency Penalty |
| 442 | </div> | 625 | </div> |
| @@ -449,7 +632,7 @@ | |||
| 449 | </div> | 632 | </div> |
| 450 | </div> | 633 | </div> |
| 451 | </div> | 634 | </div> |
| 452 | <div data-newbie-hidden class="range-block" data-source="openai,openrouter,ai21,custom,cohere,perplexity,groq"> | 635 | <div class="range-block" data-source="openai,openrouter,custom,cohere,perplexity,groq"> |
| 453 | <div class="range-block-title" data-i18n="Presence Penalty"> | 636 | <div class="range-block-title" data-i18n="Presence Penalty"> |
| 454 | Presence Penalty | 637 | Presence Penalty |
| 455 | </div> | 638 | </div> |
| @@ -462,20 +645,7 @@ | |||
| 462 | </div> | 645 | </div> |
| 463 | </div> | 646 | </div> |
| 464 | </div> | 647 | </div> |
| 465 | <div data-newbie-hidden class="range-block" data-source="ai21"> | 648 | <div class="range-block" data-source="claude,openrouter,makersuite,cohere,perplexity"> |
| 466 | <div class="range-block-title" data-i18n="Count Penalty"> | ||
| 467 | Count Penalty | ||
| 468 | </div> | ||
| 469 | <div class="range-block-range-and-counter"> | ||
| 470 | <div class="range-block-range"> | ||
| 471 | <input type="range" id="count_pen" name="volume" min="0" max="1" step="0.01"> | ||
| 472 | </div> | ||
| 473 | <div class="range-block-counter"> | ||
| 474 | <input type="number" min="0" max="1" step="0.01" data-for="count_pen" id="count_pen_counter"> | ||
| 475 | </div> | ||
| 476 | </div> | ||
| 477 | </div> | ||
| 478 | <div data-newbie-hidden class="range-block" data-source="claude,openrouter,ai21,makersuite,cohere,perplexity"> | ||
| 479 | <div class="range-block-title" data-i18n="Top K"> | 649 | <div class="range-block-title" data-i18n="Top K"> |
| 480 | Top K | 650 | Top K |
| 481 | </div> | 651 | </div> |
| @@ -488,7 +658,7 @@ | |||
| 488 | </div> | 658 | </div> |
| 489 | </div> | 659 | </div> |
| 490 | </div> | 660 | </div> |
| 491 | <div data-newbie-hidden class="range-block" data-source="openai,claude,openrouter,ai21,scale,makersuite,mistralai,custom,cohere,perplexity,groq,01ai"> | 661 | <div class="range-block" data-source="openai,claude,openrouter,ai21,scale,makersuite,mistralai,custom,cohere,perplexity,groq,01ai"> |
| 492 | <div class="range-block-title" data-i18n="Top P"> | 662 | <div class="range-block-title" data-i18n="Top P"> |
| 493 | Top P | 663 | Top P |
| 494 | </div> | 664 | </div> |
| @@ -501,7 +671,7 @@ | |||
| 501 | </div> | 671 | </div> |
| 502 | </div> | 672 | </div> |
| 503 | </div> | 673 | </div> |
| 504 | <div data-newbie-hidden class="range-block" data-source="openrouter"> | 674 | <div class="range-block" data-source="openrouter"> |
| 505 | <div class="range-block-title" data-i18n="Repetition Penalty"> | 675 | <div class="range-block-title" data-i18n="Repetition Penalty"> |
| 506 | Repetition Penalty | 676 | Repetition Penalty |
| 507 | </div> | 677 | </div> |
| @@ -514,7 +684,7 @@ | |||
| 514 | </div> | 684 | </div> |
| 515 | </div> | 685 | </div> |
| 516 | </div> | 686 | </div> |
| 517 | <div data-newbie-hidden class="range-block" data-source="openrouter"> | 687 | <div class="range-block" data-source="openrouter"> |
| 518 | <div class="range-block-title" data-i18n="Min P"> | 688 | <div class="range-block-title" data-i18n="Min P"> |
| 519 | Min P | 689 | Min P |
| 520 | </div> | 690 | </div> |
| @@ -527,7 +697,7 @@ | |||
| 527 | </div> | 697 | </div> |
| 528 | </div> | 698 | </div> |
| 529 | </div> | 699 | </div> |
| 530 | <div data-newbie-hidden class="range-block" data-source="openrouter"> | 700 | <div class="range-block" data-source="openrouter"> |
| 531 | <div class="range-block-title" data-i18n="Top A"> | 701 | <div class="range-block-title" data-i18n="Top A"> |
| 532 | Top A | 702 | Top A |
| 533 | </div> | 703 | </div> |
| @@ -566,7 +736,7 @@ | |||
| 566 | </div> | 736 | </div> |
| 567 | </div> | 737 | </div> |
| 568 | </div> | 738 | </div> |
| 569 | <div data-newbie-hidden class="inline-drawer wide100p"> | 739 | <div class="inline-drawer wide100p"> |
| 570 | <div class="inline-drawer-toggle inline-drawer-header"> | 740 | <div class="inline-drawer-toggle inline-drawer-header"> |
| 571 | <b data-i18n="Utility Prompts">Utility Prompts</b> | 741 | <b data-i18n="Utility Prompts">Utility Prompts</b> |
| 572 | <div class="fa-solid fa-circle-chevron-down inline-drawer-icon down"></div> | 742 | <div class="fa-solid fa-circle-chevron-down inline-drawer-icon down"></div> |
| @@ -725,7 +895,7 @@ | |||
| 725 | </div> | 895 | </div> |
| 726 | </div> | 896 | </div> |
| 727 | </div> | 897 | </div> |
| 728 | <div data-newbie-hidden class="range-block" data-source="openai,openrouter,mistralai,custom,cohere,groq"> | 898 | <div class="range-block" data-source="openai,openrouter,mistralai,custom,cohere,groq"> |
| 729 | <div class="range-block-title justifyLeft" data-i18n="Seed"> | 899 | <div class="range-block-title justifyLeft" data-i18n="Seed"> |
| 730 | Seed | 900 | Seed |
| 731 | </div> | 901 | </div> |
| @@ -749,7 +919,7 @@ | |||
| 749 | <input class="neo-range-slider" type="range" id="temp" name="volume" min="0.0" max="4.0" step="0.01"> | 919 | <input class="neo-range-slider" type="range" id="temp" name="volume" min="0.0" max="4.0" step="0.01"> |
| 750 | <input class="neo-range-input" type="number" min="0.0" max="4.0" step="0.01" data-for="temp" id="temp_counter"> | 920 | <input class="neo-range-input" type="number" min="0.0" max="4.0" step="0.01" data-for="temp" id="temp_counter"> |
| 751 | </div> | 921 | </div> |
| 752 | <div data-newbie-hidden class="alignitemscenter flex-container flexFlowColumn flexBasis30p flexGrow flexShrink gap0"> | 922 | <div class="alignitemscenter flex-container flexFlowColumn flexBasis30p flexGrow flexShrink gap0"> |
| 753 | <small> | 923 | <small> |
| 754 | <span data-i18n="Top K">Top K</span> | 924 | <span data-i18n="Top K">Top K</span> |
| 755 | <div class="fa-solid fa-circle-info opacity50p" title="Top K sets a maximum amount of top tokens that can be chosen from. E.g Top K is 20, this means only the 20 highest ranking tokens will be kept (regardless of their probabilities being diverse or limited). Set to 0 to disable." data-i18n="[title]Top_K_desc"></div> | 925 | <div class="fa-solid fa-circle-info opacity50p" title="Top K sets a maximum amount of top tokens that can be chosen from. E.g Top K is 20, this means only the 20 highest ranking tokens will be kept (regardless of their probabilities being diverse or limited). Set to 0 to disable." data-i18n="[title]Top_K_desc"></div> |
| @@ -757,7 +927,7 @@ | |||
| 757 | <input class="neo-range-slider" type="range" id="top_k" name="volume" min="0" max="100" step="1"> | 927 | <input class="neo-range-slider" type="range" id="top_k" name="volume" min="0" max="100" step="1"> |
| 758 | <input class="neo-range-input" type="number" min="0" max="100" step="1" data-for="top_k" id="top_k_counter"> | 928 | <input class="neo-range-input" type="number" min="0" max="100" step="1" data-for="top_k" id="top_k_counter"> |
| 759 | </div> | 929 | </div> |
| 760 | <div data-newbie-hidden class="alignitemscenter flex-container flexFlowColumn flexBasis30p flexGrow flexShrink gap0"> | 930 | <div class="alignitemscenter flex-container flexFlowColumn flexBasis30p flexGrow flexShrink gap0"> |
| 761 | <small> | 931 | <small> |
| 762 | Top P | 932 | Top P |
| 763 | <div class="fa-solid fa-circle-info opacity50p" title="Top P (a.k.a. nucleus sampling) adds up all the top tokens required to add up to the target percentage. E.g If the Top 2 tokens are both 25%, and Top P is 0.50, only the Top 2 tokens are considered. Set to 1.0 to disable." data-i18n="[title]Top_P_desc"></div> | 933 | <div class="fa-solid fa-circle-info opacity50p" title="Top P (a.k.a. nucleus sampling) adds up all the top tokens required to add up to the target percentage. E.g If the Top 2 tokens are both 25%, and Top P is 0.50, only the Top 2 tokens are considered. Set to 1.0 to disable." data-i18n="[title]Top_P_desc"></div> |
| @@ -765,7 +935,7 @@ | |||
| 765 | <input class="neo-range-slider" type="range" id="top_p" name="volume" min="0" max="1" step="0.01"> | 935 | <input class="neo-range-slider" type="range" id="top_p" name="volume" min="0" max="1" step="0.01"> |
| 766 | <input class="neo-range-input" type="number" min="0" max="1" step="0.01" data-for="top_p" id="top_p_counter"> | 936 | <input class="neo-range-input" type="number" min="0" max="1" step="0.01" data-for="top_p" id="top_p_counter"> |
| 767 | </div> | 937 | </div> |
| 768 | <div data-newbie-hidden class="alignitemscenter flex-container flexFlowColumn flexBasis30p flexGrow flexShrink gap0"> | 938 | <div class="alignitemscenter flex-container flexFlowColumn flexBasis30p flexGrow flexShrink gap0"> |
| 769 | <small> | 939 | <small> |
| 770 | <span data-i18n="Typical P">Typical P</span> | 940 | <span data-i18n="Typical P">Typical P</span> |
| 771 | <div class="fa-solid fa-circle-info opacity50p" title="Typical P Sampling prioritizes tokens based on their deviation from the average entropy of the set. It maintains tokens whose cumulative probability is close to a predefined threshold (e.g., 0.5), emphasizing those with average information content. Set to 1.0 to disable." data-i18n="[title]Typical_P_desc"></div> | 941 | <div class="fa-solid fa-circle-info opacity50p" title="Typical P Sampling prioritizes tokens based on their deviation from the average entropy of the set. It maintains tokens whose cumulative probability is close to a predefined threshold (e.g., 0.5), emphasizing those with average information content. Set to 1.0 to disable." data-i18n="[title]Typical_P_desc"></div> |
| @@ -781,7 +951,7 @@ | |||
| 781 | <input class="neo-range-slider" type="range" id="min_p" name="volume" min="0" max="1" step="0.001"> | 951 | <input class="neo-range-slider" type="range" id="min_p" name="volume" min="0" max="1" step="0.001"> |
| 782 | <input class="neo-range-input" type="number" min="0" max="1" step="0.001" data-for="min_p" id="min_p_counter"> | 952 | <input class="neo-range-input" type="number" min="0" max="1" step="0.001" data-for="min_p" id="min_p_counter"> |
| 783 | </div> | 953 | </div> |
| 784 | <div data-newbie-hidden class="alignitemscenter flex-container flexFlowColumn flexBasis30p flexGrow flexShrink gap0"> | 954 | <div class="alignitemscenter flex-container flexFlowColumn flexBasis30p flexGrow flexShrink gap0"> |
| 785 | <small> | 955 | <small> |
| 786 | <span data-i18n="Top A">Top A</span> | 956 | <span data-i18n="Top A">Top A</span> |
| 787 | <div class="fa-solid fa-circle-info opacity50p" title="Top A sets a threshold for token selection based on the square of the highest token probability. E.g if the Top-A value is 0.2 and the top token's probability is 50%, tokens with probabilities below 5% (0.2 * 0.5^2) are excluded. Set to 0 to disable." data-i18n="[title]Top_A_desc"></div> | 957 | <div class="fa-solid fa-circle-info opacity50p" title="Top A sets a threshold for token selection based on the square of the highest token probability. E.g if the Top-A value is 0.2 and the top token's probability is 50%, tokens with probabilities below 5% (0.2 * 0.5^2) are excluded. Set to 0 to disable." data-i18n="[title]Top_A_desc"></div> |
| @@ -789,7 +959,7 @@ | |||
| 789 | <input class="neo-range-slider" type="range" id="top_a" name="volume" min="0" max="1" step="0.001"> | 959 | <input class="neo-range-slider" type="range" id="top_a" name="volume" min="0" max="1" step="0.001"> |
| 790 | <input class="neo-range-input" type="number" min="0" max="1" step="0.001" data-for="top_a" id="top_a_counter"> | 960 | <input class="neo-range-input" type="number" min="0" max="1" step="0.001" data-for="top_a" id="top_a_counter"> |
| 791 | </div> | 961 | </div> |
| 792 | <div data-newbie-hidden class="alignitemscenter flex-container flexFlowColumn flexBasis30p flexGrow flexShrink gap0"> | 962 | <div class="alignitemscenter flex-container flexFlowColumn flexBasis30p flexGrow flexShrink gap0"> |
| 793 | <small> | 963 | <small> |
| 794 | <span data-i18n="TFS">TFS</span> | 964 | <span data-i18n="TFS">TFS</span> |
| 795 | <div class="fa-solid fa-circle-info opacity50p" title="Tail-Free Sampling (TFS) searches for a tail of low-probability tokens in the distribution, by analyzing the rate of change in token probabilities using derivatives. It retains tokens up to a threshold (e.g., 0.3) based on the normalized second derivative. The closer to 0, the more discarded tokens. Set to 1.0 to disable." data-i18n="[title]Tail_Free_Sampling_desc"></div> | 965 | <div class="fa-solid fa-circle-info opacity50p" title="Tail-Free Sampling (TFS) searches for a tail of low-probability tokens in the distribution, by analyzing the rate of change in token probabilities using derivatives. It retains tokens up to a threshold (e.g., 0.3) based on the normalized second derivative. The closer to 0, the more discarded tokens. Set to 1.0 to disable." data-i18n="[title]Tail_Free_Sampling_desc"></div> |
| @@ -811,14 +981,14 @@ | |||
| 811 | <input class="neo-range-slider" type="range" id="rep_pen_range" name="volume" min="0" max="4096" step="1"> | 981 | <input class="neo-range-slider" type="range" id="rep_pen_range" name="volume" min="0" max="4096" step="1"> |
| 812 | <input class="neo-range-input" type="number" min="0" max="4096" step="1" data-for="rep_pen_range" id="rep_pen_range_counter"> | 982 | <input class="neo-range-input" type="number" min="0" max="4096" step="1" data-for="rep_pen_range" id="rep_pen_range_counter"> |
| 813 | </div> | 983 | </div> |
| 814 | <div data-newbie-hidden class="alignitemscenter flex-container flexFlowColumn flexBasis30p flexGrow flexShrink gap0"> | 984 | <div class="alignitemscenter flex-container flexFlowColumn flexBasis30p flexGrow flexShrink gap0"> |
| 815 | <small> | 985 | <small> |
| 816 | <span data-i18n="Rep. Pen. Slope">Repetition Penalty Slope</span> | 986 | <span data-i18n="Rep. Pen. Slope">Repetition Penalty Slope</span> |
| 817 | </small> | 987 | </small> |
| 818 | <input class="neo-range-slider" type="range" id="rep_pen_slope" name="volume" min="0" max="10" step="0.01"> | 988 | <input class="neo-range-slider" type="range" id="rep_pen_slope" name="volume" min="0" max="10" step="0.01"> |
| 819 | <input class="neo-range-input" type="number" min="0" max="10" step="0.01" data-for="rep_pen_slope" id="rep_pen_slope_counter"> | 989 | <input class="neo-range-input" type="number" min="0" max="10" step="0.01" data-for="rep_pen_slope" id="rep_pen_slope_counter"> |
| 820 | </div> | 990 | </div> |
| 821 | <div data-newbie-hidden name="miroStatBlock-kobold" class="wide100p"> | 991 | <div name="miroStatBlock-kobold" class="wide100p"> |
| 822 | <h4 class="wide100p textAlignCenter" data-i18n="Mirostat">Mirostat</h4> | 992 | <h4 class="wide100p textAlignCenter" data-i18n="Mirostat">Mirostat</h4> |
| 823 | <div class="flex-container flexFlowRow gap10px flexShrink"> | 993 | <div class="flex-container flexFlowRow gap10px flexShrink"> |
| 824 | <div class="alignitemscenter flex-container flexFlowColumn flexGrow flexShrink gap0"> | 994 | <div class="alignitemscenter flex-container flexFlowColumn flexGrow flexShrink gap0"> |
| @@ -848,7 +1018,7 @@ | |||
| 848 | </div> | 1018 | </div> |
| 849 | <hr class="wide100p"> | 1019 | <hr class="wide100p"> |
| 850 | </div> | 1020 | </div> |
| 851 | <div data-newbie-hidden class="alignitemscenter justifyCenter flex-container flexFlowColumn flexBasis30p flexGrow flexShrink gap0"> | 1021 | <div class="alignitemscenter justifyCenter flex-container flexFlowColumn flexBasis30p flexGrow flexShrink gap0"> |
| 852 | <label class="checkbox_label alignItemsBaseline" for="use_default_badwordsids"> | 1022 | <label class="checkbox_label alignItemsBaseline" for="use_default_badwordsids"> |
| 853 | <input id="use_default_badwordsids" type="checkbox" /> | 1023 | <input id="use_default_badwordsids" type="checkbox" /> |
| 854 | <span> | 1024 | <span> |
| @@ -857,13 +1027,13 @@ | |||
| 857 | </span> | 1027 | </span> |
| 858 | </label> | 1028 | </label> |
| 859 | </div> | 1029 | </div> |
| 860 | <div data-newbie-hidden class="alignitemscenter textAlignCenter flexBasis30p flexGrow flexShrink gap0"> | 1030 | <div class="alignitemscenter textAlignCenter flexBasis30p flexGrow flexShrink gap0"> |
| 861 | <!-- <hr class="wide100p"> --> | 1031 | <!-- <hr class="wide100p"> --> |
| 862 | <small data-i18n="Seed">Seed</small> | 1032 | <small data-i18n="Seed">Seed</small> |
| 863 | <!-- Max value is 2**64 - 1 --> | 1033 | <!-- Max value is 2**64 - 1 --> |
| 864 | <input type="number" id="seed_kobold" class="text_pole wideMax100px" min="-1" value="-1" max="18446744073709551615" /> | 1034 | <input type="number" id="seed_kobold" class="text_pole wideMax100px" min="-1" value="-1" max="18446744073709551615" /> |
| 865 | </div> | 1035 | </div> |
| 866 | <div data-newbie-hidden id="grammar_block" class="wide100p"> | 1036 | <div id="grammar_block" class="wide100p"> |
| 867 | <hr class="wide100p"> | 1037 | <hr class="wide100p"> |
| 868 | <h4 class="wide100p textAlignCenter"><span data-i18n="GBNF Grammar">GBNF Grammar</span> | 1038 | <h4 class="wide100p textAlignCenter"><span data-i18n="GBNF Grammar">GBNF Grammar</span> |
| 869 | <a href="https://github.com/ggerganov/llama.cpp/blob/master/grammars/README.md" target="_blank"> | 1039 | <a href="https://github.com/ggerganov/llama.cpp/blob/master/grammars/README.md" target="_blank"> |
| @@ -874,7 +1044,7 @@ | |||
| 874 | </h4> | 1044 | </h4> |
| 875 | <textarea id="grammar" rows="4" class="text_pole textarea_compact monospace" data-i18n="[placeholder]Type in the desired custom grammar" placeholder="Type in the desired custom grammar"></textarea> | 1045 | <textarea id="grammar" rows="4" class="text_pole textarea_compact monospace" data-i18n="[placeholder]Type in the desired custom grammar" placeholder="Type in the desired custom grammar"></textarea> |
| 876 | </div> | 1046 | </div> |
| 877 | <div data-newbie-hidden name="KoboldSamplerOrderBlock" class="range-block flexFlowColumn"> | 1047 | <div name="KoboldSamplerOrderBlock" class="range-block flexFlowColumn"> |
| 878 | <hr class="wide100p"> | 1048 | <hr class="wide100p"> |
| 879 | <div class="range-block-title"> | 1049 | <div class="range-block-title"> |
| 880 | <span data-i18n="Samplers Order">Samplers Order</span> | 1050 | <span data-i18n="Samplers Order">Samplers Order</span> |
| @@ -919,164 +1089,7 @@ | |||
| 919 | </div> | 1089 | </div> |
| 920 | </div> | 1090 | </div> |
| 921 | </div><!-- end of kobold settings--> | 1091 | </div><!-- end of kobold settings--> |
| 922 | <div data-newbie-hidden id="novel_api-settings"> | 1092 | <div id="novel_api-settings"> |
| 923 | <div class="range-block"> | ||
| 924 | <div class="range-block-title openai_restorable"> | ||
| 925 | <span data-i18n="Preamble">Preamble</span> | ||
| 926 | <div id="nai_preamble_restore" title="Restore default prompt" data-i18n="[title]Restore default prompt" class="right_menu_button"> | ||
| 927 | <div class="fa-solid fa-clock-rotate-left "></div> | ||
| 928 | </div> | ||
| 929 | </div> | ||
| 930 | <div class="toggle-description justifyLeft" data-i18n="Use style tags to modify the writing style of the output."> | ||
| 931 | Use style tags to modify the writing style of the output. | ||
| 932 | </div> | ||
| 933 | <div class="wide100p"> | ||
| 934 | <textarea id="nai_preamble_textarea" class="text_pole textarea_compact" name="nai_preamble" rows="2" placeholder=""></textarea> | ||
| 935 | </div> | ||
| 936 | </div> | ||
| 937 | <div class="range-block"> | ||
| 938 | <div class="range-block-title justifyLeft"> | ||
| 939 | <span data-i18n="Banned Tokens">Banned Tokens</span> | ||
| 940 | </div> | ||
| 941 | <div class="toggle-description justifyLeft" data-i18n="Sequences you don't want to appear in the output. One per line."> | ||
| 942 | Sequences you don't want to appear in the output. One per line. Text or [token ids]. | ||
| 943 | </div> | ||
| 944 | <div class="wide100p"> | ||
| 945 | <textarea id="nai_banned_tokens" class="text_pole textarea_compact" name="nai_banned_tokens" rows="3" placeholder="Example: some text [42, 69, 1337]"></textarea> | ||
| 946 | </div> | ||
| 947 | </div> | ||
| 948 | <div class="range-block"> | ||
| 949 | <div id="logit_bias_novel" class="range-block-title title_restorable"> | ||
| 950 | <span data-i18n="Logit Bias">Logit Bias</span> | ||
| 951 | <div id="novelai_logit_bias_new_entry" class="menu_button menu_button_icon"> | ||
| 952 | <i class="fa-xs fa-solid fa-plus"></i> | ||
| 953 | <small data-i18n="Add">Add</small> | ||
| 954 | </div> | ||
| 955 | </div> | ||
| 956 | <div class="toggle-description justifyLeft" data-i18n="Helps to ban or reenforce the usage of certain words"> | ||
| 957 | Helps to ban or reinforce the usage of certain tokens. | ||
| 958 | </div> | ||
| 959 | <div class="flex-container flexFlowColumn wide100p"> | ||
| 960 | <div class="logit_bias_list"></div> | ||
| 961 | </div> | ||
| 962 | </div> | ||
| 963 | <div class="range-block"> | ||
| 964 | <hr> | ||
| 965 | <div class="range-block-title justifyLeft" data-i18n="CFG Scale"> | ||
| 966 | CFG Scale | ||
| 967 | </div> | ||
| 968 | <div class="range-block-range-and-counter"> | ||
| 969 | <div class="range-block-range"> | ||
| 970 | <input type="range" id="cfg_scale_novel" name="volume" min="1" max="3" step="0.05"> | ||
| 971 | </div> | ||
| 972 | <div class="range-block-counter"> | ||
| 973 | <input type="number" min="1" max="3" step="0.05" data-for="cfg_scale_novel" id="cfg_scale_counter_novel"> | ||
| 974 | </div> | ||
| 975 | </div> | ||
| 976 | </div> | ||
| 977 | <div class="range-block"> | ||
| 978 | <div class="range-block-title justifyLeft"> | ||
| 979 | <span data-i18n="Negative Prompt">Negative Prompt</span> | ||
| 980 | </div> | ||
| 981 | <div class="wide100p"> | ||
| 982 | <textarea id="nai_cfg_uc" class="text_pole textarea_compact" name="cfg_uc" rows="2" data-i18n="[placeholder]Add text here that would make the AI generate things you don't want in your outputs." placeholder="Add text here that would make the AI generate things you don't want in your outputs."></textarea> | ||
| 983 | </div> | ||
| 984 | <small class="margin-bot-10px" data-i18n="Used if CFG Scale is unset globally, per chat or character"> | ||
| 985 | Used if CFG Scale is unset globally, per chat or character | ||
| 986 | </small> | ||
| 987 | <hr> | ||
| 988 | </div> | ||
| 989 | <div class="range-block"> | ||
| 990 | <div class="range-block-title" data-i18n="Top P"> | ||
| 991 | Top P | ||
| 992 | </div> | ||
| 993 | <div class="range-block-range-and-counter"> | ||
| 994 | <div class="range-block-range"> | ||
| 995 | <input type="range" id="top_p_novel" name="volume" min="0" max="1" step="0.001"> | ||
| 996 | </div> | ||
| 997 | <div class="range-block-counter"> | ||
| 998 | <input type="number" min="0" max="1" step="0.001" data-for="top_p_novel" id="top_p_counter_novel"> | ||
| 999 | </div> | ||
| 1000 | </div> | ||
| 1001 | </div> | ||
| 1002 | <div class="range-block"> | ||
| 1003 | <div class="range-block-title" data-i18n="Top A"> | ||
| 1004 | Top A | ||
| 1005 | </div> | ||
| 1006 | <div class="range-block-range-and-counter"> | ||
| 1007 | <div class="range-block-range"> | ||
| 1008 | <input type="range" id="top_a_novel" name="volume" min="0" max="1" step="0.001"> | ||
| 1009 | </div> | ||
| 1010 | <div class="range-block-counter"> | ||
| 1011 | <input type="number" min="0" max="1" step="0.001" data-for="top_a_novel" id="top_a_counter_novel"> | ||
| 1012 | </div> | ||
| 1013 | </div> | ||
| 1014 | </div> | ||
| 1015 | <div class="range-block"> | ||
| 1016 | <div class="range-block-title" data-i18n="Top K"> | ||
| 1017 | Top K | ||
| 1018 | </div> | ||
| 1019 | <div class="range-block-range-and-counter"> | ||
| 1020 | <div class="range-block-range"> | ||
| 1021 | <input type="range" id="top_k_novel" name="volume" min="0" max="300" step="1"> | ||
| 1022 | </div> | ||
| 1023 | <div class="range-block-counter"> | ||
| 1024 | <input type="number" min="0" max="300" step="1" data-for="top_k_novel" id="top_k_counter_novel"> | ||
| 1025 | </div> | ||
| 1026 | </div> | ||
| 1027 | </div> | ||
| 1028 | <div class="range-block"> | ||
| 1029 | <div class="range-block-title" data-i18n="Mirostat Tau"> | ||
| 1030 | Mirostat Tau | ||
| 1031 | </div> | ||
| 1032 | <div class="range-block-range-and-counter"> | ||
| 1033 | <div class="range-block-range"> | ||
| 1034 | <input type="range" id="mirostat_tau_novel" name="volume" min="0" max="6" step="0.01"> | ||
| 1035 | </div> | ||
| 1036 | <div class="range-block-counter"> | ||
| 1037 | <input type="number" min="0" max="6" step="0.01" data-for="mirostat_tau_novel" id="mirostat_tau_counter_novel"> | ||
| 1038 | </div> | ||
| 1039 | </div> | ||
| 1040 | </div> | ||
| 1041 | <div class="range-block"> | ||
| 1042 | <div class="range-block-title" data-i18n="Mirostat LR"> | ||
| 1043 | Mirostat LR | ||
| 1044 | </div> | ||
| 1045 | <div class="range-block-range-and-counter"> | ||
| 1046 | <div class="range-block-range"> | ||
| 1047 | <input type="range" id="mirostat_lr_novel" name="volume" min="0" max="1" step="0.01"> | ||
| 1048 | </div> | ||
| 1049 | <div class="range-block-counter"> | ||
| 1050 | <input type="number" min="0" max="1" step="0.01" data-for="mirostat_lr_novel" id="mirostat_lr_counter_novel"> | ||
| 1051 | </div> | ||
| 1052 | </div> | ||
| 1053 | </div> | ||
| 1054 | <div class="range-block"> | ||
| 1055 | <div class="range-block-title" data-i18n="Typical P"> | ||
| 1056 | Typical P | ||
| 1057 | </div> | ||
| 1058 | <div class="range-block-range-and-counter"> | ||
| 1059 | <div class="range-block-range"> | ||
| 1060 | <input type="range" id="typical_p_novel" name="volume" min="0" max="1" step="0.001"> | ||
| 1061 | </div> | ||
| 1062 | <div class="range-block-counter"> | ||
| 1063 | <input type="number" min="0" max="1" step="0.001" data-for="typical_p_novel" id="typical_p_counter_novel"> | ||
| 1064 | </div> | ||
| 1065 | </div> | ||
| 1066 | </div> | ||
| 1067 | <div class="range-block"> | ||
| 1068 | <div class="range-block-title" data-i18n="Min Length"> | ||
| 1069 | Min Length | ||
| 1070 | </div> | ||
| 1071 | <div class="range-block-range-and-counter"> | ||
| 1072 | <div class="range-block-range"> | ||
| 1073 | <input type="range" id="min_length_novel" name="volume" min="1" max="150" step="1"> | ||
| 1074 | </div> | ||
| 1075 | <div class="range-block-counter"> | ||
| 1076 | <input type="number" min="1" max="150" step="1" data-for="min_length_novel" id="min_length_counter_novel"> | ||
| 1077 | </div> | ||
| 1078 | </div> | ||
| 1079 | </div> | ||
| 1080 | <div class="range-block flexFlowColumn"> | 1093 | <div class="range-block flexFlowColumn"> |
| 1081 | <div class="range-block-title"> | 1094 | <div class="range-block-title"> |
| 1082 | <span data-i18n="Samplers Order">Samplers Order</span> | 1095 | <span data-i18n="Samplers Order">Samplers Order</span> |
| @@ -1115,22 +1128,27 @@ | |||
| 1115 | <small>5</small> | 1128 | <small>5</small> |
| 1116 | <div class="toggle_button right_menu_button"></div> | 1129 | <div class="toggle_button right_menu_button"></div> |
| 1117 | </div> | 1130 | </div> |
| 1118 | <div data-id="6"> | 1131 | <!-- 6 and 7 were removed samplers. --> |
| 1119 | <span data-i18n="CFG">CFG</span> | ||
| 1120 | <small>6</small> | ||
| 1121 | <div class="toggle_button right_menu_button"></div> | ||
| 1122 | </div> | ||
| 1123 | <!-- Yes, there is no 7. It was a removed Top G sampling. RIP. --> | ||
| 1124 | <div data-id="8"> | 1132 | <div data-id="8"> |
| 1125 | <span data-i18n="Mirostat">Mirostat</span> | 1133 | <span data-i18n="Mirostat">Mirostat</span> |
| 1126 | <small>8</small> | 1134 | <small>8</small> |
| 1127 | <div class="toggle_button right_menu_button"></div> | 1135 | <div class="toggle_button right_menu_button"></div> |
| 1128 | </div> | 1136 | </div> |
| 1137 | <div data-id="9"> | ||
| 1138 | <span data-i18n="Unified Sampling">Unified Sampling</span> | ||
| 1139 | <small>9</small> | ||
| 1140 | <div class="toggle_button right_menu_button"></div> | ||
| 1141 | </div> | ||
| 1142 | <div data-id="10"> | ||
| 1143 | <span data-i18n="Min P">Min P</span> | ||
| 1144 | <small>10</small> | ||
| 1145 | <div class="toggle_button right_menu_button"></div> | ||
| 1146 | </div> | ||
| 1129 | </div> | 1147 | </div> |
| 1130 | </div> | 1148 | </div> |
| 1131 | </div><!-- end of novel settings--> | 1149 | </div><!-- end of novel settings--> |
| 1132 | <div id="textgenerationwebui_api-settings"> | 1150 | <div id="textgenerationwebui_api-settings"> |
| 1133 | <div data-newbie-hidden class="flex-container justifyCenter"> | 1151 | <div class="flex-container justifyCenter"> |
| 1134 | <small class="flex-container alignitemscenter"> | 1152 | <small class="flex-container alignitemscenter"> |
| 1135 | <div id="samplerResetButton" class="menu_button whitespacenowrap" data-i18n="Neutralize Samplers">Neutralize Samplers</div> | 1153 | <div id="samplerResetButton" class="menu_button whitespacenowrap" data-i18n="Neutralize Samplers">Neutralize Samplers</div> |
| 1136 | <div class="fa-solid fa-circle-info opacity50p" title="Set all samplers to their neutral/disabled state." data-i18n="[title]Set all samplers to their neutral/disabled state."></div> | 1154 | <div class="fa-solid fa-circle-info opacity50p" title="Set all samplers to their neutral/disabled state." data-i18n="[title]Set all samplers to their neutral/disabled state."></div> |
| @@ -1141,7 +1159,7 @@ | |||
| 1141 | <div class="fa-solid fa-circle-info opacity50p" title="Customize displayed samplers or add custom samplers." data-i18n="[title]Customize displayed samplers or add custom samplers."></div> | 1159 | <div class="fa-solid fa-circle-info opacity50p" title="Customize displayed samplers or add custom samplers." data-i18n="[title]Customize displayed samplers or add custom samplers."></div> |
| 1142 | </small> | 1160 | </small> |
| 1143 | </div> | 1161 | </div> |
| 1144 | <div data-newbie-hidden data-tg-type="mancer, vllm, aphrodite, tabby, infermaticai" class="flex-container flexFlowColumn alignitemscenter flexBasis100p flexGrow flexShrink gap0"> | 1162 | <div data-tg-type="mancer, vllm, aphrodite, tabby, infermaticai" class="flex-container flexFlowColumn alignitemscenter flexBasis100p flexGrow flexShrink gap0"> |
| 1145 | <small data-i18n="Multiple swipes per generation">Multiple swipes per generation</small> | 1163 | <small data-i18n="Multiple swipes per generation">Multiple swipes per generation</small> |
| 1146 | <input type="number" id="n_textgenerationwebui" class="text_pole textAlignCenter" min="1" value="1" step="1" /> | 1164 | <input type="number" id="n_textgenerationwebui" class="text_pole textAlignCenter" min="1" value="1" step="1" /> |
| 1147 | </div> | 1165 | </div> |
| @@ -1154,7 +1172,7 @@ | |||
| 1154 | <input class="neo-range-slider" type="range" id="temp_textgenerationwebui" name="volume" min="0.0" max="5.0" step="0.01" x-setting-id="temp"> | 1172 | <input class="neo-range-slider" type="range" id="temp_textgenerationwebui" name="volume" min="0.0" max="5.0" step="0.01" x-setting-id="temp"> |
| 1155 | <input class="neo-range-input" type="number" min="0.0" max="5.0" step="0.01" data-for="temp_textgenerationwebui" id="temp_counter_textgenerationwebui"> | 1173 | <input class="neo-range-input" type="number" min="0.0" max="5.0" step="0.01" data-for="temp_textgenerationwebui" id="temp_counter_textgenerationwebui"> |
| 1156 | </div> | 1174 | </div> |
| 1157 | <div data-newbie-hidden class="alignitemscenter flex-container flexFlowColumn flexBasis30p flexGrow flexShrink gap0"> | 1175 | <div class="alignitemscenter flex-container flexFlowColumn flexBasis30p flexGrow flexShrink gap0"> |
| 1158 | <small> | 1176 | <small> |
| 1159 | <span data-i18n="Top K">Top K</span> | 1177 | <span data-i18n="Top K">Top K</span> |
| 1160 | <div class="fa-solid fa-circle-info opacity50p" title="Top K sets a maximum amount of top tokens that can be chosen from. E.g Top K is 20, this means only the 20 highest ranking tokens will be kept (regardless of their probabilities being diverse or limited). Set to 0 (or -1, depending on your backend) to disable." data-i18n="[title]Top_K_desc"></div> | 1178 | <div class="fa-solid fa-circle-info opacity50p" title="Top K sets a maximum amount of top tokens that can be chosen from. E.g Top K is 20, this means only the 20 highest ranking tokens will be kept (regardless of their probabilities being diverse or limited). Set to 0 (or -1, depending on your backend) to disable." data-i18n="[title]Top_K_desc"></div> |
| @@ -1162,7 +1180,7 @@ | |||
| 1162 | <input class="neo-range-slider" type="range" id="top_k_textgenerationwebui" name="volume" min="-1" max="200" step="1"> | 1180 | <input class="neo-range-slider" type="range" id="top_k_textgenerationwebui" name="volume" min="-1" max="200" step="1"> |
| 1163 | <input class="neo-range-input" type="number" min="-1" max="200" step="1" data-for="top_k_textgenerationwebui" id="top_k_counter_textgenerationwebui"> | 1181 | <input class="neo-range-input" type="number" min="-1" max="200" step="1" data-for="top_k_textgenerationwebui" id="top_k_counter_textgenerationwebui"> |
| 1164 | </div> | 1182 | </div> |
| 1165 | <div data-newbie-hidden class="alignitemscenter flex-container flexFlowColumn flexBasis30p flexGrow flexShrink gap0"> | 1183 | <div class="alignitemscenter flex-container flexFlowColumn flexBasis30p flexGrow flexShrink gap0"> |
| 1166 | <small> | 1184 | <small> |
| 1167 | <span data-i18n="Top P">Top P</span> | 1185 | <span data-i18n="Top P">Top P</span> |
| 1168 | <div class="fa-solid fa-circle-info opacity50p" title="Top P (a.k.a. nucleus sampling) adds up all the top tokens required to add up to the target percentage. E.g If the Top 2 tokens are both 25%, and Top P is 0.50, only the Top 2 tokens are considered. Set to 1.0 to disable." data-i18n="[title]Top_P_desc"></div> | 1186 | <div class="fa-solid fa-circle-info opacity50p" title="Top P (a.k.a. nucleus sampling) adds up all the top tokens required to add up to the target percentage. E.g If the Top 2 tokens are both 25%, and Top P is 0.50, only the Top 2 tokens are considered. Set to 1.0 to disable." data-i18n="[title]Top_P_desc"></div> |
| @@ -1170,7 +1188,7 @@ | |||
| 1170 | <input class="neo-range-slider" type="range" id="top_p_textgenerationwebui" name="volume" min="0" max="1" step="0.01"> | 1188 | <input class="neo-range-slider" type="range" id="top_p_textgenerationwebui" name="volume" min="0" max="1" step="0.01"> |
| 1171 | <input class="neo-range-input" type="number" min="0" max="1" step="0.01" data-for="top_p_textgenerationwebui" id="top_p_counter_textgenerationwebui"> | 1189 | <input class="neo-range-input" type="number" min="0" max="1" step="0.01" data-for="top_p_textgenerationwebui" id="top_p_counter_textgenerationwebui"> |
| 1172 | </div> | 1190 | </div> |
| 1173 | <div data-newbie-hidden class="alignitemscenter flex-container flexFlowColumn flexBasis30p flexGrow flexShrink gap0"> | 1191 | <div class="alignitemscenter flex-container flexFlowColumn flexBasis30p flexGrow flexShrink gap0"> |
| 1174 | <small> | 1192 | <small> |
| 1175 | <span data-i18n="Typical P">Typical P</span> | 1193 | <span data-i18n="Typical P">Typical P</span> |
| 1176 | <div class="fa-solid fa-circle-info opacity50p" title="Typical P Sampling prioritizes tokens based on their deviation from the average entropy of the set. It maintains tokens whose cumulative probability is close to a predefined threshold (e.g., 0.5), emphasizing those with average information content. Set to 1.0 to disable." data-i18n="[title]Typical_P_desc"></div> | 1194 | <div class="fa-solid fa-circle-info opacity50p" title="Typical P Sampling prioritizes tokens based on their deviation from the average entropy of the set. It maintains tokens whose cumulative probability is close to a predefined threshold (e.g., 0.5), emphasizing those with average information content. Set to 1.0 to disable." data-i18n="[title]Typical_P_desc"></div> |
| @@ -1186,7 +1204,7 @@ | |||
| 1186 | <input class="neo-range-slider" type="range" id="min_p_textgenerationwebui" name="volume" min="0" max="1" step="0.001"> | 1204 | <input class="neo-range-slider" type="range" id="min_p_textgenerationwebui" name="volume" min="0" max="1" step="0.001"> |
| 1187 | <input class="neo-range-input" type="number" min="0" max="1" step="0.001" data-for="min_p_textgenerationwebui" id="min_p_counter_textgenerationwebui"> | 1205 | <input class="neo-range-input" type="number" min="0" max="1" step="0.001" data-for="min_p_textgenerationwebui" id="min_p_counter_textgenerationwebui"> |
| 1188 | </div> | 1206 | </div> |
| 1189 | <div data-newbie-hidden class="alignitemscenter flex-container flexFlowColumn flexBasis30p flexGrow flexShrink gap0"> | 1207 | <div class="alignitemscenter flex-container flexFlowColumn flexBasis30p flexGrow flexShrink gap0"> |
| 1190 | <small> | 1208 | <small> |
| 1191 | <span data-i18n="Top A">Top A</span> | 1209 | <span data-i18n="Top A">Top A</span> |
| 1192 | <div class="fa-solid fa-circle-info opacity50p" title="Top A sets a threshold for token selection based on the square of the highest token probability. E.g if the Top-A value is 0.2 and the top token's probability is 50%, tokens with probabilities below 5% (0.2 * 0.5^2) are excluded. Set to 0 to disable." data-i18n="[title]Top_A_desc"></div> | 1210 | <div class="fa-solid fa-circle-info opacity50p" title="Top A sets a threshold for token selection based on the square of the highest token probability. E.g if the Top-A value is 0.2 and the top token's probability is 50%, tokens with probabilities below 5% (0.2 * 0.5^2) are excluded. Set to 0 to disable." data-i18n="[title]Top_A_desc"></div> |
| @@ -1194,7 +1212,7 @@ | |||
| 1194 | <input class="neo-range-slider" type="range" id="top_a_textgenerationwebui" name="volume" min="0" max="1" step="0.01"> | 1212 | <input class="neo-range-slider" type="range" id="top_a_textgenerationwebui" name="volume" min="0" max="1" step="0.01"> |
| 1195 | <input class="neo-range-input" type="number" min="0" max="1" step="0.01" data-for="top_a_textgenerationwebui" id="top_a_counter_textgenerationwebui"> | 1213 | <input class="neo-range-input" type="number" min="0" max="1" step="0.01" data-for="top_a_textgenerationwebui" id="top_a_counter_textgenerationwebui"> |
| 1196 | </div> | 1214 | </div> |
| 1197 | <div data-newbie-hidden class="alignitemscenter flex-container flexFlowColumn flexBasis30p flexGrow flexShrink gap0"> | 1215 | <div class="alignitemscenter flex-container flexFlowColumn flexBasis30p flexGrow flexShrink gap0"> |
| 1198 | <small> | 1216 | <small> |
| 1199 | <span data-i18n="TFS">TFS</span> | 1217 | <span data-i18n="TFS">TFS</span> |
| 1200 | <div class="fa-solid fa-circle-info opacity50p" data-i18n="[title]Tail_Free_Sampling_desc" title="Tail-Free Sampling (TFS) searches for a tail of low-probability tokens in the distribution, by analyzing the rate of change in token probabilities using derivatives. It retains tokens up to a threshold (e.g., 0.3) based on the normalized second derivative. The closer to 0, the more discarded tokens. Set to 1.0 to disable."></div> | 1218 | <div class="fa-solid fa-circle-info opacity50p" data-i18n="[title]Tail_Free_Sampling_desc" title="Tail-Free Sampling (TFS) searches for a tail of low-probability tokens in the distribution, by analyzing the rate of change in token probabilities using derivatives. It retains tokens up to a threshold (e.g., 0.3) based on the normalized second derivative. The closer to 0, the more discarded tokens. Set to 1.0 to disable."></div> |
| @@ -1202,7 +1220,7 @@ | |||
| 1202 | <input class="neo-range-slider" type="range" id="tfs_textgenerationwebui" name="volume" min="0" max="1" step="0.01"> | 1220 | <input class="neo-range-slider" type="range" id="tfs_textgenerationwebui" name="volume" min="0" max="1" step="0.01"> |
| 1203 | <input class="neo-range-input" type="number" min="0" max="1" step="0.01" data-for="tfs_textgenerationwebui" id="tfs_counter_textgenerationwebui"> | 1221 | <input class="neo-range-input" type="number" min="0" max="1" step="0.01" data-for="tfs_textgenerationwebui" id="tfs_counter_textgenerationwebui"> |
| 1204 | </div> | 1222 | </div> |
| 1205 | <div data-newbie-hidden data-tg-type="ooba,mancer" class="alignitemscenter flex-container flexFlowColumn flexBasis30p flexGrow flexShrink gap0"> | 1223 | <div data-tg-type="ooba,mancer,aphrodite" class="alignitemscenter flex-container flexFlowColumn flexBasis30p flexGrow flexShrink gap0"> |
| 1206 | <small> | 1224 | <small> |
| 1207 | <span data-i18n="Epsilon Cutoff">Epsilon Cutoff</span> | 1225 | <span data-i18n="Epsilon Cutoff">Epsilon Cutoff</span> |
| 1208 | <div class="fa-solid fa-circle-info opacity50p" data-i18n="[title]Epsilon cutoff sets a probability floor below which tokens are excluded from being sampled" title="Epsilon cutoff sets a probability floor below which tokens are excluded from being sampled. In units of 1e-4; a reasonable value is 3. Set to 0 to disable."></div> | 1226 | <div class="fa-solid fa-circle-info opacity50p" data-i18n="[title]Epsilon cutoff sets a probability floor below which tokens are excluded from being sampled" title="Epsilon cutoff sets a probability floor below which tokens are excluded from being sampled. In units of 1e-4; a reasonable value is 3. Set to 0 to disable."></div> |
| @@ -1210,7 +1228,7 @@ | |||
| 1210 | <input class="neo-range-slider" type="range" id="epsilon_cutoff_textgenerationwebui" name="volume" min="0" max="9" step="0.01"> | 1228 | <input class="neo-range-slider" type="range" id="epsilon_cutoff_textgenerationwebui" name="volume" min="0" max="9" step="0.01"> |
| 1211 | <input class="neo-range-input" type="number" min="0" max="9" step="0.01" data-for="epsilon_cutoff_textgenerationwebui" id="epsilon_cutoff_counter_textgenerationwebui"> | 1229 | <input class="neo-range-input" type="number" min="0" max="9" step="0.01" data-for="epsilon_cutoff_textgenerationwebui" id="epsilon_cutoff_counter_textgenerationwebui"> |
| 1212 | </div> | 1230 | </div> |
| 1213 | <div data-newbie-hidden data-tg-type="ooba,mancer" class="alignitemscenter flex-container flexFlowColumn flexBasis30p flexGrow flexShrink gap0"> | 1231 | <div data-tg-type="ooba,mancer,aphrodite" class="alignitemscenter flex-container flexFlowColumn flexBasis30p flexGrow flexShrink gap0"> |
| 1214 | <small> | 1232 | <small> |
| 1215 | <span data-i18n="Eta Cutoff">Eta Cutoff</span> | 1233 | <span data-i18n="Eta Cutoff">Eta Cutoff</span> |
| 1216 | <div class="fa-solid fa-circle-info opacity50p" data-i18n="[title]Eta_Cutoff_desc" title="Eta cutoff is the main parameter of the special Eta Sampling technique. In units of 1e-4; a reasonable value is 3. Set to 0 to disable. See the paper Truncation Sampling as Language Model Desmoothing by Hewitt et al. (2022) for details."></div> | 1234 | <div class="fa-solid fa-circle-info opacity50p" data-i18n="[title]Eta_Cutoff_desc" title="Eta cutoff is the main parameter of the special Eta Sampling technique. In units of 1e-4; a reasonable value is 3. Set to 0 to disable. See the paper Truncation Sampling as Language Model Desmoothing by Hewitt et al. (2022) for details."></div> |
| @@ -1238,61 +1256,83 @@ | |||
| 1238 | <input class="neo-range-slider" type="range" id="rep_pen_decay_textgenerationwebui" name="volume" min="-1" max="8192" step="1"> | 1256 | <input class="neo-range-slider" type="range" id="rep_pen_decay_textgenerationwebui" name="volume" min="-1" max="8192" step="1"> |
| 1239 | <input class="neo-range-input" type="number" min="-1" max="8192" step="1" data-for="rep_pen_decay_textgenerationwebui" id="rep_pen_decay_counter_textgenerationwebui"> | 1257 | <input class="neo-range-input" type="number" min="-1" max="8192" step="1" data-for="rep_pen_decay_textgenerationwebui" id="rep_pen_decay_counter_textgenerationwebui"> |
| 1240 | </div> | 1258 | </div> |
| 1241 | <div data-tg-type="ooba" data-newbie-hidden class="alignitemscenter flex-container flexFlowColumn flexBasis30p flexGrow flexShrink gap0"> | 1259 | <div data-tg-type="ooba" class="alignitemscenter flex-container flexFlowColumn flexBasis30p flexGrow flexShrink gap0"> |
| 1242 | <small data-i18n="Encoder Rep. Pen.">Encoder Penalty</small> | 1260 | <small data-i18n="Encoder Rep. Pen.">Encoder Penalty</small> |
| 1243 | <input class="neo-range-slider" type="range" id="encoder_rep_pen_textgenerationwebui" name="volume" min="0.8" max="1.5" step="0.01" /> | 1261 | <input class="neo-range-slider" type="range" id="encoder_rep_pen_textgenerationwebui" name="volume" min="0.8" max="1.5" step="0.01" /> |
| 1244 | <input class="neo-range-input" type="number" min="0.8" max="1.5" step="0.01" data-for="encoder_rep_pen_textgenerationwebui" id="encoder_rep_pen_counter_textgenerationwebui"> | 1262 | <input class="neo-range-input" type="number" min="0.8" max="1.5" step="0.01" data-for="encoder_rep_pen_textgenerationwebui" id="encoder_rep_pen_counter_textgenerationwebui"> |
| 1245 | </div> | 1263 | </div> |
| 1246 | <div data-newbie-hidden class="alignitemscenter flex-container flexFlowColumn flexBasis30p flexGrow flexShrink gap0"> | 1264 | <div class="alignitemscenter flex-container flexFlowColumn flexBasis30p flexGrow flexShrink gap0"> |
| 1247 | <small data-i18n="Frequency Penalty">Frequency Penalty</small> | 1265 | <small data-i18n="Frequency Penalty">Frequency Penalty</small> |
| 1248 | <input class="neo-range-slider" type="range" id="freq_pen_textgenerationwebui" name="volume" min="-2" max="2" step="0.01" /> | 1266 | <input class="neo-range-slider" type="range" id="freq_pen_textgenerationwebui" name="volume" min="-2" max="2" step="0.01" /> |
| 1249 | <input class="neo-range-input" type="number" data-for="freq_pen_textgenerationwebui" min="-2" max="2" step="0.01" id="freq_pen_counter_textgenerationwebui"> | 1267 | <input class="neo-range-input" type="number" data-for="freq_pen_textgenerationwebui" min="-2" max="2" step="0.01" id="freq_pen_counter_textgenerationwebui"> |
| 1250 | </div> | 1268 | </div> |
| 1251 | <div data-newbie-hidden class="alignitemscenter flex-container flexFlowColumn flexBasis30p flexGrow flexShrink gap0"> | 1269 | <div class="alignitemscenter flex-container flexFlowColumn flexBasis30p flexGrow flexShrink gap0"> |
| 1252 | <small data-i18n="Presence Penalty">Presence Penalty</small> | 1270 | <small data-i18n="Presence Penalty">Presence Penalty</small> |
| 1253 | <input class="neo-range-slider" type="range" id="presence_pen_textgenerationwebui" name="volume" min="-2" max="2" step="0.01" /> | 1271 | <input class="neo-range-slider" type="range" id="presence_pen_textgenerationwebui" name="volume" min="-2" max="2" step="0.01" /> |
| 1254 | <input class="neo-range-input" type="number" min="-2" max="2" step="0.01" data-for="presence_pen_textgenerationwebui" id="presence_pen_counter_textgenerationwebui"> | 1272 | <input class="neo-range-input" type="number" min="-2" max="2" step="0.01" data-for="presence_pen_textgenerationwebui" id="presence_pen_counter_textgenerationwebui"> |
| 1255 | </div> | 1273 | </div> |
| 1256 | <div data-tg-type="ooba" data-newbie-hidden class="alignitemscenter flex-container flexFlowColumn flexBasis30p flexGrow flexShrink gap0"> | 1274 | <div data-tg-type="ooba" class="alignitemscenter flex-container flexFlowColumn flexBasis30p flexGrow flexShrink gap0"> |
| 1257 | <small data-i18n="No Repeat Ngram Size">No Repeat Ngram Size</small> | 1275 | <small data-i18n="No Repeat Ngram Size">No Repeat Ngram Size</small> |
| 1258 | <input class="neo-range-slider" type="range" id="no_repeat_ngram_size_textgenerationwebui" name="volume" min="0" max="20" step="1"> | 1276 | <input class="neo-range-slider" type="range" id="no_repeat_ngram_size_textgenerationwebui" name="volume" min="0" max="20" step="1"> |
| 1259 | <input class="neo-range-input" type="number" min="0" max="20" step="1" data-for="no_repeat_ngram_size_textgenerationwebui" id="no_repeat_ngram_size_counter_textgenerationwebui"> | 1277 | <input class="neo-range-input" type="number" min="0" max="20" step="1" data-for="no_repeat_ngram_size_textgenerationwebui" id="no_repeat_ngram_size_counter_textgenerationwebui"> |
| 1260 | </div> | 1278 | </div> |
| 1261 | <div data-newbie-hidden data-tg-type="tabby" class="alignitemscenter flex-container flexFlowColumn flexBasis30p flexGrow flexShrink gap0"> | 1279 | <div data-tg-type="tabby" class="alignitemscenter flex-container flexFlowColumn flexBasis30p flexGrow flexShrink gap0"> |
| 1262 | <small data-i18n="Skew">Skew</small> | 1280 | <small data-i18n="Skew">Skew</small> |
| 1263 | <input class="neo-range-slider" type="range" id="skew_textgenerationwebui" name="volume" min="-5" max="5" step="0.01" /> | 1281 | <input class="neo-range-slider" type="range" id="skew_textgenerationwebui" name="volume" min="-5" max="5" step="0.01" /> |
| 1264 | <input class="neo-range-input" type="number" min="-5" max="5" step="0.01" data-for="skew_textgenerationwebui" id="skew_counter_textgenerationwebui"> | 1282 | <input class="neo-range-input" type="number" min="-5" max="5" step="0.01" data-for="skew_textgenerationwebui" id="skew_counter_textgenerationwebui"> |
| 1265 | </div> | 1283 | </div> |
| 1266 | <div data-newbie-hidden data-tg-type="mancer, ooba, tabby, dreamgen, infermaticai" class="alignitemscenter flex-container flexFlowColumn flexBasis30p flexGrow flexShrink gap0"> | 1284 | <div data-tg-type="mancer, ooba, tabby, dreamgen, infermaticai, aphrodite" class="alignitemscenter flex-container flexFlowColumn flexBasis30p flexGrow flexShrink gap0"> |
| 1267 | <small data-i18n="Min Length">Min Length</small> | 1285 | <small data-i18n="Min Length">Min Length</small> |
| 1268 | <input class="neo-range-slider" type="range" id="min_length_textgenerationwebui" name="volume" min="0" max="2000" step="1" /> | 1286 | <input class="neo-range-slider" type="range" id="min_length_textgenerationwebui" name="volume" min="0" max="2000" step="1" /> |
| 1269 | <input class="neo-range-input" type="number" min="0" max="2000" step="1" data-for="min_length_textgenerationwebui" id="min_length_counter_textgenerationwebui"> | 1287 | <input class="neo-range-input" type="number" min="0" max="2000" step="1" data-for="min_length_textgenerationwebui" id="min_length_counter_textgenerationwebui"> |
| 1270 | </div> | 1288 | </div> |
| 1271 | <div data-newbie-hidden data-tg-type="ooba" class="alignitemscenter flex-container flexFlowColumn flexBasis30p flexGrow flexShrink gap0"> | 1289 | <div data-tg-type="ooba" class="alignitemscenter flex-container flexFlowColumn flexBasis30p flexGrow flexShrink gap0"> |
| 1272 | <small data-i18n="Max Tokens Second">Maximum tokens/second</small> | 1290 | <small data-i18n="Max Tokens Second">Maximum tokens/second</small> |
| 1273 | <input class="neo-range-slider" type="range" id="max_tokens_second_textgenerationwebui" name="volume" min="0" max="20" step="1" /> | 1291 | <input class="neo-range-slider" type="range" id="max_tokens_second_textgenerationwebui" name="volume" min="0" max="20" step="1" /> |
| 1274 | <input class="neo-range-input" type="number" min="0" max="20" step="1" data-for="max_tokens_second_textgenerationwebui" id="max_tokens_second_counter_textgenerationwebui"> | 1292 | <input class="neo-range-input" type="number" min="0" max="20" step="1" data-for="max_tokens_second_textgenerationwebui" id="max_tokens_second_counter_textgenerationwebui"> |
| 1275 | </div> | 1293 | </div> |
| 1276 | <div data-newbie-hidden data-tg-type="mancer, ooba, koboldcpp, aphrodite, tabby" id="smoothingBlock" name="smoothingBlock" class="wide100p"> | 1294 | <div data-tg-type="mancer, ooba, koboldcpp, aphrodite, tabby" id="smoothingBlock" name="smoothingBlock" class="wide100p"> |
| 1277 | <h4 class="wide100p textAlignCenter"> | 1295 | <h4 class="wide100p textAlignCenter"> |
| 1278 | <label data-i18n="Smooth Sampling">Smooth Sampling</label> | 1296 | <label data-i18n="Smooth Sampling">Smooth Sampling</label> |
| 1279 | <div class=" fa-solid fa-circle-info opacity50p " data-i18n="[title]Smooth_Sampling_desc" title="Allows you to use quadratic/cubic transformations to adjust the distribution. Lower Smoothing Factor values will be more creative, usually between 0.2-0.3 is the sweetspot (assuming the curve = 1). Higher Smoothing Curve values will make the curve steeper, which will punish low probability choices more aggressively. 1.0 curve is equivalent to only using Smoothing Factor."></div> | 1297 | <div class=" fa-solid fa-circle-info opacity50p " data-i18n="[title]Smooth_Sampling_desc" title="Allows you to use quadratic/cubic transformations to adjust the distribution. Lower Smoothing Factor values will be more creative, usually between 0.2-0.3 is the sweetspot (assuming the curve = 1). Higher Smoothing Curve values will make the curve steeper, which will punish low probability choices more aggressively. 1.0 curve is equivalent to only using Smoothing Factor."></div> |
| 1280 | </h4> | 1298 | </h4> |
| 1281 | <div data-tg-type="mancer, ooba, koboldcpp, aphrodite, tabby" class="flex-container flexFlowRow gap10px flexShrink"> | 1299 | <div data-tg-type="mancer, ooba, koboldcpp, aphrodite, tabby" class="flex-container flexFlowRow gap10px flexShrink"> |
| 1282 | <div data-newbie-hidden class="alignitemscenter flex-container flexFlowColumn flexBasis48p flexGrow flexShrink gap0"> | 1300 | <div class="alignitemscenter flex-container flexFlowColumn flexBasis48p flexGrow flexShrink gap0"> |
| 1283 | <small data-i18n="Smoothing Factor">Smoothing Factor</small> | 1301 | <small data-i18n="Smoothing Factor">Smoothing Factor</small> |
| 1284 | <input class="neo-range-slider" type="range" id="smoothing_factor_textgenerationwebui" name="volume" min="0" max="10" step="0.01" /> | 1302 | <input class="neo-range-slider" type="range" id="smoothing_factor_textgenerationwebui" name="volume" min="0" max="10" step="0.01" /> |
| 1285 | <input class="neo-range-input" type="number" min="0" max="10" step="0.01" data-for="smoothing_factor_textgenerationwebui" id="smoothing_factor_counter_textgenerationwebui"> | 1303 | <input class="neo-range-input" type="number" min="0" max="10" step="0.01" data-for="smoothing_factor_textgenerationwebui" id="smoothing_factor_counter_textgenerationwebui"> |
| 1286 | </div> | 1304 | </div> |
| 1287 | <div data-tg-type="mancer, ooba, koboldcpp, aphrodite" data-newbie-hidden class="alignitemscenter flex-container flexFlowColumn flexBasis48p flexGrow flexShrink gap0"> | 1305 | <div data-tg-type="mancer, ooba, koboldcpp, aphrodite" class="alignitemscenter flex-container flexFlowColumn flexBasis48p flexGrow flexShrink gap0"> |
| 1288 | <small data-i18n="Smoothing Curve">Smoothing Curve</small> | 1306 | <small data-i18n="Smoothing Curve">Smoothing Curve</small> |
| 1289 | <input class="neo-range-slider" type="range" id="smoothing_curve_textgenerationwebui" name="volume" min="1" max="10" step="0.01" /> | 1307 | <input class="neo-range-slider" type="range" id="smoothing_curve_textgenerationwebui" name="volume" min="1" max="10" step="0.01" /> |
| 1290 | <input class="neo-range-input" type="number" min="1" max="10" step="0.01" data-for="smoothing_curve_textgenerationwebui" id="smoothing_curve_counter_textgenerationwebui"> | 1308 | <input class="neo-range-input" type="number" min="1" max="10" step="0.01" data-for="smoothing_curve_textgenerationwebui" id="smoothing_curve_counter_textgenerationwebui"> |
| 1291 | </div> | 1309 | </div> |
| 1292 | </div> | 1310 | </div> |
| 1293 | </div> | 1311 | </div> |
| 1312 | |||
| 1313 | <div data-tg-type="koboldcpp, aphrodite" id="xtc_block" class="wide100p"> | ||
| 1314 | <h4 class="wide100p textAlignCenter"> | ||
| 1315 | <label data-i18n="Exclude Top Choices (XTC)">Exclude Top Choices (XTC)</label> | ||
| 1316 | <a href="https://github.com/oobabooga/text-generation-webui/pull/6335" target="_blank"> | ||
| 1317 | <div class=" fa-solid fa-circle-info opacity50p"></div> | ||
| 1318 | </a> | ||
| 1319 | </h4> | ||
| 1320 | <div class="flex-container flexFlowRow gap10px flexShrink"> | ||
| 1321 | <div class="alignitemscenter flex-container flexFlowColumn flexBasis48p flexGrow flexShrink gap0"> | ||
| 1322 | <small data-i18n="Threshold">Threshold</small> | ||
| 1323 | <input class="neo-range-slider" type="range" id="xtc_threshold_textgenerationwebui" name="volume" min="0" max="0.5" step="0.01" /> | ||
| 1324 | <input class="neo-range-input" type="number" min="0" max="0.5" step="0.01" data-for="xtc_threshold_textgenerationwebui" id="xtc_threshold_counter_textgenerationwebui"> | ||
| 1325 | </div> | ||
| 1326 | <div class="alignitemscenter flex-container flexFlowColumn flexBasis48p flexGrow flexShrink gap0"> | ||
| 1327 | <small data-i18n="Probability">Probability</small> | ||
| 1328 | <input class="neo-range-slider" type="range" id="xtc_probability_textgenerationwebui" name="volume" min="0" max="1" step="0.01" /> | ||
| 1329 | <input class="neo-range-input" type="number" min="0" max="1" step="0.01" data-for="xtc_probability_textgenerationwebui" id="xtc_probability_counter_textgenerationwebui"> | ||
| 1330 | </div> | ||
| 1331 | </div> | ||
| 1332 | </div> | ||
| 1333 | |||
| 1294 | <!-- Enable for llama.cpp when the PR is merged: https://github.com/ggerganov/llama.cpp/pull/6839 --> | 1334 | <!-- Enable for llama.cpp when the PR is merged: https://github.com/ggerganov/llama.cpp/pull/6839 --> |
| 1295 | <div data-newbie-hidden data-tg-type="ooba, koboldcpp" id="dryBlock" class="wide100p"> | 1335 | <div data-tg-type="ooba, koboldcpp, tabby" id="dryBlock" class="wide100p"> |
| 1296 | <h4 class="wide100p textAlignCenter" title="DRY penalizes tokens that would extend the end of the input into a sequence that has previously occurred in the input. Set multiplier to 0 to disable." data-i18n="[title]DRY_Repetition_Penalty_desc"> | 1336 | <h4 class="wide100p textAlignCenter" title="DRY penalizes tokens that would extend the end of the input into a sequence that has previously occurred in the input. Set multiplier to 0 to disable." data-i18n="[title]DRY_Repetition_Penalty_desc"> |
| 1297 | <label data-i18n="DRY Repetition Penalty">DRY Repetition Penalty</label> | 1337 | <label data-i18n="DRY Repetition Penalty">DRY Repetition Penalty</label> |
| 1298 | <a href="https://github.com/oobabooga/text-generation-webui/pull/5677" target="_blank"> | 1338 | <a href="https://github.com/oobabooga/text-generation-webui/pull/5677" target="_blank"> |
| @@ -1315,7 +1355,7 @@ | |||
| 1315 | <input class="neo-range-slider" type="range" id="dry_allowed_length_textgenerationwebui" min="1" max="20" step="1" /> | 1355 | <input class="neo-range-slider" type="range" id="dry_allowed_length_textgenerationwebui" min="1" max="20" step="1" /> |
| 1316 | <input class="neo-range-input" type="number" min="1" max="20" step="1" data-for="dry_allowed_length_textgenerationwebui" id="dry_allowed_length_counter_textgenerationwebui"> | 1356 | <input class="neo-range-input" type="number" min="1" max="20" step="1" data-for="dry_allowed_length_textgenerationwebui" id="dry_allowed_length_counter_textgenerationwebui"> |
| 1317 | </div> | 1357 | </div> |
| 1318 | <div class="alignItemsCenter flex-container flexFlowColumn flexBasis48p flexGrow flexShrink gap0" data-tg-type="llamacpp, koboldcpp"> | 1358 | <div class="alignItemsCenter flex-container flexFlowColumn flexBasis48p flexGrow flexShrink gap0" data-tg-type="llamacpp, koboldcpp, tabby"> |
| 1319 | <small data-i18n="Penalty Range">Penalty Range</small> | 1359 | <small data-i18n="Penalty Range">Penalty Range</small> |
| 1320 | <input class="neo-range-slider" type="range" id="dry_penalty_last_n_textgenerationwebui" min="0" max="8192" step="1" /> | 1360 | <input class="neo-range-slider" type="range" id="dry_penalty_last_n_textgenerationwebui" min="0" max="8192" step="1" /> |
| 1321 | <input class="neo-range-input" type="number" min="0" max="8192" step="1" data-for="dry_penalty_last_n_textgenerationwebui" id="dry_penalty_last_n_counter_textgenerationwebui"> | 1361 | <input class="neo-range-input" type="number" min="0" max="8192" step="1" data-for="dry_penalty_last_n_textgenerationwebui" id="dry_penalty_last_n_counter_textgenerationwebui"> |
| @@ -1330,7 +1370,7 @@ | |||
| 1330 | </div> | 1370 | </div> |
| 1331 | </div> | 1371 | </div> |
| 1332 | </div> | 1372 | </div> |
| 1333 | <div data-newbie-hidden data-tg-type="ooba, mancer, koboldcpp, tabby, llamacpp, aphrodite" id="dynatemp_block_ooba" class="wide100p"> | 1373 | <div data-tg-type="ooba, mancer, koboldcpp, tabby, llamacpp, aphrodite" id="dynatemp_block_ooba" class="wide100p"> |
| 1334 | <h4 class="wide100p textAlignCenter"> | 1374 | <h4 class="wide100p textAlignCenter"> |
| 1335 | <div class="flex-container alignitemscenter justifyCenter"> | 1375 | <div class="flex-container alignitemscenter justifyCenter"> |
| 1336 | <div class="checkbox_label" for="dynatemp_textgenerationwebui"> | 1376 | <div class="checkbox_label" for="dynatemp_textgenerationwebui"> |
| @@ -1358,7 +1398,7 @@ | |||
| 1358 | </div> | 1398 | </div> |
| 1359 | </div> | 1399 | </div> |
| 1360 | </div> | 1400 | </div> |
| 1361 | <div data-newbie-hidden data-tg-type="ooba,aphrodite,infermaticai,koboldcpp,llamacpp,mancer,ollama,tabby" id="mirostat_block_ooba" class="wide100p"> | 1401 | <div data-tg-type="ooba,infermaticai,koboldcpp,llamacpp,mancer,ollama,tabby" id="mirostat_block_ooba" class="wide100p"> |
| 1362 | <h4 class="wide100p textAlignCenter"> | 1402 | <h4 class="wide100p textAlignCenter"> |
| 1363 | <label data-i18n="Mirostat (mode=1 is only for llama.cpp)">Mirostat</label> | 1403 | <label data-i18n="Mirostat (mode=1 is only for llama.cpp)">Mirostat</label> |
| 1364 | <div class=" fa-solid fa-circle-info opacity50p " data-i18n="[title]Mirostat_desc" title="Mirostat is a thermostat for output perplexity. Mirostat matches the output perplexity to that of the input, thus avoiding the repetition trap (where, as the autoregressive inference produces text, the perplexity of the output tends toward zero) and the confusion trap (where the perplexity diverges). For details, see the paper Mirostat: A Neural Text Decoding Algorithm that Directly Controls Perplexity by Basu et al. (2020). Mode chooses the Mirostat version. 0=disable, 1=Mirostat 1.0 (llama.cpp only), 2=Mirostat 2.0."></div> | 1404 | <div class=" fa-solid fa-circle-info opacity50p " data-i18n="[title]Mirostat_desc" title="Mirostat is a thermostat for output perplexity. Mirostat matches the output perplexity to that of the input, thus avoiding the repetition trap (where, as the autoregressive inference produces text, the perplexity of the output tends toward zero) and the confusion trap (where the perplexity diverges). For details, see the paper Mirostat: A Neural Text Decoding Algorithm that Directly Controls Perplexity by Basu et al. (2020). Mode chooses the Mirostat version. 0=disable, 1=Mirostat 1.0 (llama.cpp only), 2=Mirostat 2.0."></div> |
| @@ -1387,33 +1427,41 @@ | |||
| 1387 | </div> | 1427 | </div> |
| 1388 | </div> | 1428 | </div> |
| 1389 | </div> | 1429 | </div> |
| 1390 | <div data-newbie-hidden data-tg-type="ooba, vllm" id="beamSearchBlock" name="beamSearchBlock" class="wide100p"> | 1430 | <div data-tg-type="ooba" id="beamSearchBlock" name="beamSearchBlock" class="wide100p"> |
| 1391 | <h4 class="wide100p textAlignCenter"> | 1431 | <h4 class="wide100p textAlignCenter"> |
| 1392 | <label> | 1432 | <label> |
| 1393 | <span data-i18n="Beam search">Beam Search</span> | 1433 | <span data-i18n="Beam search">Beam Search</span> |
| 1394 | <div class=" fa-solid fa-circle-info opacity50p " title="Helpful tip coming soon." data-i18n="[title]Helpful tip coming soon."></div> | 1434 | <div class=" fa-solid fa-circle-info opacity50p " title="A greedy, brute-force algorithm used in LLM sampling to find the most likely sequence of words or tokens. It expands multiple candidate sequences at once, maintaining a fixed number (beam width) of top sequences at each step." data-i18n="[title]A greedy, brute-force algorithm used in LLM sampling to find the most likely sequence of words or tokens. It expands multiple candidate sequences at once, maintaining a fixed number (beam width) of top sequences at each step."></div> |
| 1395 | </label> | 1435 | </label> |
| 1396 | </h4> | 1436 | </h4> |
| 1397 | <div class="flex-container flexFlowRow alignitemscenter gap10px flexShrink"> | 1437 | <div class="flex-container flexFlowRow alignitemscenter gap10px flexShrink"> |
| 1398 | <div class="alignitemscenter flex-container marginBot5 flexFlowColumn flexGrow flexShrink gap0"> | 1438 | <div class="alignitemscenter flex-container marginBot5 flexFlowColumn flexGrow flexShrink gap0"> |
| 1399 | <small data-i18n="Number of Beams"># of Beams</small> | 1439 | <label> |
| 1440 | <small data-i18n="# of Beams"># of Beams</small> | ||
| 1441 | <div class="fa-solid fa-circle-info opacity50p" data-i18n="[title]The number of sequences generated at each step with Beam Search." title="The number of sequences generated at each step with Beam Search."></div> | ||
| 1442 | </label> | ||
| 1400 | <input class="neo-range-slider" type="range" id="num_beams_textgenerationwebui" name="volume" min="1" max="20" step="1" /> | 1443 | <input class="neo-range-slider" type="range" id="num_beams_textgenerationwebui" name="volume" min="1" max="20" step="1" /> |
| 1401 | <input class="neo-range-input" type="number" min="1" max="20" step="1" data-for="num_beams_textgenerationwebui" id="num_beams_counter_textgenerationwebui"> | 1444 | <input class="neo-range-input" type="number" min="1" max="20" step="1" data-for="num_beams_textgenerationwebui" id="num_beams_counter_textgenerationwebui"> |
| 1402 | </div> | 1445 | </div> |
| 1403 | <div class="alignitemscenter flex-container marginBot5 flexFlowColumn flexGrow flexShrink gap0"> | 1446 | <div class="alignitemscenter flex-container marginBot5 flexFlowColumn flexGrow flexShrink gap0"> |
| 1447 | <label> | ||
| 1404 | <small data-i18n="Length Penalty">Length Penalty</small> | 1448 | <small data-i18n="Length Penalty">Length Penalty</small> |
| 1449 | <div class="fa-solid fa-circle-info opacity50p" data-i18n="[title]Penalize sequences based on their length." title="Penalize sequences based on their length."></div> | ||
| 1450 | </label> | ||
| 1405 | <input class="neo-range-slider" type="range" id="length_penalty_textgenerationwebui" name="volume" min="-5" max="5" step="0.1" /> | 1451 | <input class="neo-range-slider" type="range" id="length_penalty_textgenerationwebui" name="volume" min="-5" max="5" step="0.1" /> |
| 1406 | <input class="neo-range-input" type="number" min="-5" max="5" step="0.1" data-for="length_penalty_textgenerationwebui" id="length_penalty_counter_textgenerationwebui"> | 1452 | <input class="neo-range-input" type="number" min="-5" max="5" step="0.1" data-for="length_penalty_textgenerationwebui" id="length_penalty_counter_textgenerationwebui"> |
| 1407 | </div> | 1453 | </div> |
| 1408 | <div class=""> | 1454 | <div class=""> |
| 1409 | <label class="checkbox_label" for="early_stopping_textgenerationwebui"> | 1455 | <label class="checkbox_label" for="early_stopping_textgenerationwebui"> |
| 1410 | <input type="checkbox" id="early_stopping_textgenerationwebui" /> | 1456 | <input type="checkbox" id="early_stopping_textgenerationwebui" /> |
| 1411 | <small data-i18n="Early Stopping">Early Stopping</small> | 1457 | <small data-i18n="Early Stopping">Early Stopping |
| 1458 | <div class="fa-solid fa-circle-info opacity50p" data-i18n="[title]Controls the stopping condition for beam search. If checked, the generation stops as soon as there are '# of Beams' sequences. If not checked, a heuristic is applied and the generation is stopped when it's very unlikely to find better candidates." title="Controls the stopping condition for beam search. If checked, the generation stops as soon as there are '# of Beams' sequences. If not checked, a heuristic is applied and the generation is stopped when it's very unlikely to find better candidates."></div> | ||
| 1459 | </small> | ||
| 1412 | </label> | 1460 | </label> |
| 1413 | </div> | 1461 | </div> |
| 1414 | </div> | 1462 | </div> |
| 1415 | </div> | 1463 | </div> |
| 1416 | <div data-tg-type="ooba" data-newbie-hidden id="contrastiveSearchBlock" name="contrastiveSearchBlock" class="alignitemscenter flex-container flexFlowColumn flexBasis48p flexGrow flexShrink gap0"> | 1464 | <div data-tg-type="ooba" id="contrastiveSearchBlock" name="contrastiveSearchBlock" class="alignitemscenter flex-container flexFlowColumn flexBasis48p flexGrow flexShrink gap0"> |
| 1417 | <h4 class="textAlignCenter" data-i18n="Contrastive search">Contrastive Search | 1465 | <h4 class="textAlignCenter" data-i18n="Contrastive search">Contrastive Search |
| 1418 | <div class=" fa-solid fa-circle-info opacity50p " data-i18n="Contrastive_search_txt" title="A sampler that encourages diversity while maintaining coherence, by exploiting the isotropicity of the representation space of most LLMs. For details, see the paper A Contrastive Framework for Neural Text Generation by Su et al. (2022)."></div> | 1466 | <div class=" fa-solid fa-circle-info opacity50p " data-i18n="Contrastive_search_txt" title="A sampler that encourages diversity while maintaining coherence, by exploiting the isotropicity of the representation space of most LLMs. For details, see the paper A Contrastive Framework for Neural Text Generation by Su et al. (2022)."></div> |
| 1419 | </h4> | 1467 | </h4> |
| @@ -1426,7 +1474,7 @@ | |||
| 1426 | <input class="neo-range-input" type="number" min="0" max="5" step="0.05" data-for="penalty_alpha_textgenerationwebui" id="penalty_alpha_counter_textgenerationwebui"> | 1474 | <input class="neo-range-input" type="number" min="0" max="5" step="0.05" data-for="penalty_alpha_textgenerationwebui" id="penalty_alpha_counter_textgenerationwebui"> |
| 1427 | </div> | 1475 | </div> |
| 1428 | </div> | 1476 | </div> |
| 1429 | <div data-newbie-hidden name="checkboxes" class="flex-container flexBasis48p justifyCenter flexGrow flexShrink "> | 1477 | <div name="checkboxes" class="flex-container flexBasis48p justifyCenter flexGrow flexShrink "> |
| 1430 | <div class="flex-container flexFlowColumn marginTop5"> | 1478 | <div class="flex-container flexFlowColumn marginTop5"> |
| 1431 | <label data-tg-type="ooba" class="checkbox_label flexGrow flexShrink" for="do_sample_textgenerationwebui"> | 1479 | <label data-tg-type="ooba" class="checkbox_label flexGrow flexShrink" for="do_sample_textgenerationwebui"> |
| 1432 | <input type="checkbox" id="do_sample_textgenerationwebui" /> | 1480 | <input type="checkbox" id="do_sample_textgenerationwebui" /> |
| @@ -1439,7 +1487,7 @@ | |||
| 1439 | <div class="fa-solid fa-circle-info opacity50p " data-i18n="[title]Add the bos_token to the beginning of prompts. Disabling this can make the replies more creative" title="Add the bos_token to the beginning of prompts. Disabling this can make the replies more creative."></div> | 1487 | <div class="fa-solid fa-circle-info opacity50p " data-i18n="[title]Add the bos_token to the beginning of prompts. Disabling this can make the replies more creative" title="Add the bos_token to the beginning of prompts. Disabling this can make the replies more creative."></div> |
| 1440 | </label> | 1488 | </label> |
| 1441 | </label> | 1489 | </label> |
| 1442 | <label data-tg-type="ooba, llamacpp, tabby" class="checkbox_label flexGrow flexShrink" for="ban_eos_token_textgenerationwebui"> | 1490 | <label data-tg-type="ooba, llamacpp, tabby, koboldcpp" class="checkbox_label flexGrow flexShrink" for="ban_eos_token_textgenerationwebui"> |
| 1443 | <input type="checkbox" id="ban_eos_token_textgenerationwebui" /> | 1491 | <input type="checkbox" id="ban_eos_token_textgenerationwebui" /> |
| 1444 | <label> | 1492 | <label> |
| 1445 | <small data-i18n="Ban EOS Token">Ban EOS Token</small> | 1493 | <small data-i18n="Ban EOS Token">Ban EOS Token</small> |
| @@ -1477,18 +1525,21 @@ | |||
| 1477 | </label> | 1525 | </label> |
| 1478 | </div> | 1526 | </div> |
| 1479 | </div> | 1527 | </div> |
| 1480 | <div data-tg-type="mancer, ooba, koboldcpp, vllm, aphrodite, llamacpp, ollama, infermaticai, huggingface" data-newbie-hidden class="flex-container flexFlowColumn alignitemscenter flexBasis48p flexGrow flexShrink gap0"> | 1528 | <div data-tg-type="mancer, ooba, koboldcpp, vllm, aphrodite, llamacpp, ollama, infermaticai, huggingface" class="flex-container flexFlowColumn alignitemscenter flexBasis48p flexGrow flexShrink gap0"> |
| 1481 | <small data-i18n="Seed" class="textAlignCenter">Seed</small> | 1529 | <label> |
| 1482 | <input type="number" id="seed_textgenerationwebui" class="text_pole textAlignCenter" min="-1" value="-1" maxlength="100" /> | 1530 | <small data-i18n="Seed">Seed</small> |
| 1531 | <div class="fa-solid fa-circle-info opacity50p " data-i18n="[title]Seed_desc" title="A random seed to use for deterministic and reproducable outputs. Set to -1 to use a random seed."></div> | ||
| 1532 | </label> | ||
| 1533 | <input type="number" id="seed_textgenerationwebui" class="text_pole textAlignCenter" min="-1" value="-1" /> | ||
| 1483 | </div> | 1534 | </div> |
| 1484 | <div id="banned_tokens_block_ooba" data-newbie-hidden class="wide100p"> | 1535 | <div id="banned_tokens_block_ooba" class="wide100p"> |
| 1485 | <hr data-newbie-hidden class="width100p"> | 1536 | <hr class="width100p"> |
| 1486 | <h4 class="range-block-title justifyCenter"> | 1537 | <h4 class="range-block-title justifyCenter"> |
| 1487 | <span data-i18n="Banned Tokens">Banned Tokens</span> | 1538 | <span data-i18n="Banned Tokens">Banned Tokens/Strings</span> |
| 1488 | <div class="margin5 fa-solid fa-circle-info opacity50p " data-i18n="[title]LLaMA / Mistral / Yi models only" title="LLaMA / Mistral / Yi models only. Make sure to select an appropriate tokenizer first. Sequences you don't want to appear in the output. One per line. Text or [token ids]. Most tokens have a leading space. Use token counter if unsure."></div> | 1539 | <div class="margin5 fa-solid fa-circle-info opacity50p " data-i18n="[title]LLaMA / Mistral / Yi models only" title="Enter sequences you don't want to appear in the output. Unquoted text will be tokenized in the back end and banned as tokens. [token ids] will be banned as-is. Most tokens have a leading space. Use token counter (with the correct tokenizer selected first!) if you are unsure. Enclose text in double quotes to ban the entire string as a set. Quoted Strings and [Token ids] must be on their own line."></div> |
| 1489 | </h4> | 1540 | </h4> |
| 1490 | <div class="wide100p"> | 1541 | <div class="wide100p"> |
| 1491 | <textarea id="banned_tokens_textgenerationwebui" class="text_pole textarea_compact" name="banned_tokens_textgenerationwebui" rows="3" data-i18n="[placeholder]Example: some text [42, 69, 1337]" placeholder="Example: some text [42, 69, 1337]"></textarea> | 1542 | <textarea id="banned_tokens_textgenerationwebui" class="text_pole textarea_compact" name="banned_tokens_textgenerationwebui" rows="3" data-i18n="[placeholder]Example: some text [42, 69, 1337]" placeholder='some text as tokens [420, 69, 1337] "Some verbatim string"'></textarea> |
| 1492 | </div> | 1543 | </div> |
| 1493 | </div> | 1544 | </div> |
| 1494 | <div class="range-block wide100p"> | 1545 | <div class="range-block wide100p"> |
| @@ -1506,7 +1557,7 @@ | |||
| 1506 | <div class="logit_bias_list"></div> | 1557 | <div class="logit_bias_list"></div> |
| 1507 | </div> | 1558 | </div> |
| 1508 | </div> | 1559 | </div> |
| 1509 | <div id="cfg_block_ooba" data-newbie-hidden data-tg-type="ooba, tabby" class="wide100p"> | 1560 | <div id="cfg_block_ooba" data-tg-type="ooba, tabby" class="wide100p"> |
| 1510 | <hr class="width100p"> | 1561 | <hr class="width100p"> |
| 1511 | <h4 data-i18n="CFG" class="textAlignCenter">CFG | 1562 | <h4 data-i18n="CFG" class="textAlignCenter">CFG |
| 1512 | <div class="margin5 fa-solid fa-circle-info opacity50p " data-i18n="[title]Classifier Free Guidance. More helpful tip coming soon" title="Classifier Free Guidance. More helpful tip coming soon."></div> | 1563 | <div class="margin5 fa-solid fa-circle-info opacity50p " data-i18n="[title]Classifier Free Guidance. More helpful tip coming soon" title="Classifier Free Guidance. More helpful tip coming soon."></div> |
| @@ -1528,33 +1579,33 @@ | |||
| 1528 | </div> | 1579 | </div> |
| 1529 | </div> | 1580 | </div> |
| 1530 | </div> | 1581 | </div> |
| 1531 | <div data-newbie-hidden id="json_schema_block" data-tg-type="tabby, llamacpp" class="wide100p"> | 1582 | <div id="grammar_block_ooba" data-tg-type="ooba,aphrodite" class="wide100p"> |
| 1532 | <hr class="wide100p"> | 1583 | <hr class="wide100p"> |
| 1533 | <h4 class="wide100p textAlignCenter"><span data-i18n="JSON Schema">JSON Schema</span> | 1584 | <h4 class="wide100p textAlignCenter"> |
| 1534 | <a href="https://json-schema.org/learn/getting-started-step-by-step" target="_blank"> | 1585 | <label> |
| 1586 | <span data-i18n="Grammar String">Grammar String</span> | ||
| 1587 | <div class="margin5 fa-solid fa-circle-info opacity50p " data-i18n="[title]GBNF or EBNF, depends on the backend in use. If you're using this you should know which." title="GBNF or EBNF, depends on the backend in use. If you're using this you should know which."></div> | ||
| 1588 | <a href="https://github.com/ggerganov/llama.cpp/blob/master/grammars/README.md" target="_blank"> | ||
| 1535 | <small> | 1589 | <small> |
| 1536 | <div class="fa-solid fa-circle-question note-link-span"></div> | 1590 | <div class="fa-solid fa-up-right-from-square note-link-span"></div> |
| 1537 | </small> | 1591 | </small> |
| 1538 | </a> | 1592 | </a> |
| 1593 | </label> | ||
| 1539 | </h4> | 1594 | </h4> |
| 1540 | <textarea id="tabby_json_schema" rows="4" class="text_pole textarea_compact monospace" data-i18n="[placeholder]Type in the desired JSON schema" placeholder="Type in the desired JSON schema"></textarea> | 1595 | <textarea id="grammar_string_textgenerationwebui" rows="4" class="text_pole textarea_compact monospace" data-i18n="[placeholder]Type in the desired custom grammar" placeholder="Type in the desired custom grammar"></textarea> |
| 1541 | </div> | 1596 | </div> |
| 1542 | <div data-newbie-hidden id="grammar_block_ooba" class="wide100p"> | 1597 | <div id="json_schema_block" data-tg-type="tabby, llamacpp, aphrodite" class="wide100p"> |
| 1543 | <hr class="wide100p"> | 1598 | <hr class="wide100p"> |
| 1544 | <h4 class="wide100p textAlignCenter"> | 1599 | <h4 class="wide100p textAlignCenter"><span data-i18n="JSON Schema">JSON Schema</span> |
| 1545 | <label> | 1600 | <a href="https://json-schema.org/learn/getting-started-step-by-step" target="_blank"> |
| 1546 | <span data-i18n="Grammar String">Grammar String</span> | ||
| 1547 | <div class="margin5 fa-solid fa-circle-info opacity50p " data-i18n="[title]GBNF or EBNF, depends on the backend in use. If you're using this you should know which." title="GBNF or EBNF, depends on the backend in use. If you're using this you should know which."></div> | ||
| 1548 | <a href="https://github.com/ggerganov/llama.cpp/blob/master/grammars/README.md" target="_blank"> | ||
| 1549 | <small> | 1601 | <small> |
| 1550 | <div class="fa-solid fa-up-right-from-square note-link-span"></div> | 1602 | <div class="fa-solid fa-circle-question note-link-span"></div> |
| 1551 | </small> | 1603 | </small> |
| 1552 | </a> | 1604 | </a> |
| 1553 | </label> | ||
| 1554 | </h4> | 1605 | </h4> |
| 1555 | <textarea id="grammar_string_textgenerationwebui" rows="4" class="text_pole textarea_compact monospace" data-i18n="[placeholder]Type in the desired custom grammar" placeholder="Type in the desired custom grammar"></textarea> | 1606 | <textarea id="tabby_json_schema" rows="4" class="text_pole textarea_compact monospace" data-i18n="[placeholder]Type in the desired JSON schema" placeholder="Type in the desired JSON schema"></textarea> |
| 1556 | </div> | 1607 | </div> |
| 1557 | <div id="sampler_order_block_kcpp" data-newbie-hidden data-tg-type="koboldcpp" class="range-block flexFlowColumn wide100p"> | 1608 | <div id="sampler_order_block_kcpp" data-tg-type="koboldcpp" class="range-block flexFlowColumn wide100p"> |
| 1558 | <hr class="wide100p"> | 1609 | <hr class="wide100p"> |
| 1559 | <div class="range-block-title"> | 1610 | <div class="range-block-title"> |
| 1560 | <span data-i18n="Samplers Order">Samplers Order</span> | 1611 | <span data-i18n="Samplers Order">Samplers Order</span> |
| @@ -1597,7 +1648,7 @@ | |||
| 1597 | <span data-i18n="Load default order">Load default order</span> | 1648 | <span data-i18n="Load default order">Load default order</span> |
| 1598 | </div> | 1649 | </div> |
| 1599 | </div> | 1650 | </div> |
| 1600 | <div id="sampler_order_block_lcpp" data-newbie-hidden data-tg-type="llamacpp" class="range-block flexFlowColumn wide100p"> | 1651 | <div id="sampler_order_block_lcpp" data-tg-type="llamacpp" class="range-block flexFlowColumn wide100p"> |
| 1601 | <hr class="wide100p"> | 1652 | <hr class="wide100p"> |
| 1602 | <h4 class="range-block-title justifyCenter"> | 1653 | <h4 class="range-block-title justifyCenter"> |
| 1603 | <span data-i18n="Sampler Order">Sampler Order</span> | 1654 | <span data-i18n="Sampler Order">Sampler Order</span> |
| @@ -1618,7 +1669,7 @@ | |||
| 1618 | <span data-i18n="Load default order">Load default order</span> | 1669 | <span data-i18n="Load default order">Load default order</span> |
| 1619 | </div> | 1670 | </div> |
| 1620 | </div> | 1671 | </div> |
| 1621 | <div id="sampler_priority_block_ooba" data-newbie-hidden data-tg-type="ooba" class="range-block flexFlowColumn wide100p"> | 1672 | <div id="sampler_priority_block_ooba" data-tg-type="ooba" class="range-block flexFlowColumn wide100p"> |
| 1622 | <hr class="wide100p"> | 1673 | <hr class="wide100p"> |
| 1623 | <h4 class="range-block-title justifyCenter"> | 1674 | <h4 class="range-block-title justifyCenter"> |
| 1624 | <span data-i18n="Sampler Priority">Sampler Priority</span> | 1675 | <span data-i18n="Sampler Priority">Sampler Priority</span> |
| @@ -1791,22 +1842,6 @@ | |||
| 1791 | </select> | 1842 | </select> |
| 1792 | </div> | 1843 | </div> |
| 1793 | </div> | 1844 | </div> |
| 1794 | <div class="range-block" data-source="ai21"> | ||
| 1795 | <label for="use_ai21_tokenizer" title="Use AI21 Tokenizer" data-i18n="[title]Use AI21 Tokenizer" class="checkbox_label widthFreeExpand"> | ||
| 1796 | <input id="use_ai21_tokenizer" type="checkbox" /><span data-i18n="Use AI21 Tokenizer">Use AI21 Tokenizer</span> | ||
| 1797 | </label> | ||
| 1798 | <div class="toggle-description justifyLeft"> | ||
| 1799 | <span data-i18n="Use the appropriate tokenizer for Jurassic models, which is more efficient than GPT's.">Use the appropriate tokenizer for Jurassic models, which is more efficient than GPT's.</span> | ||
| 1800 | </div> | ||
| 1801 | </div> | ||
| 1802 | <div class="range-block" data-source="makersuite"> | ||
| 1803 | <label for="use_google_tokenizer" title="Use Google Tokenizer" data-i18n="[title]Use Google Tokenizer" class="checkbox_label widthFreeExpand"> | ||
| 1804 | <input id="use_google_tokenizer" type="checkbox" /><span data-i18n="Use Google Tokenizer">Use Google Tokenizer</span> | ||
| 1805 | </label> | ||
| 1806 | <div class="toggle-description justifyLeft"> | ||
| 1807 | <span data-i18n="Use the appropriate tokenizer for Google models via their API. Slower prompt processing, but offers much more accurate token counting.">Use the appropriate tokenizer for Google models via their API. Slower prompt processing, but offers much more accurate token counting.</span> | ||
| 1808 | </div> | ||
| 1809 | </div> | ||
| 1810 | <div class="range-block" data-source="makersuite"> | 1845 | <div class="range-block" data-source="makersuite"> |
| 1811 | <label for="use_makersuite_sysprompt" class="checkbox_label widthFreeExpand"> | 1846 | <label for="use_makersuite_sysprompt" class="checkbox_label widthFreeExpand"> |
| 1812 | <input id="use_makersuite_sysprompt" type="checkbox" /> | 1847 | <input id="use_makersuite_sysprompt" type="checkbox" /> |
| @@ -1821,18 +1856,18 @@ | |||
| 1821 | </span> | 1856 | </span> |
| 1822 | </div> | 1857 | </div> |
| 1823 | </div> | 1858 | </div> |
| 1824 | <div data-newbie-hidden class="range-block" data-source="claude"> | 1859 | <div class="range-block" data-source="claude"> |
| 1825 | <div class="wide100p"> | 1860 | <div class="wide100p"> |
| 1826 | <div class="flex-container alignItemsCenter"> | 1861 | <div class="flex-container alignItemsCenter"> |
| 1827 | <span id="claude_assistant_prefill_text" data-i18n="Assistant Prefill">Assistant Prefill</span> | 1862 | <span id="claude_assistant_prefill_text" data-i18n="Assistant Prefill">Assistant Prefill</span> |
| 1828 | <i class="editor_maximize fa-solid fa-maximize right_menu_button" data-for="claude_assistant_prefill" title="Expand the editor" data-i18n="[title]Expand the editor"></i> | 1863 | <i class="editor_maximize fa-solid fa-maximize right_menu_button" data-for="claude_assistant_prefill" title="Expand the editor" data-i18n="[title]Expand the editor"></i> |
| 1829 | </div> | 1864 | </div> |
| 1830 | <textarea id="claude_assistant_prefill" class="text_pole textarea_compact" name="assistant_prefill" rows="6" maxlength="100000" data-i18n="[placeholder]Start Claude's answer with..." placeholder="Start Claude's answer with..."></textarea> | 1865 | <textarea id="claude_assistant_prefill" class="text_pole textarea_compact autoSetHeight" name="assistant_prefill" rows="2" data-i18n="[placeholder]Start Claude's answer with..." placeholder="Start Claude's answer with..."></textarea> |
| 1831 | <div class="flex-container alignItemsCenter"> | 1866 | <div class="flex-container alignItemsCenter"> |
| 1832 | <span id="claude_assistant_impersonation_text" data-i18n="Assistant Impersonation Prefill">Assistant Impersonation Prefill</span> | 1867 | <span id="claude_assistant_impersonation_text" data-i18n="Assistant Impersonation Prefill">Assistant Impersonation Prefill</span> |
| 1833 | <i class="editor_maximize fa-solid fa-maximize right_menu_button" data-for="claude_assistant_impersonation" title="Expand the editor" data-i18n="[title]Expand the editor"></i> | 1868 | <i class="editor_maximize fa-solid fa-maximize right_menu_button" data-for="claude_assistant_impersonation" title="Expand the editor" data-i18n="[title]Expand the editor"></i> |
| 1834 | </div> | 1869 | </div> |
| 1835 | <textarea id="claude_assistant_impersonation" class="text_pole textarea_compact" name="assistant_impersonation" rows="6" maxlength="100000" data-i18n="[placeholder]Start Claude's answer with..." placeholder="Start Claude's answer with..."></textarea> | 1870 | <textarea id="claude_assistant_impersonation" class="text_pole textarea_compact autoSetHeight" name="assistant_impersonation" rows="2" data-i18n="[placeholder]Start Claude's answer with..." placeholder="Start Claude's answer with..."></textarea> |
| 1836 | </div> | 1871 | </div> |
| 1837 | <label for="claude_use_sysprompt" class="checkbox_label widthFreeExpand"> | 1872 | <label for="claude_use_sysprompt" class="checkbox_label widthFreeExpand"> |
| 1838 | <input id="claude_use_sysprompt" type="checkbox" /> | 1873 | <input id="claude_use_sysprompt" type="checkbox" /> |
| @@ -1852,11 +1887,11 @@ | |||
| 1852 | <div class="fa-solid fa-clock-rotate-left"></div> | 1887 | <div class="fa-solid fa-clock-rotate-left"></div> |
| 1853 | </div> | 1888 | </div> |
| 1854 | </div> | 1889 | </div> |
| 1855 | <textarea id="claude_human_sysprompt_textarea" class="text_pole textarea_compact" rows="4" maxlength="10000" data-i18n="[placeholder]Human message" placeholder="Human message, instruction, etc. Adds nothing when empty, i.e. requires a new prompt with the role 'user'."></textarea> | 1890 | <textarea id="claude_human_sysprompt_textarea" class="text_pole textarea_compact autoSetHeight" rows="2" data-i18n="[placeholder]Human message" placeholder="Human message, instruction, etc. Adds nothing when empty, i.e. requires a new prompt with the role 'user'."></textarea> |
| 1856 | </div> | 1891 | </div> |
| 1857 | </div> | 1892 | </div> |
| 1858 | </div> | 1893 | </div> |
| 1859 | <div data-newbie-hidden class="range-block m-t-1" data-source="openai,openrouter,scale"> | 1894 | <div class="range-block m-t-1" data-source="openai,openrouter,scale"> |
| 1860 | <div id="logit_bias_openai" class="range-block-title openai_restorable" data-i18n="Logit Bias"> | 1895 | <div id="logit_bias_openai" class="range-block-title openai_restorable" data-i18n="Logit Bias"> |
| 1861 | Logit Bias | 1896 | Logit Bias |
| 1862 | </div> | 1897 | </div> |
| @@ -1894,7 +1929,7 @@ | |||
| 1894 | </div> | 1929 | </div> |
| 1895 | </div> | 1930 | </div> |
| 1896 | </div> | 1931 | </div> |
| 1897 | <div data-newbie-hidden class="range-block m-b-1"> | 1932 | <div class="range-block m-b-1"> |
| 1898 | <div id="completion_prompt_manager"></div> | 1933 | <div id="completion_prompt_manager"></div> |
| 1899 | </div> | 1934 | </div> |
| 1900 | </div><!-- end of OpenAI settings--> | 1935 | </div><!-- end of OpenAI settings--> |
| @@ -1905,35 +1940,44 @@ | |||
| 1905 | </div> | 1940 | </div> |
| 1906 | <div id="sys-settings-button" class="drawer"> | 1941 | <div id="sys-settings-button" class="drawer"> |
| 1907 | <div class="drawer-toggle drawer-header"> | 1942 | <div class="drawer-toggle drawer-header"> |
| 1908 | <div id="API-status-top" class="drawer-icon fa-solid fa-plug-circle-exclamation closedIcon" title="API Connections" data-i18n="[title]API Connections;[no_connection_text]api_no_connection" no_connection_text="No connection..."></div> | 1943 | <div id="API-status-top" class="drawer-icon fa-solid fa-plug-circle-exclamation fa-fw closedIcon" title="API Connections" data-i18n="[title]API Connections;[no_connection_text]api_no_connection" no_connection_text="No connection..."></div> |
| 1909 | </div> | 1944 | </div> |
| 1910 | <div id="rm_api_block" class="drawer-content closedDrawer"> | 1945 | <div id="rm_api_block" class="drawer-content closedDrawer"> |
| 1911 | <h3 class="margin0" id="title_api">API</h3> | 1946 | <h3 class="margin0" id="title_api">API</h3> |
| 1912 | <div class="flex-container flexFlowColumn"> | 1947 | <div class="flex-container flexFlowColumn"> |
| 1913 | <div id="main-API-selector-block"> | 1948 | <div id="main-API-selector-block"> |
| 1914 | <select id="main_api"> | 1949 | <select id="main_api"> |
| 1915 | <option value="textgenerationwebui"><span data-i18n="Text Completion">Text Completion</span></option> | 1950 | <option value="textgenerationwebui" data-i18n="Text Completion">Text Completion</option> |
| 1916 | <option value="openai"><span data-i18n="Chat Completion">Chat Completion</span></option> | 1951 | <option value="openai" data-i18n="Chat Completion">Chat Completion</option> |
| 1917 | <option value="novel"><span data-i18n="NovelAI">NovelAI</span></option> | 1952 | <option value="novel" data-i18n="NovelAI">NovelAI</option> |
| 1918 | <option value="koboldhorde"><span data-i18n="KoboldAI Horde">KoboldAI Horde</span></option> | 1953 | <option value="koboldhorde" data-i18n="KoboldAI Horde">KoboldAI Horde</option> |
| 1919 | <option value="kobold"><span data-i18n="KoboldAI">KoboldAI Classic</span></option> | 1954 | <option value="kobold" data-i18n="KoboldAI">KoboldAI Classic</option> |
| 1920 | </select> | 1955 | </select> |
| 1921 | </div> | 1956 | </div> |
| 1922 | <div id="kobold_horde" style="position: relative;"> <!-- shows the kobold settings --> | 1957 | <div id="kobold_horde" style="position: relative;"> <!-- shows the kobold settings --> |
| 1923 | <form action="javascript:void(null);" method="post" enctype="multipart/form-data"> | 1958 | <form action="javascript:void(null);" method="post" enctype="multipart/form-data"> |
| 1924 | <div id="kobold_horde_block"> | 1959 | <div id="kobold_horde_block"> |
| 1925 | <ul> | 1960 | <ul> |
| 1926 | <li data-i18n="Avoid sending sensitive information to the Horde."> | 1961 | <li> |
| 1927 | Avoid sending sensitive information to the Horde. | 1962 | <a target="_blank" href="https://aihorde.net/" data-i18n="KoboldAI Horde Website"> |
| 1928 | <a target="_blank" href="https://docs.sillytavern.app/usage/api-connections/horde/" data-i18n="Review the Privacy statement">Review the Privacy statement</a> | 1963 | KoboldAI Horde Website |
| 1964 | </a> | ||
| 1929 | </li> | 1965 | </li> |
| 1930 | <li> | 1966 | <li> |
| 1931 | <a target="_blank" href="https://horde.koboldai.net/register" data-i18n="Register a Horde account for faster queue times">Register a Horde | 1967 | <span data-i18n="Avoid sending sensitive information to the Horde.">Avoid sending sensitive information to the Horde.</span> |
| 1932 | account for faster queue times</a> | 1968 | <a target="_blank" href="https://docs.sillytavern.app/usage/api-connections/horde/" data-i18n="Review the Privacy statement"> |
| 1969 | Review the Privacy statement | ||
| 1970 | </a> | ||
| 1971 | </li> | ||
| 1972 | <li> | ||
| 1973 | <a target="_blank" href="https://aihorde.net/register" data-i18n="Register a Horde account for faster queue times"> | ||
| 1974 | Register a Horde account for faster queue times | ||
| 1975 | </a> | ||
| 1933 | </li> | 1976 | </li> |
| 1934 | <li> | 1977 | <li> |
| 1935 | <a target="_blank" href="https://github.com/Haidra-Org/horde-worker-reGen?tab=readme-ov-file#ai-horde-worker-regen" data-i18n="Learn how to contribute your idle GPU cycles to the Horde">Learn | 1978 | <a target="_blank" href="https://github.com/Haidra-Org/horde-worker-reGen?tab=readme-ov-file#ai-horde-worker-regen" data-i18n="Learn how to contribute your idle GPU cycles to the Horde"> |
| 1936 | how to contribute your idle GPU cycles to the Horde</a> | 1979 | Learn how to contribute your idle GPU cycles to the Horde |
| 1980 | </a> | ||
| 1937 | </li> | 1981 | </li> |
| 1938 | </ul> | 1982 | </ul> |
| 1939 | <label for="horde_auto_adjust_context_length" class="checkbox_label"> | 1983 | <label for="horde_auto_adjust_context_length" class="checkbox_label"> |
| @@ -1951,14 +1995,11 @@ | |||
| 1951 | <small id="adjustedHordeParams">Context: --, Response: --</small> | 1995 | <small id="adjustedHordeParams">Context: --, Response: --</small> |
| 1952 | <h4 data-i18n="API key">API key</h4> | 1996 | <h4 data-i18n="API key">API key</h4> |
| 1953 | <small> | 1997 | <small> |
| 1954 | <span data-i18n="Get it here:">Get it here: </span> <a target="_blank" href="https://horde.koboldai.net/register" data-i18n="Register">Register</a> (<a id="horde_kudos" href="javascript:void(0);" data-i18n="View my Kudos">View my Kudos</a>)<br> | 1998 | <span data-i18n="Get it here:">Get it here: </span> <a target="_blank" href="https://aihorde.net/register" data-i18n="Register">Register</a> (<a id="horde_kudos" href="javascript:void(0);" data-i18n="View my Kudos">View my Kudos</a>)<br> |
| 1955 | <span data-i18n="Enter">Enter </span> <span class="monospace">0000000000</span> <span data-i18n="to use anonymous mode.">to use anonymous mode. </span> | 1999 | <span data-i18n="Enter">Enter </span> <span class="monospace">0000000000</span> <span data-i18n="to use anonymous mode.">to use anonymous mode. </span> |
| 1956 | </small> | 2000 | </small> |
| 1957 | <!-- <div> | ||
| 1958 | <a id="horde_kudos" href="javascript:void(0);">View my Kudos</a> | ||
| 1959 | </div> --> | ||
| 1960 | <div class="flex-container"> | 2001 | <div class="flex-container"> |
| 1961 | <input id="horde_api_key" name="horde_api_key" class="text_pole flex1" maxlength="500" type="text" placeholder="0000000000" autocomplete="off"> | 2002 | <input id="horde_api_key" name="horde_api_key" class="text_pole flex1" type="text" placeholder="0000000000" autocomplete="off"> |
| 1962 | <div title="Clear your API key" data-i18n="[title]Clear your API key" class="menu_button fa-solid fa-circle-xmark clear-api-key" data-key="api_key_horde"></div> | 2003 | <div title="Clear your API key" data-i18n="[title]Clear your API key" class="menu_button fa-solid fa-circle-xmark clear-api-key" data-key="api_key_horde"></div> |
| 1963 | </div> | 2004 | </div> |
| 1964 | <div data-for="horde_api_key" class="neutral_warning" data-i18n="For privacy reasons, your API key will be hidden after you reload the page."> | 2005 | <div data-for="horde_api_key" class="neutral_warning" data-i18n="For privacy reasons, your API key will be hidden after you reload the page."> |
| @@ -1985,13 +2026,13 @@ | |||
| 1985 | <div id="kobold_api_block"> | 2026 | <div id="kobold_api_block"> |
| 1986 | <h4 data-i18n="API url">API url</h4> | 2027 | <h4 data-i18n="API url">API url</h4> |
| 1987 | <small data-i18n="Example: http://127.0.0.1:5000/api ">Example: http://127.0.0.1:5000/api </small> | 2028 | <small data-i18n="Example: http://127.0.0.1:5000/api ">Example: http://127.0.0.1:5000/api </small> |
| 1988 | <input id="api_url_text" name="api_url" class="text_pole" placeholder="http://127.0.0.1:5000/api" maxlength="500" value="" autocomplete="off" data-server-history="kobold"> | 2029 | <input id="api_url_text" name="api_url" class="text_pole" placeholder="http://127.0.0.1:5000/api" value="" autocomplete="off" data-server-history="kobold"> |
| 1989 | <div id="koboldcpp_hint" class="neutral_warning displayNone"> | 2030 | <div id="koboldcpp_hint" class="neutral_warning displayNone"> |
| 1990 | KoboldCpp works better when you select the Text Completion API and then KoboldCpp as a type! | 2031 | KoboldCpp works better when you select the Text Completion API and then KoboldCpp as a type! |
| 1991 | </div> | 2032 | </div> |
| 1992 | <div class="flex-container"> | 2033 | <div class="flex-container"> |
| 1993 | <div id="api_button" class="api_button menu_button" type="submit" data-i18n="Connect" data-server-connect="kobold">Connect</div> | 2034 | <div id="api_button" class="api_button menu_button menu_button_icon" type="submit" data-i18n="Connect" data-server-connect="kobold">Connect</div> |
| 1994 | <div class="api_loading menu_button" data-i18n="Cancel">Cancel</div> | 2035 | <div class="api_loading menu_button menu_button_icon" data-i18n="Cancel">Cancel</div> |
| 1995 | </div> | 2036 | </div> |
| 1996 | </div> | 2037 | </div> |
| 1997 | <div class="online_status"> | 2038 | <div class="online_status"> |
| @@ -2013,7 +2054,7 @@ | |||
| 2013 | </ol> | 2054 | </ol> |
| 2014 | </span> | 2055 | </span> |
| 2015 | <div class="flex-container"> | 2056 | <div class="flex-container"> |
| 2016 | <input id="api_key_novel" name="api_key_novel" class="text_pole flex1 wide100p" maxlength="500" size="35" type="text" autocomplete="off"> | 2057 | <input id="api_key_novel" name="api_key_novel" class="text_pole flex1 wide100p" type="text" autocomplete="off"> |
| 2017 | <div title="Clear your API key" data-i18n="[title]Clear your API key" class="menu_button fa-solid fa-circle-xmark clear-api-key" data-key="api_key_novel"> | 2058 | <div title="Clear your API key" data-i18n="[title]Clear your API key" class="menu_button fa-solid fa-circle-xmark clear-api-key" data-key="api_key_novel"> |
| 2018 | </div> | 2059 | </div> |
| 2019 | </div> | 2060 | </div> |
| @@ -2028,10 +2069,11 @@ | |||
| 2028 | <select id="model_novel_select"> | 2069 | <select id="model_novel_select"> |
| 2029 | <option value="clio-v1">Clio</option> | 2070 | <option value="clio-v1">Clio</option> |
| 2030 | <option value="kayra-v1">Kayra</option> | 2071 | <option value="kayra-v1">Kayra</option> |
| 2072 | <option value="llama-3-erato-v1">Erato</option> | ||
| 2031 | </select> | 2073 | </select> |
| 2032 | <div class="flex-container"> | 2074 | <div class="flex-container"> |
| 2033 | <div id="api_button_novel" class="api_button menu_button" type="submit" data-i18n="Connect">Connect</div> | 2075 | <div id="api_button_novel" class="api_button menu_button menu_button_icon" type="submit" data-i18n="Connect">Connect</div> |
| 2034 | <div class="api_loading menu_button" data-i18n="Cancel">Cancel</div> | 2076 | <div class="api_loading menu_button menu_button_icon" data-i18n="Cancel">Cancel</div> |
| 2035 | </div> | 2077 | </div> |
| 2036 | </form> | 2078 | </form> |
| 2037 | <div class="online_status"> | 2079 | <div class="online_status"> |
| @@ -2063,7 +2105,7 @@ | |||
| 2063 | <div data-tg-type="togetherai" class="flex-container flexFlowColumn"> | 2105 | <div data-tg-type="togetherai" class="flex-container flexFlowColumn"> |
| 2064 | <h4 data-i18n="TogetherAI API Key">TogetherAI API Key</h4> | 2106 | <h4 data-i18n="TogetherAI API Key">TogetherAI API Key</h4> |
| 2065 | <div class="flex-container"> | 2107 | <div class="flex-container"> |
| 2066 | <input id="api_key_togetherai" name="api_key_togetherai" class="text_pole flex1" maxlength="500" value="" type="text" autocomplete="off"> | 2108 | <input id="api_key_togetherai" name="api_key_togetherai" class="text_pole flex1" value="" type="text" autocomplete="off"> |
| 2067 | <div title="Clear your API key" data-i18n="[title]Clear your API key" class="menu_button fa-solid fa-circle-xmark clear-api-key" data-key="api_key_togetherai"></div> | 2109 | <div title="Clear your API key" data-i18n="[title]Clear your API key" class="menu_button fa-solid fa-circle-xmark clear-api-key" data-key="api_key_togetherai"></div> |
| 2068 | </div> | 2110 | </div> |
| 2069 | <div data-for="api_key_togetherai" class="neutral_warning" data-i18n="For privacy reasons, your API key will be hidden after you reload the page."> | 2111 | <div data-for="api_key_togetherai" class="neutral_warning" data-i18n="For privacy reasons, your API key will be hidden after you reload the page."> |
| @@ -2072,7 +2114,7 @@ | |||
| 2072 | <div> | 2114 | <div> |
| 2073 | <h4 data-i18n="TogetherAI Model">TogetherAI Model</h4> | 2115 | <h4 data-i18n="TogetherAI Model">TogetherAI Model</h4> |
| 2074 | <select id="model_togetherai_select"> | 2116 | <select id="model_togetherai_select"> |
| 2075 | <option data-i18n="-- Connect to the API --"> | 2117 | <option value="" data-i18n="-- Connect to the API --"> |
| 2076 | -- Connect to the API -- | 2118 | -- Connect to the API -- |
| 2077 | </option> | 2119 | </option> |
| 2078 | </select> | 2120 | </select> |
| @@ -2087,7 +2129,7 @@ | |||
| 2087 | <a href="https://openrouter.ai/account" target="_blank" data-i18n="View Remaining Credits">View Remaining Credits</a> | 2129 | <a href="https://openrouter.ai/account" target="_blank" data-i18n="View Remaining Credits">View Remaining Credits</a> |
| 2088 | </div> | 2130 | </div> |
| 2089 | <div class="flex-container"> | 2131 | <div class="flex-container"> |
| 2090 | <input id="api_key_openrouter-tg" name="api_key_openrouter" class="text_pole flex1 api_key_openrouter" maxlength="500" value="" type="text" autocomplete="off"> | 2132 | <input id="api_key_openrouter-tg" name="api_key_openrouter" class="text_pole flex1 api_key_openrouter" value="" type="text" autocomplete="off"> |
| 2091 | <div title="Clear your API key" data-i18n="[title]Clear your API key" class="menu_button fa-solid fa-circle-xmark clear-api-key" data-key="api_key_openrouter"></div> | 2133 | <div title="Clear your API key" data-i18n="[title]Clear your API key" class="menu_button fa-solid fa-circle-xmark clear-api-key" data-key="api_key_openrouter"></div> |
| 2092 | </div> | 2134 | </div> |
| 2093 | <div data-for="api_key_openrouter" class="neutral_warning" data-i18n="For privacy reasons, your API key will be hidden after you reload the page."> | 2135 | <div data-for="api_key_openrouter" class="neutral_warning" data-i18n="For privacy reasons, your API key will be hidden after you reload the page."> |
| @@ -2096,7 +2138,7 @@ | |||
| 2096 | <div> | 2138 | <div> |
| 2097 | <h4 data-i18n="OpenRouter Model">OpenRouter Model</h4> | 2139 | <h4 data-i18n="OpenRouter Model">OpenRouter Model</h4> |
| 2098 | <select id="openrouter_model"> | 2140 | <select id="openrouter_model"> |
| 2099 | <option data-i18n="-- Connect to the API --"> | 2141 | <option value="" data-i18n="-- Connect to the API --"> |
| 2100 | -- Connect to the API -- | 2142 | -- Connect to the API -- |
| 2101 | </option> | 2143 | </option> |
| 2102 | </select> | 2144 | </select> |
| @@ -2114,7 +2156,7 @@ | |||
| 2114 | <div data-tg-type="infermaticai" class="flex-container flexFlowColumn"> | 2156 | <div data-tg-type="infermaticai" class="flex-container flexFlowColumn"> |
| 2115 | <h4 data-i18n="InfermaticAI API Key">InfermaticAI API Key</h4> | 2157 | <h4 data-i18n="InfermaticAI API Key">InfermaticAI API Key</h4> |
| 2116 | <div class="flex-container"> | 2158 | <div class="flex-container"> |
| 2117 | <input id="api_key_infermaticai" name="api_key_infermaticai" class="text_pole flex1" maxlength="500" value="" type="text" autocomplete="off"> | 2159 | <input id="api_key_infermaticai" name="api_key_infermaticai" class="text_pole flex1" value="" type="text" autocomplete="off"> |
| 2118 | <div title="Clear your API key" data-i18n="[title]Clear your API key" class="menu_button fa-solid fa-circle-xmark clear-api-key" data-key="api_key_infermaticai"></div> | 2160 | <div title="Clear your API key" data-i18n="[title]Clear your API key" class="menu_button fa-solid fa-circle-xmark clear-api-key" data-key="api_key_infermaticai"></div> |
| 2119 | </div> | 2161 | </div> |
| 2120 | <div data-for="api_key_infermaticai" class="neutral_warning" data-i18n="For privacy reasons, your API key will be hidden after you reload the page."> | 2162 | <div data-for="api_key_infermaticai" class="neutral_warning" data-i18n="For privacy reasons, your API key will be hidden after you reload the page."> |
| @@ -2123,7 +2165,7 @@ | |||
| 2123 | <div> | 2165 | <div> |
| 2124 | <h4 data-i18n="InfermaticAI Model">InfermaticAI Model</h4> | 2166 | <h4 data-i18n="InfermaticAI Model">InfermaticAI Model</h4> |
| 2125 | <select id="model_infermaticai_select"> | 2167 | <select id="model_infermaticai_select"> |
| 2126 | <option> | 2168 | <option value="" data-i18n="-- Connect to the API --"> |
| 2127 | -- Connect to the API -- | 2169 | -- Connect to the API -- |
| 2128 | </option> | 2170 | </option> |
| 2129 | </select> | 2171 | </select> |
| @@ -2137,7 +2179,7 @@ | |||
| 2137 | </a> | 2179 | </a> |
| 2138 | </h4> | 2180 | </h4> |
| 2139 | <div class="flex-container"> | 2181 | <div class="flex-container"> |
| 2140 | <input id="api_key_dreamgen" name="api_key_dreamgen" class="text_pole flex1" maxlength="500" value="" type="text" autocomplete="off"> | 2182 | <input id="api_key_dreamgen" name="api_key_dreamgen" class="text_pole flex1" value="" type="text" autocomplete="off"> |
| 2141 | <div title="Clear your API key" data-i18n="[title]Clear your API key" class="menu_button fa-solid fa-circle-xmark clear-api-key" data-key="api_key_dreamgen"></div> | 2183 | <div title="Clear your API key" data-i18n="[title]Clear your API key" class="menu_button fa-solid fa-circle-xmark clear-api-key" data-key="api_key_dreamgen"></div> |
| 2142 | </div> | 2184 | </div> |
| 2143 | <div data-for="api_key_dreamgen" class="neutral_warning" data-i18n="For privacy reasons, your API key will be hidden after you reload the page."> | 2185 | <div data-for="api_key_dreamgen" class="neutral_warning" data-i18n="For privacy reasons, your API key will be hidden after you reload the page."> |
| @@ -2146,7 +2188,7 @@ | |||
| 2146 | <div> | 2188 | <div> |
| 2147 | <h4 data-i18n="DreamGen Model">DreamGen Model</h4> | 2189 | <h4 data-i18n="DreamGen Model">DreamGen Model</h4> |
| 2148 | <select id="model_dreamgen_select"> | 2190 | <select id="model_dreamgen_select"> |
| 2149 | <option> | 2191 | <option value="" data-i18n="-- Connect to the API --"> |
| 2150 | -- Connect to the API -- | 2192 | -- Connect to the API -- |
| 2151 | </option> | 2193 | </option> |
| 2152 | </select> | 2194 | </select> |
| @@ -2162,7 +2204,7 @@ | |||
| 2162 | </a> | 2204 | </a> |
| 2163 | </h4> | 2205 | </h4> |
| 2164 | <div class="flex-container"> | 2206 | <div class="flex-container"> |
| 2165 | <input id="api_key_mancer" name="api_key_mancer" class="text_pole flex1 wide100p" maxlength="500" size="35" type="text" autocomplete="off"> | 2207 | <input id="api_key_mancer" name="api_key_mancer" class="text_pole flex1 wide100p" type="text" autocomplete="off"> |
| 2166 | <div title="Clear your API key" data-i18n="[title]Clear your API key" class="menu_button fa-solid fa-circle-xmark clear-api-key" data-key="api_key_mancer"> | 2208 | <div title="Clear your API key" data-i18n="[title]Clear your API key" class="menu_button fa-solid fa-circle-xmark clear-api-key" data-key="api_key_mancer"> |
| 2167 | </div> | 2209 | </div> |
| 2168 | </div> | 2210 | </div> |
| @@ -2172,7 +2214,7 @@ | |||
| 2172 | <div class="flex1"> | 2214 | <div class="flex1"> |
| 2173 | <h4 data-i18n="Mancer Model">Mancer Model</h4> | 2215 | <h4 data-i18n="Mancer Model">Mancer Model</h4> |
| 2174 | <select id="mancer_model"> | 2216 | <select id="mancer_model"> |
| 2175 | <option data-i18n="-- Connect to the API --"> | 2217 | <option value="" data-i18n="-- Connect to the API --"> |
| 2176 | -- Connect to the API -- | 2218 | -- Connect to the API -- |
| 2177 | </option> | 2219 | </option> |
| 2178 | </select> | 2220 | </select> |
| @@ -2192,7 +2234,7 @@ | |||
| 2192 | </div> | 2234 | </div> |
| 2193 | <h4 data-i18n="API key (optional)">API key (optional)</h4> | 2235 | <h4 data-i18n="API key (optional)">API key (optional)</h4> |
| 2194 | <div class="flex-container"> | 2236 | <div class="flex-container"> |
| 2195 | <input id="api_key_ooba" name="api_key_ooba" class="text_pole flex1 wide100p" maxlength="500" size="35" type="text" autocomplete="off"> | 2237 | <input id="api_key_ooba" name="api_key_ooba" class="text_pole flex1 wide100p" type="text" autocomplete="off"> |
| 2196 | <div title="Clear your API key" data-i18n="[title]Clear your API key" class="menu_button fa-solid fa-circle-xmark clear-api-key" data-key="api_key_ooba"> | 2238 | <div title="Clear your API key" data-i18n="[title]Clear your API key" class="menu_button fa-solid fa-circle-xmark clear-api-key" data-key="api_key_ooba"> |
| 2197 | </div> | 2239 | </div> |
| 2198 | </div> | 2240 | </div> |
| @@ -2202,9 +2244,9 @@ | |||
| 2202 | <div class="flex1"> | 2244 | <div class="flex1"> |
| 2203 | <h4 data-i18n="Server url">Server URL</h4> | 2245 | <h4 data-i18n="Server url">Server URL</h4> |
| 2204 | <small data-i18n="Example: 127.0.0.1:5000">Example: http://127.0.0.1:5000</small> | 2246 | <small data-i18n="Example: 127.0.0.1:5000">Example: http://127.0.0.1:5000</small> |
| 2205 | <input id="textgenerationwebui_api_url_text" name="textgenerationwebui_api_url" class="text_pole wide100p" maxlength="500" value="" autocomplete="off" data-server-history="ooba_blocking"> | 2247 | <input id="textgenerationwebui_api_url_text" name="textgenerationwebui_api_url" class="text_pole wide100p" value="" autocomplete="off" data-server-history="ooba_blocking"> |
| 2206 | </div> | 2248 | </div> |
| 2207 | <input id="custom_model_textgenerationwebui" class="text_pole wide100p" maxlength="500" placeholder="Custom model (optional)" data-i18n="[placeholder]Custom model (optional)" type="text"> | 2249 | <input id="custom_model_textgenerationwebui" class="text_pole wide100p" placeholder="Custom model (optional)" data-i18n="[placeholder]Custom model (optional)" type="text"> |
| 2208 | </div> | 2250 | </div> |
| 2209 | <div data-tg-type="featherless" class="flex-container flexFlowColumn"> | 2251 | <div data-tg-type="featherless" class="flex-container flexFlowColumn"> |
| 2210 | <div class="flex-container flexFlowColumn"> | 2252 | <div class="flex-container flexFlowColumn"> |
| @@ -2214,7 +2256,7 @@ | |||
| 2214 | </div> | 2256 | </div> |
| 2215 | <h4 data-i18n="API key (optional)">API key</h4> | 2257 | <h4 data-i18n="API key (optional)">API key</h4> |
| 2216 | <div class="flex-container"> | 2258 | <div class="flex-container"> |
| 2217 | <input id="api_key_featherless" name="api_key_featherless" class="text_pole flex1 wide100p" maxlength="500" size="35" type="text" autocomplete="off"> | 2259 | <input id="api_key_featherless" name="api_key_featherless" class="text_pole flex1 wide100p" type="text" autocomplete="off"> |
| 2218 | <div title="Clear your API key" data-i18n="[title]Clear your API key" class="menu_button fa-solid fa-circle-xmark clear-api-key" data-key="api_key_featherless"> | 2260 | <div title="Clear your API key" data-i18n="[title]Clear your API key" class="menu_button fa-solid fa-circle-xmark clear-api-key" data-key="api_key_featherless"> |
| 2219 | </div> | 2261 | </div> |
| 2220 | </div> | 2262 | </div> |
| @@ -2222,7 +2264,7 @@ | |||
| 2222 | For privacy reasons, your API key will be hidden after you reload the page. | 2264 | For privacy reasons, your API key will be hidden after you reload the page. |
| 2223 | </div> | 2265 | </div> |
| 2224 | <select id="featherless_model"> | 2266 | <select id="featherless_model"> |
| 2225 | <option data-i18n="-- Connect to the API --"> | 2267 | <option value="" data-i18n="-- Connect to the API --"> |
| 2226 | -- Connect to the API -- | 2268 | -- Connect to the API -- |
| 2227 | </option> | 2269 | </option> |
| 2228 | </select> | 2270 | </select> |
| @@ -2235,7 +2277,7 @@ | |||
| 2235 | </div> | 2277 | </div> |
| 2236 | <h4 data-i18n="vLLM API key">vLLM API key</h4> | 2278 | <h4 data-i18n="vLLM API key">vLLM API key</h4> |
| 2237 | <div class="flex-container"> | 2279 | <div class="flex-container"> |
| 2238 | <input id="api_key_vllm" name="api_key_vllm" class="text_pole flex1 wide100p" maxlength="500" size="35" type="text" autocomplete="off"> | 2280 | <input id="api_key_vllm" name="api_key_vllm" class="text_pole flex1 wide100p" type="text" autocomplete="off"> |
| 2239 | <div title="Clear your API key" data-i18n="[title]Clear your API key" class="menu_button fa-solid fa-circle-xmark clear-api-key" data-key="api_key_vllm"> | 2281 | <div title="Clear your API key" data-i18n="[title]Clear your API key" class="menu_button fa-solid fa-circle-xmark clear-api-key" data-key="api_key_vllm"> |
| 2240 | </div> | 2282 | </div> |
| 2241 | </div> | 2283 | </div> |
| @@ -2245,12 +2287,12 @@ | |||
| 2245 | <div class="flex1"> | 2287 | <div class="flex1"> |
| 2246 | <h4 data-i18n="API url">API URL</h4> | 2288 | <h4 data-i18n="API url">API URL</h4> |
| 2247 | <small data-i18n="Example: 127.0.0.1:8000">Example: http://127.0.0.1:8000</small> | 2289 | <small data-i18n="Example: 127.0.0.1:8000">Example: http://127.0.0.1:8000</small> |
| 2248 | <input id="vllm_api_url_text" class="text_pole wide100p" maxlength="500" value="" autocomplete="off" data-server-history="vllm"> | 2290 | <input id="vllm_api_url_text" class="text_pole wide100p" value="" autocomplete="off" data-server-history="vllm"> |
| 2249 | </div> | 2291 | </div> |
| 2250 | <div> | 2292 | <div> |
| 2251 | <h4 data-i18n="vLLM Model">vLLM Model</h4> | 2293 | <h4 data-i18n="vLLM Model">vLLM Model</h4> |
| 2252 | <select id="vllm_model"> | 2294 | <select id="vllm_model"> |
| 2253 | <option data-i18n="-- Connect to the API --"> | 2295 | <option value="" data-i18n="-- Connect to the API --"> |
| 2254 | -- Connect to the API -- | 2296 | -- Connect to the API -- |
| 2255 | </option> | 2297 | </option> |
| 2256 | </select> | 2298 | </select> |
| @@ -2259,7 +2301,7 @@ | |||
| 2259 | <div data-tg-type="huggingface"> | 2301 | <div data-tg-type="huggingface"> |
| 2260 | <h4 data-i18n="HuggingFace Token">HuggingFace Token</h4> | 2302 | <h4 data-i18n="HuggingFace Token">HuggingFace Token</h4> |
| 2261 | <div class="flex-container"> | 2303 | <div class="flex-container"> |
| 2262 | <input id="api_key_huggingface" name="api_key_huggingface" class="text_pole flex1 wide100p" maxlength="500" size="35" type="text" autocomplete="off"> | 2304 | <input id="api_key_huggingface" name="api_key_huggingface" class="text_pole flex1 wide100p" type="text" autocomplete="off"> |
| 2263 | <div title="Clear your API key" data-i18n="[title]Clear your API key" class="menu_button fa-solid fa-circle-xmark clear-api-key" data-key="api_key_huggingface"> | 2305 | <div title="Clear your API key" data-i18n="[title]Clear your API key" class="menu_button fa-solid fa-circle-xmark clear-api-key" data-key="api_key_huggingface"> |
| 2264 | </div> | 2306 | </div> |
| 2265 | </div> | 2307 | </div> |
| @@ -2269,7 +2311,7 @@ | |||
| 2269 | <div class="flex1"> | 2311 | <div class="flex1"> |
| 2270 | <h4 data-i18n="Endpoint URL">Endpoint URL</h4> | 2312 | <h4 data-i18n="Endpoint URL">Endpoint URL</h4> |
| 2271 | <small data-i18n="Example: https://****.endpoints.huggingface.cloud">Example: https://****.endpoints.huggingface.cloud</small> | 2313 | <small data-i18n="Example: https://****.endpoints.huggingface.cloud">Example: https://****.endpoints.huggingface.cloud</small> |
| 2272 | <input id="huggingface_api_url_text" class="text_pole wide100p" maxlength="500" value="" autocomplete="off" data-server-history="huggingface"> | 2314 | <input id="huggingface_api_url_text" class="text_pole wide100p" value="" autocomplete="off" data-server-history="huggingface"> |
| 2273 | </div> | 2315 | </div> |
| 2274 | </div> | 2316 | </div> |
| 2275 | 2317 | ||
| @@ -2281,7 +2323,7 @@ | |||
| 2281 | </div> | 2323 | </div> |
| 2282 | <h4 data-i18n="Aphrodite API key">Aphrodite API key</h4> | 2324 | <h4 data-i18n="Aphrodite API key">Aphrodite API key</h4> |
| 2283 | <div class="flex-container"> | 2325 | <div class="flex-container"> |
| 2284 | <input id="api_key_aphrodite" name="api_key_aphrodite" class="text_pole flex1 wide100p" maxlength="500" size="35" type="text" autocomplete="off"> | 2326 | <input id="api_key_aphrodite" name="api_key_aphrodite" class="text_pole flex1 wide100p" type="text" autocomplete="off"> |
| 2285 | <div title="Clear your API key" data-i18n="[title]Clear your API key" class="menu_button fa-solid fa-circle-xmark clear-api-key" data-key="api_key_aphrodite"> | 2327 | <div title="Clear your API key" data-i18n="[title]Clear your API key" class="menu_button fa-solid fa-circle-xmark clear-api-key" data-key="api_key_aphrodite"> |
| 2286 | </div> | 2328 | </div> |
| 2287 | </div> | 2329 | </div> |
| @@ -2291,12 +2333,12 @@ | |||
| 2291 | <div class="flex1"> | 2333 | <div class="flex1"> |
| 2292 | <h4 data-i18n="API url">API URL</h4> | 2334 | <h4 data-i18n="API url">API URL</h4> |
| 2293 | <small data-i18n="Example: 127.0.0.1:5000">Example: http://127.0.0.1:5000</small> | 2335 | <small data-i18n="Example: 127.0.0.1:5000">Example: http://127.0.0.1:5000</small> |
| 2294 | <input id="aphrodite_api_url_text" class="text_pole wide100p" maxlength="500" value="" autocomplete="off" data-server-history="aphrodite"> | 2336 | <input id="aphrodite_api_url_text" class="text_pole wide100p" value="" autocomplete="off" data-server-history="aphrodite"> |
| 2295 | </div> | 2337 | </div> |
| 2296 | <div> | 2338 | <div> |
| 2297 | <h4 data-i18n="Aphrodite Model">Aphrodite Model</h4> | 2339 | <h4 data-i18n="Aphrodite Model">Aphrodite Model</h4> |
| 2298 | <select id="aphrodite_model"> | 2340 | <select id="aphrodite_model"> |
| 2299 | <option data-i18n="-- Connect to the API --"> | 2341 | <option value="" data-i18n="-- Connect to the API --"> |
| 2300 | -- Connect to the API -- | 2342 | -- Connect to the API -- |
| 2301 | </option> | 2343 | </option> |
| 2302 | </select> | 2344 | </select> |
| @@ -2310,7 +2352,7 @@ | |||
| 2310 | </div> | 2352 | </div> |
| 2311 | <h4 data-i18n="API key (optional)">API key (optional)</h4> | 2353 | <h4 data-i18n="API key (optional)">API key (optional)</h4> |
| 2312 | <div class="flex-container"> | 2354 | <div class="flex-container"> |
| 2313 | <input id="api_key_llamacpp" name="api_key_llamacpp" class="text_pole flex1 wide100p" maxlength="500" size="35" type="text" autocomplete="off"> | 2355 | <input id="api_key_llamacpp" name="api_key_llamacpp" class="text_pole flex1 wide100p" type="text" autocomplete="off"> |
| 2314 | <div title="Clear your API key" data-i18n="[title]Clear your API key" class="menu_button fa-solid fa-circle-xmark clear-api-key" data-key="api_key_llamacpp"> | 2356 | <div title="Clear your API key" data-i18n="[title]Clear your API key" class="menu_button fa-solid fa-circle-xmark clear-api-key" data-key="api_key_llamacpp"> |
| 2315 | </div> | 2357 | </div> |
| 2316 | </div> | 2358 | </div> |
| @@ -2320,7 +2362,7 @@ | |||
| 2320 | <div class="flex1"> | 2362 | <div class="flex1"> |
| 2321 | <h4 data-i18n="API url">API URL</h4> | 2363 | <h4 data-i18n="API url">API URL</h4> |
| 2322 | <small data-i18n="Example: 127.0.0.1:8080">Example: http://127.0.0.1:8080</small> | 2364 | <small data-i18n="Example: 127.0.0.1:8080">Example: http://127.0.0.1:8080</small> |
| 2323 | <input id="llamacpp_api_url_text" class="text_pole wide100p" maxlength="500" value="" autocomplete="off" data-server-history="llamacpp"> | 2365 | <input id="llamacpp_api_url_text" class="text_pole wide100p" value="" autocomplete="off" data-server-history="llamacpp"> |
| 2324 | </div> | 2366 | </div> |
| 2325 | </div> | 2367 | </div> |
| 2326 | <div data-tg-type="ollama"> | 2368 | <div data-tg-type="ollama"> |
| @@ -2332,15 +2374,14 @@ | |||
| 2332 | <div class="flex1"> | 2374 | <div class="flex1"> |
| 2333 | <h4 data-i18n="API url">API URL</h4> | 2375 | <h4 data-i18n="API url">API URL</h4> |
| 2334 | <small data-i18n="Example: 127.0.0.1:11434">Example: http://127.0.0.1:11434</small> | 2376 | <small data-i18n="Example: 127.0.0.1:11434">Example: http://127.0.0.1:11434</small> |
| 2335 | <input id="ollama_api_url_text" class="text_pole wide100p" maxlength="500" value="" autocomplete="off" data-server-history="ollama"> | 2377 | <input id="ollama_api_url_text" class="text_pole wide100p" value="" autocomplete="off" data-server-history="ollama"> |
| 2336 | </div> | 2378 | </div> |
| 2337 | <div class="flex1"> | 2379 | <div class="flex1"> |
| 2338 | <h4> | 2380 | <h4> |
| 2339 | <span data-i18n="Ollama Model">Ollama Model | 2381 | <span data-i18n="Ollama Model">Ollama Model</span> |
| 2340 | </h4> | ||
| 2341 | </h4> | 2382 | </h4> |
| 2342 | <select id="ollama_model"> | 2383 | <select id="ollama_model"> |
| 2343 | <option data-i18n="-- Connect to the API --"> | 2384 | <option value="" data-i18n="-- Connect to the API --"> |
| 2344 | -- Connect to the API -- | 2385 | -- Connect to the API -- |
| 2345 | </option> | 2386 | </option> |
| 2346 | </select> | 2387 | </select> |
| @@ -2358,7 +2399,7 @@ | |||
| 2358 | </div> | 2399 | </div> |
| 2359 | <h4 data-i18n="Tabby API key">Tabby API key</h4> | 2400 | <h4 data-i18n="Tabby API key">Tabby API key</h4> |
| 2360 | <div class="flex-container"> | 2401 | <div class="flex-container"> |
| 2361 | <input id="api_key_tabby" name="api_key_tabby" class="text_pole flex1 wide100p" maxlength="500" size="35" type="text" autocomplete="off"> | 2402 | <input id="api_key_tabby" name="api_key_tabby" class="text_pole flex1 wide100p" type="text" autocomplete="off"> |
| 2362 | <div title="Clear your API key" data-i18n="[title]Clear your API key" class="menu_button fa-solid fa-circle-xmark clear-api-key" data-key="api_key_tabby"> | 2403 | <div title="Clear your API key" data-i18n="[title]Clear your API key" class="menu_button fa-solid fa-circle-xmark clear-api-key" data-key="api_key_tabby"> |
| 2363 | </div> | 2404 | </div> |
| 2364 | </div> | 2405 | </div> |
| @@ -2368,13 +2409,33 @@ | |||
| 2368 | <div class="flex1"> | 2409 | <div class="flex1"> |
| 2369 | <h4 data-i18n="API url">API URL</h4> | 2410 | <h4 data-i18n="API url">API URL</h4> |
| 2370 | <small data-i18n="Example: 127.0.0.1:5000">Example: http://127.0.0.1:5000</small> | 2411 | <small data-i18n="Example: 127.0.0.1:5000">Example: http://127.0.0.1:5000</small> |
| 2371 | <input id="tabby_api_url_text" class="text_pole wide100p" maxlength="500" value="" autocomplete="off" data-server-history="tabby"> | 2412 | <input id="tabby_api_url_text" class="text_pole wide100p" value="" autocomplete="off" data-server-history="tabby"> |
| 2372 | </div> | 2413 | </div> |
| 2373 | <div class="flex1"> | 2414 | <div class="flex1"> |
| 2374 | <h4> | 2415 | <h4> |
| 2375 | <span data-i18n="Tabby Model">Tabby Model</span> | 2416 | <span data-i18n="Tabby Model">Tabby Model</span> |
| 2376 | </h4> | 2417 | </h4> |
| 2377 | </h4> | 2418 | <b> |
| 2419 | EXPERIMENTAL FEATURE. USE AT YOUR OWN RISK. DON'T ASK FOR SUPPORT ON THIS. | ||
| 2420 | </b> | ||
| 2421 | <select id="tabby_model"> | ||
| 2422 | <option value="" data-i18n="-- Connect to the API --"> | ||
| 2423 | -- Connect to the API -- | ||
| 2424 | </option> | ||
| 2425 | </select> | ||
| 2426 | <div class="marginTopBot5"> | ||
| 2427 | <small> | ||
| 2428 | <i class="fa-solid fa-lightbulb"></i> | ||
| 2429 | | ||
| 2430 | <code>inline_model_loading: True</code> | ||
| 2431 | <span data-i18n="must be set in Tabby's config.yml to switch models."> | ||
| 2432 | must be set in Tabby's config.yml to switch models. | ||
| 2433 | </span> | ||
| 2434 | <b data-i18n="Use an admin API key."> | ||
| 2435 | Use an admin API key. | ||
| 2436 | </b> | ||
| 2437 | </small> | ||
| 2438 | </div> | ||
| 2378 | <div id="tabby_download_model" class="menu_button menu_button_icon"> | 2439 | <div id="tabby_download_model" class="menu_button menu_button_icon"> |
| 2379 | <i class="fa-solid fa-download"></i> | 2440 | <i class="fa-solid fa-download"></i> |
| 2380 | <span data-i18n="Download">Download</span> | 2441 | <span data-i18n="Download">Download</span> |
| @@ -2389,7 +2450,7 @@ | |||
| 2389 | </div> | 2450 | </div> |
| 2390 | <h4 data-i18n="koboldcpp API key (optional)">koboldcpp API key (optional)</h4> | 2451 | <h4 data-i18n="koboldcpp API key (optional)">koboldcpp API key (optional)</h4> |
| 2391 | <div class="flex-container"> | 2452 | <div class="flex-container"> |
| 2392 | <input id="api_key_koboldcpp" name="api_key_koboldcpp" class="text_pole flex1 wide100p" maxlength="500" size="35" type="text" autocomplete="off"> | 2453 | <input id="api_key_koboldcpp" name="api_key_koboldcpp" class="text_pole flex1 wide100p" type="text" autocomplete="off"> |
| 2393 | <div title="Clear your API key" data-i18n="[title]Clear your API key" class="menu_button fa-solid fa-circle-xmark clear-api-key" data-key="api_key_koboldcpp"> | 2454 | <div title="Clear your API key" data-i18n="[title]Clear your API key" class="menu_button fa-solid fa-circle-xmark clear-api-key" data-key="api_key_koboldcpp"> |
| 2394 | </div> | 2455 | </div> |
| 2395 | </div> | 2456 | </div> |
| @@ -2399,15 +2460,15 @@ | |||
| 2399 | <div class="flex1"> | 2460 | <div class="flex1"> |
| 2400 | <h4 data-i18n="API url">API URL</h4> | 2461 | <h4 data-i18n="API url">API URL</h4> |
| 2401 | <small data-i18n="Example: 127.0.0.1:5001">Example: http://127.0.0.1:5001</small> | 2462 | <small data-i18n="Example: 127.0.0.1:5001">Example: http://127.0.0.1:5001</small> |
| 2402 | <input id="koboldcpp_api_url_text" class="text_pole wide100p" maxlength="500" value="" autocomplete="off" data-server-history="koboldcpp"> | 2463 | <input id="koboldcpp_api_url_text" class="text_pole wide100p" value="" autocomplete="off" data-server-history="koboldcpp"> |
| 2403 | </div> | 2464 | </div> |
| 2404 | </div> | 2465 | </div> |
| 2405 | <div class="flex-container"> | 2466 | <div class="flex-container"> |
| 2406 | <div id="api_button_textgenerationwebui" class="api_button menu_button" type="submit" data-i18n="Connect" data-server-connect="ooba_blocking,vllm,aphrodite,tabby,koboldcpp,ollama,llamacpp,huggingface">Connect</div> | 2467 | <div id="api_button_textgenerationwebui" class="api_button menu_button menu_button_icon" type="submit" data-i18n="Connect" data-server-connect="ooba_blocking,vllm,aphrodite,tabby,koboldcpp,ollama,llamacpp,huggingface">Connect</div> |
| 2407 | <div data-tg-type="openrouter" class="menu_button menu_button_icon openrouter_authorize" title="Get your OpenRouter API token using OAuth flow. You will be redirected to openrouter.ai" data-i18n="Authorize;[title]Get your OpenRouter API token using OAuth flow. You will be redirected to openrouter.ai">Authorize</div> | 2468 | <div data-tg-type="openrouter" class="menu_button menu_button_icon openrouter_authorize" title="Get your OpenRouter API token using OAuth flow. You will be redirected to openrouter.ai" data-i18n="Authorize;[title]Get your OpenRouter API token using OAuth flow. You will be redirected to openrouter.ai">Authorize</div> |
| 2408 | <div class="api_loading menu_button" data-i18n="Cancel">Cancel</div> | 2469 | <div class="api_loading menu_button menu_button_icon" data-i18n="Cancel">Cancel</div> |
| 2409 | </div> | 2470 | </div> |
| 2410 | <label data-tg-type="ooba,aphrodite" class="checkbox_label margin-bot-10px" for="legacy_api_textgenerationwebui"> | 2471 | <label data-tg-type="ooba" class="checkbox_label margin-bot-10px" for="legacy_api_textgenerationwebui"> |
| 2411 | <input type="checkbox" id="legacy_api_textgenerationwebui" /> | 2472 | <input type="checkbox" id="legacy_api_textgenerationwebui" /> |
| 2412 | <span data-i18n="Legacy API (pre-OAI, no streaming)">Legacy API (pre-OAI, no streaming)</span> | 2473 | <span data-i18n="Legacy API (pre-OAI, no streaming)">Legacy API (pre-OAI, no streaming)</span> |
| 2413 | </label> | 2474 | </label> |
| @@ -2445,7 +2506,7 @@ | |||
| 2445 | <option value="windowai">Window AI</option> | 2506 | <option value="windowai">Window AI</option> |
| 2446 | </optgroup> | 2507 | </optgroup> |
| 2447 | </select> | 2508 | </select> |
| 2448 | <div data-newbie-hidden class="inline-drawer wide100p" data-source="openai,claude,mistralai,makersuite"> | 2509 | <div class="inline-drawer wide100p" data-source="openai,claude,mistralai,makersuite"> |
| 2449 | <div class="inline-drawer-toggle inline-drawer-header"> | 2510 | <div class="inline-drawer-toggle inline-drawer-header"> |
| 2450 | <b data-i18n="Reverse Proxy">Reverse Proxy</b> | 2511 | <b data-i18n="Reverse Proxy">Reverse Proxy</b> |
| 2451 | <div class="fa-solid fa-circle-chevron-down inline-drawer-icon down"></div> | 2512 | <div class="fa-solid fa-circle-chevron-down inline-drawer-icon down"></div> |
| @@ -2474,7 +2535,7 @@ | |||
| 2474 | </span> | 2535 | </span> |
| 2475 | </div> | 2536 | </div> |
| 2476 | <div class="wide100p"> | 2537 | <div class="wide100p"> |
| 2477 | <input id="openai_reverse_proxy_name" type="text" class="text_pole" placeholder="..." maxlength="100" /> | 2538 | <input id="openai_reverse_proxy_name" type="text" class="text_pole" placeholder="..." /> |
| 2478 | </div> | 2539 | </div> |
| 2479 | <div class="range-block-title justifyLeft" data-i18n="Proxy Server URL"> | 2540 | <div class="range-block-title justifyLeft" data-i18n="Proxy Server URL"> |
| 2480 | Proxy Server URL | 2541 | Proxy Server URL |
| @@ -2485,7 +2546,7 @@ | |||
| 2485 | </span> | 2546 | </span> |
| 2486 | </div> | 2547 | </div> |
| 2487 | <div class="wide100p"> | 2548 | <div class="wide100p"> |
| 2488 | <input id="openai_reverse_proxy" type="text" class="text_pole" placeholder="https://api.openai.com/v1" maxlength="5000" /> | 2549 | <input id="openai_reverse_proxy" type="text" class="text_pole" placeholder="https://api.openai.com/v1" /> |
| 2489 | <small class="reverse_proxy_warning"> | 2550 | <small class="reverse_proxy_warning"> |
| 2490 | <span data-i18n="Doesn't work? Try adding">Doesn't work? Try adding</span> <code>/v1</code> <span data-i18n="at the end!">at the end!</span> | 2551 | <span data-i18n="Doesn't work? Try adding">Doesn't work? Try adding</span> <code>/v1</code> <span data-i18n="at the end!">at the end!</span> |
| 2491 | </small> | 2552 | </small> |
| @@ -2499,7 +2560,7 @@ | |||
| 2499 | </span> | 2560 | </span> |
| 2500 | </div> | 2561 | </div> |
| 2501 | <div class="flex-container width100p"> | 2562 | <div class="flex-container width100p"> |
| 2502 | <input id="openai_proxy_password" type="password" class="text_pole flex1" placeholder="" maxlength="5000" form="openai_form" autocomplete="off" /> | 2563 | <input id="openai_proxy_password" type="password" class="text_pole flex1" placeholder="" form="openai_form" autocomplete="off" /> |
| 2503 | <div id="openai_proxy_password_show" title="Peek a password" data-i18n="[title]Peek a password" class="menu_button fa-solid fa-eye-slash fa-fw"></div> | 2564 | <div id="openai_proxy_password_show" title="Peek a password" data-i18n="[title]Peek a password" class="menu_button fa-solid fa-eye-slash fa-fw"></div> |
| 2504 | </div> | 2565 | </div> |
| 2505 | </div> | 2566 | </div> |
| @@ -2540,7 +2601,7 @@ | |||
| 2540 | </ol> | 2601 | </ol> |
| 2541 | </span> | 2602 | </span> |
| 2542 | <div class="flex-container"> | 2603 | <div class="flex-container"> |
| 2543 | <input id="api_key_openai" name="api_key_openai" class="text_pole flex1" maxlength="500" value="" type="text" autocomplete="off"> | 2604 | <input id="api_key_openai" name="api_key_openai" class="text_pole flex1" value="" type="text" autocomplete="off"> |
| 2544 | <div title="Clear your API key" data-i18n="[title]Clear your API key" class="menu_button fa-solid fa-circle-xmark clear-api-key" data-key="api_key_openai"></div> | 2605 | <div title="Clear your API key" data-i18n="[title]Clear your API key" class="menu_button fa-solid fa-circle-xmark clear-api-key" data-key="api_key_openai"></div> |
| 2545 | </div> | 2606 | </div> |
| 2546 | <div id="ReverseProxyWarningMessage2" class="reverse_proxy_warning"> | 2607 | <div id="ReverseProxyWarningMessage2" class="reverse_proxy_warning"> |
| @@ -2593,6 +2654,10 @@ | |||
| 2593 | <option value="gpt-4-0125-preview">gpt-4-0125-preview (2024)</option> | 2654 | <option value="gpt-4-0125-preview">gpt-4-0125-preview (2024)</option> |
| 2594 | <option value="gpt-4-1106-preview">gpt-4-1106-preview (2023)</option> | 2655 | <option value="gpt-4-1106-preview">gpt-4-1106-preview (2023)</option> |
| 2595 | </optgroup> | 2656 | </optgroup> |
| 2657 | <optgroup label="o1"> | ||
| 2658 | <option value="o1-preview">o1-preview</option> | ||
| 2659 | <option value="o1-mini">o1-mini</option> | ||
| 2660 | </optgroup> | ||
| 2596 | <optgroup label="Other"> | 2661 | <optgroup label="Other"> |
| 2597 | <option value="text-davinci-003">text-davinci-003</option> | 2662 | <option value="text-davinci-003">text-davinci-003</option> |
| 2598 | <option value="text-davinci-002">text-davinci-002</option> | 2663 | <option value="text-davinci-002">text-davinci-002</option> |
| @@ -2625,7 +2690,7 @@ | |||
| 2625 | </b> | 2690 | </b> |
| 2626 | </div> | 2691 | </div> |
| 2627 | <div class="flex-container"> | 2692 | <div class="flex-container"> |
| 2628 | <input id="api_key_claude" name="api_key_claude" class="text_pole flex1" maxlength="500" value="" type="text" autocomplete="off"> | 2693 | <input id="api_key_claude" name="api_key_claude" class="text_pole flex1" value="" type="text" autocomplete="off"> |
| 2629 | <div title="Clear your API key" data-i18n="[title]Clear your API key" class="menu_button fa-solid fa-circle-xmark clear-api-key" data-key="api_key_claude"></div> | 2694 | <div title="Clear your API key" data-i18n="[title]Clear your API key" class="menu_button fa-solid fa-circle-xmark clear-api-key" data-key="api_key_claude"></div> |
| 2630 | </div> | 2695 | </div> |
| 2631 | <div data-for="api_key_claude" class="neutral_warning" data-i18n="For privacy reasons, your API key will be hidden after you reload the page."> | 2696 | <div data-for="api_key_claude" class="neutral_warning" data-i18n="For privacy reasons, your API key will be hidden after you reload the page."> |
| @@ -2677,7 +2742,7 @@ | |||
| 2677 | <a href="https://openrouter.ai/account" target="_blank" data-i18n="View Remaining Credits">View Remaining Credits</a> | 2742 | <a href="https://openrouter.ai/account" target="_blank" data-i18n="View Remaining Credits">View Remaining Credits</a> |
| 2678 | </div> | 2743 | </div> |
| 2679 | <div class="flex-container"> | 2744 | <div class="flex-container"> |
| 2680 | <input id="api_key_openrouter" name="api_key_openrouter" class="text_pole flex1 api_key_openrouter" maxlength="500" value="" type="text" autocomplete="off"> | 2745 | <input id="api_key_openrouter" name="api_key_openrouter" class="text_pole flex1 api_key_openrouter" value="" type="text" autocomplete="off"> |
| 2681 | <div title="Clear your API key" data-i18n="[title]Clear your API key" class="menu_button fa-solid fa-circle-xmark clear-api-key" data-key="api_key_openrouter"></div> | 2746 | <div title="Clear your API key" data-i18n="[title]Clear your API key" class="menu_button fa-solid fa-circle-xmark clear-api-key" data-key="api_key_openrouter"></div> |
| 2682 | </div> | 2747 | </div> |
| 2683 | <div data-for="api_key_openrouter" class="neutral_warning" data-i18n="For privacy reasons, your API key will be hidden after you reload the page."> | 2748 | <div data-for="api_key_openrouter" class="neutral_warning" data-i18n="For privacy reasons, your API key will be hidden after you reload the page."> |
| @@ -2686,7 +2751,7 @@ | |||
| 2686 | <div> | 2751 | <div> |
| 2687 | <h4 data-i18n="OpenRouter Model">OpenRouter Model</h4> | 2752 | <h4 data-i18n="OpenRouter Model">OpenRouter Model</h4> |
| 2688 | <select id="model_openrouter_select"> | 2753 | <select id="model_openrouter_select"> |
| 2689 | <option data-i18n="-- Connect to the API --">-- Connect to the API --</option> | 2754 | <option value="" data-i18n="-- Connect to the API --">-- Connect to the API --</option> |
| 2690 | </select> | 2755 | </select> |
| 2691 | </div> | 2756 | </div> |
| 2692 | <label for="openrouter_use_fallback" class="checkbox_label marginTopBot5" data-i18n="[title]Allow fallback routes Description" title="Automatically chooses an alternative model if the chosen model can't serve your request."> | 2757 | <label for="openrouter_use_fallback" class="checkbox_label marginTopBot5" data-i18n="[title]Allow fallback routes Description" title="Automatically chooses an alternative model if the chosen model can't serve your request."> |
| @@ -2753,19 +2818,19 @@ | |||
| 2753 | <div id="normal_scale_form"> | 2818 | <div id="normal_scale_form"> |
| 2754 | <h4 data-i18n="Scale API Key">Scale API Key</h4> | 2819 | <h4 data-i18n="Scale API Key">Scale API Key</h4> |
| 2755 | <div class="flex-container"> | 2820 | <div class="flex-container"> |
| 2756 | <input id="api_key_scale" name="api_key_scale" class="text_pole flex1" maxlength="500" value="" autocomplete="off"> | 2821 | <input id="api_key_scale" name="api_key_scale" class="text_pole flex1" value="" autocomplete="off"> |
| 2757 | <div title="Clear your API key" data-i18n="[title]Clear your API key" class="menu_button fa-solid fa-circle-xmark clear-api-key" data-key="api_key_scale"></div> | 2822 | <div title="Clear your API key" data-i18n="[title]Clear your API key" class="menu_button fa-solid fa-circle-xmark clear-api-key" data-key="api_key_scale"></div> |
| 2758 | </div> | 2823 | </div> |
| 2759 | <div data-for="api_key_scale" class="neutral_warning" data-i18n="For privacy reasons, your API key will be hidden after you reload the page."> | 2824 | <div data-for="api_key_scale" class="neutral_warning" data-i18n="For privacy reasons, your API key will be hidden after you reload the page."> |
| 2760 | For privacy reasons, your API key will be hidden after you reload the page. | 2825 | For privacy reasons, your API key will be hidden after you reload the page. |
| 2761 | </div> | 2826 | </div> |
| 2762 | <h4>Scale API URL</h4> | 2827 | <h4>Scale API URL</h4> |
| 2763 | <input id="api_url_scale" name="api_url_scale" class="text_pole" maxlength="500" value="" autocomplete="off" placeholder="https://dashboard.scale.com/spellbook/api/v2/deploy/xxxxxxx"> | 2828 | <input id="api_url_scale" name="api_url_scale" class="text_pole" value="" autocomplete="off" placeholder="https://dashboard.scale.com/spellbook/api/v2/deploy/xxxxxxx"> |
| 2764 | </div> | 2829 | </div> |
| 2765 | <div id="alt_scale_form"> | 2830 | <div id="alt_scale_form"> |
| 2766 | <h4>Scale Cookie (_jwt)</h4> | 2831 | <h4>Scale Cookie (_jwt)</h4> |
| 2767 | <div class="flex-container"> | 2832 | <div class="flex-container"> |
| 2768 | <input id="scale_cookie" name="scale_cookie" class="text_pole flex1" maxlength="500" value="" autocomplete="off"> | 2833 | <input id="scale_cookie" name="scale_cookie" class="text_pole flex1" value="" autocomplete="off"> |
| 2769 | <div title="Clear your cookie" data-i18n="[title]Clear your cookie" class="menu_button fa-solid fa-circle-xmark clear-api-key" data-key="scale_cookie"></div> | 2834 | <div title="Clear your cookie" data-i18n="[title]Clear your cookie" class="menu_button fa-solid fa-circle-xmark clear-api-key" data-key="scale_cookie"></div> |
| 2770 | </div> | 2835 | </div> |
| 2771 | <div data-for="scale_cookie" class="neutral_warning"> | 2836 | <div data-for="scale_cookie" class="neutral_warning"> |
| @@ -2782,7 +2847,7 @@ | |||
| 2782 | <form id="ai21_form" data-source="ai21" action="javascript:void(null);" method="post" enctype="multipart/form-data"> | 2847 | <form id="ai21_form" data-source="ai21" action="javascript:void(null);" method="post" enctype="multipart/form-data"> |
| 2783 | <h4 data-i18n="AI21 API Key">AI21 API Key</h4> | 2848 | <h4 data-i18n="AI21 API Key">AI21 API Key</h4> |
| 2784 | <div class="flex-container"> | 2849 | <div class="flex-container"> |
| 2785 | <input id="api_key_ai21" name="api_key_ai21" class="text_pole flex1" maxlength="500" value="" type="text" autocomplete="off"> | 2850 | <input id="api_key_ai21" name="api_key_ai21" class="text_pole flex1" value="" type="text" autocomplete="off"> |
| 2786 | <div title="Clear your API key" data-i18n="[title]Clear your API key" class="menu_button fa-solid fa-circle-xmark clear-api-key" data-key="api_key_ai21"></div> | 2851 | <div title="Clear your API key" data-i18n="[title]Clear your API key" class="menu_button fa-solid fa-circle-xmark clear-api-key" data-key="api_key_ai21"></div> |
| 2787 | </div> | 2852 | </div> |
| 2788 | <div data-for="api_key_ai21" class="neutral_warning" data-i18n="For privacy reasons, your API key will be hidden after you reload the page."> | 2853 | <div data-for="api_key_ai21" class="neutral_warning" data-i18n="For privacy reasons, your API key will be hidden after you reload the page."> |
| @@ -2791,10 +2856,12 @@ | |||
| 2791 | <div> | 2856 | <div> |
| 2792 | <h4 data-i18n="AI21 Model">AI21 Model</h4> | 2857 | <h4 data-i18n="AI21 Model">AI21 Model</h4> |
| 2793 | <select id="model_ai21_select"> | 2858 | <select id="model_ai21_select"> |
| 2794 | <optgroup label="Latest"> | 2859 | <optgroup label="Jamba 1.5"> |
| 2795 | <option value="j2-ultra">j2-ultra</option> | 2860 | <option value="jamba-1.5-mini">jamba-1.5-mini</option> |
| 2796 | <option value="j2-mid">j2-mid</option> | 2861 | <option value="jamba-1.5-large">jamba-1.5-large</option> |
| 2797 | <option value="j2-light">j2-light</option> | 2862 | </optgroup> |
| 2863 | <optgroup label="Jamba-Instruct (Deprecated)"> | ||
| 2864 | <option value="jamba-instruct-preview">jamba-instruct-preview</option> | ||
| 2798 | </optgroup> | 2865 | </optgroup> |
| 2799 | </select> | 2866 | </select> |
| 2800 | </div> | 2867 | </div> |
| @@ -2802,7 +2869,7 @@ | |||
| 2802 | <form id="makersuite_form" data-source="makersuite" action="javascript:void(null);" method="post" enctype="multipart/form-data"> | 2869 | <form id="makersuite_form" data-source="makersuite" action="javascript:void(null);" method="post" enctype="multipart/form-data"> |
| 2803 | <h4 data-i18n="Google AI Studio API Key">Google AI Studio API Key</h4> | 2870 | <h4 data-i18n="Google AI Studio API Key">Google AI Studio API Key</h4> |
| 2804 | <div class="flex-container"> | 2871 | <div class="flex-container"> |
| 2805 | <input id="api_key_makersuite" name="api_key_makersuite" class="text_pole flex1" maxlength="500" value="" type="text" autocomplete="off"> | 2872 | <input id="api_key_makersuite" name="api_key_makersuite" class="text_pole flex1" value="" type="text" autocomplete="off"> |
| 2806 | <div title="Clear your API key" data-i18n="[title]Clear your API key" class="menu_button fa-solid fa-circle-xmark clear-api-key" data-key="api_key_makersuite"></div> | 2873 | <div title="Clear your API key" data-i18n="[title]Clear your API key" class="menu_button fa-solid fa-circle-xmark clear-api-key" data-key="api_key_makersuite"></div> |
| 2807 | </div> | 2874 | </div> |
| 2808 | <div data-for="api_key_makersuite" class="neutral_warning" data-i18n="For privacy reasons, your API key will be hidden after you reload the page."> | 2875 | <div data-for="api_key_makersuite" class="neutral_warning" data-i18n="For privacy reasons, your API key will be hidden after you reload the page."> |
| @@ -2824,8 +2891,11 @@ | |||
| 2824 | </optgroup> | 2891 | </optgroup> |
| 2825 | <optgroup label="Subversions"> | 2892 | <optgroup label="Subversions"> |
| 2826 | <option value="gemini-1.5-pro-exp-0801">Gemini 1.5 Pro Experiment 2024-08-01</option> | 2893 | <option value="gemini-1.5-pro-exp-0801">Gemini 1.5 Pro Experiment 2024-08-01</option> |
| 2894 | <option value="gemini-1.5-pro-exp-0827">Gemini 1.5 Pro Experiment 2024-08-27</option> | ||
| 2827 | <option value="gemini-1.5-pro-latest">Gemini 1.5 Pro [latest]</option> | 2895 | <option value="gemini-1.5-pro-latest">Gemini 1.5 Pro [latest]</option> |
| 2828 | <option value="gemini-1.5-pro-001">Gemini 1.5 Pro [001]</option> | 2896 | <option value="gemini-1.5-pro-001">Gemini 1.5 Pro [001]</option> |
| 2897 | <option value="gemini-1.5-flash-exp-0827">Gemini 1.5 Flash Experiment 2024-08-27</option> | ||
| 2898 | <option value="gemini-1.5-flash-8b-exp-0827">Gemini 1.5 Flash 8B Experiment 2024-08-27</option> | ||
| 2829 | <option value="gemini-1.5-flash-latest">Gemini 1.5 Flash [latest]</option> | 2899 | <option value="gemini-1.5-flash-latest">Gemini 1.5 Flash [latest]</option> |
| 2830 | <option value="gemini-1.5-flash-001">Gemini 1.5 Flash [001]</option> | 2900 | <option value="gemini-1.5-flash-001">Gemini 1.5 Flash [001]</option> |
| 2831 | <option value="gemini-1.0-pro-latest">Gemini 1.0 Pro [latest]</option> | 2901 | <option value="gemini-1.0-pro-latest">Gemini 1.0 Pro [latest]</option> |
| @@ -2838,7 +2908,7 @@ | |||
| 2838 | <form id="mistralai_form" data-source="mistralai" action="javascript:void(null);" method="post" enctype="multipart/form-data"> | 2908 | <form id="mistralai_form" data-source="mistralai" action="javascript:void(null);" method="post" enctype="multipart/form-data"> |
| 2839 | <h4 data-i18n="MistralAI API Key">MistralAI API Key</h4> | 2909 | <h4 data-i18n="MistralAI API Key">MistralAI API Key</h4> |
| 2840 | <div class="flex-container"> | 2910 | <div class="flex-container"> |
| 2841 | <input id="api_key_mistralai" name="api_key_mistralai" class="text_pole flex1" maxlength="500" value="" type="text" autocomplete="off"> | 2911 | <input id="api_key_mistralai" name="api_key_mistralai" class="text_pole flex1" value="" type="text" autocomplete="off"> |
| 2842 | <div title="Clear your API key" data-i18n="[title]Clear your API key" class="menu_button fa-solid fa-circle-xmark clear-api-key" data-key="api_key_mistralai"></div> | 2912 | <div title="Clear your API key" data-i18n="[title]Clear your API key" class="menu_button fa-solid fa-circle-xmark clear-api-key" data-key="api_key_mistralai"></div> |
| 2843 | </div> | 2913 | </div> |
| 2844 | <div data-for="api_key_mistralai" class="neutral_warning" data-i18n="For privacy reasons, your API key will be hidden after you reload the page."> | 2914 | <div data-for="api_key_mistralai" class="neutral_warning" data-i18n="For privacy reasons, your API key will be hidden after you reload the page."> |
| @@ -2858,6 +2928,7 @@ | |||
| 2858 | <option value="mistral-large-latest">mistral-large-latest</option> | 2928 | <option value="mistral-large-latest">mistral-large-latest</option> |
| 2859 | <option value="codestral-latest">codestral-latest</option> | 2929 | <option value="codestral-latest">codestral-latest</option> |
| 2860 | <option value="codestral-mamba-latest">codestral-mamba-latest</option> | 2930 | <option value="codestral-mamba-latest">codestral-mamba-latest</option> |
| 2931 | <option value="pixtral-latest">pixtral-latest</option> | ||
| 2861 | </optgroup> | 2932 | </optgroup> |
| 2862 | <optgroup label="Sub-versions"> | 2933 | <optgroup label="Sub-versions"> |
| 2863 | <option value="open-mistral-nemo-2407">open-mistral-nemo-2407</option> | 2934 | <option value="open-mistral-nemo-2407">open-mistral-nemo-2407</option> |
| @@ -2865,11 +2936,13 @@ | |||
| 2865 | <option value="mistral-tiny-2312">mistral-tiny-2312</option> | 2936 | <option value="mistral-tiny-2312">mistral-tiny-2312</option> |
| 2866 | <option value="mistral-small-2312">mistral-small-2312</option> | 2937 | <option value="mistral-small-2312">mistral-small-2312</option> |
| 2867 | <option value="mistral-small-2402">mistral-small-2402</option> | 2938 | <option value="mistral-small-2402">mistral-small-2402</option> |
| 2939 | <option value="mistral-small-2409">mistral-small-2409</option> | ||
| 2868 | <option value="mistral-medium-2312">mistral-medium-2312</option> | 2940 | <option value="mistral-medium-2312">mistral-medium-2312</option> |
| 2869 | <option value="mistral-large-2402">mistral-large-2402</option> | 2941 | <option value="mistral-large-2402">mistral-large-2402</option> |
| 2870 | <option value="mistral-large-2407">mistral-large-2407</option> | 2942 | <option value="mistral-large-2407">mistral-large-2407</option> |
| 2871 | <option value="codestral-2405">codestral-2405</option> | 2943 | <option value="codestral-2405">codestral-2405</option> |
| 2872 | <option value="codestral-mamba-2407">codestral-mamba-2407</option> | 2944 | <option value="codestral-mamba-2407">codestral-mamba-2407</option> |
| 2945 | <option value="pixtral-12b-2409">pixtral-12b-2409</option> | ||
| 2873 | </optgroup> | 2946 | </optgroup> |
| 2874 | </select> | 2947 | </select> |
| 2875 | </div> | 2948 | </div> |
| @@ -2877,7 +2950,7 @@ | |||
| 2877 | <div id="groq_form" data-source="groq"> | 2950 | <div id="groq_form" data-source="groq"> |
| 2878 | <h4 data-i18n="Groq API Key">Groq API Key</h4> | 2951 | <h4 data-i18n="Groq API Key">Groq API Key</h4> |
| 2879 | <div class="flex-container"> | 2952 | <div class="flex-container"> |
| 2880 | <input id="api_key_groq" name="api_key_groq" class="text_pole flex1" maxlength="500" value="" type="text" autocomplete="off"> | 2953 | <input id="api_key_groq" name="api_key_groq" class="text_pole flex1" value="" type="text" autocomplete="off"> |
| 2881 | <div title="Clear your API key" data-i18n="[title]Clear your API key" class="menu_button fa-solid fa-circle-xmark clear-api-key" data-key="api_key_groq"></div> | 2954 | <div title="Clear your API key" data-i18n="[title]Clear your API key" class="menu_button fa-solid fa-circle-xmark clear-api-key" data-key="api_key_groq"></div> |
| 2882 | </div> | 2955 | </div> |
| 2883 | <div data-for="api_key_groq" class="neutral_warning" data-i18n="For privacy reasons, your API key will be hidden after you reload the page."> | 2956 | <div data-for="api_key_groq" class="neutral_warning" data-i18n="For privacy reasons, your API key will be hidden after you reload the page."> |
| @@ -2900,7 +2973,7 @@ | |||
| 2900 | <div id="perplexity_form" data-source="perplexity"> | 2973 | <div id="perplexity_form" data-source="perplexity"> |
| 2901 | <h4 data-i18n="Perplexity API Key">Perplexity API Key</h4> | 2974 | <h4 data-i18n="Perplexity API Key">Perplexity API Key</h4> |
| 2902 | <div class="flex-container"> | 2975 | <div class="flex-container"> |
| 2903 | <input id="api_key_perplexity" name="api_key_perplexity" class="text_pole flex1" maxlength="500" value="" type="text" autocomplete="off"> | 2976 | <input id="api_key_perplexity" name="api_key_perplexity" class="text_pole flex1" value="" type="text" autocomplete="off"> |
| 2904 | <div title="Clear your API key" data-i18n="[title]Clear your API key" class="menu_button fa-solid fa-circle-xmark clear-api-key" data-key="api_key_perplexity"></div> | 2977 | <div title="Clear your API key" data-i18n="[title]Clear your API key" class="menu_button fa-solid fa-circle-xmark clear-api-key" data-key="api_key_perplexity"></div> |
| 2905 | </div> | 2978 | </div> |
| 2906 | <div data-for="api_key_perplexity" class="neutral_warning" data-i18n="For privacy reasons, your API key will be hidden after you reload the page."> | 2979 | <div data-for="api_key_perplexity" class="neutral_warning" data-i18n="For privacy reasons, your API key will be hidden after you reload the page."> |
| @@ -2940,7 +3013,7 @@ | |||
| 2940 | <form id="cohere_form" data-source="cohere" action="javascript:void(null);" method="post" enctype="multipart/form-data"> | 3013 | <form id="cohere_form" data-source="cohere" action="javascript:void(null);" method="post" enctype="multipart/form-data"> |
| 2941 | <h4 data-i18n="Cohere API Key">Cohere API Key</h4> | 3014 | <h4 data-i18n="Cohere API Key">Cohere API Key</h4> |
| 2942 | <div class="flex-container"> | 3015 | <div class="flex-container"> |
| 2943 | <input id="api_key_cohere" name="api_key_cohere" class="text_pole flex1" maxlength="500" value="" type="text" autocomplete="off"> | 3016 | <input id="api_key_cohere" name="api_key_cohere" class="text_pole flex1" value="" type="text" autocomplete="off"> |
| 2944 | <div title="Clear your API key" data-i18n="[title]Clear your API key" class="menu_button fa-solid fa-circle-xmark clear-api-key" data-key="api_key_cohere"></div> | 3017 | <div title="Clear your API key" data-i18n="[title]Clear your API key" class="menu_button fa-solid fa-circle-xmark clear-api-key" data-key="api_key_cohere"></div> |
| 2945 | </div> | 3018 | </div> |
| 2946 | <div data-for="api_key_cohere" class="neutral_warning" data-i18n="For privacy reasons, your API key will be hidden after you reload the page."> | 3019 | <div data-for="api_key_cohere" class="neutral_warning" data-i18n="For privacy reasons, your API key will be hidden after you reload the page."> |
| @@ -2950,11 +3023,14 @@ | |||
| 2950 | <h4 data-i18n="Cohere Model">Cohere Model</h4> | 3023 | <h4 data-i18n="Cohere Model">Cohere Model</h4> |
| 2951 | <select id="model_cohere_select"> | 3024 | <select id="model_cohere_select"> |
| 2952 | <optgroup label="Stable"> | 3025 | <optgroup label="Stable"> |
| 2953 | <option value="c4ai-aya-23">c4ai-aya-23</option> | 3026 | <option value="c4ai-aya-23-35b">c4ai-aya-23-35b</option> |
| 3027 | <option value="c4ai-aya-23-8b">c4ai-aya-23-8b</option> | ||
| 2954 | <option value="command-light">command-light</option> | 3028 | <option value="command-light">command-light</option> |
| 2955 | <option value="command">command</option> | 3029 | <option value="command">command</option> |
| 2956 | <option value="command-r">command-r</option> | 3030 | <option value="command-r">command-r</option> |
| 2957 | <option value="command-r-plus">command-r-plus</option> | 3031 | <option value="command-r-plus">command-r-plus</option> |
| 3032 | <option value="command-r-08-2024">command-r-08-2024</option> | ||
| 3033 | <option value="command-r-plus-08-2024">command-r-plus-08-2024</option> | ||
| 2958 | </optgroup> | 3034 | </optgroup> |
| 2959 | <optgroup label="Nightly"> | 3035 | <optgroup label="Nightly"> |
| 2960 | <option value="command-light-nightly">command-light-nightly</option> | 3036 | <option value="command-light-nightly">command-light-nightly</option> |
| @@ -2966,7 +3042,7 @@ | |||
| 2966 | <form id="blockentropy_form" data-source="blockentropy"> | 3042 | <form id="blockentropy_form" data-source="blockentropy"> |
| 2967 | <h4 data-i18n="Block Entropy API Key">Block Entropy API Key</h4> | 3043 | <h4 data-i18n="Block Entropy API Key">Block Entropy API Key</h4> |
| 2968 | <div class="flex-container"> | 3044 | <div class="flex-container"> |
| 2969 | <input id="api_key_blockentropy" name="api_key_blockentropy" class="text_pole flex1" maxlength="500" value="" type="text" autocomplete="off"> | 3045 | <input id="api_key_blockentropy" name="api_key_blockentropy" class="text_pole flex1" value="" type="text" autocomplete="off"> |
| 2970 | <div title="Clear your API key" data-i18n="[title]Clear your API key" class="menu_button fa-solid fa-circle-xmark clear-api-key" data-key="api_key_blockentropy"></div> | 3046 | <div title="Clear your API key" data-i18n="[title]Clear your API key" class="menu_button fa-solid fa-circle-xmark clear-api-key" data-key="api_key_blockentropy"></div> |
| 2971 | </div> | 3047 | </div> |
| 2972 | <div data-for="api_key_blockentropy" class="neutral_warning" data-i18n="For privacy reasons, your API key will be hidden after you reload the page."> | 3048 | <div data-for="api_key_blockentropy" class="neutral_warning" data-i18n="For privacy reasons, your API key will be hidden after you reload the page."> |
| @@ -2980,7 +3056,7 @@ | |||
| 2980 | <form id="custom_form" data-source="custom"> | 3056 | <form id="custom_form" data-source="custom"> |
| 2981 | <h4 data-i18n="Custom Endpoint (Base URL)">Custom Endpoint (Base URL)</h4> | 3057 | <h4 data-i18n="Custom Endpoint (Base URL)">Custom Endpoint (Base URL)</h4> |
| 2982 | <div class="flex-container"> | 3058 | <div class="flex-container"> |
| 2983 | <input id="custom_api_url_text" class="text_pole wide100p" maxlength="5000" value="" autocomplete="off" data-i18n="[placeholder]Example: http://localhost:1234/v1" placeholder="Example: http://localhost:1234/v1"> | 3059 | <input id="custom_api_url_text" class="text_pole wide100p" value="" autocomplete="off" data-i18n="[placeholder]Example: http://localhost:1234/v1" placeholder="Example: http://localhost:1234/v1"> |
| 2984 | </div> | 3060 | </div> |
| 2985 | <div> | 3061 | <div> |
| 2986 | <small> | 3062 | <small> |
| @@ -2992,7 +3068,7 @@ | |||
| 2992 | <small data-i18n="(Optional)">(Optional)</small> | 3068 | <small data-i18n="(Optional)">(Optional)</small> |
| 2993 | </h4> | 3069 | </h4> |
| 2994 | <div class="flex-container"> | 3070 | <div class="flex-container"> |
| 2995 | <input id="api_key_custom" name="api_key_custom" class="text_pole flex1" maxlength="5000" value="" type="text" autocomplete="off"> | 3071 | <input id="api_key_custom" name="api_key_custom" class="text_pole flex1" value="" type="text" autocomplete="off"> |
| 2996 | <div title="Clear your API key" data-i18n="[title]Clear your API key" class="menu_button fa-solid fa-circle-xmark clear-api-key" data-key="api_key_custom"></div> | 3072 | <div title="Clear your API key" data-i18n="[title]Clear your API key" class="menu_button fa-solid fa-circle-xmark clear-api-key" data-key="api_key_custom"></div> |
| 2997 | </div> | 3073 | </div> |
| 2998 | <div data-for="api_key_custom" class="neutral_warning" data-i18n="For privacy reasons, your API key will be hidden after you reload the page."> | 3074 | <div data-for="api_key_custom" class="neutral_warning" data-i18n="For privacy reasons, your API key will be hidden after you reload the page."> |
| @@ -3000,7 +3076,7 @@ | |||
| 3000 | </div> | 3076 | </div> |
| 3001 | <h4 data-i18n="Enter a Model ID">Enter a Model ID</h4> | 3077 | <h4 data-i18n="Enter a Model ID">Enter a Model ID</h4> |
| 3002 | <div class="flex-container"> | 3078 | <div class="flex-container"> |
| 3003 | <input list="model_custom_select_fill" id="custom_model_id" class="text_pole wide100p" maxlength="500" value="" autocomplete="off" data-i18n="[placeholder]Example: gpt-3.5-turbo" placeholder="Example: gpt-3.5-turbo"> | 3079 | <input list="model_custom_select_fill" id="custom_model_id" class="text_pole wide100p" value="" autocomplete="off" data-i18n="[placeholder]Example: gpt-3.5-turbo" placeholder="Example: gpt-3.5-turbo"> |
| 3004 | <datalist id="model_custom_select_fill" class="text_pole model_custom_select"></datalist> | 3080 | <datalist id="model_custom_select_fill" class="text_pole model_custom_select"></datalist> |
| 3005 | </div> | 3081 | </div> |
| 3006 | <h4 data-i18n="Available Models">Available Models</h4> | 3082 | <h4 data-i18n="Available Models">Available Models</h4> |
| @@ -3020,7 +3096,7 @@ | |||
| 3020 | </a> | 3096 | </a> |
| 3021 | </h4> | 3097 | </h4> |
| 3022 | <div class="flex-container"> | 3098 | <div class="flex-container"> |
| 3023 | <input id="api_key_01ai" name="api_key_01ai" class="text_pole flex1" maxlength="500" value="" type="text" autocomplete="off"> | 3099 | <input id="api_key_01ai" name="api_key_01ai" class="text_pole flex1" value="" type="text" autocomplete="off"> |
| 3024 | <div title="Clear your API key" data-i18n="[title]Clear your API key" class="menu_button fa-solid fa-circle-xmark clear-api-key" data-key="api_key_01ai"></div> | 3100 | <div title="Clear your API key" data-i18n="[title]Clear your API key" class="menu_button fa-solid fa-circle-xmark clear-api-key" data-key="api_key_01ai"></div> |
| 3025 | </div> | 3101 | </div> |
| 3026 | <div data-for="api_key_01ai" class="neutral_warning" data-i18n="For privacy reasons, your API key will be hidden after you reload the page."> | 3102 | <div data-for="api_key_01ai" class="neutral_warning" data-i18n="For privacy reasons, your API key will be hidden after you reload the page."> |
| @@ -3032,7 +3108,7 @@ | |||
| 3032 | </div> | 3108 | </div> |
| 3033 | <div class="flex-container flex"> | 3109 | <div class="flex-container flex"> |
| 3034 | <div id="api_button_openai" class="api_button menu_button menu_button_icon" type="submit" data-i18n="Connect">Connect</div> | 3110 | <div id="api_button_openai" class="api_button menu_button menu_button_icon" type="submit" data-i18n="Connect">Connect</div> |
| 3035 | <div class="api_loading menu_button" data-i18n="Cancel">Cancel</div> | 3111 | <div class="api_loading menu_button menu_button_icon" data-i18n="Cancel">Cancel</div> |
| 3036 | <div data-source="custom" id="customize_additional_parameters" class="menu_button menu_button_icon" data-i18n="Additional Parameters">Additional Parameters</div> | 3112 | <div data-source="custom" id="customize_additional_parameters" class="menu_button menu_button_icon" data-i18n="Additional Parameters">Additional Parameters</div> |
| 3037 | <div data-source="openrouter" class="menu_button menu_button_icon openrouter_authorize" title="Get your OpenRouter API token using OAuth flow. You will be redirected to openrouter.ai" data-i18n="Authorize;[title]Get your OpenRouter API token using OAuth flow. You will be redirected to openrouter.ai">Authorize</div> | 3113 | <div data-source="openrouter" class="menu_button menu_button_icon openrouter_authorize" title="Get your OpenRouter API token using OAuth flow. You will be redirected to openrouter.ai" data-i18n="Authorize;[title]Get your OpenRouter API token using OAuth flow. You will be redirected to openrouter.ai">Authorize</div> |
| 3038 | <div id="test_api_button" class="menu_button menu_button_icon" title="Verifies your API connection by sending a short test message. Be aware that you'll be credited for it!" data-i18n="[title]Verifies your API connection by sending a short test message. Be aware that you'll be credited for it!"><span data-i18n="Test Message">Test Message</span></div> | 3114 | <div id="test_api_button" class="menu_button menu_button_icon" title="Verifies your API connection by sending a short test message. Be aware that you'll be credited for it!" data-i18n="[title]Verifies your API connection by sending a short test message. Be aware that you'll be credited for it!"><span data-i18n="Test Message">Test Message</span></div> |
| @@ -3053,14 +3129,27 @@ | |||
| 3053 | </div> | 3129 | </div> |
| 3054 | <div id="advanced-formatting-button" class="drawer"> | 3130 | <div id="advanced-formatting-button" class="drawer"> |
| 3055 | <div class="drawer-toggle"> | 3131 | <div class="drawer-toggle"> |
| 3056 | <div class="drawer-icon fa-solid fa-font closedIcon" title="AI Response Formatting" data-i18n="[title]AI Response Formatting"></div> | 3132 | <div class="drawer-icon fa-solid fa-font fa-fw closedIcon" title="AI Response Formatting" data-i18n="[title]AI Response Formatting"></div> |
| 3057 | </div> | 3133 | </div> |
| 3058 | <div class="drawer-content"> | 3134 | <div id="AdvancedFormatting" class="drawer-content"> |
| 3059 | <h3 class="margin0" data-i18n="Advanced Formatting"> | 3135 | <div class="flex-container alignItemsBaseline"> |
| 3136 | <h3 class="margin0 flex1" data-i18n="Advanced Formatting"> | ||
| 3060 | Advanced Formatting | 3137 | Advanced Formatting |
| 3061 | </h3> | 3138 | </h3> |
| 3062 | <div class="flex-container"> | 3139 | <div class="flex-container"> |
| 3063 | <div id="PygOverrides"> | 3140 | <input id="af_master_import_file" type="file" hidden accept=".json" class="displayNone"> |
| 3141 | <div id="af_master_import" class="menu_button menu_button_icon" title="Import Advanced Formatting settings You can also provide legacy files for Instruct and Context templates." data-i18n="[title]Import Advanced Formatting settings"> | ||
| 3142 | <i class="fa-solid fa-file-import"></i> | ||
| 3143 | <span data-i18n="Master Import">Master Import</span> | ||
| 3144 | </div> | ||
| 3145 | <div id="af_master_export" class="menu_button menu_button_icon" title="Export Advanced Formatting settings" data-i18n="[title]Export Advanced Formatting settings"> | ||
| 3146 | <i class="fa-solid fa-file-export"></i> | ||
| 3147 | <span data-i18n="Master Export">Master Export</span> | ||
| 3148 | </div> | ||
| 3149 | </div> | ||
| 3150 | </div> | ||
| 3151 | <div class="flex-container spaceEvenly"> | ||
| 3152 | <div id="ContextSettings" class="flex-container flexNoGap flexFlowColumn flex1"> | ||
| 3064 | <div> | 3153 | <div> |
| 3065 | <h4 class="standoutHeader title_restorable"> | 3154 | <h4 class="standoutHeader title_restorable"> |
| 3066 | <div> | 3155 | <div> |
| @@ -3069,32 +3158,32 @@ | |||
| 3069 | <span class="fa-solid fa-circle-question note-link-span"></span> | 3158 | <span class="fa-solid fa-circle-question note-link-span"></span> |
| 3070 | </a> | 3159 | </a> |
| 3071 | </div> | 3160 | </div> |
| 3072 | <div class="flex-container"> | ||
| 3073 | <i data-newbie-hidden data-preset-manager-import="context" class="margin0 menu_button fa-solid fa-file-import" title="Import preset" data-i18n="[title]Import preset"></i> | ||
| 3074 | <i data-newbie-hidden data-preset-manager-export="context" class="margin0 menu_button fa-solid fa-file-export" title="Export preset" data-i18n="[title]Export preset"></i> | ||
| 3075 | <i data-newbie-hidden data-preset-manager-restore="context" class="margin0 menu_button fa-solid fa-recycle" title="Restore current preset" data-i18n="[title]Restore current preset"></i> | ||
| 3076 | <i data-newbie-hidden id="context_delete_preset" data-preset-manager-delete="context" class="margin0 menu_button fa-solid fa-trash-can" title="Delete the preset" data-i18n="[title]Delete the preset"></i> | ||
| 3077 | </div> | ||
| 3078 | </h4> | 3161 | </h4> |
| 3079 | <div class="flex-container"> | 3162 | <div class="flex-container" title="Select your current Context Template" data-i18n="[title]Select your current Context Template"> |
| 3080 | <select id="context_presets" data-preset-manager-for="context" class="flex1 text_pole"></select> | 3163 | <select id="context_presets" data-preset-manager-for="context" class="flex1 text_pole"></select> |
| 3164 | <div class="flex-container justifyCenter"> | ||
| 3081 | <input type="file" hidden data-preset-manager-file="context" accept=".json, .settings"> | 3165 | <input type="file" hidden data-preset-manager-file="context" accept=".json, .settings"> |
| 3082 | <i id="context_set_default" class="menu_button fa-solid fa-heart" title="Auto-select this preset for Instruct Mode." data-i18n="[title]Auto-select this preset for Instruct Mode"></i> | 3166 | <i data-preset-manager-update="context" class="menu_button fa-solid fa-save" title="Update current template" data-i18n="[title]Update current template"></i> |
| 3083 | <i data-newbie-hidden data-preset-manager-update="context" class="menu_button fa-solid fa-save" title="Update current preset" data-i18n="[title]Update current preset"></i> | 3167 | <i data-preset-manager-new="context" class="menu_button fa-solid fa-file-circle-plus" title="Save template as" data-i18n="[title]Save template as"></i> |
| 3084 | <i data-newbie-hidden data-preset-manager-new="context" class="menu_button fa-solid fa-file-circle-plus" title="Save preset as" data-i18n="[title]Save preset as"></i> | 3168 | <i data-preset-manager-import="context" class="displayNone menu_button fa-solid fa-file-import" title="Import template" data-i18n="[title]Import template"></i> |
| 3169 | <i data-preset-manager-export="context" class="displayNone menu_button fa-solid fa-file-export" title="Export template" data-i18n="[title]Export template"></i> | ||
| 3170 | <i data-preset-manager-restore="context" class="menu_button fa-solid fa-recycle" title="Restore current template" data-i18n="[title]Restore current template"></i> | ||
| 3171 | <i id="context_delete_preset" data-preset-manager-delete="context" class="menu_button fa-solid fa-trash-can" title="Delete the template" data-i18n="[title]Delete the template"></i> | ||
| 3172 | </div> | ||
| 3085 | </div> | 3173 | </div> |
| 3086 | <div data-newbie-hidden> | 3174 | <div> |
| 3087 | <label for="context_story_string"> | 3175 | <label for="context_story_string" class="flex-container"> |
| 3088 | <small data-i18n="Story String">Story String</small> | 3176 | <small data-i18n="Story String">Story String</small> |
| 3177 | <i class="editor_maximize fa-solid fa-maximize right_menu_button" data-for="context_story_string" title="Expand the editor" data-i18n="[title]Expand the editor"></i> | ||
| 3089 | </label> | 3178 | </label> |
| 3090 | <textarea id="context_story_string" class="text_pole textarea_compact autoSetHeight" rows="1"></textarea> | 3179 | <textarea id="context_story_string" class="text_pole textarea_compact autoSetHeight"></textarea> |
| 3091 | <div class="flex-container"> | 3180 | <div class="flex-container"> |
| 3092 | <div class="flex1"> | 3181 | <div class="flex1"> |
| 3093 | <label for="context_example_separator"> | 3182 | <label for="context_example_separator"> |
| 3094 | <small data-i18n="Example Separator">Example Separator</small> | 3183 | <small data-i18n="Example Separator">Example Separator</small> |
| 3095 | </label> | 3184 | </label> |
| 3096 | <div> | 3185 | <div> |
| 3097 | <textarea id="context_example_separator" class="text_pole textarea_compact autoSetHeight" maxlength="500" rows="1"></textarea> | 3186 | <textarea id="context_example_separator" class="text_pole textarea_compact autoSetHeight"></textarea> |
| 3098 | </div> | 3187 | </div> |
| 3099 | </div> | 3188 | </div> |
| 3100 | <div class="flex1"> | 3189 | <div class="flex1"> |
| @@ -3102,10 +3191,45 @@ | |||
| 3102 | <small data-i18n="Chat Start">Chat Start</small> | 3191 | <small data-i18n="Chat Start">Chat Start</small> |
| 3103 | </label> | 3192 | </label> |
| 3104 | <div> | 3193 | <div> |
| 3105 | <textarea id="context_chat_start" class="text_pole textarea_compact autoSetHeight" maxlength="500" rows="1"></textarea> | 3194 | <textarea id="context_chat_start" class="text_pole textarea_compact autoSetHeight"></textarea> |
| 3106 | </div> | 3195 | </div> |
| 3107 | </div> | 3196 | </div> |
| 3108 | </div> | 3197 | </div> |
| 3198 | <div> | ||
| 3199 | <h4 class="standoutHeader"> | ||
| 3200 | <span data-i18n="Context Formatting"> | ||
| 3201 | Context Formatting | ||
| 3202 | </span> | ||
| 3203 | </h4> | ||
| 3204 | |||
| 3205 | <label class="checkbox_label" for="always-force-name2-checkbox"> | ||
| 3206 | <input id="always-force-name2-checkbox" type="checkbox" /> | ||
| 3207 | <small data-i18n="Always add character's name to prompt"> | ||
| 3208 | Always add character's name to prompt | ||
| 3209 | </small> | ||
| 3210 | </label> | ||
| 3211 | <label class="checkbox_label" for="single_line"> | ||
| 3212 | <input id="single_line" type="checkbox" /> | ||
| 3213 | <small data-i18n="Generate only one line per request"> | ||
| 3214 | Generate only one line per request | ||
| 3215 | </small> | ||
| 3216 | </label> | ||
| 3217 | <label class="checkbox_label" for="collapse-newlines-checkbox"> | ||
| 3218 | <input id="collapse-newlines-checkbox" type="checkbox" /> | ||
| 3219 | <small data-i18n="Collapse Consecutive Newlines"> | ||
| 3220 | Collapse Consecutive Newlines | ||
| 3221 | </small> | ||
| 3222 | </label> | ||
| 3223 | <label class="checkbox_label" for="trim_spaces"> | ||
| 3224 | <input id="trim_spaces" type="checkbox" /> | ||
| 3225 | <small data-i18n="Trim spaces">Trim spaces</small> | ||
| 3226 | </label> | ||
| 3227 | <label class="checkbox_label" for="trim_sentences_checkbox"> | ||
| 3228 | <input id="trim_sentences_checkbox" type="checkbox" /> | ||
| 3229 | <small data-i18n="Trim Incomplete Sentences"> | ||
| 3230 | Trim Incomplete Sentences | ||
| 3231 | </small> | ||
| 3232 | </label> | ||
| 3109 | <label class="checkbox_label" title="Add Chat Start and Example Separator to a list of stopping strings." data-i18n="[title]Add Chat Start and Example Separator to a list of stopping strings."> | 3233 | <label class="checkbox_label" title="Add Chat Start and Example Separator to a list of stopping strings." data-i18n="[title]Add Chat Start and Example Separator to a list of stopping strings."> |
| 3110 | <input id="context_use_stop_strings" type="checkbox" /> | 3234 | <input id="context_use_stop_strings" type="checkbox" /> |
| 3111 | <small data-i18n="Separators as Stop Strings">Separators as Stop Strings</small> | 3235 | <small data-i18n="Separators as Stop Strings">Separators as Stop Strings</small> |
| @@ -3114,201 +3238,127 @@ | |||
| 3114 | <input id="context_names_as_stop_strings" type="checkbox" /> | 3238 | <input id="context_names_as_stop_strings" type="checkbox" /> |
| 3115 | <small data-i18n="Names as Stop Strings">Names as Stop Strings</small> | 3239 | <small data-i18n="Names as Stop Strings">Names as Stop Strings</small> |
| 3116 | </label> | 3240 | </label> |
| 3241 | </div> | ||
| 3242 | |||
| 3117 | <label class="checkbox_label" title="Includes Post-History Instructions at the end of the prompt, if defined in the character card AND ''Prefer Char. Instructions'' is enabled. THIS IS NOT RECOMMENDED FOR TEXT COMPLETION MODELS, CAN LEAD TO BAD OUTPUT." data-i18n="[title]context_allow_post_history_instructions"> | 3243 | <label class="checkbox_label" title="Includes Post-History Instructions at the end of the prompt, if defined in the character card AND ''Prefer Char. Instructions'' is enabled. THIS IS NOT RECOMMENDED FOR TEXT COMPLETION MODELS, CAN LEAD TO BAD OUTPUT." data-i18n="[title]context_allow_post_history_instructions"> |
| 3118 | <input id="context_allow_jailbreak" type="checkbox" /> | 3244 | <input id="context_allow_jailbreak" type="checkbox" /> |
| 3119 | <small data-i18n="Allow Post-History Instructions">Allow Post-History Instructions</small> | 3245 | <small data-i18n="Allow Post-History Instructions">Allow Post-History Instructions</small> |
| 3120 | </label> | 3246 | </label> |
| 3121 | </div> | 3247 | </div> |
| 3122 | |||
| 3123 | <div data-newbie-hidden class="inline-drawer wide100p flexFlowColumn margin-bot-10px" style="display:none;"> | ||
| 3124 | <div class="inline-drawer-toggle inline-drawer-header"> | ||
| 3125 | <b><span data-i18n="Context Order">Context Order</span></b> | ||
| 3126 | <div class="fa-solid fa-circle-chevron-down inline-drawer-icon down"></div> | ||
| 3127 | </div> | ||
| 3128 | <div class="inline-drawer-content"> | ||
| 3129 | <div id="context_order" class="prompt_order"> | ||
| 3130 | <div data-id="0"> | ||
| 3131 | <span data-i18n="Story String">Story String</span> | ||
| 3132 | <small>0</small> | ||
| 3133 | </div> | ||
| 3134 | <div data-id="1"> | ||
| 3135 | <span data-i18n="Summary">Summary</span> | ||
| 3136 | <small>1</small> | ||
| 3137 | </div> | ||
| 3138 | <div data-id="2"> | ||
| 3139 | <span data-i18n="Author's Note">Author's Note</span> | ||
| 3140 | <small>2</small> | ||
| 3141 | </div> | ||
| 3142 | <div data-id="3"> | ||
| 3143 | <span data-i18n="Example Dialogues">Example Dialogues</span> | ||
| 3144 | <small>3</small> | ||
| 3145 | </div> | ||
| 3146 | <div data-id="4"> | ||
| 3147 | <span data-i18n="Chat Start">Chat History</span> | ||
| 3148 | <small>4</small> | ||
| 3149 | </div> | ||
| 3150 | </div> | ||
| 3151 | <small> | ||
| 3152 | <b data-i18n="Hint">Hint:</b> | ||
| 3153 | <span data-i18n="In-Chat Position not affected"> | ||
| 3154 | Summary and Author's Note orders are only affected when they don't have an In-Chat position set. | ||
| 3155 | </span> | ||
| 3156 | </small> | ||
| 3157 | </div> | ||
| 3158 | </div> | 3248 | </div> |
| 3159 | </div> | 3249 | </div> |
| 3160 | <div> | 3250 | <div id="InstructSettingsColumn" class="flex-container flexNoGap flexFlowColumn flex1"> |
| 3161 | <h4 class="standoutHeader title_restorable"> | 3251 | <div id="instructSettingsBlock"> |
| 3162 | <div> | 3252 | <h4 class="standoutHeader title_restorable justifySpaceBetween"> |
| 3163 | <span data-i18n="Instruct Mode">Instruct Mode</span> | 3253 | <div class="flex-container"> |
| 3254 | <span data-i18n="Instruct Template">Instruct Template</span> | ||
| 3164 | <a href="https://docs.sillytavern.app/usage/core-concepts/instructmode/" class="notes-link" target="_blank"> | 3255 | <a href="https://docs.sillytavern.app/usage/core-concepts/instructmode/" class="notes-link" target="_blank"> |
| 3165 | <span class="fa-solid fa-circle-question note-link-span"></span> | 3256 | <span class="fa-solid fa-circle-question note-link-span"></span> |
| 3166 | </a> | 3257 | </a> |
| 3167 | </div> | 3258 | </div> |
| 3168 | <div class="flex-container"> | 3259 | <div class="flex-container"> |
| 3169 | <i data-newbie-hidden data-preset-manager-import="instruct" class="margin0 menu_button fa-solid fa-file-import" title="Import preset" data-i18n="[title]Import preset"></i> | 3260 | <label for="instruct_bind_to_context" class="checkbox_label flex1" title="Bind to Context
If enabled, Context templates will be automatically selected based on selected Instruct template name or by preference." data-i18n="[title]instruct_bind_to_context"> |
| 3170 | <i data-newbie-hidden data-preset-manager-export="instruct" class="margin0 menu_button fa-solid fa-file-export" title="Export preset" data-i18n="[title]Export preset"></i> | 3261 | <input id="instruct_bind_to_context" type="checkbox" style="display:none;" /> |
| 3171 | <i data-newbie-hidden data-preset-manager-restore="instruct" class="margin0 menu_button fa-solid fa-recycle" title="Restore current preset" data-i18n="[title]Restore current preset"></i> | 3262 | <small><i class="fa-solid fa-link menu_button margin0"></i></small> |
| 3172 | <i data-newbie-hidden data-preset-manager-delete="instruct" class="margin0 menu_button fa-solid fa-trash-can" title="Delete the preset" data-i18n="[title]Delete the preset"></i> | ||
| 3173 | </div> | ||
| 3174 | </h4> | ||
| 3175 | <div class="flex-container"> | ||
| 3176 | <label for="instruct_enabled" class="checkbox_label flex1"> | ||
| 3177 | <input id="instruct_enabled" type="checkbox" /> | ||
| 3178 | <span data-i18n="Enabled">Enabled</span> | ||
| 3179 | </label> | 3263 | </label> |
| 3180 | <label for="instruct_bind_to_context" class="checkbox_label flex1" title="If enabled, Context templates will be automatically selected based on selected Instruct template name or by preference." data-i18n="[title]instruct_bind_to_context"> | 3264 | <label for="instruct_enabled" class="checkbox_label flex1" title="Enable Instruct Mode" data-i18n="[title]instruct_enabled"> |
| 3181 | <input id="instruct_bind_to_context" type="checkbox" /> | 3265 | <input id="instruct_enabled" type="checkbox" style="display:none;" /> |
| 3182 | <span data-i18n="Bind to Context">Bind to Context</span> | 3266 | <small><i class="fa-solid fa-power-off menu_button margin0"></i></small> |
| 3183 | </label> | 3267 | </label> |
| 3184 | </div> | 3268 | </div> |
| 3185 | <label for="instruct_presets"> | 3269 | </h4> |
| 3186 | <span data-i18n="Presets">Presets</span> | 3270 | |
| 3187 | </label> | 3271 | <div class="flex-container" title="Select your current Instruct Template" data-i18n="[title]Select your current Instruct Template"> |
| 3188 | <div class="flex-container"> | ||
| 3189 | <select id="instruct_presets" data-preset-manager-for="instruct" class="flex1 text_pole"></select> | 3272 | <select id="instruct_presets" data-preset-manager-for="instruct" class="flex1 text_pole"></select> |
| 3273 | <div class="flex-container margin0 justifyCenter"> | ||
| 3190 | <input type="file" hidden data-preset-manager-file="instruct" accept=".json, .settings"> | 3274 | <input type="file" hidden data-preset-manager-file="instruct" accept=".json, .settings"> |
| 3191 | <i id="instruct_set_default" class="menu_button fa-solid fa-heart" title="Auto-select this preset on API connection." data-i18n="[title]Auto-select this preset on API connection"></i> | 3275 | <i data-preset-manager-update="instruct" class="menu_button fa-solid fa-save" title="Update current template" data-i18n="[title]Update current template"></i> |
| 3192 | <i data-newbie-hidden data-preset-manager-update="instruct" class="menu_button fa-solid fa-save" title="Update current preset" data-i18n="[title]Update current preset"></i> | 3276 | <i data-preset-manager-new="instruct" class="menu_button fa-solid fa-file-circle-plus" title="Save template as" data-i18n="[title]Save template as"></i> |
| 3193 | <i data-newbie-hidden data-preset-manager-new="instruct" class="menu_button fa-solid fa-file-circle-plus" title="Save preset as" data-i18n="[title]Save preset as"></i> | 3277 | <i data-preset-manager-import="instruct" class="displayNone menu_button fa-solid fa-file-import" title="Import template" data-i18n="[title]Import template"></i> |
| 3278 | <i data-preset-manager-export="instruct" class="displayNone menu_button fa-solid fa-file-export" title="Export template" data-i18n="[title]Export template"></i> | ||
| 3279 | <i data-preset-manager-restore="instruct" class="menu_button fa-solid fa-recycle" title="Restore current template" data-i18n="[title]Restore current template"></i> | ||
| 3280 | <i data-preset-manager-delete="instruct" class="menu_button fa-solid fa-trash-can" title="Delete template" data-i18n="[title]Delete template"></i> | ||
| 3281 | </div> | ||
| 3194 | </div> | 3282 | </div> |
| 3195 | <label data-newbie-hidden> | 3283 | <label> |
| 3196 | <small data-i18n="Activation Regex"> | 3284 | <small> |
| 3197 | Activation Regex | 3285 | <span data-i18n="Activation Regex">Activation Regex</span> |
| 3286 | <span class="fa-solid fa-circle-question" title="When connecting to an API or choosing a model, automatically activate this Instruct Template if the model name matches the provided regular expression."></span> | ||
| 3198 | </small> | 3287 | </small> |
| 3199 | </label> | 3288 | </label> |
| 3200 | <div data-newbie-hidden> | 3289 | <div> |
| 3201 | <textarea id="instruct_activation_regex" class="text_pole textarea_compact autoSetHeight" maxlength="5000" rows="1"></textarea> | 3290 | <input type="text" id="instruct_activation_regex" class="text_pole textarea_compact" placeholder="e.g. /llama(-)?[3|3.1]/i"> |
| 3202 | </div> | 3291 | </div> |
| 3203 | <div data-newbie-hidden> | 3292 | <div> |
| 3204 | <label for="instruct_wrap" class="checkbox_label"> | 3293 | <label for="instruct_wrap" class="checkbox_label"> |
| 3205 | <input id="instruct_wrap" type="checkbox" /> | 3294 | <input id="instruct_wrap" type="checkbox" /> |
| 3206 | <span data-i18n="Wrap Sequences with Newline">Wrap Sequences with Newline</span> | 3295 | <small data-i18n="Wrap Sequences with Newline">Wrap Sequences with Newline</small> |
| 3207 | </label> | 3296 | </label> |
| 3208 | <label for="instruct_macro" class="checkbox_label"> | 3297 | <label for="instruct_macro" class="checkbox_label"> |
| 3209 | <input id="instruct_macro" type="checkbox" /> | 3298 | <input id="instruct_macro" type="checkbox" /> |
| 3210 | <span data-i18n="Replace Macro in Sequences">Replace Macro in Sequences</span> | 3299 | <small data-i18n="Replace Macro in Sequences">Replace Macro in Sequences</small> |
| 3211 | </label> | 3300 | </label> |
| 3212 | <label for="instruct_skip_examples" class="checkbox_label"> | 3301 | <label for="instruct_skip_examples" class="checkbox_label"> |
| 3213 | <input id="instruct_skip_examples" type="checkbox" /> | 3302 | <input id="instruct_skip_examples" type="checkbox" /> |
| 3214 | <span data-i18n="Skip Example Dialogues Formatting">Skip Example Dialogues Formatting</span> | 3303 | <small data-i18n="Skip Example Dialogues Formatting">Skip Example Dialogues Formatting</small> |
| 3215 | </label> | ||
| 3216 | <label for="instruct_names" class="checkbox_label"> | ||
| 3217 | <input id="instruct_names" type="checkbox" /> | ||
| 3218 | <span data-i18n="Include Names">Include Names</span> | ||
| 3219 | </label> | ||
| 3220 | <label for="instruct_names_force_groups" class="checkbox_label indent20p"> | ||
| 3221 | <input id="instruct_names_force_groups" type="checkbox" /> | ||
| 3222 | <span data-i18n="Force for Groups and Personas">Force for Groups and Personas</span> | ||
| 3223 | </label> | ||
| 3224 | </div> | ||
| 3225 | <div data-newbie-hidden> | ||
| 3226 | <label> | ||
| 3227 | <small data-i18n="System Prompt">System Prompt</small> | ||
| 3228 | </label> | ||
| 3229 | <textarea id="instruct_system_prompt" class="text_pole textarea_compact autoSetHeight" rows="1"></textarea> | ||
| 3230 | </div> | ||
| 3231 | <div data-newbie-hidden class="inline-drawer wide100p flexFlowColumn"> | ||
| 3232 | <div class="inline-drawer-toggle inline-drawer-header"> | ||
| 3233 | <b><span data-i18n="Instruct Mode Sequences">Instruct Mode Sequences</span></b> | ||
| 3234 | <div class="fa-solid fa-circle-chevron-down inline-drawer-icon down"></div> | ||
| 3235 | </div> | ||
| 3236 | <div class="inline-drawer-content"> | ||
| 3237 | <h5 class="textAlignCenter" data-i18n="System Prompt Wrapping"> | ||
| 3238 | System Prompt Wrapping | ||
| 3239 | </h5> | ||
| 3240 | <div class="flex-container"> | ||
| 3241 | <div class="flex1" title="Inserted before a System prompt." data-i18n="[title]Inserted before a System prompt."> | ||
| 3242 | <label for="instruct_system_sequence_prefix"> | ||
| 3243 | <small data-i18n="System Prompt Prefix">System Prompt Prefix</small> | ||
| 3244 | </label> | ||
| 3245 | <div> | ||
| 3246 | <textarea id="instruct_system_sequence_prefix" class="text_pole textarea_compact autoSetHeight" maxlength="2000" placeholder="—" rows="1"></textarea> | ||
| 3247 | </div> | ||
| 3248 | </div> | ||
| 3249 | <div class="flex1" title="Inserted after a System prompt." data-i18n="[title]Inserted after a System prompt."> | ||
| 3250 | <label for="instruct_system_sequence_suffix"> | ||
| 3251 | <small data-i18n="System Prompt Suffix">System Prompt Suffix</small> | ||
| 3252 | </label> | 3304 | </label> |
| 3253 | <div> | 3305 | <div> |
| 3254 | <textarea id="instruct_system_sequence_suffix" class="text_pole wide100p textarea_compact autoSetHeight" maxlength="2000" placeholder="—" rows="1"></textarea> | 3306 | <small data-i18n="Include Names"> |
| 3307 | Include Names | ||
| 3308 | </small> | ||
| 3309 | <select id="instruct_names_behavior"> | ||
| 3310 | <option value="none" data-i18n="Never">Never</option> | ||
| 3311 | <option value="force" data-i18n="Groups and Past Personas">Groups and Past Personas</option> | ||
| 3312 | <option value="always" data-i18n="Always">Always</option> | ||
| 3313 | </select> | ||
| 3255 | </div> | 3314 | </div> |
| 3256 | </div> | 3315 | </div> |
| 3257 | </div> | 3316 | </div> |
| 3258 | <h5 class="textAlignCenter" data-i18n="Chat Messages Wrapping"> | 3317 | <div id="InstructSequencesColumn" class="wide100p flexFlowColumn"> |
| 3259 | Chat Messages Wrapping | 3318 | <h4 class="standoutHeader title_restorable"> |
| 3260 | </h5> | 3319 | <b> |
| 3320 | <span data-i18n="Instruct Sequences"> | ||
| 3321 | Instruct Sequences | ||
| 3322 | </span> | ||
| 3323 | </b> | ||
| 3324 | </h4> | ||
| 3325 | <!-- We keep one auto-open so the user would know what is going on in the picked template --> | ||
| 3326 | <details open> | ||
| 3327 | <summary>User Message Sequences</summary> | ||
| 3261 | <div class="flex-container"> | 3328 | <div class="flex-container"> |
| 3262 | <div class="flex1" title="Inserted before a User message and as a last prompt line when impersonating." data-i18n="[title]Inserted before a User message and as a last prompt line when impersonating."> | 3329 | <div class="flexAuto" title="Inserted before a User message and as a last prompt line when impersonating." data-i18n="[title]Inserted before a User message and as a last prompt line when impersonating."> |
| 3263 | <label for="instruct_input_sequence"> | 3330 | <small data-i18n="User Prefix">User Message Prefix</small> |
| 3264 | <small data-i18n="User Message Prefix">User Message Prefix</small> | 3331 | <textarea id="instruct_input_sequence" class="text_pole textarea_compact autoSetHeight"></textarea> |
| 3265 | </label> | ||
| 3266 | <div> | ||
| 3267 | <textarea id="instruct_input_sequence" class="text_pole textarea_compact autoSetHeight" maxlength="2000" placeholder="—" rows="1"></textarea> | ||
| 3268 | </div> | ||
| 3269 | </div> | ||
| 3270 | <div class="flex1" title="Inserted after a User message." data-i18n="[title]Inserted after a User message."> | ||
| 3271 | <label for="instruct_input_suffix"> | ||
| 3272 | <small data-i18n="User Message Suffix">User Message Suffix</small> | ||
| 3273 | </label> | ||
| 3274 | <div> | ||
| 3275 | <textarea id="instruct_input_suffix" class="text_pole wide100p textarea_compact autoSetHeight" maxlength="2000" placeholder="—" rows="1"></textarea> | ||
| 3276 | </div> | 3332 | </div> |
| 3333 | <div class="flexAuto" title="Inserted after a User message." data-i18n="[title]Inserted after a User message."> | ||
| 3334 | <small data-i18n="User Suffix">User Message Suffix</small> | ||
| 3335 | <textarea id="instruct_input_suffix" class="text_pole wide100p textarea_compact autoSetHeight"></textarea> | ||
| 3277 | </div> | 3336 | </div> |
| 3278 | </div> | 3337 | </div> |
| 3338 | </details> | ||
| 3339 | <details open> | ||
| 3340 | <summary>Assistant Message Sequences</summary> | ||
| 3279 | <div class="flex-container"> | 3341 | <div class="flex-container"> |
| 3280 | <div class="flex1" title="Inserted before an Assistant message and as a last prompt line when generating an AI reply." data-i18n="[title]Inserted before an Assistant message and as a last prompt line when generating an AI reply."> | 3342 | <div class="flexAuto" title="Inserted before an Assistant message and as a last prompt line when generating an AI reply." data-i18n="[title]Inserted before an Assistant message and as a last prompt line when generating an AI reply."> |
| 3281 | <label for="instruct_output_sequence"> | 3343 | <small data-i18n="Assistant Prefix">Assistant Message Prefix</small> |
| 3282 | <small data-i18n="Assistant Message Prefix">Assistant Message Prefix</small> | 3344 | <textarea id="instruct_output_sequence" class="text_pole wide100p textarea_compact autoSetHeight"></textarea> |
| 3283 | </label> | ||
| 3284 | <div> | ||
| 3285 | <textarea id="instruct_output_sequence" class="text_pole wide100p textarea_compact autoSetHeight" maxlength="2000" placeholder="—" rows="1"></textarea> | ||
| 3286 | </div> | ||
| 3287 | </div> | ||
| 3288 | <div class="flex1" title="Inserted after an Assistant message." data-i18n="[title]Inserted after an Assistant message."> | ||
| 3289 | <label for="instruct_output_suffix"> | ||
| 3290 | <small data-i18n="Assistant Message Suffix">Assistant Message Suffix</small> | ||
| 3291 | </label> | ||
| 3292 | <div> | ||
| 3293 | <textarea id="instruct_output_suffix" class="text_pole wide100p textarea_compact autoSetHeight" maxlength="2000" placeholder="—" rows="1"></textarea> | ||
| 3294 | </div> | 3345 | </div> |
| 3346 | <div class="flexAuto" title="Inserted after an Assistant message." data-i18n="[title]Inserted after an Assistant message."> | ||
| 3347 | <small data-i18n="Assistant Suffix">Assistant Message Suffix</small> | ||
| 3348 | <textarea id="instruct_output_suffix" class="text_pole wide100p textarea_compact autoSetHeight"></textarea> | ||
| 3295 | </div> | 3349 | </div> |
| 3296 | </div> | 3350 | </div> |
| 3351 | </details> | ||
| 3352 | <details> | ||
| 3353 | <summary>System Message Sequences</summary> | ||
| 3297 | <div class="flex-container"> | 3354 | <div class="flex-container"> |
| 3298 | <div class="flex1" title="Inserted before a System (added by slash commands or extensions) message." data-i18n="[title]Inserted before a System (added by slash commands or extensions) message."> | 3355 | <div class="flexAuto" id="instruct_system_sequence_block" title="Inserted before a System (added by slash commands or extensions) message." data-i18n="[title]Inserted before a System (added by slash commands or extensions) message."> |
| 3299 | <label for="instruct_system_sequence"> | 3356 | <small data-i18n="System Prefix">System Message Prefix</small> |
| 3300 | <small data-i18n="System Message Prefix">System Message Prefix</small> | 3357 | <textarea id="instruct_system_sequence" class="text_pole textarea_compact autoSetHeight"></textarea> |
| 3301 | </label> | ||
| 3302 | <div> | ||
| 3303 | <textarea id="instruct_system_sequence" class="text_pole textarea_compact autoSetHeight" maxlength="2000" placeholder="—" rows="1"></textarea> | ||
| 3304 | </div> | 3358 | </div> |
| 3305 | </div> | 3359 | <div class="flexAuto" id="instruct_system_suffix_block" title="Inserted after a System message." data-i18n="[title]Inserted after a System message."> |
| 3306 | <div class="flex1" title="Inserted after a System message." data-i18n="[title]Inserted after a System message."> | 3360 | <small data-i18n="System Suffix">System Message Suffix</small> |
| 3307 | <label for="instruct_system_suffix"> | 3361 | <textarea id="instruct_system_suffix" class="text_pole wide100p textarea_compact autoSetHeight"></textarea> |
| 3308 | <small data-i18n="System Message Suffix">System Message Suffix</small> | ||
| 3309 | </label> | ||
| 3310 | <div> | ||
| 3311 | <textarea id="instruct_system_suffix" class="text_pole wide100p textarea_compact autoSetHeight" maxlength="2000" placeholder="—" rows="1"></textarea> | ||
| 3312 | </div> | 3362 | </div> |
| 3313 | </div> | 3363 | </div> |
| 3314 | <div class="flexBasis100p" title="If enabled, System Sequences will be the same as User Sequences." data-i18n="[title]If enabled, System Sequences will be the same as User Sequences."> | 3364 | <div class="flexBasis100p" title="If enabled, System Sequences will be the same as User Sequences." data-i18n="[title]If enabled, System Sequences will be the same as User Sequences."> |
| @@ -3317,127 +3367,141 @@ | |||
| 3317 | <small data-i18n="System same as User">System same as User</small> | 3367 | <small data-i18n="System same as User">System same as User</small> |
| 3318 | </label> | 3368 | </label> |
| 3319 | </div> | 3369 | </div> |
| 3320 | </div> | 3370 | </details> |
| 3321 | <h5 class="textAlignCenter" data-i18n="Misc. Sequences"> | 3371 | <details> |
| 3322 | Misc. Sequences | 3372 | <summary>System Prompt Sequences</summary> |
| 3323 | </h5> | ||
| 3324 | <div class="flex-container"> | 3373 | <div class="flex-container"> |
| 3325 | <div class="flex1" title="Inserted before the first Assistant's message." data-i18n="[title]Inserted before the first Assistant's message."> | 3374 | <div class="flexAuto" title="Inserted before a System prompt." data-i18n="[title]Inserted before a System prompt."> |
| 3326 | <label for="instruct_first_output_sequence"> | 3375 | <label for="instruct_system_sequence_prefix"> |
| 3327 | <small data-i18n="First Assistant Prefix">First Assistant Prefix</small> | 3376 | <small data-i18n="System Prompt Prefix">System Prompt Prefix</small> |
| 3328 | </label> | 3377 | </label> |
| 3329 | <div> | 3378 | <div> |
| 3330 | <textarea id="instruct_first_output_sequence" class="text_pole textarea_compact autoSetHeight" maxlength="2000" placeholder="—" rows="1"></textarea> | 3379 | <textarea id="instruct_system_sequence_prefix" class="text_pole textarea_compact autoSetHeight"></textarea> |
| 3331 | </div> | 3380 | </div> |
| 3332 | </div> | 3381 | </div> |
| 3333 | <div class="flex1" title="Inserted before the last Assistant's message or as a last prompt line when generating an AI reply (except a neutral/system role)." data-i18n="[title]instruct_last_output_sequence"> | 3382 | <div class="flexAuto" title="Inserted after a System prompt." data-i18n="[title]Inserted after a System prompt."> |
| 3334 | <label for="instruct_last_output_sequence"> | 3383 | <label for="instruct_system_sequence_suffix"> |
| 3335 | <small data-i18n="Last Assistant Prefix">Last Assistant Prefix</small> | 3384 | <small data-i18n="System Prompt Suffix">System Prompt Suffix</small> |
| 3336 | </label> | 3385 | </label> |
| 3337 | <div> | 3386 | <div> |
| 3338 | <textarea id="instruct_last_output_sequence" class="text_pole wide100p textarea_compact autoSetHeight" maxlength="2000" placeholder="—" rows="1"></textarea> | 3387 | <textarea id="instruct_system_sequence_suffix" class="text_pole wide100p textarea_compact autoSetHeight"></textarea> |
| 3339 | </div> | 3388 | </div> |
| 3340 | </div> | 3389 | </div> |
| 3341 | </div> | 3390 | </div> |
| 3391 | </details> | ||
| 3392 | <details> | ||
| 3393 | <summary data-i18n="Misc. Sequences">Misc. Sequences</summary> | ||
| 3342 | <div class="flex-container"> | 3394 | <div class="flex-container"> |
| 3343 | <div class="flex1" title="Inserted before the first User's message." data-i18n="[title]Inserted before the first User's message."> | 3395 | <div class="flexAuto" title="Inserted before the first Assistant's message." data-i18n="[title]Inserted before the first Assistant's message."> |
| 3344 | <label for="instruct_first_input_sequence"> | 3396 | <small data-i18n="First Assistant Prefix">First Assistant Prefix</small> |
| 3345 | <small data-i18n="First User Prefix">First User Prefix</small> | 3397 | <textarea id="instruct_first_output_sequence" class="text_pole textarea_compact autoSetHeight"></textarea> |
| 3346 | </label> | ||
| 3347 | <div> | ||
| 3348 | <textarea id="instruct_first_input_sequence" class="text_pole textarea_compact autoSetHeight" maxlength="2000" placeholder="—" rows="1"></textarea> | ||
| 3349 | </div> | 3398 | </div> |
| 3399 | <div class="flexAuto" title="Inserted before the last Assistant's message or as a last prompt line when generating an AI reply (except a neutral/system role)." data-i18n="[title]instruct_last_output_sequence"> | ||
| 3400 | <small data-i18n="Last Assistant Prefix">Last Assistant Prefix</small> | ||
| 3401 | <textarea id="instruct_last_output_sequence" class="text_pole wide100p textarea_compact autoSetHeight"></textarea> | ||
| 3350 | </div> | 3402 | </div> |
| 3351 | <div class="flex1" title="Inserted before the last User's message." data-i18n="[title]instruct_last_input_sequence"> | ||
| 3352 | <label for="instruct_last_input_sequence"> | ||
| 3353 | <small data-i18n="Last User Prefix">Last User Prefix</small> | ||
| 3354 | </label> | ||
| 3355 | <div> | ||
| 3356 | <textarea id="instruct_last_input_sequence" class="text_pole wide100p textarea_compact autoSetHeight" maxlength="2000" placeholder="—" rows="1"></textarea> | ||
| 3357 | </div> | 3403 | </div> |
| 3404 | <div class="flex-container"> | ||
| 3405 | <div class="flexAuto" title="Inserted before the first User's message." data-i18n="[title]Inserted before the first User's message."> | ||
| 3406 | <small data-i18n="First User Prefix">First User Prefix</small> | ||
| 3407 | <textarea id="instruct_first_input_sequence" class="text_pole textarea_compact autoSetHeight"></textarea> | ||
| 3408 | </div> | ||
| 3409 | <div class="flexAuto" title="Inserted before the last User's message." data-i18n="[title]instruct_last_input_sequence"> | ||
| 3410 | <small data-i18n="Last User Prefix">Last User Prefix</small> | ||
| 3411 | <textarea id="instruct_last_input_sequence" class="text_pole wide100p textarea_compact autoSetHeight"></textarea> | ||
| 3358 | </div> | 3412 | </div> |
| 3359 | </div> | 3413 | </div> |
| 3360 | <div class="flex-container"> | 3414 | <div class="flex-container"> |
| 3361 | <div class="flex1" title="Will be inserted as a last prompt line when using system/neutral generation." data-i18n="[title]Will be inserted as a last prompt line when using system/neutral generation."> | 3415 | <div class="flexAuto" title="Will be inserted as a last prompt line when using system/neutral generation." data-i18n="[title]Will be inserted as a last prompt line when using system/neutral generation."> |
| 3362 | <label for="instruct_last_system_sequence"> | ||
| 3363 | <small data-i18n="System Instruction Prefix">System Instruction Prefix</small> | 3416 | <small data-i18n="System Instruction Prefix">System Instruction Prefix</small> |
| 3364 | </label> | 3417 | <textarea id="instruct_last_system_sequence" class="text_pole textarea_compact autoSetHeight"></textarea> |
| 3365 | <div> | ||
| 3366 | <textarea id="instruct_last_system_sequence" class="text_pole textarea_compact autoSetHeight" maxlength="2000" placeholder="—" rows="1"></textarea> | ||
| 3367 | </div> | ||
| 3368 | </div> | 3418 | </div> |
| 3369 | <div class="flex1" title="If a stop sequence is generated, everything past it will be removed from the output (inclusive)." data-i18n="[title]If a stop sequence is generated, everything past it will be removed from the output (inclusive)."> | 3419 | <div class="flexAuto" title="If a stop sequence is generated, everything past it will be removed from the output (inclusive)." data-i18n="[title]If a stop sequence is generated, everything past it will be removed from the output (inclusive)."> |
| 3370 | <label for="instruct_stop_sequence"> | ||
| 3371 | <small data-i18n="Stop Sequence">Stop Sequence</small> | 3420 | <small data-i18n="Stop Sequence">Stop Sequence</small> |
| 3372 | </label> | 3421 | <textarea id="instruct_stop_sequence" class="text_pole textarea_compact autoSetHeight"></textarea> |
| 3373 | <div> | ||
| 3374 | <textarea id="instruct_stop_sequence" class="text_pole textarea_compact autoSetHeight" maxlength="2000" placeholder="—" rows="1"></textarea> | ||
| 3375 | </div> | ||
| 3376 | </div> | 3422 | </div> |
| 3377 | </div> | 3423 | </div> |
| 3378 | <div class="flex-container"> | 3424 | <div class="flex-container"> |
| 3379 | <div class="flex1" title="Will be inserted at the start of the chat history if it doesn't start with a User message." data-i18n="[title]Will be inserted at the start of the chat history if it doesn't start with a User message."> | 3425 | <div class="flexAuto" title="Will be inserted at the start of the chat history if it doesn't start with a User message." data-i18n="[title]Will be inserted at the start of the chat history if it doesn't start with a User message."> |
| 3380 | <label for="instruct_user_alignment_message"> | ||
| 3381 | <small data-i18n="User Filler Message">User Filler Message</small> | 3426 | <small data-i18n="User Filler Message">User Filler Message</small> |
| 3382 | </label> | 3427 | <textarea id="instruct_user_alignment_message" class="text_pole textarea_compact autoSetHeight"></textarea> |
| 3383 | <div> | 3428 | </div> |
| 3384 | <textarea id="instruct_user_alignment_message" class="text_pole textarea_compact autoSetHeight" maxlength="2000" placeholder="—" rows="1"></textarea> | ||
| 3385 | </div> | 3429 | </div> |
| 3430 | </details> | ||
| 3386 | </div> | 3431 | </div> |
| 3387 | </div> | 3432 | </div> |
| 3433 | <div id="SystemPromptColumn" class="flex-container flexNoGap flexFlowColumn flex1"> | ||
| 3434 | <div id="SystemPromptBlock"> | ||
| 3435 | <h4 class="standoutHeader title_restorable justifySpaceBetween"> | ||
| 3436 | <div class="flex-container"> | ||
| 3437 | <span data-i18n="System Prompt">System Prompt</span> | ||
| 3438 | <a href="https://docs.sillytavern.app/usage/core-concepts/advancedformatting/#system-prompt" class="notes-link" target="_blank"> | ||
| 3439 | <span class="fa-solid fa-circle-question note-link-span"></span> | ||
| 3440 | </a> | ||
| 3388 | </div> | 3441 | </div> |
| 3442 | <div class="flex-container"> | ||
| 3443 | <label for="sysprompt_enabled" class="checkbox_label flex1" title="Enable System Prompt" data-i18n="[title]sysprompt_enabled"> | ||
| 3444 | <input id="sysprompt_enabled" type="checkbox" style="display:none;" /> | ||
| 3445 | <small><i class="fa-solid fa-power-off menu_button margin0"></i></small> | ||
| 3446 | </label> | ||
| 3389 | </div> | 3447 | </div> |
| 3448 | </h4> | ||
| 3449 | |||
| 3450 | <div class="flex-container" title="Select your current System Prompt" data-i18n="[title]Select your current System Prompt"> | ||
| 3451 | <select id="sysprompt_select" data-preset-manager-for="sysprompt" class="flex1 text_pole"></select> | ||
| 3452 | <div class="flex-container margin0 justifyCenter"> | ||
| 3453 | <input type="file" hidden data-preset-manager-file="sysprompt" accept=".json, .settings"> | ||
| 3454 | <i data-preset-manager-update="sysprompt" class="menu_button fa-solid fa-save" title="Update current prompt" data-i18n="[title]Update current prompt"></i> | ||
| 3455 | <i data-preset-manager-new="sysprompt" class="menu_button fa-solid fa-file-circle-plus" title="Save prompt as" data-i18n="[title]Save prompt as"></i> | ||
| 3456 | <i data-preset-manager-import="sysprompt" class="displayNone menu_button fa-solid fa-file-import" title="Import template" data-i18n="[title]Import template"></i> | ||
| 3457 | <i data-preset-manager-export="sysprompt" class="displayNone menu_button fa-solid fa-file-export" title="Export template" data-i18n="[title]Export template"></i> | ||
| 3458 | <i data-preset-manager-restore="sysprompt" class="menu_button fa-solid fa-recycle" title="Restore current prompt" data-i18n="[title]Restore current prompt"></i> | ||
| 3459 | <i data-preset-manager-delete="sysprompt" class="menu_button fa-solid fa-trash-can" title="Delete prompt" data-i18n="[title]Delete prompt"></i> | ||
| 3390 | </div> | 3460 | </div> |
| 3391 | </div> | 3461 | </div> |
| 3392 | <div id="ContextFormatting"> | 3462 | |
| 3393 | <div> | 3463 | <div> |
| 3394 | <div class="flex-container alignItemsBaseline"> | 3464 | <label for="sysprompt_content" class="flex-container"> |
| 3395 | <h4 data-i18n="Context Formatting"> | 3465 | <small data-i18n="Prompt Content">Prompt Content</small> |
| 3396 | Context Formatting | 3466 | <i class="editor_maximize fa-solid fa-maximize right_menu_button" data-for="sysprompt_content" title="Expand the editor" data-i18n="[title]Expand the editor"></i> |
| 3467 | </label> | ||
| 3468 | <textarea id="sysprompt_content" class="text_pole textarea_compact autoSetHeight"></textarea> | ||
| 3469 | </div> | ||
| 3470 | </div> | ||
| 3471 | |||
| 3472 | <div> | ||
| 3473 | | ||
| 3474 | </div> | ||
| 3475 | |||
| 3476 | <div> | ||
| 3477 | <h4 class="range-block-title justifyLeft standoutHeader"> | ||
| 3478 | <span data-i18n="Custom Stopping Strings"> | ||
| 3479 | Custom Stopping Strings | ||
| 3480 | </span> | ||
| 3481 | <a href="https://docs.sillytavern.app/usage/core-concepts/advancedformatting/#custom-stopping-strings" class="notes-link" target="_blank"> | ||
| 3482 | <span class="fa-solid fa-circle-question note-link-span"></span> | ||
| 3483 | </a> | ||
| 3397 | </h4> | 3484 | </h4> |
| 3398 | <small data-i18n="(Saved to Context Template)"> | 3485 | <div> |
| 3399 | (Saved to Context Template) | 3486 | <small> |
| 3487 | <span data-i18n="JSON serialized array of strings">JSON serialized array of strings</span> | ||
| 3488 | <i class="fa-solid fa-question-circle opacity50p" title="e.g: ["Ford", "BMW", "Fiat"]"></i> | ||
| 3400 | </small> | 3489 | </small> |
| 3401 | </div> | 3490 | </div> |
| 3402 | <label class="checkbox_label" for="always-force-name2-checkbox"> | 3491 | <div> |
| 3403 | <input id="always-force-name2-checkbox" type="checkbox" /> | 3492 | <textarea id="custom_stopping_strings" class="text_pole textarea_compact monospace autoSetHeight"></textarea> |
| 3404 | <span data-i18n="Always add character's name to prompt"> | ||
| 3405 | Always add character's name to prompt | ||
| 3406 | </span> | ||
| 3407 | </label> | ||
| 3408 | <label class="checkbox_label" for="single_line"> | ||
| 3409 | <input id="single_line" type="checkbox" /> | ||
| 3410 | <span data-i18n="Generate only one line per request"> | ||
| 3411 | Generate only one line per request | ||
| 3412 | </span> | ||
| 3413 | </label> | ||
| 3414 | <label class="checkbox_label" for="trim_sentences_checkbox"> | ||
| 3415 | <input id="trim_sentences_checkbox" type="checkbox" /> | ||
| 3416 | <span data-i18n="Trim Incomplete Sentences"> | ||
| 3417 | Trim Incomplete Sentences | ||
| 3418 | </span> | ||
| 3419 | </label> | ||
| 3420 | <!-- Add margin since this is a child of above --> | ||
| 3421 | <label data-newbie-hidden class="checkbox_label indent20p" for="include_newline_checkbox"> | ||
| 3422 | <input id="include_newline_checkbox" type="checkbox" /> | ||
| 3423 | <span data-i18n="Include Newline">Include Newline</span> | ||
| 3424 | </label> | ||
| 3425 | </div> | 3493 | </div> |
| 3426 | <h4 data-i18n="Misc. Settings"> | 3494 | <label class="checkbox_label" for="custom_stopping_strings_macro"> |
| 3427 | Misc. Settings | 3495 | <input id="custom_stopping_strings_macro" type="checkbox" checked> |
| 3428 | </h4> | 3496 | <small data-i18n="Replace Macro in Custom Stopping Strings"> |
| 3429 | <label class="checkbox_label" for="collapse-newlines-checkbox"> | 3497 | Replace Macro in Custom Stopping Strings |
| 3430 | <input id="collapse-newlines-checkbox" type="checkbox" /> | 3498 | </small> |
| 3431 | <span data-i18n="Collapse Consecutive Newlines"> | ||
| 3432 | Collapse Consecutive Newlines | ||
| 3433 | </span> | ||
| 3434 | </label> | ||
| 3435 | <label data-newbie-hidden class="checkbox_label" for="trim_spaces"> | ||
| 3436 | <input id="trim_spaces" type="checkbox" /> | ||
| 3437 | <span data-i18n="Trim spaces">Trim spaces</span> | ||
| 3438 | </label> | 3499 | </label> |
| 3439 | <div data-newbie-hidden> | 3500 | </div> |
| 3440 | <h4><span data-i18n="Tokenizer">Tokenizer</span> | 3501 | |
| 3502 | <div name="tokenizerSettingsBlock"> | ||
| 3503 | <div name="tokenizerSelectorBlock"> | ||
| 3504 | <h4 class="standoutHeader"><span data-i18n="Tokenizer">Tokenizer</span> | ||
| 3441 | <a href="https://docs.sillytavern.app/usage/core-concepts/advancedformatting/#tokenizer" class="notes-link" target="_blank"> | 3505 | <a href="https://docs.sillytavern.app/usage/core-concepts/advancedformatting/#tokenizer" class="notes-link" target="_blank"> |
| 3442 | <span class="fa-solid fa-circle-question note-link-span"></span> | 3506 | <span class="fa-solid fa-circle-question note-link-span"></span> |
| 3443 | </a> | 3507 | </a> |
| @@ -3450,99 +3514,59 @@ | |||
| 3450 | <option value="3">Llama 1/2</option> | 3514 | <option value="3">Llama 1/2</option> |
| 3451 | <option value="12">Llama 3</option> | 3515 | <option value="12">Llama 3</option> |
| 3452 | <option value="13">Gemma / Gemini</option> | 3516 | <option value="13">Gemma / Gemini</option> |
| 3517 | <option value="14">Jamba</option> | ||
| 3518 | <option value="15">Qwen2</option> | ||
| 3519 | <option value="16">Command-R</option> | ||
| 3453 | <option value="4">NerdStash (NovelAI Clio)</option> | 3520 | <option value="4">NerdStash (NovelAI Clio)</option> |
| 3454 | <option value="5">NerdStash v2 (NovelAI Kayra)</option> | 3521 | <option value="5">NerdStash v2 (NovelAI Kayra)</option> |
| 3455 | <option value="7">Mistral</option> | 3522 | <option value="7">Mistral V1</option> |
| 3523 | <option value="17">Mistral Nemo</option> | ||
| 3456 | <option value="8">Yi</option> | 3524 | <option value="8">Yi</option> |
| 3457 | <option value="11">Claude 1/2</option> | 3525 | <option value="11">Claude 1/2</option> |
| 3458 | <option value="6">API (WebUI / koboldcpp)</option> | 3526 | <option value="6">API (WebUI / koboldcpp)</option> |
| 3459 | </select> | 3527 | </select> |
| 3460 | </div> | 3528 | </div> |
| 3461 | <div class="range-block" data-newbie-hidden> | 3529 | <div class="range-block flex-container flexnowrap" name="tokenPaddingBlock"> |
| 3462 | <div class="range-block-title justifyLeft"> | 3530 | <div class="range-block-title justifyLeft"> |
| 3463 | <span data-i18n="Token Padding">Token Padding</span> | 3531 | <small data-i18n="Token Padding" class="flex-container">Token Padding |
| 3464 | <a href="https://docs.sillytavern.app/usage/core-concepts/advancedformatting/#token-padding" class="notes-link" target="_blank"> | 3532 | <a href="https://docs.sillytavern.app/usage/core-concepts/advancedformatting/#token-padding" class="notes-link" target="_blank"> |
| 3465 | <span class="fa-solid fa-circle-question note-link-span"></span> | 3533 | <span class="fa-solid fa-circle-question note-link-span"></span> |
| 3466 | </a> | 3534 | </a> |
| 3535 | </small> | ||
| 3467 | </div> | 3536 | </div> |
| 3468 | <input id="token_padding" class="text_pole textarea_compact" type="number" min="-2048" max="2048" /> | 3537 | <input id="token_padding" class="text_pole textarea_compact" type="number" min="-2048" max="2048" /> |
| 3469 | </div> | 3538 | </div> |
| 3470 | <div class="flex-container flexFlowColumn" data-newbie-hidden> | ||
| 3471 | <div> | ||
| 3472 | <h4 class="range-block-title justifyLeft"> | ||
| 3473 | <span data-i18n="Start Reply With"> | ||
| 3474 | Start Reply With | ||
| 3475 | </span> | ||
| 3476 | </h4> | ||
| 3477 | <div> | ||
| 3478 | <textarea id="start_reply_with" rows="2" class="text_pole textarea_compact" data-i18n="[placeholder]AI reply prefix" placeholder="AI reply prefix"></textarea> | ||
| 3479 | </div> | ||
| 3480 | <label class="checkbox_label" for="chat-show-reply-prefix-checkbox"> | ||
| 3481 | <input id="chat-show-reply-prefix-checkbox" type="checkbox" /> | ||
| 3482 | <span data-i18n="Show reply prefix in chat"> | ||
| 3483 | Show reply prefix in chat | ||
| 3484 | </span> | ||
| 3485 | </label> | ||
| 3486 | </div> | 3539 | </div> |
| 3487 | <div> | 3540 | <div> |
| 3488 | <h4 class="range-block-title justifyLeft"> | 3541 | <h4 class="standoutHeader" data-i18n="Miscellaneous">Miscellaneous</h4> |
| 3542 | <div> | ||
| 3543 | <small> | ||
| 3489 | <span data-i18n="Non-markdown strings"> | 3544 | <span data-i18n="Non-markdown strings"> |
| 3490 | Non-markdown strings | 3545 | Non-markdown strings |
| 3491 | </span> | 3546 | </span> |
| 3492 | </h4> | 3547 | </small> |
| 3493 | <div> | 3548 | <div> |
| 3494 | <input id="markdown_escape_strings" class="text_pole textarea_compact" type="text" data-i18n="[placeholder]separate with commas w/o space between" placeholder="separate with commas w/o space between" maxlength="100" /> | 3549 | <input id="markdown_escape_strings" class="text_pole textarea_compact" type="text" data-i18n="[placeholder]comma delimited,no spaces between" placeholder="comma delimited,no spaces between" /> |
| 3495 | </div> | 3550 | </div> |
| 3496 | </div> | 3551 | </div> |
| 3497 | <div> | 3552 | |
| 3498 | <h4 class="range-block-title justifyLeft"> | 3553 | <div name="startReplyWithBlock"> |
| 3499 | <span data-i18n="Custom Stopping Strings"> | ||
| 3500 | Custom Stopping Strings | ||
| 3501 | </span> | ||
| 3502 | <a href="https://docs.sillytavern.app/usage/core-concepts/advancedformatting/#custom-stopping-strings" class="notes-link" target="_blank"> | ||
| 3503 | <span class="fa-solid fa-circle-question note-link-span"></span> | ||
| 3504 | </a> | ||
| 3505 | </h4> | ||
| 3506 | <div> | 3554 | <div> |
| 3507 | <small> | 3555 | <small> |
| 3508 | <span data-i18n="JSON serialized array of strings">JSON serialized array of strings</span> | 3556 | <span data-i18n="Start Reply With"> |
| 3557 | Start Reply With | ||
| 3558 | </span> | ||
| 3509 | </small> | 3559 | </small> |
| 3510 | </div> | ||
| 3511 | <div> | 3560 | <div> |
| 3512 | <textarea id="custom_stopping_strings" rows="2" class="text_pole textarea_compact monospace" placeholder="["Ford", "BMW", "Fiat"]"></textarea> | 3561 | <textarea id="start_reply_with" class="text_pole textarea_compact autoSetHeight"></textarea> |
| 3513 | </div> | ||
| 3514 | <label class="checkbox_label" for="custom_stopping_strings_macro"> | ||
| 3515 | <input id="custom_stopping_strings_macro" type="checkbox" checked> | ||
| 3516 | <span data-i18n="Replace Macro in Custom Stopping Strings"> | ||
| 3517 | Replace Macro in Custom Stopping Strings | ||
| 3518 | </span> | ||
| 3519 | </label> | ||
| 3520 | </div> | ||
| 3521 | </div> | 3562 | </div> |
| 3522 | <div data-newbie-hidden> | 3563 | <label class="checkbox_label" for="chat-show-reply-prefix-checkbox"> |
| 3523 | <h4> | 3564 | <input id="chat-show-reply-prefix-checkbox" type="checkbox" /> |
| 3524 | <span data-i18n="Auto-Continue">Auto-Continue</span> | 3565 | <small data-i18n="Show reply prefix in chat"> |
| 3525 | </h4> | 3566 | Show reply prefix in chat |
| 3526 | <div class="flex-container"> | 3567 | </small> |
| 3527 | <label class="checkbox_label" for="auto_continue_enabled"> | ||
| 3528 | <input id="auto_continue_enabled" type="checkbox" /> | ||
| 3529 | <span data-i18n="Enabled"> | ||
| 3530 | Enabled | ||
| 3531 | </span> | ||
| 3532 | </label> | ||
| 3533 | <label class="checkbox_label" for="auto_continue_allow_chat_completions"> | ||
| 3534 | <input id="auto_continue_allow_chat_completions" type="checkbox" /> | ||
| 3535 | <span data-i18n="Allow for Chat Completion APIs"> | ||
| 3536 | Allow for Chat Completion APIs | ||
| 3537 | </span> | ||
| 3538 | </label> | 3568 | </label> |
| 3539 | </div> | 3569 | </div> |
| 3540 | |||
| 3541 | <div class="auto_continue_settings_block"> | ||
| 3542 | <label for="auto_continue_target_length"> | ||
| 3543 | <span data-i18n="Target length (tokens)">Target length (tokens)</span> | ||
| 3544 | <input id="auto_continue_target_length" type="number" class="text_pole textarea_compact" min="0" max="1024" /> | ||
| 3545 | </label> | ||
| 3546 | </div> | 3570 | </div> |
| 3547 | </div> | 3571 | </div> |
| 3548 | </div> | 3572 | </div> |
| @@ -3551,16 +3575,18 @@ | |||
| 3551 | </div> | 3575 | </div> |
| 3552 | <div id="WI-SP-button" class="drawer"> | 3576 | <div id="WI-SP-button" class="drawer"> |
| 3553 | <div class="drawer-toggle drawer-header"> | 3577 | <div class="drawer-toggle drawer-header"> |
| 3554 | <div id="WIDrawerIcon" class="drawer-icon fa-solid fa-book-atlas closedIcon " title="World Info" data-i18n="[title]World Info"></div> | 3578 | <div id="WIDrawerIcon" class="drawer-icon fa-solid fa-book-atlas fa-fw closedIcon " title="World Info" data-i18n="[title]World Info"></div> |
| 3555 | </div> | 3579 | </div> |
| 3556 | <div id="WorldInfo" class="drawer-content closedDrawer"> | 3580 | <div id="WorldInfo" class="drawer-content closedDrawer"> |
| 3557 | <div id="WorldInfoheader" class="fa-solid fa-grip drag-grabber"></div> | 3581 | <div id="WorldInfoheader" class="fa-solid fa-grip drag-grabber"></div> |
| 3558 | <div id="WI_panel_pin_div" class="flex-container alignitemscenter gap10px" title="Locked = World Editor will stay open" data-i18n="[title]Locked = World Editor will stay open"> | 3582 | <div class="flex-container alignitemscenter gap10px"> |
| 3583 | <div id="WI_panel_pin_div" title="Locked = World Editor will stay open" data-i18n="[title]Locked = World Editor will stay open"> | ||
| 3559 | <input type="checkbox" id="WI_panel_pin"> | 3584 | <input type="checkbox" id="WI_panel_pin"> |
| 3560 | <label for="WI_panel_pin"> | 3585 | <label for="WI_panel_pin"> |
| 3561 | <div class="unchecked fa-solid fa-unlock "></div> | 3586 | <div class="unchecked fa-solid fa-unlock "></div> |
| 3562 | <div class="checked fa-solid fa-lock "></div> | 3587 | <div class="checked fa-solid fa-lock "></div> |
| 3563 | </label> | 3588 | </label> |
| 3589 | </div> | ||
| 3564 | <h3 class="margin0"> | 3590 | <h3 class="margin0"> |
| 3565 | <span data-i18n="Worlds/Lorebooks">Worlds/Lorebooks</span> | 3591 | <span data-i18n="Worlds/Lorebooks">Worlds/Lorebooks</span> |
| 3566 | <a href="https://docs.sillytavern.app/usage/core-concepts/worldinfo/" class="notes-link" target="_blank"> | 3592 | <a href="https://docs.sillytavern.app/usage/core-concepts/worldinfo/" class="notes-link" target="_blank"> |
| @@ -3750,7 +3776,7 @@ | |||
| 3750 | </div> | 3776 | </div> |
| 3751 | <div id="user-settings-button" class="drawer"> | 3777 | <div id="user-settings-button" class="drawer"> |
| 3752 | <div class="drawer-toggle"> | 3778 | <div class="drawer-toggle"> |
| 3753 | <div class="drawer-icon fa-solid fa-user-cog closedIcon" title="User Settings" data-i18n="[title]User Settings"></div> | 3779 | <div class="drawer-icon fa-solid fa-user-cog fa-fw closedIcon" title="User Settings" data-i18n="[title]User Settings"></div> |
| 3754 | </div> | 3780 | </div> |
| 3755 | <div id="user-settings-block" class="drawer-content closedDrawer"> | 3781 | <div id="user-settings-block" class="drawer-content closedDrawer"> |
| 3756 | <div class="flex-container flexFlowColumn"> | 3782 | <div class="flex-container flexFlowColumn"> |
| @@ -3758,10 +3784,6 @@ | |||
| 3758 | <div class="flex-container"> | 3784 | <div class="flex-container"> |
| 3759 | <div class="flex-container flexnowrap alignItemsBaseline"> | 3785 | <div class="flex-container flexnowrap alignItemsBaseline"> |
| 3760 | <h3 class="margin0"><span data-i18n="User Settings">User Settings</span></h3> | 3786 | <h3 class="margin0"><span data-i18n="User Settings">User Settings</span></h3> |
| 3761 | <select id="ui_mode_select" class="margin0 widthNatural"> | ||
| 3762 | <option value="0" data-i18n="Simple">Simple</option> | ||
| 3763 | <option value="1" data-i18n="Advanced">Advanced</option> | ||
| 3764 | </select> | ||
| 3765 | </div> | 3787 | </div> |
| 3766 | </div> | 3788 | </div> |
| 3767 | <div id="UI-language-block" class="flex-container alignItemsBaseline"> | 3789 | <div id="UI-language-block" class="flex-container alignItemsBaseline"> |
| @@ -3792,7 +3814,7 @@ | |||
| 3792 | </div> | 3814 | </div> |
| 3793 | </div> | 3815 | </div> |
| 3794 | <div id="user-settings-block-content" class="flex-container spaceEvenly"> | 3816 | <div id="user-settings-block-content" class="flex-container spaceEvenly"> |
| 3795 | <div name="UserSettingsFirstColumn" id="UI-Theme-Block" class="flex-container flexFlowColumn wide100p"> | 3817 | <div name="UserSettingsFirstColumn" id="UI-Theme-Block" class="flex-container flexFlowColumn wide100p flex1"> |
| 3796 | <div id="UI-presets-block" class="flex-container flexFlowColumn"> | 3818 | <div id="UI-presets-block" class="flex-container flexFlowColumn"> |
| 3797 | <h4 class="title_restorable"> | 3819 | <h4 class="title_restorable"> |
| 3798 | <span data-i18n="UI Theme">UI Theme</span> | 3820 | <span data-i18n="UI Theme">UI Theme</span> |
| @@ -3820,10 +3842,10 @@ | |||
| 3820 | </div> | 3842 | </div> |
| 3821 | </div> | 3843 | </div> |
| 3822 | </div> | 3844 | </div> |
| 3823 | <div name="themeElements" data-newbie-hidden class="flex-container flexFlowColumn flexNoGap"> | 3845 | <div name="themeElements" class="flex-container flexFlowColumn flexNoGap"> |
| 3824 | <!-- <h4><span data-i18n="UI Colors">Theme Settings</span></h4> --> | 3846 | <!-- <h4><span data-i18n="UI Colors">Theme Settings</span></h4> --> |
| 3825 | <div name="AvatarAndChatDisplay" class="flex-container flexFlowColumn"> | 3847 | <div name="AvatarAndChatDisplay" class="flex-container flexFlowColumn"> |
| 3826 | <div class="flex-container"> | 3848 | <div class="flex-container alignItemsBaseline"> |
| 3827 | <span data-i18n="Avatar Style">Avatars:</span> | 3849 | <span data-i18n="Avatar Style">Avatars:</span> |
| 3828 | <select id="avatar_style" class="widthNatural flex1 margin0"> | 3850 | <select id="avatar_style" class="widthNatural flex1 margin0"> |
| 3829 | <option value="0" data-i18n="Circle">Circle</option> | 3851 | <option value="0" data-i18n="Circle">Circle</option> |
| @@ -3831,16 +3853,16 @@ | |||
| 3831 | <option value="1" data-i18n="Rectangle">Rectangle</option> | 3853 | <option value="1" data-i18n="Rectangle">Rectangle</option> |
| 3832 | </select> | 3854 | </select> |
| 3833 | </div> | 3855 | </div> |
| 3834 | <div class="flex-container"> | 3856 | <div class="flex-container alignItemsBaseline"> |
| 3835 | <span data-i18n="Chat Style:">Chat Style:</span><br> | 3857 | <span data-i18n="Chat Style:">Chat Style:</span><br> |
| 3836 | <select id="chat_display" class="widthNatural flex1 margin0"> | 3858 | <select id="chat_display" class="widthNatural flex1 margin0"> |
| 3837 | <option value="0" data-i18n="Flat">Flat</span> | 3859 | <option value="0" data-i18n="Flat">Flat</option> |
| 3838 | <option value="1" data-i18n="Bubbles">Bubbles</option> | 3860 | <option value="1" data-i18n="Bubbles">Bubbles</option> |
| 3839 | <option value="2" data-i18n="Document">Document</option> | 3861 | <option value="2" data-i18n="Document">Document</option> |
| 3840 | </select> | 3862 | </select> |
| 3841 | </div> | 3863 | </div> |
| 3842 | </div> | 3864 | </div> |
| 3843 | <div data-newbie-hidden class="inline-drawer wide100p flexFlowColumn"> | 3865 | <div class="inline-drawer wide100p flexFlowColumn"> |
| 3844 | <div class="inline-drawer-toggle inline-drawer-header userSettingsInnerExpandable" title="Specify colors for your theme." data-i18n="[title]Specify colors for your theme."> | 3866 | <div class="inline-drawer-toggle inline-drawer-header userSettingsInnerExpandable" title="Specify colors for your theme." data-i18n="[title]Specify colors for your theme."> |
| 3845 | <b><span data-i18n="Theme Colors">Theme Colors</span></b> | 3867 | <b><span data-i18n="Theme Colors">Theme Colors</span></b> |
| 3846 | <div class="fa-solid fa-circle-chevron-down inline-drawer-icon down"></div> | 3868 | <div class="fa-solid fa-circle-chevron-down inline-drawer-icon down"></div> |
| @@ -3891,7 +3913,7 @@ | |||
| 3891 | </div> | 3913 | </div> |
| 3892 | </div> | 3914 | </div> |
| 3893 | <hr> | 3915 | <hr> |
| 3894 | <div data-newbie-hidden name="FontBlurChatWidthBlock" class="flex-container"> | 3916 | <div name="FontBlurChatWidthBlock" class="flex-container"> |
| 3895 | 3917 | ||
| 3896 | <div class="alignitemscenter flex-container flexFlowColumn flexBasis48p flexGrow flexShrink gap0"> | 3918 | <div class="alignitemscenter flex-container flexFlowColumn flexBasis48p flexGrow flexShrink gap0"> |
| 3897 | <small> | 3919 | <small> |
| @@ -3907,8 +3929,8 @@ | |||
| 3907 | <span data-i18n="Font Scale">Font Scale</span> | 3929 | <span data-i18n="Font Scale">Font Scale</span> |
| 3908 | <div class="fa-solid fa-circle-info opacity50p" data-i18n="[title]Font size" title="Font size"></div> | 3930 | <div class="fa-solid fa-circle-info opacity50p" data-i18n="[title]Font size" title="Font size"></div> |
| 3909 | </small> | 3931 | </small> |
| 3910 | <input class="neo-range-slider" type="range" id="font_scale" name="font_scale" min="0.8" max="1.2" step="0.01"> | 3932 | <input class="neo-range-slider" type="range" id="font_scale" name="font_scale" min="0.5" max="1.5" step="0.01"> |
| 3911 | <input class="neo-range-input" type="number" min="0.8" max="1.2" step="0.01" data-for="font_scale" id="font_scale_counter"> | 3933 | <input class="neo-range-input" type="number" min="0.5" max="1.5" step="0.01" data-for="font_scale" id="font_scale_counter"> |
| 3912 | </div> | 3934 | </div> |
| 3913 | 3935 | ||
| 3914 | <div class="alignitemscenter flex-container flexFlowColumn flexBasis48p flexGrow flexShrink gap0"> | 3936 | <div class="alignitemscenter flex-container flexFlowColumn flexBasis48p flexGrow flexShrink gap0"> |
| @@ -3937,11 +3959,11 @@ | |||
| 3937 | <input id="reduced_motion" type="checkbox" /> | 3959 | <input id="reduced_motion" type="checkbox" /> |
| 3938 | <small data-i18n="Reduced Motion">Reduced Motion</small> | 3960 | <small data-i18n="Reduced Motion">Reduced Motion</small> |
| 3939 | </label> | 3961 | </label> |
| 3940 | <label data-newbie-hidden for="fast_ui_mode" class="checkbox_label" title="Remove blur from window backgrounds, for faster rendering." data-i18n="[title]removes blur from window backgrounds"> | 3962 | <label for="fast_ui_mode" class="checkbox_label" title="Remove blur from window backgrounds, for faster rendering." data-i18n="[title]removes blur from window backgrounds"> |
| 3941 | <input id="fast_ui_mode" type="checkbox" /> | 3963 | <input id="fast_ui_mode" type="checkbox" /> |
| 3942 | <small data-i18n="No Blur Effect">No Blur Effect</small> | 3964 | <small data-i18n="No Blur Effect">No Blur Effect</small> |
| 3943 | </label> | 3965 | </label> |
| 3944 | <label data-newbie-hidden for="noShadowsmode" class="checkbox_label" title="Remove text shadow effect." data-i18n="[title]Remove text shadow effect"> | 3966 | <label for="noShadowsmode" class="checkbox_label" title="Remove text shadow effect." data-i18n="[title]Remove text shadow effect"> |
| 3945 | <input id="noShadowsmode" type="checkbox" /> | 3967 | <input id="noShadowsmode" type="checkbox" /> |
| 3946 | <small data-i18n="No Text Shadows">No Text Shadows</small> | 3968 | <small data-i18n="No Text Shadows">No Text Shadows</small> |
| 3947 | </label> | 3969 | </label> |
| @@ -3949,39 +3971,39 @@ | |||
| 3949 | <input id="waifuMode" type="checkbox" /> | 3971 | <input id="waifuMode" type="checkbox" /> |
| 3950 | <small data-i18n="Waifu Mode">Visual Novel Mode</small> | 3972 | <small data-i18n="Waifu Mode">Visual Novel Mode</small> |
| 3951 | </label> | 3973 | </label> |
| 3952 | <label data-newbie-hidden for="expandMessageActions" class="checkbox_label" title="Always show the full list of the Message Actions context items for chat messages, instead of hiding them behind '...'." data-i18n="[title]Always show the full list of the Message Actions context items for chat messages, instead of hiding them behind '...'"> | 3974 | <label for="expandMessageActions" class="checkbox_label" title="Always show the full list of the Message Actions context items for chat messages, instead of hiding them behind '...'." data-i18n="[title]Always show the full list of the Message Actions context items for chat messages, instead of hiding them behind '...'"> |
| 3953 | <input id="expandMessageActions" type="checkbox" /> | 3975 | <input id="expandMessageActions" type="checkbox" /> |
| 3954 | <small data-i18n="Auto-Expand Message Actions">Expand Message Actions</small> | 3976 | <small data-i18n="Auto-Expand Message Actions">Expand Message Actions</small> |
| 3955 | </label> | 3977 | </label> |
| 3956 | <label data-newbie-hidden for="enableZenSliders" class="checkbox_label" title="Alternative UI for numeric sampling parameters with fewer steps." data-i18n="[title]Alternative UI for numeric sampling parameters with fewer steps"> | 3978 | <label for="enableZenSliders" class="checkbox_label" title="Alternative UI for numeric sampling parameters with fewer steps." data-i18n="[title]Alternative UI for numeric sampling parameters with fewer steps"> |
| 3957 | <input id="enableZenSliders" type="checkbox" /> | 3979 | <input id="enableZenSliders" type="checkbox" /> |
| 3958 | <small data-i18n="Zen Sliders">Zen Sliders</small> | 3980 | <small data-i18n="Zen Sliders">Zen Sliders</small> |
| 3959 | </label> | 3981 | </label> |
| 3960 | <label data-newbie-hidden for="enableLabMode" class="checkbox_label" title="Entirely unrestrict all numeric sampling parameters." data-i18n="[title]Entirely unrestrict all numeric sampling parameters"> | 3982 | <label for="enableLabMode" class="checkbox_label" title="Entirely unrestrict all numeric sampling parameters." data-i18n="[title]Entirely unrestrict all numeric sampling parameters"> |
| 3961 | <input id="enableLabMode" type="checkbox" /> | 3983 | <input id="enableLabMode" type="checkbox" /> |
| 3962 | <small data-i18n="Mad Lab Mode">Mad Lab Mode</small> | 3984 | <small data-i18n="Mad Lab Mode">Mad Lab Mode</small> |
| 3963 | </label> | 3985 | </label> |
| 3964 | <label data-newbie-hidden for="messageTimerEnabled" class="checkbox_label" title="Time the AI's message generation, and show the duration in the chat log." data-i18n="[title]Time the AI's message generation, and show the duration in the chat log"> | 3986 | <label for="messageTimerEnabled" class="checkbox_label" title="Time the AI's message generation, and show the duration in the chat log." data-i18n="[title]Time the AI's message generation, and show the duration in the chat log"> |
| 3965 | <input id="messageTimerEnabled" type="checkbox" /> | 3987 | <input id="messageTimerEnabled" type="checkbox" /> |
| 3966 | <small data-i18n="Message Timer">Message Timer</small> | 3988 | <small data-i18n="Message Timer">Message Timer</small> |
| 3967 | </label> | 3989 | </label> |
| 3968 | <label data-newbie-hidden for="messageTimestampsEnabled" class="checkbox_label" title="Show a timestamp for each message in the chat log." data-i18n="[title]Show a timestamp for each message in the chat log"> | 3990 | <label for="messageTimestampsEnabled" class="checkbox_label" title="Show a timestamp for each message in the chat log." data-i18n="[title]Show a timestamp for each message in the chat log"> |
| 3969 | <input id="messageTimestampsEnabled" type="checkbox" /> | 3991 | <input id="messageTimestampsEnabled" type="checkbox" /> |
| 3970 | <small data-i18n="Chat Timestamps">Chat Timestamps</small> | 3992 | <small data-i18n="Chat Timestamps">Chat Timestamps</small> |
| 3971 | </label> | 3993 | </label> |
| 3972 | <label data-newbie-hidden for="messageModelIconEnabled" class="checkbox_label" title="Show an icon for the API that generated the message." data-i18n="[title]Show an icon for the API that generated the message"> | 3994 | <label for="messageModelIconEnabled" class="checkbox_label" title="Show an icon for the API that generated the message." data-i18n="[title]Show an icon for the API that generated the message"> |
| 3973 | <input id="messageModelIconEnabled" type="checkbox" /> | 3995 | <input id="messageModelIconEnabled" type="checkbox" /> |
| 3974 | <small data-i18n="Model Icon">Model Icons</small> | 3996 | <small data-i18n="Model Icon">Model Icons</small> |
| 3975 | </label> | 3997 | </label> |
| 3976 | <label data-newbie-hidden for="mesIDDisplayEnabled" class="checkbox_label" title="Show sequential message numbers in the chat log." data-i18n="[title]Show sequential message numbers in the chat log"> | 3998 | <label for="mesIDDisplayEnabled" class="checkbox_label" title="Show sequential message numbers in the chat log." data-i18n="[title]Show sequential message numbers in the chat log"> |
| 3977 | <input id="mesIDDisplayEnabled" type="checkbox" /> | 3999 | <input id="mesIDDisplayEnabled" type="checkbox" /> |
| 3978 | <small data-i18n="Message IDs">Message IDs</small> | 4000 | <small data-i18n="Message IDs">Message IDs</small> |
| 3979 | </label> | 4001 | </label> |
| 3980 | <label data-newbie-hidden for="hideChatAvatarsEnabled" class="checkbox_label" title="Hide avatars in chat messages." data-i18n="[title]Hide avatars in chat messages."> | 4002 | <label for="hideChatAvatarsEnabled" class="checkbox_label" title="Hide avatars in chat messages." data-i18n="[title]Hide avatars in chat messages."> |
| 3981 | <input id="hideChatAvatarsEnabled" type="checkbox" /> | 4003 | <input id="hideChatAvatarsEnabled" type="checkbox" /> |
| 3982 | <small data-i18n="Hide Chat Avatars">Hide Chat Avatars</small> | 4004 | <small data-i18n="Hide Chat Avatars">Hide Chat Avatars</small> |
| 3983 | </label> | 4005 | </label> |
| 3984 | <label data-newbie-hidden for="messageTokensEnabled" class="checkbox_label" title="Show the number of tokens for each message in the chat log." data-i18n="[title]Show the number of tokens in each message in the chat log"> | 4006 | <label for="messageTokensEnabled" class="checkbox_label" title="Show the number of tokens for each message in the chat log." data-i18n="[title]Show the number of tokens in each message in the chat log"> |
| 3985 | <input id="messageTokensEnabled" type="checkbox" /> | 4007 | <input id="messageTokensEnabled" type="checkbox" /> |
| 3986 | <small data-i18n="Show Message Token Count">Message Token Count</small> | 4008 | <small data-i18n="Show Message Token Count">Message Token Count</small> |
| 3987 | </label> | 4009 | </label> |
| @@ -3989,7 +4011,7 @@ | |||
| 3989 | <input id="compact_input_area" type="checkbox" /> | 4011 | <input id="compact_input_area" type="checkbox" /> |
| 3990 | <small data-i18n="Compact Input Area (Mobile)">Compact Input Area</small><i class="fa-solid fa-mobile-screen-button"></i> | 4012 | <small data-i18n="Compact Input Area (Mobile)">Compact Input Area</small><i class="fa-solid fa-mobile-screen-button"></i> |
| 3991 | </label> | 4013 | </label> |
| 3992 | <label data-newbie-hidden for="hotswapEnabled" class="checkbox_label" title="In the Character Management panel, show quick selection buttons for favorited characters." data-i18n="[title]In the Character Management panel, show quick selection buttons for favorited characters"> | 4014 | <label for="hotswapEnabled" class="checkbox_label" title="In the Character Management panel, show quick selection buttons for favorited characters." data-i18n="[title]In the Character Management panel, show quick selection buttons for favorited characters"> |
| 3993 | <input id="hotswapEnabled" type="checkbox" /> | 4015 | <input id="hotswapEnabled" type="checkbox" /> |
| 3994 | <small data-i18n="Characters Hotswap">Characters Hotswap</small> | 4016 | <small data-i18n="Characters Hotswap">Characters Hotswap</small> |
| 3995 | </label> | 4017 | </label> |
| @@ -4009,8 +4031,8 @@ | |||
| 4009 | 4031 | ||
| 4010 | </div> | 4032 | </div> |
| 4011 | </div> | 4033 | </div> |
| 4012 | <div name="UserSettingsSecondColumn" id="UI-Customization" class="flex-container flexFlowColumn wide100p flexNoGap"> | 4034 | <div name="UserSettingsSecondColumn" id="UI-Customization" class="flex-container flexFlowColumn wide100p flexNoGap flex1"> |
| 4013 | <div data-newbie-hidden name="CharacterHandlingToggles"> | 4035 | <div name="CharacterHandlingToggles"> |
| 4014 | <h4 data-i18n="Character Handling"> | 4036 | <h4 data-i18n="Character Handling"> |
| 4015 | Character Handling | 4037 | Character Handling |
| 4016 | </h4> | 4038 | </h4> |
| @@ -4021,7 +4043,7 @@ | |||
| 4021 | <option data-i18n="Created by" value="creator">Created by</option> | 4043 | <option data-i18n="Created by" value="creator">Created by</option> |
| 4022 | </select> | 4044 | </select> |
| 4023 | </div> | 4045 | </div> |
| 4024 | <div data-newbie-hidden class="flex-container alignitemscenter" title="Defines on importing cards which action should be chosen for importing its listed tags. 'Ask' will always display the dialog." data-i18n="[title]Defines on importing cards which action should be chosen for importing its listed tags. 'Ask' will always display the dialog."> | 4046 | <div class="flex-container alignitemscenter" title="Defines on importing cards which action should be chosen for importing its listed tags. 'Ask' will always display the dialog." data-i18n="[title]Defines on importing cards which action should be chosen for importing its listed tags. 'Ask' will always display the dialog."> |
| 4025 | <label for="tag_import_setting"><small data-i18n="Import Card Tags">Import Card Tags</small></label> | 4047 | <label for="tag_import_setting"><small data-i18n="Import Card Tags">Import Card Tags</small></label> |
| 4026 | <select id="tag_import_setting" class="widthNatural flex1 margin0"> | 4048 | <select id="tag_import_setting" class="widthNatural flex1 margin0"> |
| 4027 | <option data-i18n="Ask" value="1">Ask</option> | 4049 | <option data-i18n="Ask" value="1">Ask</option> |
| @@ -4030,27 +4052,27 @@ | |||
| 4030 | <option data-i18n="Existing" value="4">Existing</option> | 4052 | <option data-i18n="Existing" value="4">Existing</option> |
| 4031 | </select> | 4053 | </select> |
| 4032 | </div> | 4054 | </div> |
| 4033 | <label data-newbie-hidden class="checkbox_label" for="fuzzy_search_checkbox" title="Use fuzzy matching, and search characters in the list by all data fields, not just by a name substring." data-i18n="[title]Use fuzzy matching, and search characters in the list by all data fields, not just by a name substring"> | 4055 | <label class="checkbox_label" for="fuzzy_search_checkbox" title="Use fuzzy matching, and search characters in the list by all data fields, not just by a name substring." data-i18n="[title]Use fuzzy matching, and search characters in the list by all data fields, not just by a name substring"> |
| 4034 | <input id="fuzzy_search_checkbox" type="checkbox" /> | 4056 | <input id="fuzzy_search_checkbox" type="checkbox" /> |
| 4035 | <small data-i18n="Advanced Character Search">Advanced Character Search</small> | 4057 | <small data-i18n="Advanced Character Search">Advanced Character Search</small> |
| 4036 | </label> | 4058 | </label> |
| 4037 | <label data-newbie-hidden for="prefer_character_prompt" title="If checked and the character card contains a prompt override (System Prompt), use that instead." data-i18n="[title]If checked and the character card contains a prompt override (System Prompt), use that instead" class="checkbox_label"> | 4059 | <label for="prefer_character_prompt" title="If checked and the character card contains a prompt override (System Prompt), use that instead." data-i18n="[title]If checked and the character card contains a prompt override (System Prompt), use that instead" class="checkbox_label"> |
| 4038 | <input id="prefer_character_prompt" type="checkbox" /> | 4060 | <input id="prefer_character_prompt" type="checkbox" /> |
| 4039 | <small data-i18n="Prefer Character Card Prompt">Prefer Char. Prompt</small> | 4061 | <small data-i18n="Prefer Character Card Prompt">Prefer Char. Prompt</small> |
| 4040 | </label> | 4062 | </label> |
| 4041 | <label data-newbie-hidden for="prefer_character_jailbreak" title="If checked and the character card contains a Post-History Instructions override, use that instead." data-i18n="[title]If checked and the character card contains a Post-History Instructions override, use that instead" class="checkbox_label"> | 4063 | <label for="prefer_character_jailbreak" title="If checked and the character card contains a Post-History Instructions override, use that instead." data-i18n="[title]If checked and the character card contains a Post-History Instructions override, use that instead" class="checkbox_label"> |
| 4042 | <input id="prefer_character_jailbreak" type="checkbox" /> | 4064 | <input id="prefer_character_jailbreak" type="checkbox" /> |
| 4043 | <small data-i18n="Prefer Character Card Instructions">Prefer Char. Instructions</small> | 4065 | <small data-i18n="Prefer Character Card Instructions">Prefer Char. Instructions</small> |
| 4044 | </label> | 4066 | </label> |
| 4045 | <label data-newbie-hidden class="checkbox_label" for="never_resize_avatars" title="Avoid cropping and resizing imported character images. When off, crop/resize to 512x768." data-i18n="[title]Avoid cropping and resizing imported character images. When off, crop/resize to 512x768"> | 4067 | <label class="checkbox_label" for="never_resize_avatars" title="Avoid cropping and resizing imported character images. When off, crop/resize to 512x768." data-i18n="[title]Avoid cropping and resizing imported character images. When off, crop/resize to 512x768"> |
| 4046 | <input id="never_resize_avatars" type="checkbox" /> | 4068 | <input id="never_resize_avatars" type="checkbox" /> |
| 4047 | <small data-i18n="Never resize avatars">Never resize avatars</small> | 4069 | <small data-i18n="Never resize avatars">Never resize avatars</small> |
| 4048 | </label> | 4070 | </label> |
| 4049 | <label data-newbie-hidden class="checkbox_label" for="show_card_avatar_urls" title="Show actual file names on the disk, in the characters list display only." data-i18n="[title]Show actual file names on the disk, in the characters list display only"> | 4071 | <label class="checkbox_label" for="show_card_avatar_urls" title="Show actual file names on the disk, in the characters list display only." data-i18n="[title]Show actual file names on the disk, in the characters list display only"> |
| 4050 | <input id="show_card_avatar_urls" type="checkbox" /> | 4072 | <input id="show_card_avatar_urls" type="checkbox" /> |
| 4051 | <small data-i18n="Show avatar filenames">Show avatar filenames</small> | 4073 | <small data-i18n="Show avatar filenames">Show avatar filenames</small> |
| 4052 | </label> | 4074 | </label> |
| 4053 | <label data-newbie-hidden class="checkbox_label" for="spoiler_free_mode" title="Hide character definitions from the editor panel behind a spoiler button." data-i18n="[title]Hide character definitions from the editor panel behind a spoiler button"> | 4075 | <label class="checkbox_label" for="spoiler_free_mode" title="Hide character definitions from the editor panel behind a spoiler button." data-i18n="[title]Hide character definitions from the editor panel behind a spoiler button"> |
| 4054 | <input id="spoiler_free_mode" type="checkbox" /> | 4076 | <input id="spoiler_free_mode" type="checkbox" /> |
| 4055 | <small data-i18n="Spoiler Free Mode">Spoiler Free Mode</small> | 4077 | <small data-i18n="Spoiler Free Mode">Spoiler Free Mode</small> |
| 4056 | </label> | 4078 | </label> |
| @@ -4059,7 +4081,7 @@ | |||
| 4059 | 4081 | ||
| 4060 | <div name="MiscellaneousToggles"> | 4082 | <div name="MiscellaneousToggles"> |
| 4061 | <h4><span data-i18n="Miscellaneous">Miscellaneous</span></h4> | 4083 | <h4><span data-i18n="Miscellaneous">Miscellaneous</span></h4> |
| 4062 | <div data-newbie-hidden class="flex-container"> | 4084 | <div class="flex-container"> |
| 4063 | <div id="reload_chat" class="menu_button whitespacenowrap" data-i18n="[title]Reload and redraw the currently open chat" title="Reload and redraw the currently open chat."> | 4085 | <div id="reload_chat" class="menu_button whitespacenowrap" data-i18n="[title]Reload and redraw the currently open chat" title="Reload and redraw the currently open chat."> |
| 4064 | <small data-i18n="Reload Chat">Reload Chat</small> | 4086 | <small data-i18n="Reload Chat">Reload Chat</small> |
| 4065 | </div> | 4087 | </div> |
| @@ -4099,30 +4121,43 @@ | |||
| 4099 | <input id="play_sound_unfocused" type="checkbox" /> | 4121 | <input id="play_sound_unfocused" type="checkbox" /> |
| 4100 | <small data-i18n="Background Sound Only">Background Sound Only</small> | 4122 | <small data-i18n="Background Sound Only">Background Sound Only</small> |
| 4101 | </label> | 4123 | </label> |
| 4102 | <label data-newbie-hidden class="checkbox_label" for="relaxed_api_urls" title="Reduce the formatting requirements on API URLs." data-i18n="[title]Reduce the formatting requirements on API URLs"> | 4124 | <label class="checkbox_label" for="relaxed_api_urls" title="Reduce the formatting requirements on API URLs." data-i18n="[title]Reduce the formatting requirements on API URLs"> |
| 4103 | <input id="relaxed_api_urls" type="checkbox" /> | 4125 | <input id="relaxed_api_urls" type="checkbox" /> |
| 4104 | <small data-i18n="Relaxed API URLS">Relaxed API URLs</small> | 4126 | <small data-i18n="Relaxed API URLS">Relaxed API URLs</small> |
| 4105 | </label> | 4127 | </label> |
| 4106 | <label data-newbie-hidden class="checkbox_label" for="world_import_dialog" title="Ask to import the World Info/Lorebook for every new character with embedded lorebook. If unchecked, a brief message will be shown instead." data-i18n="[title]Ask to import the World Info/Lorebook for every new character with embedded lorebook. If unchecked, a brief message will be shown instead"> | 4128 | <label class="checkbox_label" for="world_import_dialog" title="Ask to import the World Info/Lorebook for every new character with embedded lorebook. If unchecked, a brief message will be shown instead." data-i18n="[title]Ask to import the World Info/Lorebook for every new character with embedded lorebook. If unchecked, a brief message will be shown instead"> |
| 4107 | <input id="world_import_dialog" type="checkbox" /> | 4129 | <input id="world_import_dialog" type="checkbox" /> |
| 4108 | <small data-i18n="Lorebook Import Dialog">Lorebook Import Dialog</small> | 4130 | <small data-i18n="Lorebook Import Dialog">Lorebook Import Dialog</small> |
| 4109 | </label> | 4131 | </label> |
| 4110 | <label data-newbie-hidden class="checkbox_label" for="enable_auto_select_input" title="Enable auto-select of input text in some text fields when clicking/selecting them. Applies to popup input textboxes, and possible other custom input fields." data-i18n="[title]Enable auto-select of input text in some text fields when clicking/selecting them. Applies to popup input textboxes, and possible other custom input fields."> | 4132 | <label class="checkbox_label" for=" enable_auto_select_input" title="Enable auto-select of input text in some text fields when clicking/selecting them. Applies to popup input textboxes, and possible other custom input fields." data-i18n="[title]Enable auto-select of input text in some text fields when clicking/selecting them. Applies to popup input textboxes, and possible other custom input fields."> |
| 4111 | <input id="enable_auto_select_input" type="checkbox" /> | 4133 | <input id="enable_auto_select_input" type="checkbox" /> |
| 4112 | <small data-i18n="Auto-select Input Text">Auto-select Input Text</small> | 4134 | <small data-i18n="Auto-select Input Text">Auto-select Input Text</small> |
| 4113 | </label> | 4135 | </label> |
| 4136 | <label class="checkbox_label alignItemsCenter" for="enable_md_hotkeys" title="Enable hotkeys for inserting markdown format characters in certain text input boxes. See '/help hotkeys'."> | ||
| 4137 | <input id="enable_md_hotkeys" type="checkbox" /> | ||
| 4138 | <small> | ||
| 4139 | <span data-i18n="Markdown Hotkeys">Markdown Hotkeys</span> | ||
| 4140 | <i class="fa-brands fa-markdown"></i> | ||
| 4141 | </small> | ||
| 4142 | </label> | ||
| 4114 | <label class="checkbox_label" for="restore_user_input" title="Restore unsaved user input on page refresh." data-i18n="[title]Restore unsaved user input on page refresh"> | 4143 | <label class="checkbox_label" for="restore_user_input" title="Restore unsaved user input on page refresh." data-i18n="[title]Restore unsaved user input on page refresh"> |
| 4115 | <input id="restore_user_input" type="checkbox" /> | 4144 | <input id="restore_user_input" type="checkbox" /> |
| 4116 | <small data-i18n="Restore User Input">Restore User Input</small> | 4145 | <small data-i18n="Restore User Input">Restore User Input</small> |
| 4117 | </label> | 4146 | </label> |
| 4118 | <div class="flex-container alignItemsCenter"> | 4147 | <div class="flex-container alignItemsCenter"> |
| 4119 | <label data-newbie-hidden id="movingUIModeCheckBlock" for="movingUImode" class="checkbox_label" title="Allow repositioning certain UI elements by dragging them. PC only, no effect on mobile." data-i18n="[title]Allow repositioning certain UI elements by dragging them. PC only, no effect on mobile"> | 4148 | <label id="movingUIModeCheckBlock" for="movingUImode" class="checkbox_label" title="Allow repositioning certain UI elements by dragging them. PC only, no effect on mobile." data-i18n="[title]Allow repositioning certain UI elements by dragging them. PC only, no effect on mobile"> |
| 4120 | <input id="movingUImode" type="checkbox" /> | 4149 | <input id="movingUImode" type="checkbox" /> |
| 4121 | <small data-i18n="Movable UI Panels">MovingUI <i class="fa-solid fa-desktop"></i></small> | 4150 | <small> |
| 4151 | <span data-i18n="Movable UI Panels">MovingUI</span> | ||
| 4152 | <i class="fa-solid fa-desktop"></i> | ||
| 4153 | </small> | ||
| 4122 | </label> | 4154 | </label> |
| 4123 | <div data-newbie-hidden id="movingUIreset" title="Reset MovingUI panel sizes/locations." class="menu_button margin0" data-i18n="[title]Reset MovingUI panel sizes/locations."><i class=" fa-solid fa-recycle margin-r5"></i> Reset</div> | 4155 | <div id="movingUIreset" title="Reset MovingUI panel sizes/locations." class="menu_button margin0" data-i18n="[title]Reset MovingUI panel sizes/locations."> |
| 4156 | <i class=" fa-solid fa-recycle margin-r5"></i> | ||
| 4157 | <span data-i18n="mui_reset">Reset</span> | ||
| 4124 | </div> | 4158 | </div> |
| 4125 | <div data-newbie-hidden id="MovingUI-presets-block" class="flex-container alignitemscenter"> | 4159 | </div> |
| 4160 | <div id="MovingUI-presets-block" class="flex-container alignitemscenter"> | ||
| 4126 | <div class="flex-container alignItemsFlexEnd"> | 4161 | <div class="flex-container alignItemsFlexEnd"> |
| 4127 | <label for="movingUIPresets" title="MovingUI preset. Predefined/saved draggable positions." data-i18n="[title]MovingUI preset. Predefined/saved draggable positions"> | 4162 | <label for="movingUIPresets" title="MovingUI preset. Predefined/saved draggable positions." data-i18n="[title]MovingUI preset. Predefined/saved draggable positions"> |
| 4128 | <small data-i18n="MUI Preset">MovingUI Preset:</small> | 4163 | <small data-i18n="MUI Preset">MovingUI Preset:</small> |
| @@ -4134,7 +4169,7 @@ | |||
| 4134 | <div id="movingui-preset-save-button" title="Save changes to a new MovingUI preset file." data-i18n="[title]Save movingUI changes to a new file" class="menu_button margin0 fa-solid fa-save"></div> | 4169 | <div id="movingui-preset-save-button" title="Save changes to a new MovingUI preset file." data-i18n="[title]Save movingUI changes to a new file" class="menu_button margin0 fa-solid fa-save"></div> |
| 4135 | </div> | 4170 | </div> |
| 4136 | </div> | 4171 | </div> |
| 4137 | <div data-newbie-hidden id="CustomCSS-block" class="flex-container flexFlowColumn"> | 4172 | <div id="CustomCSS-block" class="flex-container flexFlowColumn"> |
| 4138 | <h4 class="title_restorable" title="Apply a custom CSS style to all of the ST GUI." data-i18n="[title]Apply a custom CSS style to all of the ST GUI"> | 4173 | <h4 class="title_restorable" title="Apply a custom CSS style to all of the ST GUI." data-i18n="[title]Apply a custom CSS style to all of the ST GUI"> |
| 4139 | <span data-i18n="Custom CSS">Custom CSS</span> | 4174 | <span data-i18n="Custom CSS">Custom CSS</span> |
| 4140 | <i class="editor_maximize fa-solid fa-maximize right_menu_button" data-for="customCSS" title="Expand the editor" data-i18n="[title]Expand the editor"></i> | 4175 | <i class="editor_maximize fa-solid fa-maximize right_menu_button" data-for="customCSS" title="Expand the editor" data-i18n="[title]Expand the editor"></i> |
| @@ -4145,7 +4180,7 @@ | |||
| 4145 | </div> | 4180 | </div> |
| 4146 | </div> | 4181 | </div> |
| 4147 | </div> | 4182 | </div> |
| 4148 | <div name="UserSettingsThirdColumn" id="power-user-options-block" class="flex-container wide100p"> | 4183 | <div name="UserSettingsThirdColumn" id="power-user-options-block" class="flex-container wide100p flex1"> |
| 4149 | <div id="power-user-option-checkboxes"> | 4184 | <div id="power-user-option-checkboxes"> |
| 4150 | 4185 | ||
| 4151 | <div name="ChatMessageHandlingToggles"> | 4186 | <div name="ChatMessageHandlingToggles"> |
| @@ -4171,7 +4206,7 @@ | |||
| 4171 | <input class="neo-range-input" type="number" min="5" max="100" step="5" data-for="streaming_fps" id="streaming_fps_counter"> | 4206 | <input class="neo-range-input" type="number" min="5" max="100" step="5" data-for="streaming_fps" id="streaming_fps_counter"> |
| 4172 | </div> | 4207 | </div> |
| 4173 | </div> | 4208 | </div> |
| 4174 | <div data-newbie-hidden id="examples-behavior-block"> | 4209 | <div id="examples-behavior-block"> |
| 4175 | <label data-i18n="Example Messages Behavior"> | 4210 | <label data-i18n="Example Messages Behavior"> |
| 4176 | <small>Example Messages Behavior:</small> | 4211 | <small>Example Messages Behavior:</small> |
| 4177 | </label> | 4212 | </label> |
| @@ -4181,7 +4216,7 @@ | |||
| 4181 | <option value="strip" data-i18n="Never include examples">Never include examples</option> | 4216 | <option value="strip" data-i18n="Never include examples">Never include examples</option> |
| 4182 | </select> | 4217 | </select> |
| 4183 | </div> | 4218 | </div> |
| 4184 | <div data-newbie-hidden class="flex-container alignitemscenter"> | 4219 | <div class="flex-container alignitemscenter"> |
| 4185 | <small data-i18n="Send on Enter"> | 4220 | <small data-i18n="Send on Enter"> |
| 4186 | Enter to Send: | 4221 | Enter to Send: |
| 4187 | </small> | 4222 | </small> |
| @@ -4191,7 +4226,7 @@ | |||
| 4191 | <option value="1" data-i18n="Enabled">Enabled</option> | 4226 | <option value="1" data-i18n="Enabled">Enabled</option> |
| 4192 | </select> | 4227 | </select> |
| 4193 | </div> | 4228 | </div> |
| 4194 | <label data-newbie-hidden class="checkbox_label" for="continue_on_send"> | 4229 | <label class="checkbox_label" for="continue_on_send"> |
| 4195 | <input id="continue_on_send" type="checkbox" /> | 4230 | <input id="continue_on_send" type="checkbox" /> |
| 4196 | <small data-i18n="Press Send to continue"> | 4231 | <small data-i18n="Press Send to continue"> |
| 4197 | "Send" to Continue | 4232 | "Send" to Continue |
| @@ -4210,11 +4245,11 @@ | |||
| 4210 | </small> | 4245 | </small> |
| 4211 | </label> | 4246 | </label> |
| 4212 | <div class="checkbox-container flex-container"> | 4247 | <div class="checkbox-container flex-container"> |
| 4213 | <label data-newbie-hidden class="checkbox_label" for="swipes-checkbox" title="Show arrow buttons on the last in-chat message to generate alternative AI responses. Both PC and mobile." data-i18n="[title]Show arrow buttons on the last in-chat message to generate alternative AI responses. Both PC and mobile"> | 4248 | <label class="checkbox_label" for="swipes-checkbox" title="Show arrow buttons on the last in-chat message to generate alternative AI responses. Both PC and mobile." data-i18n="[title]Show arrow buttons on the last in-chat message to generate alternative AI responses. Both PC and mobile"> |
| 4214 | <input id="swipes-checkbox" type="checkbox" /> | 4249 | <input id="swipes-checkbox" type="checkbox" /> |
| 4215 | <small data-i18n="Swipes">Swipes</small><i class="fa-solid fa-desktop"></i><i class="fa-solid fa-mobile-screen-button"></i> | 4250 | <small data-i18n="Swipes">Swipes</small><i class="fa-solid fa-desktop"></i><i class="fa-solid fa-mobile-screen-button"></i> |
| 4216 | </label> | 4251 | </label> |
| 4217 | <label data-newbie-hidden class="checkbox_label" for="gestures-checkbox" title="Allow using swiping gestures on the last in-chat message to trigger swipe generation. Mobile only, no effect on PC." , data-i18n="[title]Allow using swiping gestures on the last in-chat message to trigger swipe generation. Mobile only, no effect on PC"> | 4252 | <label class="checkbox_label" for="gestures-checkbox" title="Allow using swiping gestures on the last in-chat message to trigger swipe generation. Mobile only, no effect on PC." , data-i18n="[title]Allow using swiping gestures on the last in-chat message to trigger swipe generation. Mobile only, no effect on PC"> |
| 4218 | <input id="gestures-checkbox" type="checkbox" /> | 4253 | <input id="gestures-checkbox" type="checkbox" /> |
| 4219 | <small data-i18n="Gestures">Gestures</small> | 4254 | <small data-i18n="Gestures">Gestures</small> |
| 4220 | <i class="fa-solid fa-mobile-screen-button"></i> | 4255 | <i class="fa-solid fa-mobile-screen-button"></i> |
| @@ -4224,15 +4259,15 @@ | |||
| 4224 | <input id="auto-load-chat-checkbox" type="checkbox" /> | 4259 | <input id="auto-load-chat-checkbox" type="checkbox" /> |
| 4225 | <small data-i18n="Auto-load Last Chat">Auto-load Last Chat</small> | 4260 | <small data-i18n="Auto-load Last Chat">Auto-load Last Chat</small> |
| 4226 | </label> | 4261 | </label> |
| 4227 | <label data-newbie-hidden for="auto_scroll_chat_to_bottom" class="checkbox_label"> | 4262 | <label for="auto_scroll_chat_to_bottom" class="checkbox_label"> |
| 4228 | <input id="auto_scroll_chat_to_bottom" type="checkbox" /> | 4263 | <input id="auto_scroll_chat_to_bottom" type="checkbox" /> |
| 4229 | <small data-i18n="Auto-scroll Chat">Auto-scroll Chat</small> | 4264 | <small data-i18n="Auto-scroll Chat">Auto-scroll Chat</small> |
| 4230 | </label> | 4265 | </label> |
| 4231 | <label data-newbie-hidden class="checkbox_label" for="auto_save_msg_edits" title="Save edits to messages without confirmation as you type." data-i18n="[title]Save edits to messages without confirmation as you type"> | 4266 | <label class="checkbox_label" for="auto_save_msg_edits" title="Save edits to messages without confirmation as you type." data-i18n="[title]Save edits to messages without confirmation as you type"> |
| 4232 | <input id="auto_save_msg_edits" type="checkbox" /> | 4267 | <input id="auto_save_msg_edits" type="checkbox" /> |
| 4233 | <small data-i18n="Auto-save Message Edits">Auto-save Message Edits</small> | 4268 | <small data-i18n="Auto-save Message Edits">Auto-save Message Edits</small> |
| 4234 | </label> | 4269 | </label> |
| 4235 | <label data-newbie-hidden class="checkbox_label" for="confirm_message_delete"> | 4270 | <label class="checkbox_label" for="confirm_message_delete"> |
| 4236 | <input id="confirm_message_delete" type="checkbox" /> | 4271 | <input id="confirm_message_delete" type="checkbox" /> |
| 4237 | <small data-i18n="Confirm message deletion">Confirm message deletion</small> | 4272 | <small data-i18n="Confirm message deletion">Confirm message deletion</small> |
| 4238 | </label> | 4273 | </label> |
| @@ -4240,7 +4275,7 @@ | |||
| 4240 | <input id="auto_fix_generated_markdown" type="checkbox" /> | 4275 | <input id="auto_fix_generated_markdown" type="checkbox" /> |
| 4241 | <small data-i18n="Auto-fix Markdown">Auto-fix Markdown</small> | 4276 | <small data-i18n="Auto-fix Markdown">Auto-fix Markdown</small> |
| 4242 | </label> | 4277 | </label> |
| 4243 | <label data-newbie-hidden class="checkbox_label" for="render_formulas" title="Render LaTeX and AsciiMath equation notation in chat messages. Powered by KaTeX." data-i18n="[title]Render LaTeX and AsciiMath equation notation in chat messages. Powered by KaTeX"> | 4278 | <label class="checkbox_label" for="render_formulas" title="Render LaTeX and AsciiMath equation notation in chat messages. Powered by KaTeX." data-i18n="[title]Render LaTeX and AsciiMath equation notation in chat messages. Powered by KaTeX"> |
| 4244 | <input id="render_formulas" type="checkbox" /> | 4279 | <input id="render_formulas" type="checkbox" /> |
| 4245 | <small data-i18n="Render Formulas">Render Formulas</small> | 4280 | <small data-i18n="Render Formulas">Render Formulas</small> |
| 4246 | <a href="https://docs.sillytavern.app/usage/core-concepts/uicustomization/#formulas-rendering" class="notes-link" target="_blank"> | 4281 | <a href="https://docs.sillytavern.app/usage/core-concepts/uicustomization/#formulas-rendering" class="notes-link" target="_blank"> |
| @@ -4251,11 +4286,11 @@ | |||
| 4251 | <input id="forbid_external_media" type="checkbox" /> | 4286 | <input id="forbid_external_media" type="checkbox" /> |
| 4252 | <small data-i18n="Forbid External Media">Forbid External Media</small> | 4287 | <small data-i18n="Forbid External Media">Forbid External Media</small> |
| 4253 | </label> | 4288 | </label> |
| 4254 | <label data-newbie-hidden class="checkbox_label" for="allow_name2_display"> | 4289 | <label class="checkbox_label" for="allow_name2_display"> |
| 4255 | <input id="allow_name2_display" type="checkbox" /> | 4290 | <input id="allow_name2_display" type="checkbox" /> |
| 4256 | <small data-i18n="Allow {{char}}: in bot messages">Show {{char}}: in responses</small> | 4291 | <small data-i18n="Allow {{char}}: in bot messages">Show {{char}}: in responses</small> |
| 4257 | </label> | 4292 | </label> |
| 4258 | <label data-newbie-hidden class="checkbox_label" for="allow_name1_display"> | 4293 | <label class="checkbox_label" for="allow_name1_display"> |
| 4259 | <input id="allow_name1_display" type="checkbox" /> | 4294 | <input id="allow_name1_display" type="checkbox" /> |
| 4260 | <small data-i18n="Allow {{user}}: in bot messages">Show {{user}}: in responses</small> | 4295 | <small data-i18n="Allow {{user}}: in bot messages">Show {{user}}: in responses</small> |
| 4261 | </label> | 4296 | </label> |
| @@ -4263,23 +4298,23 @@ | |||
| 4263 | <input id="encode_tags" type="checkbox" /> | 4298 | <input id="encode_tags" type="checkbox" /> |
| 4264 | <small data-i18n="Show tags in responses">Show <tags> in responses</small> | 4299 | <small data-i18n="Show tags in responses">Show <tags> in responses</small> |
| 4265 | </label> | 4300 | </label> |
| 4266 | <label data-newbie-hidden class="checkbox_label" for="disable_group_trimming" title="Allow AI messages in groups to contain lines spoken by other group members." data-i18n="[title]Allow AI messages in groups to contain lines spoken by other group members"> | 4301 | <label class="checkbox_label" for="disable_group_trimming" title="Allow AI messages in groups to contain lines spoken by other group members." data-i18n="[title]Allow AI messages in groups to contain lines spoken by other group members"> |
| 4267 | <input id="disable_group_trimming" type="checkbox" /> | 4302 | <input id="disable_group_trimming" type="checkbox" /> |
| 4268 | <small data-i18n="Relax message trim in Groups">Relax message trim in Groups</small> | 4303 | <small data-i18n="Relax message trim in Groups">Relax message trim in Groups</small> |
| 4269 | </label> | 4304 | </label> |
| 4270 | <label data-newbie-hidden class="checkbox_label" for="console_log_prompts"> | 4305 | <label class="checkbox_label" for="console_log_prompts"> |
| 4271 | <input id="console_log_prompts" type="checkbox" /> | 4306 | <input id="console_log_prompts" type="checkbox" /> |
| 4272 | <small data-i18n="Log prompts to console">Log prompts to console</small> | 4307 | <small data-i18n="Log prompts to console">Log prompts to console</small> |
| 4273 | </label> | 4308 | </label> |
| 4274 | <label data-newbie-hidden class="checkbox_label" for="request_token_probabilities" title="Requests logprobs from the API for the Token Probabilities feature." data-i18n="[title]Requests logprobs from the API for the Token Probabilities feature"> | 4309 | <label class="checkbox_label" for="request_token_probabilities" title="Requests logprobs from the API for the Token Probabilities feature." data-i18n="[title]Requests logprobs from the API for the Token Probabilities feature"> |
| 4275 | <input id="request_token_probabilities" type="checkbox" /> | 4310 | <input id="request_token_probabilities" type="checkbox" /> |
| 4276 | <small data-i18n="Request token probabilities">Request token probabilities</small> | 4311 | <small data-i18n="Request token probabilities">Request token probabilities</small> |
| 4277 | </label> | 4312 | </label> |
| 4278 | <label data-newbie-hidden class="checkbox_label" for="show_group_chat_queue" title="In group chat, highlight the character(s) that are currently queued to generate responses and the order in which they will respond." data-i18n="[title]In group chat, highlight the character(s) that are currently queued to generate responses and the order in which they will respond."> | 4313 | <label class="checkbox_label" for="show_group_chat_queue" title="In group chat, highlight the character(s) that are currently queued to generate responses and the order in which they will respond." data-i18n="[title]In group chat, highlight the character(s) that are currently queued to generate responses and the order in which they will respond."> |
| 4279 | <input id="show_group_chat_queue" type="checkbox" /> | 4314 | <input id="show_group_chat_queue" type="checkbox" /> |
| 4280 | <small data-i18n="Show group chat queue">Show group chat queue</small> | 4315 | <small data-i18n="Show group chat queue">Show group chat queue</small> |
| 4281 | </label> | 4316 | </label> |
| 4282 | <div data-newbie-hidden class="inline-drawer wide100p flexFlowColumn"> | 4317 | <div class="inline-drawer wide100p flexFlowColumn"> |
| 4283 | <div class="inline-drawer-toggle inline-drawer-header userSettingsInnerExpandable" title="Automatically reject and re-generate AI message based on configurable criteria." data-i18n="[title]Automatically reject and re-generate AI message based on configurable criteria"> | 4318 | <div class="inline-drawer-toggle inline-drawer-header userSettingsInnerExpandable" title="Automatically reject and re-generate AI message based on configurable criteria." data-i18n="[title]Automatically reject and re-generate AI message based on configurable criteria"> |
| 4284 | <b><span data-i18n="Auto-swipe">Auto-swipe</span></b> | 4319 | <b><span data-i18n="Auto-swipe">Auto-swipe</span></b> |
| 4285 | <div class="fa-solid fa-circle-chevron-down inline-drawer-icon down"></div> | 4320 | <div class="fa-solid fa-circle-chevron-down inline-drawer-icon down"></div> |
| @@ -4293,16 +4328,50 @@ | |||
| 4293 | <input id="auto_swipe_minimum_length" name="auto_swipe_minimum_length" type="number" min="0" step="1" value="0" class="text_pole" title="If the generated message is shorter than this, trigger an auto-swipe." data-i18n="[title]If the generated message is shorter than this, trigger an auto-swipe"> | 4328 | <input id="auto_swipe_minimum_length" name="auto_swipe_minimum_length" type="number" min="0" step="1" value="0" class="text_pole" title="If the generated message is shorter than this, trigger an auto-swipe." data-i18n="[title]If the generated message is shorter than this, trigger an auto-swipe"> |
| 4294 | <small data-i18n="Blacklisted words">Blacklisted words</small> | 4329 | <small data-i18n="Blacklisted words">Blacklisted words</small> |
| 4295 | <div class="auto_swipe"> | 4330 | <div class="auto_swipe"> |
| 4296 | <textarea id="auto_swipe_blacklist" name="auto_swipe_blacklist" data-i18n="[placeholder]words you dont want generated separated by comma ','" placeholder="words you don't want generated separated by comma ','" class="text_pole textarea_compact" maxlength="5000" value="" autocomplete="off" rows="3"></textarea> | 4331 | <textarea id="auto_swipe_blacklist" name="auto_swipe_blacklist" data-i18n="[placeholder]words you dont want generated separated by comma ','" placeholder="words you don't want generated separated by comma ','" class="text_pole textarea_compact" value="" autocomplete="off" rows="3"></textarea> |
| 4297 | <small data-i18n="Blacklisted word count to swipe">Blacklisted word count to swipe</small> | 4332 | <small data-i18n="Blacklisted word count to swipe">Blacklisted word count to swipe</small> |
| 4298 | <input id="auto_swipe_blacklist_threshold" name="auto_swipe_blacklist_threshold" type="number" min="0" step="1" value="1" class="text_pole" title="Minimum number of blacklisted words detected to trigger an auto-swipe." data-i18n="[title]Minimum number of blacklisted words detected to trigger an auto-swipe"> | 4333 | <input id="auto_swipe_blacklist_threshold" name="auto_swipe_blacklist_threshold" type="number" min="0" step="1" value="1" class="text_pole" title="Minimum number of blacklisted words detected to trigger an auto-swipe." data-i18n="[title]Minimum number of blacklisted words detected to trigger an auto-swipe"> |
| 4299 | </div> | 4334 | </div> |
| 4300 | </div> | 4335 | </div> |
| 4301 | </div> | 4336 | </div> |
| 4337 | <div nane="AutoContiueBlock" class="inline-drawer wide100p flexFlowColumn"> | ||
| 4338 | <div class="inline-drawer-toggle inline-drawer-header userSettingsInnerExpandable" title="Automatically 'continue' a response if the model stopped before reaching a certain amount of tokens."> | ||
| 4339 | <b><span data-i18n="Auto-swipe">Auto-Continue</span></b> | ||
| 4340 | <div class="fa-solid fa-circle-chevron-down inline-drawer-icon down"></div> | ||
| 4341 | </div> | ||
| 4342 | <div class="inline-drawer-content"> | ||
| 4343 | <div class="flex-container"> | ||
| 4344 | <label class="checkbox_label" for="auto_continue_enabled"> | ||
| 4345 | <input id="auto_continue_enabled" type="checkbox" /> | ||
| 4346 | <small data-i18n="Enabled"> | ||
| 4347 | Enabled | ||
| 4348 | </small> | ||
| 4349 | </label> | ||
| 4350 | <label class="checkbox_label" for="auto_continue_allow_chat_completions"> | ||
| 4351 | <input id="auto_continue_allow_chat_completions" type="checkbox" /> | ||
| 4352 | <small data-i18n="Allow for Chat Completion APIs"> | ||
| 4353 | Allow for Chat Completion APIs | ||
| 4354 | </small> | ||
| 4355 | </label> | ||
| 4356 | </div> | ||
| 4357 | <div class="auto_continue_settings_block"> | ||
| 4358 | <label for="auto_continue_target_length"> | ||
| 4359 | <small data-i18n="Target length (tokens)">Target length (tokens)</small> | ||
| 4360 | <input id="auto_continue_target_length" type="number" class="text_pole textarea_compact" min="0" max="1024" /> | ||
| 4361 | </label> | ||
| 4362 | </div> | ||
| 4363 | </div> | ||
| 4364 | |||
| 4365 | |||
| 4366 | </div> | ||
| 4367 | </div> | ||
| 4368 | <div name="AutoCompleteToggle" class="inline-drawer wide100p flexFlowColumn"> | ||
| 4369 | <div class="inline-drawer-toggle inline-drawer-header userSettingsInnerExpandable" title="Options for the various autocompelte input boxes."> | ||
| 4370 | <b><span data-i18n="AutoComplete Settings">AutoComplete Settings</span></b> | ||
| 4371 | <div class="fa-solid fa-circle-chevron-down inline-drawer-icon down"></div> | ||
| 4302 | </div> | 4372 | </div> |
| 4303 | <div name="AutoCompleteToggle"> | 4373 | <div class="inline-drawer-content"> |
| 4304 | <h4 data-i18n="AutoComplete Settings">AutoComplete Settings</h4> | 4374 | <label class="checkbox_label" for="stscript_autocomplete_autoHide"> |
| 4305 | <label data-newbie-hidden class="checkbox_label" for="stscript_autocomplete_autoHide"> | ||
| 4306 | <input id="stscript_autocomplete_autoHide" type="checkbox" /> | 4375 | <input id="stscript_autocomplete_autoHide" type="checkbox" /> |
| 4307 | <small data-i18n="Automatically hide details"> | 4376 | <small data-i18n="Automatically hide details"> |
| 4308 | Automatically hide details | 4377 | Automatically hide details |
| @@ -4366,6 +4435,7 @@ | |||
| 4366 | </div> | 4435 | </div> |
| 4367 | </div> | 4436 | </div> |
| 4368 | </div> | 4437 | </div> |
| 4438 | </div> | ||
| 4369 | <div name="STscriptToggles"> | 4439 | <div name="STscriptToggles"> |
| 4370 | <h4 data-i18n="STscript Settings">STscript Settings</h4> | 4440 | <h4 data-i18n="STscript Settings">STscript Settings</h4> |
| 4371 | <div title="Sets default flags for the STscript parser." data-i18n="[title]Sets default flags for the STscript parser."> | 4441 | <div title="Sets default flags for the STscript parser." data-i18n="[title]Sets default flags for the STscript parser."> |
| @@ -4393,11 +4463,14 @@ | |||
| 4393 | </div> | 4463 | </div> |
| 4394 | <div id="logo_block" class="drawer"> | 4464 | <div id="logo_block" class="drawer"> |
| 4395 | <div id="site_logo" class="drawer-toggle drawer-header" title="Change Background Image" data-i18n="[title]Change Background Image"> | 4465 | <div id="site_logo" class="drawer-toggle drawer-header" title="Change Background Image" data-i18n="[title]Change Background Image"> |
| 4396 | <div class="drawer-icon fa-solid fa-panorama closedIcon"></div> | 4466 | <div class="drawer-icon fa-solid fa-panorama fa-fw closedIcon"></div> |
| 4397 | </div> | 4467 | </div> |
| 4398 | <div id="Backgrounds" class="drawer-content closedDrawer"> | 4468 | <div id="Backgrounds" class="drawer-content closedDrawer"> |
| 4399 | <div class="flex-container"> | 4469 | <div class="flex-container"> |
| 4400 | <div class="flex-container wide100p"> | 4470 | <div class="flex-container alignItemsBaseline wide100p"> |
| 4471 | <h3 class="margin0 flex2" data-i18n="Background Image"> | ||
| 4472 | Background Image | ||
| 4473 | </h3> | ||
| 4401 | <input id="bg-filter" data-i18n="[placeholder]Filter" placeholder="Filter" class="text_pole flex1" type="search" /> | 4474 | <input id="bg-filter" data-i18n="[placeholder]Filter" placeholder="Filter" class="text_pole flex1" type="search" /> |
| 4402 | <div id="auto_background" class="menu_button menu_button_icon" data-i18n="[title]Automatically select a background based on the chat context" title="Automatically select a background based on the chat context."> | 4475 | <div id="auto_background" class="menu_button menu_button_icon" data-i18n="[title]Automatically select a background based on the chat context" title="Automatically select a background based on the chat context."> |
| 4403 | <i class="fa-solid fa-wand-magic"></i> | 4476 | <i class="fa-solid fa-wand-magic"></i> |
| @@ -4428,7 +4501,7 @@ | |||
| 4428 | </div> | 4501 | </div> |
| 4429 | <div id="extensions-settings-button" class="drawer"> | 4502 | <div id="extensions-settings-button" class="drawer"> |
| 4430 | <div class="drawer-toggle"> | 4503 | <div class="drawer-toggle"> |
| 4431 | <div class="drawer-icon fa-solid fa-cubes closedIcon" title="Extensions" data-i18n="[title]Extensions"></div> | 4504 | <div class="drawer-icon fa-solid fa-cubes fa-fw closedIcon" title="Extensions" data-i18n="[title]Extensions"></div> |
| 4432 | </div> | 4505 | </div> |
| 4433 | <div id="rm_extensions_block" class="drawer-content closedDrawer"> | 4506 | <div id="rm_extensions_block" class="drawer-content closedDrawer"> |
| 4434 | <div class="extensions_block flex-container"> | 4507 | <div class="extensions_block flex-container"> |
| @@ -4480,11 +4553,7 @@ | |||
| 4480 | </div> | 4553 | </div> |
| 4481 | <hr class="wide100p margin0"> | 4554 | <hr class="wide100p margin0"> |
| 4482 | <div class="alignitemscenter flex-container justifyCenter wide100p" style="justify-content: space-between;"> | 4555 | <div class="alignitemscenter flex-container justifyCenter wide100p" style="justify-content: space-between;"> |
| 4483 | <h4 class="margin0"><span data-i18n="Extras API:">Extras API:</span> | 4556 | <h4 class="margin0"><span data-i18n="Extras API:">Extras API:</span></h4> |
| 4484 | <a target="_blank" href="https://github.com/SillyTavern/SillyTavern-Extras"> | ||
| 4485 | SillyTavern-Extras | ||
| 4486 | </a> | ||
| 4487 | </h4> | ||
| 4488 | <div class="flex-container"> | 4557 | <div class="flex-container"> |
| 4489 | <div id="extensions_status" data-i18n="Not connected...">Not connected...</div> | 4558 | <div id="extensions_status" data-i18n="Not connected...">Not connected...</div> |
| 4490 | <label for="extensions_autoconnect" class="checkbox_label flexNoGap"> | 4559 | <label for="extensions_autoconnect" class="checkbox_label flexNoGap"> |
| @@ -4494,8 +4563,8 @@ | |||
| 4494 | </div> | 4563 | </div> |
| 4495 | </div> | 4564 | </div> |
| 4496 | <div class="alignitemsflexstart flex-container wide100p"> | 4565 | <div class="alignitemsflexstart flex-container wide100p"> |
| 4497 | <input id="extensions_url" type="text" class="flex1 heightFitContent text_pole widthNatural" maxlength="250" data-i18n="[placeholder]Extras API URL" placeholder="Extras API URL"> | 4566 | <input id="extensions_url" type="text" class="flex1 heightFitContent text_pole widthNatural" data-i18n="[placeholder]Extras API URL" placeholder="Extras API URL"> |
| 4498 | <input id="extensions_api_key" type="text" class="flex1 heightFitContent text_pole widthNatural" maxlength="250" data-i18n="[placeholder]Extras API key (optional)" placeholder="Extras API key (optional)"> | 4567 | <input id="extensions_api_key" type="text" class="flex1 heightFitContent text_pole widthNatural" data-i18n="[placeholder]Extras API key (optional)" placeholder="Extras API key (optional)"> |
| 4499 | <div class="extensions_url_block"> | 4568 | <div class="extensions_url_block"> |
| 4500 | <div id="extensions_connect" class="menu_button" data-i18n="Connect">Connect</div> | 4569 | <div id="extensions_connect" class="menu_button" data-i18n="Connect">Connect</div> |
| 4501 | </div> | 4570 | </div> |
| @@ -4505,7 +4574,7 @@ | |||
| 4505 | </div> | 4574 | </div> |
| 4506 | <div id="persona-management-button" class="drawer"> | 4575 | <div id="persona-management-button" class="drawer"> |
| 4507 | <div class="drawer-toggle"> | 4576 | <div class="drawer-toggle"> |
| 4508 | <div class="drawer-icon fa-solid fa-face-smile closedIcon" title="Persona Management" data-i18n="[title]Persona Management"></div> | 4577 | <div class="drawer-icon fa-solid fa-face-smile fa-fw closedIcon" title="Persona Management" data-i18n="[title]Persona Management"></div> |
| 4509 | </div> | 4578 | </div> |
| 4510 | <div class="drawer-content closedDrawer"> | 4579 | <div class="drawer-content closedDrawer"> |
| 4511 | <div class="flex-container wide100p alignitemscenter spaceBetween flexNoGap"> | 4580 | <div class="flex-container wide100p alignitemscenter spaceBetween flexNoGap"> |
| @@ -4539,7 +4608,7 @@ | |||
| 4539 | <i class="fa-solid fa-person-circle-question fa-fw"></i> | 4608 | <i class="fa-solid fa-person-circle-question fa-fw"></i> |
| 4540 | <div data-i18n="Create">Create</div> | 4609 | <div data-i18n="Create">Create</div> |
| 4541 | </div> | 4610 | </div> |
| 4542 | <input id="persona_search_bar" class="text_pole width100p flex1 margin0" type="search" data-i18n="[placeholder]Search..." placeholder="Search..." maxlength="100"> | 4611 | <input id="persona_search_bar" class="text_pole width100p flex1 margin0" type="search" data-i18n="[placeholder]Search..." placeholder="Search..."> |
| 4543 | <select id="persona_sort_order" class="margin0"> | 4612 | <select id="persona_sort_order" class="margin0"> |
| 4544 | <option value="search" data-i18n="Search" hidden>Search</option> | 4613 | <option value="search" data-i18n="Search" hidden>Search</option> |
| 4545 | <option value="asc">A-Z</option> | 4614 | <option value="asc">A-Z</option> |
| @@ -4559,7 +4628,7 @@ | |||
| 4559 | <div class="flex1"> | 4628 | <div class="flex1"> |
| 4560 | <h4 data-i18n="Name">Name</h4> | 4629 | <h4 data-i18n="Name">Name</h4> |
| 4561 | <div class="change_name"> | 4630 | <div class="change_name"> |
| 4562 | <input id="your_name" name="your_name" data-i18n="[placeholder]Enter your name" placeholder="Enter your name" class="text_pole wide100p" maxlength="100" value="" autocomplete="off"> | 4631 | <input id="your_name" name="your_name" data-i18n="[placeholder]Enter your name" placeholder="Enter your name" class="text_pole wide100p" value="" autocomplete="off"> |
| 4563 | <div id="your_name_button" class="menu_button fa-solid fa-check" title="Click to set a new User Name" data-i18n="[title]Click to set a new User Name"> | 4632 | <div id="your_name_button" class="menu_button fa-solid fa-check" title="Click to set a new User Name" data-i18n="[title]Click to set a new User Name"> |
| 4564 | </div> | 4633 | </div> |
| 4565 | <div id="lock_user_name" class="menu_button fa-solid fa-unlock" title="Click to lock your selected persona to the current chat. Click again to remove the lock." data-i18n="[title]Click to lock your selected persona to the current chat. Click again to remove the lock."> | 4634 | <div id="lock_user_name" class="menu_button fa-solid fa-unlock" title="Click to lock your selected persona to the current chat. Click again to remove the lock." data-i18n="[title]Click to lock your selected persona to the current chat. Click again to remove the lock."> |
| @@ -4569,13 +4638,14 @@ | |||
| 4569 | </div> | 4638 | </div> |
| 4570 | <div> | 4639 | <div> |
| 4571 | <h4 data-i18n="Persona Description">Persona Description</h4> | 4640 | <h4 data-i18n="Persona Description">Persona Description</h4> |
| 4572 | <textarea id="persona_description" name="persona_description" data-i18n="[placeholder]Example: [{{user}} is a 28-year-old Romanian cat girl.]" placeholder="Example: [{{user}} is a 28-year-old Romanian cat girl.]" class="text_pole textarea_compact" maxlength="50000" value="" autocomplete="off" rows="8"></textarea> | 4641 | <textarea id="persona_description" name="persona_description" data-i18n="[placeholder]Example: [{{user}} is a 28-year-old Romanian cat girl.]" placeholder="Example: [{{user}} is a 28-year-old Romanian cat girl.]" class="text_pole textarea_compact" value="" autocomplete="off" rows="8"></textarea> |
| 4573 | <div class="extension_token_counter"> | 4642 | <div class="extension_token_counter"> |
| 4574 | <span data-i18n="Tokens persona description">Tokens</span>: <span id="persona_description_token_count">0</span> | 4643 | <span data-i18n="Tokens persona description">Tokens</span>: <span id="persona_description_token_count">0</span> |
| 4575 | </div> | 4644 | </div> |
| 4576 | <div data-newbie-hidden> | 4645 | <div> |
| 4577 | <label for="persona_description_position" data-i18n="Position:">Position:</label> | 4646 | <label for="persona_description_position" data-i18n="Position:">Position:</label> |
| 4578 | <select id="persona_description_position"> | 4647 | <select id="persona_description_position"> |
| 4648 | <option value="9" data-i18n="None (disabled)">None (disabled)</option> | ||
| 4579 | <option value="0" data-i18n="In Story String / Prompt Manager">In Story String / Prompt Manager</option> | 4649 | <option value="0" data-i18n="In Story String / Prompt Manager">In Story String / Prompt Manager</option> |
| 4580 | <option value="2" data-i18n="Top of Author's Note">Top of Author's Note</option> | 4650 | <option value="2" data-i18n="Top of Author's Note">Top of Author's Note</option> |
| 4581 | <option value="3" data-i18n="Bottom of Author's Note">Bottom of Author's Note</option> | 4651 | <option value="3" data-i18n="Bottom of Author's Note">Bottom of Author's Note</option> |
| @@ -4612,7 +4682,7 @@ | |||
| 4612 | </div> | 4682 | </div> |
| 4613 | <div id="rightNavHolder" class="drawer"> | 4683 | <div id="rightNavHolder" class="drawer"> |
| 4614 | <div id="unimportantYes" class="drawer-toggle drawer-header"> | 4684 | <div id="unimportantYes" class="drawer-toggle drawer-header"> |
| 4615 | <div id="rightNavDrawerIcon" class="drawer-icon fa-solid fa-address-card closedIcon" title="Character Management" data-i18n="[title]Character Management"> | 4685 | <div id="rightNavDrawerIcon" class="drawer-icon fa-solid fa-address-card fa-fw closedIcon" title="Character Management" data-i18n="[title]Character Management"> |
| 4616 | </div> | 4686 | </div> |
| 4617 | </div> | 4687 | </div> |
| 4618 | <nav id="right-nav-panel" class="drawer-content closedDrawer fillRight"> | 4688 | <nav id="right-nav-panel" class="drawer-content closedDrawer fillRight"> |
| @@ -4662,7 +4732,7 @@ | |||
| 4662 | <form id="form_create" action="javascript:void(null);" method="post" enctype="multipart/form-data"> | 4732 | <form id="form_create" action="javascript:void(null);" method="post" enctype="multipart/form-data"> |
| 4663 | <div id="avatar-and-name-block"> | 4733 | <div id="avatar-and-name-block"> |
| 4664 | <div id="name_div"> | 4734 | <div id="name_div"> |
| 4665 | <input id="character_name_pole" name="ch_name" class="text_pole" data-i18n="[placeholder]Name this character" placeholder="Name this character" maxlength="100" value="" autocomplete="off"> | 4735 | <input id="character_name_pole" name="ch_name" class="text_pole" data-i18n="[placeholder]Name this character" placeholder="Name this character" value="" autocomplete="off"> |
| 4666 | <div class="extension_token_counter"> | 4736 | <div class="extension_token_counter"> |
| 4667 | <span data-i18n="extension_token_counter">Tokens:</span> <span data-token-counter="character_name_pole" data-token-permanent="true">counting...</span> | 4737 | <span data-i18n="extension_token_counter">Tokens:</span> <span data-token-counter="character_name_pole" data-token-permanent="true">counting...</span> |
| 4668 | </div> | 4738 | </div> |
| @@ -4733,7 +4803,7 @@ | |||
| 4733 | </div> | 4803 | </div> |
| 4734 | <div id="tags_div"> | 4804 | <div id="tags_div"> |
| 4735 | <div class="tag_controls"> | 4805 | <div class="tag_controls"> |
| 4736 | <input id="tagInput" class="text_pole textarea_compact tag_input wide100p margin0" data-i18n="[placeholder]Search / Create Tags" placeholder="Search / Create tags" maxlength="50" /> | 4806 | <input id="tagInput" class="text_pole textarea_compact tag_input wide100p margin0" data-i18n="[placeholder]Search / Create Tags" placeholder="Search / Create tags" /> |
| 4737 | <div class="tags_view menu_button fa-solid fa-tags" title="View all tags" data-i18n="[title]View all tags"></div> | 4807 | <div class="tags_view menu_button fa-solid fa-tags" title="View all tags" data-i18n="[title]View all tags"></div> |
| 4738 | </div> | 4808 | </div> |
| 4739 | <div id="tagList" class="tags"></div> | 4809 | <div id="tagList" class="tags"></div> |
| @@ -4753,7 +4823,7 @@ | |||
| 4753 | <hr> | 4823 | <hr> |
| 4754 | <div id="description_div" class="title_restorable"> | 4824 | <div id="description_div" class="title_restorable"> |
| 4755 | <div class="flex-container alignitemscenter"> | 4825 | <div class="flex-container alignitemscenter"> |
| 4756 | <span data-i18n="Character Description">Description</span> | 4826 | <span data-i18n="Character Description" class="mdhotkey_location">Description</span> |
| 4757 | <i class="editor_maximize fa-solid fa-maximize right_menu_button" data-for="description_textarea" title="Expand the editor" data-i18n="[title]Expand the editor"></i> | 4827 | <i class="editor_maximize fa-solid fa-maximize right_menu_button" data-for="description_textarea" title="Expand the editor" data-i18n="[title]Expand the editor"></i> |
| 4758 | <a href="https://docs.sillytavern.app/usage/core-concepts/characterdesign/#character-description" class="notes-link" target="_blank"> | 4828 | <a href="https://docs.sillytavern.app/usage/core-concepts/characterdesign/#character-description" class="notes-link" target="_blank"> |
| 4759 | <span class="fa-solid fa-circle-question note-link-span"></span> | 4829 | <span class="fa-solid fa-circle-question note-link-span"></span> |
| @@ -4767,7 +4837,7 @@ | |||
| 4767 | </span> | 4837 | </span> |
| 4768 | </div> | 4838 | </div> |
| 4769 | </div> | 4839 | </div> |
| 4770 | <textarea id="description_textarea" data-i18n="[placeholder]Describe your character's physical and mental traits here." placeholder="Describe your character's physical and mental traits here." name="description" placeholder=""></textarea> | 4840 | <textarea id="description_textarea" class="mdHotkeys" data-i18n="[placeholder]Describe your character's physical and mental traits here." placeholder="Describe your character's physical and mental traits here." name="description" placeholder=""></textarea> |
| 4771 | <div class="extension_token_counter"> | 4841 | <div class="extension_token_counter"> |
| 4772 | <span data-i18n="extension_token_counter">Tokens:</span> <span data-token-counter="description_textarea" data-token-permanent="true">counting...</span> | 4842 | <span data-i18n="extension_token_counter">Tokens:</span> <span data-token-counter="description_textarea" data-token-permanent="true">counting...</span> |
| 4773 | </div> | 4843 | </div> |
| @@ -4775,7 +4845,7 @@ | |||
| 4775 | <div id="firstMessageWrapper" class="flex-container flexFlowColumn flex1"> | 4845 | <div id="firstMessageWrapper" class="flex-container flexFlowColumn flex1"> |
| 4776 | <div id="first_message_div" class="title_restorable"> | 4846 | <div id="first_message_div" class="title_restorable"> |
| 4777 | <div class="flex-container alignitemscenter flex1"> | 4847 | <div class="flex-container alignitemscenter flex1"> |
| 4778 | <span data-i18n="First message">First message</span> | 4848 | <span data-i18n="First message" class="mdhotkey_location">First message</span> |
| 4779 | <i class="editor_maximize fa-solid fa-maximize right_menu_button" data-for="firstmessage_textarea" title="Expand the editor" data-i18n="[title]Expand the editor"></i> | 4849 | <i class="editor_maximize fa-solid fa-maximize right_menu_button" data-for="firstmessage_textarea" title="Expand the editor" data-i18n="[title]Expand the editor"></i> |
| 4780 | <a href="https://docs.sillytavern.app/usage/core-concepts/characterdesign/#first-message" class="notes-link" target="_blank"> | 4850 | <a href="https://docs.sillytavern.app/usage/core-concepts/characterdesign/#first-message" class="notes-link" target="_blank"> |
| 4781 | <span class="fa-solid fa-circle-question note-link-span"></span> | 4851 | <span class="fa-solid fa-circle-question note-link-span"></span> |
| @@ -4787,7 +4857,7 @@ | |||
| 4787 | </span> | 4857 | </span> |
| 4788 | </div> | 4858 | </div> |
| 4789 | </div> | 4859 | </div> |
| 4790 | <textarea id="firstmessage_textarea" data-i18n="[placeholder]This will be the first message from the character that starts every chat." placeholder="This will be the first message from the character that starts every chat." name="first_mes" placeholder=""></textarea> | 4860 | <textarea class="mdHotkeys" id="firstmessage_textarea" data-i18n="[placeholder]This will be the first message from the character that starts every chat." placeholder="This will be the first message from the character that starts every chat." name="first_mes" placeholder=""></textarea> |
| 4791 | <div class="extension_token_counter"> | 4861 | <div class="extension_token_counter"> |
| 4792 | <span data-i18n="extension_token_counter">Tokens:</span> <span data-token-counter="firstmessage_textarea">counting...</span> | 4862 | <span data-i18n="extension_token_counter">Tokens:</span> <span data-token-counter="firstmessage_textarea">counting...</span> |
| 4793 | </div> | 4863 | </div> |
| @@ -4818,12 +4888,12 @@ | |||
| 4818 | <div class="inline-drawer-content"> | 4888 | <div class="inline-drawer-content"> |
| 4819 | <div id="group-metadata-controls" class="marginTopBot5"> | 4889 | <div id="group-metadata-controls" class="marginTopBot5"> |
| 4820 | <div class="flex-container wide100p"> | 4890 | <div class="flex-container wide100p"> |
| 4821 | <input id="rm_group_chat_name" class="text_pole flex1" type="text" name="chat_name" data-i18n="[placeholder]Chat Name (Optional)" placeholder="Chat Name (Optional)" maxlength="200" /> | 4891 | <input id="rm_group_chat_name" class="text_pole flex1" type="text" name="chat_name" data-i18n="[placeholder]Chat Name (Optional)" placeholder="Chat Name (Optional)" /> |
| 4822 | <div class="chat_lorebook_button menu_button fa-solid fa-passport" title="Chat Lore" data-i18n="[title]Chat Lore"></div> | 4892 | <div class="chat_lorebook_button menu_button fa-solid fa-passport" title="Chat Lore" data-i18n="[title]Chat Lore"></div> |
| 4823 | </div> | 4893 | </div> |
| 4824 | <div id="group_tags_div" class="wide100p"> | 4894 | <div id="group_tags_div" class="wide100p"> |
| 4825 | <div class="tag_controls"> | 4895 | <div class="tag_controls"> |
| 4826 | <input id="groupTagInput" class="text_pole textarea_compact tag_input flex1 margin0" data-i18n="[placeholder]Search / Create Tags" placeholder="Search / Create tags" maxlength="50" /> | 4896 | <input id="groupTagInput" class="text_pole textarea_compact tag_input flex1 margin0" data-i18n="[placeholder]Search / Create Tags" placeholder="Search / Create tags" /> |
| 4827 | <div class="tags_view menu_button fa-solid fa-tags margin0" title="View all tags" data-i18n="[title]View all tags"></div> | 4897 | <div class="tags_view menu_button fa-solid fa-tags margin0" title="View all tags" data-i18n="[title]View all tags"></div> |
| 4828 | </div> | 4898 | </div> |
| 4829 | <div id="groupTagList" class="tags paddingTopBot5"></div> | 4899 | <div id="groupTagList" class="tags paddingTopBot5"></div> |
| @@ -4865,7 +4935,7 @@ | |||
| 4865 | <div class="fa-solid fa-circle-info opacity50p" data-i18n="[title]When 'Join character cards' is selected, all respective fields of the characters are being joined together.This means that in the story string for example all character descriptions will be joined to one big text.If you want those fields to be separated, you can define a prefix or suffix here.This value supports normal macros and will also replace {{char}} with the relevant char's name and <FIELDNAME> with the name of the part (e.g.: description, personality, scenario, etc.)" title="When 'Join character cards' is selected, all respective fields of the characters are being joined together. This means that in the story string for example all character descriptions will be joined to one big text. If you want those fields to be separated, you can define a prefix or suffix here. This value supports normal macros and will also replace {{char}} with the relevant char's name and <FIELDNAME> with the name of the part (e.g.: description, personality, scenario, etc.)"> | 4935 | <div class="fa-solid fa-circle-info opacity50p" data-i18n="[title]When 'Join character cards' is selected, all respective fields of the characters are being joined together.This means that in the story string for example all character descriptions will be joined to one big text.If you want those fields to be separated, you can define a prefix or suffix here.This value supports normal macros and will also replace {{char}} with the relevant char's name and <FIELDNAME> with the name of the part (e.g.: description, personality, scenario, etc.)" title="When 'Join character cards' is selected, all respective fields of the characters are being joined together. This means that in the story string for example all character descriptions will be joined to one big text. If you want those fields to be separated, you can define a prefix or suffix here. This value supports normal macros and will also replace {{char}} with the relevant char's name and <FIELDNAME> with the name of the part (e.g.: description, personality, scenario, etc.)"> |
| 4866 | </div> | 4936 | </div> |
| 4867 | </label> | 4937 | </label> |
| 4868 | <textarea id="rm_group_generation_mode_join_prefix" class="text_pole wide100p textarea_compact autoSetHeight" maxlength="2000" placeholder="—" rows="1"></textarea> | 4938 | <textarea id="rm_group_generation_mode_join_prefix" class="text_pole wide100p textarea_compact autoSetHeight" placeholder="—" rows="1"></textarea> |
| 4869 | </div> | 4939 | </div> |
| 4870 | <div class="flex1 flexGap5" title="Inserted after each part of the joined fields." data-i18n="[title]Inserted after each part of the joined fields."> | 4940 | <div class="flex1 flexGap5" title="Inserted after each part of the joined fields." data-i18n="[title]Inserted after each part of the joined fields."> |
| 4871 | <label for="rm_group_generation_mode_join_suffix" class="flexnowrap width100p whitespacenowrap"> | 4941 | <label for="rm_group_generation_mode_join_suffix" class="flexnowrap width100p whitespacenowrap"> |
| @@ -4873,7 +4943,7 @@ | |||
| 4873 | <div class="fa-solid fa-circle-info opacity50p" data-i18n="[title]When 'Join character cards' is selected, all respective fields of the characters are being joined together.This means that in the story string for example all character descriptions will be joined to one big text.If you want those fields to be separated, you can define a prefix or suffix here.This value supports normal macros and will also replace {{char}} with the relevant char's name and <FIELDNAME> with the name of the part (e.g.: description, personality, scenario, etc.)" title="When 'Join character cards' is selected, all respective fields of the characters are being joined together. This means that in the story string for example all character descriptions will be joined to one big text. If you want those fields to be separated, you can define a prefix or suffix here. This value supports normal macros and will also replace {{char}} with the relevant char's name and <FIELDNAME> with the name of the part (e.g.: description, personality, scenario, etc.)"> | 4943 | <div class="fa-solid fa-circle-info opacity50p" data-i18n="[title]When 'Join character cards' is selected, all respective fields of the characters are being joined together.This means that in the story string for example all character descriptions will be joined to one big text.If you want those fields to be separated, you can define a prefix or suffix here.This value supports normal macros and will also replace {{char}} with the relevant char's name and <FIELDNAME> with the name of the part (e.g.: description, personality, scenario, etc.)" title="When 'Join character cards' is selected, all respective fields of the characters are being joined together. This means that in the story string for example all character descriptions will be joined to one big text. If you want those fields to be separated, you can define a prefix or suffix here. This value supports normal macros and will also replace {{char}} with the relevant char's name and <FIELDNAME> with the name of the part (e.g.: description, personality, scenario, etc.)"> |
| 4874 | </div> | 4944 | </div> |
| 4875 | </label> | 4945 | </label> |
| 4876 | <textarea id="rm_group_generation_mode_join_suffix" class="text_pole wide100p textarea_compact autoSetHeight" maxlength="2000" placeholder="—" rows="1"></textarea> | 4946 | <textarea id="rm_group_generation_mode_join_suffix" class="text_pole wide100p textarea_compact autoSetHeight" placeholder="—" rows="1"></textarea> |
| 4877 | </div> | 4947 | </div> |
| 4878 | </div> | 4948 | </div> |
| 4879 | <div id="GroupFavDelOkBack" class="flex-container flexGap5 spaceEvenly flex1"> | 4949 | <div id="GroupFavDelOkBack" class="flex-container flexGap5 spaceEvenly flex1"> |
| @@ -4928,7 +4998,7 @@ | |||
| 4928 | <div class="inline-drawer-content"> | 4998 | <div class="inline-drawer-content"> |
| 4929 | <div name="Unadded Char List" class="flex-container flexFlowColumn overflowYAuto flex1"> | 4999 | <div name="Unadded Char List" class="flex-container flexFlowColumn overflowYAuto flex1"> |
| 4930 | <div id="rm_group_add_members_header"> | 5000 | <div id="rm_group_add_members_header"> |
| 4931 | <input id="rm_group_filter" class="text_pole margin0" type="search" data-i18n="[placeholder]Search..." placeholder="Search..." maxlength="200" /> | 5001 | <input id="rm_group_filter" class="text_pole margin0" type="search" data-i18n="[placeholder]Search..." placeholder="Search..." /> |
| 4932 | </div> | 5002 | </div> |
| 4933 | <div class="rm_tag_controls"> | 5003 | <div class="rm_tag_controls"> |
| 4934 | <div class="tags rm_tag_filter"></div> | 5004 | <div class="tags rm_tag_filter"></div> |
| @@ -4942,7 +5012,7 @@ | |||
| 4942 | <div id="rm_character_import" class="right_menu" style="display: none;"> | 5012 | <div id="rm_character_import" class="right_menu" style="display: none;"> |
| 4943 | <form id="form_import" action="javascript:void(null);" method="post" enctype="multipart/form-data"> | 5013 | <form id="form_import" action="javascript:void(null);" method="post" enctype="multipart/form-data"> |
| 4944 | <input multiple type="file" id="character_import_file" accept=".json, image/png, .yaml, .yml, .charx" name="avatar"> | 5014 | <input multiple type="file" id="character_import_file" accept=".json, image/png, .yaml, .yml, .charx" name="avatar"> |
| 4945 | <input id="character_import_file_type" name="file_type" class="text_pole" maxlength="999" size="2" value="" autocomplete="off"> | 5015 | <input id="character_import_file_type" name="file_type" class="text_pole" value="" autocomplete="off"> |
| 4946 | </form> | 5016 | </form> |
| 4947 | <input type="file" id="character_replace_file" accept=".json, image/png, .yaml, .yml, .charx" name="replace_avatar" hidden> | 5017 | <input type="file" id="character_replace_file" accept=".json, image/png, .yaml, .yml, .charx" name="replace_avatar" hidden> |
| 4948 | </div> | 5018 | </div> |
| @@ -4953,7 +5023,7 @@ | |||
| 4953 | <div id="character_import_button" title="Import Character from File" data-i18n="[title]Import Character from File" class="menu_button fa-solid fa-file-import faSmallFontSquareFix"></div> | 5023 | <div id="character_import_button" title="Import Character from File" data-i18n="[title]Import Character from File" class="menu_button fa-solid fa-file-import faSmallFontSquareFix"></div> |
| 4954 | <div id="external_import_button" title="Import content from external URL" data-i18n="[title]Import content from external URL" class="menu_button fa-solid fa-cloud-arrow-down faSmallFontSquareFix"></div> | 5024 | <div id="external_import_button" title="Import content from external URL" data-i18n="[title]Import content from external URL" class="menu_button fa-solid fa-cloud-arrow-down faSmallFontSquareFix"></div> |
| 4955 | <div id="rm_button_group_chats" title="Create New Chat Group" data-i18n="[title]Create New Chat Group" class="menu_button fa-solid fa-users-gear "></div> | 5025 | <div id="rm_button_group_chats" title="Create New Chat Group" data-i18n="[title]Create New Chat Group" class="menu_button fa-solid fa-users-gear "></div> |
| 4956 | <input id="character_search_bar" class="text_pole width100p" type="search" data-i18n="[placeholder]Search..." placeholder="Search..." maxlength="100" /> | 5026 | <input id="character_search_bar" class="text_pole width100p" type="search" data-i18n="[placeholder]Search..." placeholder="Search..." /> |
| 4957 | <select id="character_sort_order" title="Characters sorting order" data-i18n="[title]Characters sorting order"> | 5027 | <select id="character_sort_order" title="Characters sorting order" data-i18n="[title]Characters sorting order"> |
| 4958 | <option data-field="search" data-order="desc" data-i18n="Search" hidden>Search</option> | 5028 | <option data-field="search" data-order="desc" data-i18n="Search" hidden>Search</option> |
| 4959 | <option data-field="name" data-order="asc" data-i18n="A-Z">A-Z</option> | 5029 | <option data-field="name" data-order="asc" data-i18n="A-Z">A-Z</option> |
| @@ -4989,6 +5059,61 @@ | |||
| 4989 | </div> | 5059 | </div> |
| 4990 | </div> | 5060 | </div> |
| 4991 | <!-- various fullscreen popups --> | 5061 | <!-- various fullscreen popups --> |
| 5062 | <div name="templatesAndPopupsWrapper"> <!--this div is just for IDE sanity for quick collapsing--> | ||
| 5063 | <div id="export_format_popup" class="list-group"> | ||
| 5064 | <div class="export_format list-group-item" data-format="png">PNG</div> | ||
| 5065 | <div class="export_format list-group-item" data-format="json">JSON</div> | ||
| 5066 | </div> | ||
| 5067 | <div id="zoomed_avatar_template" class="template_element"> | ||
| 5068 | <div class="zoomed_avatar"> | ||
| 5069 | <div class="panelControlBar flex-container"> | ||
| 5070 | <div class="fa-fw fa-solid fa-grip drag-grabber"></div> | ||
| 5071 | <div class="fa-fw fa-solid fa-circle-xmark dragClose" id="closeZoom"></div> | ||
| 5072 | </div> | ||
| 5073 | <div class="zoomed_avatar_container"> | ||
| 5074 | <img class="zoomed_avatar_img" src="" data-izoomify-url="" data-izoomify-magnify="1.8" data-izoomify-duration="300" alt=""> | ||
| 5075 | </div> | ||
| 5076 | </div> | ||
| 5077 | </div> | ||
| 5078 | <template id="generic_draggable_template"> | ||
| 5079 | <div class="draggable"> | ||
| 5080 | <div class="dragTitle"></div> | ||
| 5081 | <div class="panelControlBar flex-container"> | ||
| 5082 | <div class="fa-fw fa-solid fa-grip drag-grabber"></div> | ||
| 5083 | <div class="fa-fw fa-solid fa-circle-xmark dragClose"></div> | ||
| 5084 | </div> | ||
| 5085 | </div> | ||
| 5086 | </template> | ||
| 5087 | <div id="user_avatar_template" class="template_element"> | ||
| 5088 | <div class="avatar-container"> | ||
| 5089 | <div imgfile="" class="avatar"> | ||
| 5090 | <img src="" alt="User Avatar"> | ||
| 5091 | </div> | ||
| 5092 | <div class="flex-container wide100pLess70px character_select_container"> | ||
| 5093 | <div class="wide100p character_name_block"> | ||
| 5094 | <span class="ch_name flex1"></span> | ||
| 5095 | <div class="avatar-buttons"> | ||
| 5096 | <button class="menu_button bind_user_name" title="Bind user name to that avatar" data-i18n="[title]Bind user name to that avatar"> | ||
| 5097 | <i class="fa-fw fa-solid fa-user-edit"></i> | ||
| 5098 | </button> | ||
| 5099 | <button class="menu_button set_persona_image" title="Change persona image" data-i18n="[title]Change persona image"> | ||
| 5100 | <i class="fa-fw fa-solid fa-image"></i> | ||
| 5101 | </button> | ||
| 5102 | <button class="menu_button set_default_persona" title="Select this as default persona for the new chats." data-i18n="[title]Select this as default persona for the new chats."> | ||
| 5103 | <i class="fa-fw fa-solid fa-crown"></i> | ||
| 5104 | </button> | ||
| 5105 | <button class="menu_button duplicate_persona" title="Duplicate persona" data-i18n="[title]Duplicate persona"> | ||
| 5106 | <i class="fa-fw fa-solid fa-clone"></i> | ||
| 5107 | </button> | ||
| 5108 | <button class="menu_button delete_avatar" title="Delete persona" data-i18n="[title]Delete persona"> | ||
| 5109 | <i class="fa-fw fa-solid fa-trash-alt"></i> | ||
| 5110 | </button> | ||
| 5111 | </div> | ||
| 5112 | </div> | ||
| 5113 | <div class="ch_description"></div> | ||
| 5114 | </div> | ||
| 5115 | </div> | ||
| 5116 | </div> | ||
| 4992 | <template id="popup_template" data-i18n="[popup-button-save]popup-button-save;[popup-button-yes]popup-button-yes;[popup-button-no]popup-button-no;[popup-button-cancel]popup-button-cancel;[popup-button-import]popup-button-import;[popup-button-crop]popup-button-crop" popup-button-save="Save" popup-button-yes="Yes" popup-button-no="No" popup-button-cancel="Cancel" popup-button-import="Import" popup-button-crop="Crop"> <!-- localization data holder for popups --> | 5117 | <template id="popup_template" data-i18n="[popup-button-save]popup-button-save;[popup-button-yes]popup-button-yes;[popup-button-no]popup-button-no;[popup-button-cancel]popup-button-cancel;[popup-button-import]popup-button-import;[popup-button-crop]popup-button-crop" popup-button-save="Save" popup-button-yes="Yes" popup-button-no="No" popup-button-cancel="Cancel" popup-button-import="Import" popup-button-crop="Crop"> <!-- localization data holder for popups --> |
| 4993 | <dialog class="popup"> | 5118 | <dialog class="popup"> |
| 4994 | <div class="popup-body"> | 5119 | <div class="popup-body"> |
| @@ -5041,14 +5166,14 @@ | |||
| 5041 | <small data-i18n="Insert {{original}} into either box to include the respective default prompt from system settings.">Insert {{original}} into either box to include the respective default prompt from system settings.</small> | 5166 | <small data-i18n="Insert {{original}} into either box to include the respective default prompt from system settings.">Insert {{original}} into either box to include the respective default prompt from system settings.</small> |
| 5042 | <div> | 5167 | <div> |
| 5043 | <h4 data-i18n="Main Prompt">Main Prompt</h4> | 5168 | <h4 data-i18n="Main Prompt">Main Prompt</h4> |
| 5044 | <textarea id="system_prompt_textarea" name="system_prompt" data-i18n="[placeholder]Any contents here will replace the default Main Prompt used for this character. (v2 spec: system_prompt)" placeholder="Any contents here will replace the default Main Prompt used for this character. (v2 spec: system_prompt)" form="form_create" class="text_pole" autocomplete="off" rows="3" maxlength="50000"></textarea> | 5169 | <textarea id="system_prompt_textarea" name="system_prompt" data-i18n="[placeholder]Any contents here will replace the default Main Prompt used for this character. (v2 spec: system_prompt)" placeholder="Any contents here will replace the default Main Prompt used for this character. (v2 spec: system_prompt)" form="form_create" class="text_pole" autocomplete="off" rows="3"></textarea> |
| 5045 | <div class="extension_token_counter"> | 5170 | <div class="extension_token_counter"> |
| 5046 | <span data-i18n="extension_token_counter">Tokens:</span> <span data-token-counter="system_prompt_textarea">counting...</span> | 5171 | <span data-i18n="extension_token_counter">Tokens:</span> <span data-token-counter="system_prompt_textarea">counting...</span> |
| 5047 | </div> | 5172 | </div> |
| 5048 | </div> | 5173 | </div> |
| 5049 | <div> | 5174 | <div> |
| 5050 | <h4 data-i18n="Post-History Instructions">Post-History Instructions</h4> | 5175 | <h4 data-i18n="Post-History Instructions">Post-History Instructions</h4> |
| 5051 | <textarea id="post_history_instructions_textarea" name="post_history_instructions" data-i18n="[placeholder]Any contents here will replace the default Post-History Instructions used for this character. (v2 spec: post_history_instructions)" placeholder="Any contents here will replace the default Post-History Instructions used for this character. (v2 spec: post_history_instructions)" form="form_create" class="text_pole" autocomplete="off" rows="3" maxlength="50000"></textarea> | 5176 | <textarea id="post_history_instructions_textarea" name="post_history_instructions" data-i18n="[placeholder]Any contents here will replace the default Post-History Instructions used for this character. (v2 spec: post_history_instructions)" placeholder="Any contents here will replace the default Post-History Instructions used for this character. (v2 spec: post_history_instructions)" form="form_create" class="text_pole" autocomplete="off" rows="3"></textarea> |
| 5052 | <div class="extension_token_counter"> | 5177 | <div class="extension_token_counter"> |
| 5053 | <span data-i18n="extension_token_counter">Tokens:</span> <span data-token-counter="post_history_instructions_textarea">counting...</span> | 5178 | <span data-i18n="extension_token_counter">Tokens:</span> <span data-token-counter="post_history_instructions_textarea">counting...</span> |
| 5054 | </div> | 5179 | </div> |
| @@ -5069,44 +5194,44 @@ | |||
| 5069 | <div class="flex-container flexnowrap"> | 5194 | <div class="flex-container flexnowrap"> |
| 5070 | <div class="flex1"> | 5195 | <div class="flex1"> |
| 5071 | <h4 data-i18n="Created by">Created by</h4> | 5196 | <h4 data-i18n="Created by">Created by</h4> |
| 5072 | <textarea id="creator_textarea" name="creator" data-i18n="[placeholder](Botmaker's name / Contact Info)" placeholder="(Botmaker's name / Contact info)" form="form_create" class="text_pole" autocomplete="off" rows="2" maxlength="5000"></textarea> | 5197 | <textarea id="creator_textarea" name="creator" data-i18n="[placeholder](Botmaker's name / Contact Info)" placeholder="(Botmaker's name / Contact info)" form="form_create" class="text_pole" autocomplete="off" rows="2"></textarea> |
| 5073 | </div> | 5198 | </div> |
| 5074 | <div class="flex1"> | 5199 | <div class="flex1"> |
| 5075 | <h4 data-i18n="Character Version">Character Version</h4> | 5200 | <h4 data-i18n="Character Version">Character Version</h4> |
| 5076 | <textarea id="character_version_textarea" name="character_version" data-i18n="[placeholder](If you want to track character versions)" placeholder="(If you want to track character versions)" form="form_create" class="text_pole" autocomplete="off" rows="2" maxlength="500"></textarea> | 5201 | <textarea id="character_version_textarea" name="character_version" data-i18n="[placeholder](If you want to track character versions)" placeholder="(If you want to track character versions)" form="form_create" class="text_pole" autocomplete="off" rows="2"></textarea> |
| 5077 | </div> | 5202 | </div> |
| 5078 | </div> | 5203 | </div> |
| 5079 | <div class="flex-container flexnowrap"> | 5204 | <div class="flex-container flexnowrap"> |
| 5080 | <div class="flex1"> | 5205 | <div class="flex1"> |
| 5081 | <h4 class="flex-box" data-i18n="Creator's Notes">Creator's Notes<i class="editor_maximize fa-solid fa-maximize" data-for="creator_notes_textarea" title="Expand the editor" data-i18n="[title]Expand the editor"></i></h4> | 5206 | <h4 class="flex-box" data-i18n="Creator's Notes">Creator's Notes<i class="editor_maximize fa-solid fa-maximize" data-for="creator_notes_textarea" title="Expand the editor" data-i18n="[title]Expand the editor"></i></h4> |
| 5082 | <textarea id="creator_notes_textarea" name="creator_notes" data-i18n="[placeholder](Describe the bot, give use tips, or list the chat models it has been tested on. This will be displayed in the character list.)" placeholder="(Describe the bot, give use tips, or list the chat models it has been tested on. This will be displayed in the character list.)" form="form_create" class="text_pole" autocomplete="off" rows="4" maxlength="20000"></textarea> | 5207 | <textarea id="creator_notes_textarea" name="creator_notes" data-i18n="[placeholder](Describe the bot, give use tips, or list the chat models it has been tested on. This will be displayed in the character list.)" placeholder="(Describe the bot, give use tips, or list the chat models it has been tested on. This will be displayed in the character list.)" form="form_create" class="text_pole" autocomplete="off" rows="4"></textarea> |
| 5083 | </div> | 5208 | </div> |
| 5084 | <div class="flex1"> | 5209 | <div class="flex1"> |
| 5085 | <h4 data-i18n="Tags to Embed">Tags to Embed</h4> | 5210 | <h4 data-i18n="Tags to Embed">Tags to Embed</h4> |
| 5086 | <textarea id="tags_textarea" name="tags" data-i18n="[placeholder](Write a comma-separated list of tags)" placeholder="(Write a comma-separated list of tags)" form="form_create" class="text_pole" autocomplete="off" rows="4" maxlength="5000"></textarea> | 5211 | <textarea id="tags_textarea" name="tags" data-i18n="[placeholder](Write a comma-separated list of tags)" placeholder="(Write a comma-separated list of tags)" form="form_create" class="text_pole" autocomplete="off" rows="4"></textarea> |
| 5087 | </div> | 5212 | </div> |
| 5088 | </div> | 5213 | </div> |
| 5089 | </div> | 5214 | </div> |
| 5090 | </div> | 5215 | </div> |
| 5091 | <hr> | 5216 | <hr> |
| 5092 | <div id="personality_div"> | 5217 | <div id="personality_div"> |
| 5093 | <h4> | 5218 | <h4 class="flex-container alignItemsBaseline"> |
| 5094 | <span data-i18n="Personality summary">Personality summary</span> | 5219 | <span data-i18n="Personality summary">Personality summary</span> |
| 5095 | <a href="https://docs.sillytavern.app/usage/core-concepts/characterdesign/#personality-summary" class="notes-link" target="_blank"><span class="fa-solid fa-circle-question note-link-span"></span></a> | 5220 | <a href="https://docs.sillytavern.app/usage/core-concepts/characterdesign/#personality-summary" class="notes-link" target="_blank"><span class="fa-solid fa-circle-question note-link-span"></span></a> |
| 5096 | </h4> | 5221 | </h4> |
| 5097 | <textarea id="personality_textarea" name="personality" data-i18n="[placeholder](A brief description of the personality)" placeholder="(A brief description of the personality)" form="form_create" class="text_pole" autocomplete="off" rows="4" maxlength="50000"></textarea> | 5222 | <textarea id="personality_textarea" name="personality" data-i18n="[placeholder](A brief description of the personality)" placeholder="(A brief description of the personality)" form="form_create" class="text_pole" autocomplete="off" rows="4"></textarea> |
| 5098 | <div class="extension_token_counter"> | 5223 | <div class="extension_token_counter"> |
| 5099 | <span data-i18n="extension_token_counter">Tokens:</span> <span data-token-counter="personality_textarea" data-token-permanent="true">counting...</span> | 5224 | <span data-i18n="extension_token_counter">Tokens:</span> <span data-token-counter="personality_textarea" data-token-permanent="true">counting...</span> |
| 5100 | </div> | 5225 | </div> |
| 5101 | </div> | 5226 | </div> |
| 5102 | <div id="scenario_div"> | 5227 | <div id="scenario_div"> |
| 5103 | <h4> | 5228 | <h4 class="flex-container alignItemsBaseline"> |
| 5104 | <span data-i18n="Scenario">Scenario</span> | 5229 | <span data-i18n="Scenario">Scenario</span> |
| 5105 | <a href="https://docs.sillytavern.app/usage/core-concepts/characterdesign/#scenario" class="notes-link" target="_blank"> | 5230 | <a href="https://docs.sillytavern.app/usage/core-concepts/characterdesign/#scenario" class="notes-link" target="_blank"> |
| 5106 | <span class="fa-solid fa-circle-question note-link-span"></span> | 5231 | <span class="fa-solid fa-circle-question note-link-span"></span> |
| 5107 | </a> | 5232 | </a> |
| 5108 | </h4> | 5233 | </h4> |
| 5109 | <textarea id="scenario_pole" name="scenario" data-i18n="[placeholder](Circumstances and context of the interaction)" placeholder="(Circumstances and context of the interaction)" class="text_pole" maxlength="50000" value="" autocomplete="off" form="form_create" rows="4"></textarea> | 5234 | <textarea id="scenario_pole" name="scenario" data-i18n="[placeholder](Circumstances and context of the interaction)" placeholder="(Circumstances and context of the interaction)" class="text_pole" value="" autocomplete="off" form="form_create" rows="4"></textarea> |
| 5110 | <div class="extension_token_counter"> | 5235 | <div class="extension_token_counter"> |
| 5111 | <span data-i18n="extension_token_counter">Tokens:</span> <span data-token-counter="scenario_pole" data-token-permanent="true">counting...</span> | 5236 | <span data-i18n="extension_token_counter">Tokens:</span> <span data-token-counter="scenario_pole" data-token-permanent="true">counting...</span> |
| 5112 | </div> | 5237 | </div> |
| @@ -5118,7 +5243,7 @@ | |||
| 5118 | Character's Note | 5243 | Character's Note |
| 5119 | </span> | 5244 | </span> |
| 5120 | </h4> | 5245 | </h4> |
| 5121 | <textarea id="depth_prompt_prompt" name="depth_prompt_prompt" class="text_pole" rows="5" maxlength="50000" autocomplete="off" form="form_create" data-i18n="[placeholder](Text to be inserted in-chat @ designated depth and role)" placeholder="(Text to be inserted in-chat @ designated depth and role)"></textarea> | 5246 | <textarea id="depth_prompt_prompt" name="depth_prompt_prompt" class="text_pole" rows="5" autocomplete="off" form="form_create" data-i18n="[placeholder](Text to be inserted in-chat @ designated depth and role)" placeholder="(Text to be inserted in-chat @ designated depth and role)"></textarea> |
| 5122 | </div> | 5247 | </div> |
| 5123 | <div> | 5248 | <div> |
| 5124 | <h4> | 5249 | <h4> |
| @@ -5157,55 +5282,27 @@ | |||
| 5157 | <hr> | 5282 | <hr> |
| 5158 | <div id="mes_example_div" class="flex-container flexFlowColumn"> | 5283 | <div id="mes_example_div" class="flex-container flexFlowColumn"> |
| 5159 | <div> | 5284 | <div> |
| 5160 | <h4><span data-i18n="Examples of dialogue">Examples of dialogue</span></h4> | 5285 | <h4 class="flex-container gap5px alignItemsBaseline"><span data-i18n="Examples of dialogue" class="mdhotkey_location">Examples of dialogue</span></h4> |
| 5161 | <h5 data-i18n="Important to set the character's writing style.">Important to set the character's writing style. <a href="https://docs.sillytavern.app/usage/core-concepts/characterdesign/#examples-of-dialogue" class="notes-link" target="_blank"><span class="fa-solid fa-circle-question note-link-span"></span></a></h5> | 5286 | <h5 data-i18n="Important to set the character's writing style.">Important to set the character's writing style. <a href="https://docs.sillytavern.app/usage/core-concepts/characterdesign/#examples-of-dialogue" class="notes-link" target="_blank"><span class="fa-solid fa-circle-question note-link-span"></span></a></h5> |
| 5162 | </div> | 5287 | </div> |
| 5163 | <textarea id="mes_example_textarea" class="flexGrow" name="mes_example" data-i18n="[placeholder](Examples of chat dialog. Begin each example with START on a new line.)" placeholder="(Examples of chat dialog. Begin each example with <START> on a new line.)" form="form_create" maxlength="50000" rows="6"></textarea> | 5288 | <textarea id="mes_example_textarea" class="flexGrow mdHotkeys" name="mes_example" data-i18n="[placeholder](Examples of chat dialog. Begin each example with START on a new line.)" placeholder="(Examples of chat dialog. Begin each example with <START> on a new line.)" form="form_create" rows="6"></textarea> |
| 5164 | <div class="extension_token_counter"> | 5289 | <div class="extension_token_counter"> |
| 5165 | <span data-i18n="extension_token_counter">Tokens:</span> <span data-token-counter="mes_example_textarea">counting...</span> | 5290 | <span data-i18n="extension_token_counter">Tokens:</span> <span data-token-counter="mes_example_textarea">counting...</span> |
| 5166 | </div> | 5291 | </div> |
| 5167 | <!-- PLACEHOLDER CODE FOR NEW EXAMPLE CHAT HANDLING | 5292 | <!-- TODO: Example chats handhold-editor concept: https://gist.github.com/Cohee1207/50da02a4001ac1adae9b440f9b8e1079 --> |
| 5168 | <div name="exampleChatsBlockTemplate" class="flex-container flexFlowColumn"> | ||
| 5169 | <div class="flex-container alignitemscenter"> | ||
| 5170 | <textarea class="flexShrink flexGrow wideMinContent" rows="1" placeholder="Name for this example chat"></textarea> | ||
| 5171 | <div class="fa-solid fa-plus menu_button" title="Add a new message to this example chat block"></div> | ||
| 5172 | </div> | ||
| 5173 | <div class="flex-container whitespacenowrap"> | ||
| 5174 | <div class="flex-container flexFlowColumn"> | ||
| 5175 | <select> | ||
| 5176 | <option>{{user}}</option> | ||
| 5177 | <option>{{char}}</option> | ||
| 5178 | <option>Custom</option> | ||
| 5179 | </select> | ||
| 5180 | <textarea rows="1" placeholder="Custom Entity"></textarea> | ||
| 5181 | </div> | ||
| 5182 | <textarea class="flexShrink flexGrow wideMinContent" placeholder="Content of the example chat."></textarea> | ||
| 5183 | </div> | ||
| 5184 | <div class="flex-container whitespacenowrap"> | ||
| 5185 | <div class="flex-container flexFlowColumn"> | ||
| 5186 | <select> | ||
| 5187 | <option>{{user}}</option> | ||
| 5188 | <option>{{char}}</option> | ||
| 5189 | <option>Custom</option> | ||
| 5190 | </select> | ||
| 5191 | <textarea rows="1" placeholder="Custom Entity"></textarea> | ||
| 5192 | </div> | ||
| 5193 | <textarea class="flexShrink flexGrow wideMinContent" placeholder="Content of the example chat."></textarea> | ||
| 5194 | </div> | ||
| 5195 | </div> | ||
| 5196 | --> | ||
| 5197 | </div> | 5293 | </div> |
| 5198 | <div id="character_popup_ok" class="menu_button" data-i18n="Save">Save</div> | 5294 | <div id="character_popup_ok" class="menu_button" data-i18n="Save">Save</div> |
| 5199 | </div> | 5295 | </div> |
| 5296 | |||
| 5200 | <div id="shadow_select_chat_popup"> | 5297 | <div id="shadow_select_chat_popup"> |
| 5201 | <div id="select_chat_popup"> | 5298 | <div id="select_chat_popup"> |
| 5202 | <div name="selectChatPopupHeader" class="flex-container alignitemscenter justifySpaceBetween flexGap10"> | 5299 | <div name="selectChatPopupHeader" class="flex-container alignitemscenter justifySpaceBetween flexGap10"> |
| 5203 | <div id="select_chat_import"> <!-- import chat popup header --> | 5300 | <div id="select_chat_import"> <!-- import chat popup header --> |
| 5204 | <form id="form_import_chat" action="javascript:void(null);" method="post" enctype="multipart/form-data" style="display: none;"> | 5301 | <form id="form_import_chat" action="javascript:void(null);" method="post" enctype="multipart/form-data" style="display: none;"> |
| 5205 | <input type="file" id="chat_import_file" accept=".json, .jsonl" name="avatar"> | 5302 | <input type="file" id="chat_import_file" accept=".json, .jsonl" name="avatar"> |
| 5206 | <input id="chat_import_file_type" name="file_type" class="text_pole" maxlength="999" size="2" value="" autocomplete="off" style="display: none;"> | 5303 | <input id="chat_import_file_type" name="file_type" class="text_pole" value="" autocomplete="off" style="display: none;"> |
| 5207 | <input id="chat_import_avatar_url" name="avatar_url" class="text_pole" maxlength="999" size="2" value="" autocomplete="off" style="display: none;"> | 5304 | <input id="chat_import_avatar_url" name="avatar_url" class="text_pole" value="" autocomplete="off" style="display: none;"> |
| 5208 | <input id="chat_import_character_name" name="character_name" class="text_pole" maxlength="999" size="2" value="" autocomplete="off" style="display: none;"> | 5305 | <input id="chat_import_character_name" name="character_name" class="text_pole" value="" autocomplete="off" style="display: none;"> |
| 5209 | </form> | 5306 | </form> |
| 5210 | </div> | 5307 | </div> |
| 5211 | <div id="selectChatPopupHeaderText" class="TxtLrgBoldCenter"> | 5308 | <div id="selectChatPopupHeaderText" class="TxtLrgBoldCenter"> |
| @@ -5343,12 +5440,11 @@ | |||
| 5343 | <div class="inline-drawer-toggle fa-fw fa-solid fa-circle-chevron-down inline-drawer-icon down"></div> | 5440 | <div class="inline-drawer-toggle fa-fw fa-solid fa-circle-chevron-down inline-drawer-icon down"></div> |
| 5344 | <div class="fa-solid fa-toggle-on killSwitch" name="entryKillSwitch" title="Toggle entry's active state."></div> | 5441 | <div class="fa-solid fa-toggle-on killSwitch" name="entryKillSwitch" title="Toggle entry's active state."></div> |
| 5345 | <div class="flex-container alignitemscenter wide100p"> | 5442 | <div class="flex-container alignitemscenter wide100p"> |
| 5346 | |||
| 5347 | <div class="WIEntryTitleAndStatus flex-container flex1 alignitemscenter"> | 5443 | <div class="WIEntryTitleAndStatus flex-container flex1 alignitemscenter"> |
| 5348 | |||
| 5349 | <div class="flex-container flex1"> | 5444 | <div class="flex-container flex1"> |
| 5350 | <textarea class="text_pole" rows="1" name="comment" maxlength="5000" data-i18n="[placeholder]Entry Title/Memo" placeholder="Entry Title/Memo"></textarea> | 5445 | <textarea class="text_pole" rows="1" name="comment" data-i18n="[placeholder]Entry Title/Memo" placeholder="Entry Title/Memo"></textarea> |
| 5351 | </div> | 5446 | </div> |
| 5447 | <!-- <span class="world_entry_form_position_value"></span> --> | ||
| 5352 | <select data-i18n="[title]WI Entry Status:🔵 Constant🟢 Normal🔗 Vectorized❌ Disabled" title="WI Entry Status: 🔵 Constant 🟢 Normal 🔗 Vectorized ❌ Disabled" name="entryStateSelector" class="text_pole widthNatural margin0"> | 5448 | <select data-i18n="[title]WI Entry Status:🔵 Constant🟢 Normal🔗 Vectorized❌ Disabled" title="WI Entry Status: 🔵 Constant 🟢 Normal 🔗 Vectorized ❌ Disabled" name="entryStateSelector" class="text_pole widthNatural margin0"> |
| 5353 | <option value="constant" title="Constant" data-i18n="[title]WI_Entry_Status_Constant">🔵</option> | 5449 | <option value="constant" title="Constant" data-i18n="[title]WI_Entry_Status_Constant">🔵</option> |
| 5354 | <option value="normal" title="Normal" data-i18n="[title]WI_Entry_Status_Normal">🟢</option> | 5450 | <option value="normal" title="Normal" data-i18n="[title]WI_Entry_Status_Normal">🟢</option> |
| @@ -5417,7 +5513,7 @@ | |||
| 5417 | </small> | 5513 | </small> |
| 5418 | <small class="textAlignCenter" data-i18n="Primary Keywords">Primary Keywords</small> | 5514 | <small class="textAlignCenter" data-i18n="Primary Keywords">Primary Keywords</small> |
| 5419 | <select class="keyprimaryselect keyselect select2_multi_sameline" name="key" data-i18n="[placeholder]Keywords or Regexes" placeholder="Keywords or Regexes" multiple="multiple"></select> | 5515 | <select class="keyprimaryselect keyselect select2_multi_sameline" name="key" data-i18n="[placeholder]Keywords or Regexes" placeholder="Keywords or Regexes" multiple="multiple"></select> |
| 5420 | <textarea class="text_pole keyprimarytextpole mobile" name="key" rows="1" data-i18n="[placeholder]Comma separated list" placeholder="Comma separated list" maxlength="2000" style="display: none;"></textarea> | 5516 | <textarea class="text_pole keyprimarytextpole mobile" name="key" rows="1" data-i18n="[placeholder]Comma separated list" placeholder="Comma separated list" style="display: none;"></textarea> |
| 5421 | <button type="button" class="switch_input_type_icon" tabindex="-1" title="Switch to plaintext mode" data-i18n="[title]Switch to plaintext mode" data-icon-on="✨" data-icon-off="⌨️" data-tooltip-on="Switch to fancy mode" data-tooltip-off="Switch to plaintext mode"> | 5517 | <button type="button" class="switch_input_type_icon" tabindex="-1" title="Switch to plaintext mode" data-i18n="[title]Switch to plaintext mode" data-icon-on="✨" data-icon-off="⌨️" data-tooltip-on="Switch to fancy mode" data-tooltip-off="Switch to plaintext mode"> |
| 5422 | ⌨️ | 5518 | ⌨️ |
| 5423 | </button> | 5519 | </button> |
| @@ -5439,7 +5535,7 @@ | |||
| 5439 | </small> | 5535 | </small> |
| 5440 | <small class="textAlignCenter" data-i18n="Optional Filter">Optional Filter</small> | 5536 | <small class="textAlignCenter" data-i18n="Optional Filter">Optional Filter</small> |
| 5441 | <select class="keysecondaryselect keyselect select2_multi_sameline" name="keysecondary" data-i18n="[placeholder]Keywords or Regexes (ignored if empty)" placeholder="Keywords or Regexes (ignored if empty)" multiple="multiple"></select> | 5537 | <select class="keysecondaryselect keyselect select2_multi_sameline" name="keysecondary" data-i18n="[placeholder]Keywords or Regexes (ignored if empty)" placeholder="Keywords or Regexes (ignored if empty)" multiple="multiple"></select> |
| 5442 | <textarea class="text_pole keysecondarytextpole mobile" name="keysecondary" rows="1" data-i18n="[placeholder]Comma separated list (ignored if empty)" placeholder="Comma separated list (ignored if empty)" maxlength="2000" style="display: none;"></textarea> | 5538 | <textarea class="text_pole keysecondarytextpole mobile" name="keysecondary" rows="1" data-i18n="[placeholder]Comma separated list (ignored if empty)" placeholder="Comma separated list (ignored if empty)" style="display: none;"></textarea> |
| 5443 | <button type="button" class="switch_input_type_icon" tabindex="-1" title="Switch to plaintext mode" data-i18n="[title]Switch to plaintext mode" data-icon-on="✨" data-icon-off="⌨️" data-tooltip-on="Switch to fancy mode" data-tooltip-off="Switch to plaintext mode"> | 5539 | <button type="button" class="switch_input_type_icon" tabindex="-1" title="Switch to plaintext mode" data-i18n="[title]Switch to plaintext mode" data-icon-on="✨" data-icon-off="⌨️" data-tooltip-on="Switch to fancy mode" data-tooltip-off="Switch to plaintext mode"> |
| 5444 | ⌨️ | 5540 | ⌨️ |
| 5445 | </button> | 5541 | </button> |
| @@ -5453,23 +5549,23 @@ | |||
| 5453 | <div class="world_entry_form_control flex1"> | 5549 | <div class="world_entry_form_control flex1"> |
| 5454 | <small class="textAlignCenter" data-i18n="Case-Sensitive">Case-Sensitive</small> | 5550 | <small class="textAlignCenter" data-i18n="Case-Sensitive">Case-Sensitive</small> |
| 5455 | <select name="caseSensitive" class="text_pole widthNatural margin0"> | 5551 | <select name="caseSensitive" class="text_pole widthNatural margin0"> |
| 5456 | <option value="null" data-i18n="Use global setting">Use global setting</option> | 5552 | <option value="null" data-i18n="Use global">Use global</option> |
| 5457 | <option value="true" data-i18n="Yes">Yes</option> | 5553 | <option value="true" data-i18n="Yes">Yes</option> |
| 5458 | <option value="false" data-i18n="No">No</option> | 5554 | <option value="false" data-i18n="No">No</option> |
| 5459 | </select> | 5555 | </select> |
| 5460 | </div> | 5556 | </div> |
| 5461 | <div class="world_entry_form_control flex1"> | 5557 | <div class="world_entry_form_control flex1"> |
| 5462 | <small class="textAlignCenter" data-i18n="Match Whole Words">Match Whole Words</small> | 5558 | <small class="textAlignCenter" data-i18n="Whole Words">Whole Words</small> |
| 5463 | <select name="matchWholeWords" class="text_pole widthNatural margin0"> | 5559 | <select name="matchWholeWords" class="text_pole widthNatural margin0"> |
| 5464 | <option value="null" data-i18n="Use global setting">Use global setting</option> | 5560 | <option value="null" data-i18n="Use global">Use global</option> |
| 5465 | <option value="true" data-i18n="Yes">Yes</option> | 5561 | <option value="true" data-i18n="Yes">Yes</option> |
| 5466 | <option value="false" data-i18n="No">No</option> | 5562 | <option value="false" data-i18n="No">No</option> |
| 5467 | </select> | 5563 | </select> |
| 5468 | </div> | 5564 | </div> |
| 5469 | <div class="world_entry_form_control flex1"> | 5565 | <div class="world_entry_form_control flex1"> |
| 5470 | <small class="textAlignCenter" data-i18n="Use Group Scoring">Use Group Scoring</small> | 5566 | <small class="textAlignCenter" data-i18n="Group Scoring">Group Scoring</small> |
| 5471 | <select name="useGroupScoring" class="text_pole widthNatural margin0"> | 5567 | <select name="useGroupScoring" class="text_pole widthNatural margin0"> |
| 5472 | <option value="null" data-i18n="Use global setting">Use global setting</option> | 5568 | <option value="null" data-i18n="Use global">Use global</option> |
| 5473 | <option value="true" data-i18n="Yes">Yes</option> | 5569 | <option value="true" data-i18n="Yes">Yes</option> |
| 5474 | <option value="false" data-i18n="No">No</option> | 5570 | <option value="false" data-i18n="No">No</option> |
| 5475 | </select> | 5571 | </select> |
| @@ -5478,13 +5574,20 @@ | |||
| 5478 | <small class="textAlignCenter" data-i18n="Automation ID">Automation ID</small> | 5574 | <small class="textAlignCenter" data-i18n="Automation ID">Automation ID</small> |
| 5479 | <input class="text_pole margin0" name="automationId" type="text" placeholder="( None )" data-i18n="[placeholder]( None )"> | 5575 | <input class="text_pole margin0" name="automationId" type="text" placeholder="( None )" data-i18n="[placeholder]( None )"> |
| 5480 | </div> | 5576 | </div> |
| 5577 | <div class="world_entry_form_control flex1" title="Defines delay levels for recursive scans. Initially, only the first level (smallest number) will match. Once no matches are found, the next level becomes eligible for matching. This repeats until all levels are checked. Tied to the "Delay until recursion" setting." data-i18n="[title]delay_until_recursion_level"> | ||
| 5578 | <small class="textAlignCenter"> | ||
| 5579 | <span data-i18n="Recursion Level">Recursion Level</span> | ||
| 5580 | <div class="fa-solid fa-circle-info opacity50p"></div> | ||
| 5581 | </small> | ||
| 5582 | <input class="text_pole margin0" name="delayUntilRecursionLevel" type="text" placeholder="1"> | ||
| 5583 | </div> | ||
| 5481 | </div> | 5584 | </div> |
| 5482 | <div name="contentAndCharFilterBlock" class="world_entry_thin_controls flex2"> | 5585 | <div name="contentAndCharFilterBlock" class="world_entry_thin_controls flex2"> |
| 5483 | <div class="world_entry_form_control flex1"> | 5586 | <div class="world_entry_form_control flex1"> |
| 5484 | <label for="content "> | 5587 | <label for="content "> |
| 5485 | <small> | 5588 | <small> |
| 5486 | <span class="alignitemscenter flex-container flexnowrap wide100p justifySpaceBetween"> | 5589 | <span class="alignitemscenter flex-container flexnowrap wide100p justifySpaceBetween"> |
| 5487 | <span data-i18n="Content" class="alignitemscenter flex-container flexNoGap"> | 5590 | <span data-i18n="Content" class="alignitemscenter flex-container flexNoGap mdhotkey_location"> |
| 5488 | Content | 5591 | Content |
| 5489 | </span> | 5592 | </span> |
| 5490 | <span> | 5593 | <span> |
| @@ -5494,20 +5597,20 @@ | |||
| 5494 | <div> | 5597 | <div> |
| 5495 | <label class="checkbox flex-container alignitemscenter flexNoGap"> | 5598 | <label class="checkbox flex-container alignitemscenter flexNoGap"> |
| 5496 | <input type="checkbox" name="exclude_recursion" /> | 5599 | <input type="checkbox" name="exclude_recursion" /> |
| 5497 | <span data-i18n="Exclude from recursion"> | 5600 | <span data-i18n="Non-recursable (will not be activated by another)"> |
| 5498 | Non-recursable (this entry will not be activated by another) | 5601 | Non-recursable (will not be activated by another) |
| 5499 | </span> | 5602 | </span> |
| 5500 | </label> | 5603 | </label> |
| 5501 | <label class="checkbox flex-container alignitemscenter flexNoGap"> | 5604 | <label class="checkbox flex-container alignitemscenter flexNoGap"> |
| 5502 | <input type="checkbox" name="prevent_recursion" /> | 5605 | <input type="checkbox" name="prevent_recursion" /> |
| 5503 | <span data-i18n="Prevent further recursion (this entry will not activate others)"> | 5606 | <span data-i18n="Prevent further recursion (this entry will not activate others)"> |
| 5504 | Prevent further recursion (this entry will not activate others) | 5607 | Prevent further recursion (will not activate others) |
| 5505 | </span> | 5608 | </span> |
| 5506 | </label> | 5609 | </label> |
| 5507 | <label class="checkbox flex-container alignitemscenter flexNoGap"> | 5610 | <label class="checkbox flex-container alignitemscenter flexNoGap"> |
| 5508 | <input type="checkbox" name="delay_until_recursion" /> | 5611 | <input type="checkbox" name="delay_until_recursion" /> |
| 5509 | <span data-i18n="Delay until recursion (this entry can only be activated on recursive checking)"> | 5612 | <span data-i18n="Delay until recursion (can only be activated on recursive checking)"> |
| 5510 | Delay until recursion (this entry can only be activated on recursive checking) | 5613 | Delay until recursion (can only be activated on recursive checking) |
| 5511 | </span> | 5614 | </span> |
| 5512 | </label> | 5615 | </label> |
| 5513 | </div> | 5616 | </div> |
| @@ -5519,7 +5622,7 @@ | |||
| 5519 | </span> | 5622 | </span> |
| 5520 | </small> | 5623 | </small> |
| 5521 | </label> | 5624 | </label> |
| 5522 | <textarea class="text_pole" name="content" rows="8" data-i18n="[placeholder]What this keyword should mean to the AI, sent verbatim" placeholder="What this keyword should mean to the AI, sent verbatim"></textarea> | 5625 | <textarea class="text_pole mdHotkeys" name="content" rows="8" data-i18n="[placeholder]What this keyword should mean to the AI, sent verbatim" placeholder="What this keyword should mean to the AI, sent verbatim"></textarea> |
| 5523 | </div> | 5626 | </div> |
| 5524 | </div> | 5627 | </div> |
| 5525 | <div class="world_entry_thin_controls commentContainer"> | 5628 | <div class="world_entry_thin_controls commentContainer"> |
| @@ -5616,8 +5719,8 @@ | |||
| 5616 | </div> | 5719 | </div> |
| 5617 | <div class="range-block-range"> | 5720 | <div class="range-block-range"> |
| 5618 | <select name="characterFilter" class="select2_multi_sameline" multiple> | 5721 | <select name="characterFilter" class="select2_multi_sameline" multiple> |
| 5619 | <option value=""> | 5722 | <option value="" data-i18n="-- Characters not found --"> |
| 5620 | <span data-i18n="-- Characters not found --">-- Characters not found --</span> | 5723 | -- Characters not found -- |
| 5621 | </option> | 5724 | </option> |
| 5622 | </select> | 5725 | </select> |
| 5623 | </div> | 5726 | </div> |
| @@ -5674,7 +5777,6 @@ | |||
| 5674 | <input class="openai_logit_bias_text text_pole" data-i18n="[placeholder]Text or token ids" placeholder="Text or [token ids]" /> | 5777 | <input class="openai_logit_bias_text text_pole" data-i18n="[placeholder]Text or token ids" placeholder="Text or [token ids]" /> |
| 5675 | <input class="openai_logit_bias_value text_pole" type="number" min="-100" value="0" max="100" /> | 5778 | <input class="openai_logit_bias_value text_pole" type="number" min="-100" value="0" max="100" /> |
| 5676 | <i class="menu_button fa-solid fa-xmark openai_logit_bias_remove"></i> | 5779 | <i class="menu_button fa-solid fa-xmark openai_logit_bias_remove"></i> |
| 5677 | </form> | ||
| 5678 | </div> | 5780 | </div> |
| 5679 | </div> | 5781 | </div> |
| 5680 | <div id="logit_bias_template" class="template_element"> | 5782 | <div id="logit_bias_template" class="template_element"> |
| @@ -5807,7 +5909,7 @@ | |||
| 5807 | <div title="Create branch" class="mes_button mes_create_branch fa-regular fa-code-branch" data-i18n="[title]Create Branch"></div> | 5909 | <div title="Create branch" class="mes_button mes_create_branch fa-regular fa-code-branch" data-i18n="[title]Create Branch"></div> |
| 5808 | <div title="Copy" class="mes_button mes_copy fa-solid fa-copy " data-i18n="[title]Copy"></div> | 5910 | <div title="Copy" class="mes_button mes_copy fa-solid fa-copy " data-i18n="[title]Copy"></div> |
| 5809 | </div> | 5911 | </div> |
| 5810 | <div title="Open checkpoint chat" class="mes_button mes_bookmark fa-solid fa-flag" data-i18n="[title]Open checkpoint chat"></div> | 5912 | <div data-tooltip="Click to open checkpoint chat Shift+Click to replace the existing checkpoint with a new one" class="mes_button mes_bookmark fa-solid fa-flag" data-i18n="[data-tooltip]Open checkpoint chat Shift+Click to replace the existing checkpoint with a new one"></div> |
| 5811 | <div title="Edit" class="mes_button mes_edit fa-solid fa-pencil " data-i18n="[title]Edit"></div> | 5913 | <div title="Edit" class="mes_button mes_edit fa-solid fa-pencil " data-i18n="[title]Edit"></div> |
| 5812 | </div> | 5914 | </div> |
| 5813 | <div class="mes_edit_buttons"> | 5915 | <div class="mes_edit_buttons"> |
| @@ -5866,11 +5968,6 @@ | |||
| 5866 | <div id="onboarding_template" class="template_element"> | 5968 | <div id="onboarding_template" class="template_element"> |
| 5867 | <div class="onboarding"> | 5969 | <div class="onboarding"> |
| 5868 | <h3 data-i18n="Welcome to SillyTavern!">Welcome to SillyTavern!</h3> | 5970 | <h3 data-i18n="Welcome to SillyTavern!">Welcome to SillyTavern!</h3> |
| 5869 | <ul class="justifyLeft margin-bot-10px"> | ||
| 5870 | <li><span data-i18n="welcome_message_part_1">Read the</span> <a href="https://docs.sillytavern.app/" target="_blank" data-i18n="welcome_message_part_2">Official Documentation</a><span data-i18n="welcome_message_part_3">.</span></li> | ||
| 5871 | <li><span data-i18n="welcome_message_part_4">Type</span> <code>/help</code> <span data-i18n="welcome_message_part_5">in chat for commands and macros.</span></li> | ||
| 5872 | <li><span data-i18n="welcome_message_part_6">Join the</span> <a href="https://discord.gg/sillytavern" data-i18n="Discord server" target="_blank">Discord server</a> <span data-i18n="welcome_message_part_7">for info and announcements.</span></li> | ||
| 5873 | </ul> | ||
| 5874 | <div id="onboarding-UI-language-block" class="flex-container alignItemsBaseline"> | 5971 | <div id="onboarding-UI-language-block" class="flex-container alignItemsBaseline"> |
| 5875 | <span data-i18n="UI Language">Language:</span> | 5972 | <span data-i18n="UI Language">Language:</span> |
| 5876 | <select id="onboarding_ui_language_select" class="flex1 margin0"> | 5973 | <select id="onboarding_ui_language_select" class="flex1 margin0"> |
| @@ -5880,21 +5977,11 @@ | |||
| 5880 | <b data-i18n="SillyTavern is aimed at advanced users."> | 5977 | <b data-i18n="SillyTavern is aimed at advanced users."> |
| 5881 | SillyTavern is aimed at advanced users. | 5978 | SillyTavern is aimed at advanced users. |
| 5882 | </b> | 5979 | </b> |
| 5883 | <div> | 5980 | <ul class="justifyLeft marginTopBot5"> |
| 5884 | <span data-i18n="If you're new to this, enable the simplified UI mode below."> | 5981 | <li><span data-i18n="welcome_message_part_1">Read the</span> <a href="https://docs.sillytavern.app/" target="_blank" data-i18n="welcome_message_part_2">Official Documentation</a><span data-i18n="welcome_message_part_3">.</span></li> |
| 5885 | If you're new to this, enable the simplified UI mode below. | 5982 | <li><span data-i18n="welcome_message_part_4">Type</span> <code>/help</code> <span data-i18n="welcome_message_part_5">in chat for commands and macros.</span></li> |
| 5886 | </span> | 5983 | <li><span data-i18n="welcome_message_part_6">Join the</span> <a href="https://discord.gg/sillytavern" data-i18n="Discord server" target="_blank">Discord server</a> <span data-i18n="welcome_message_part_7">for info and announcements.</span></li> |
| 5887 | <br> | 5984 | </ul> |
| 5888 | <span data-i18n="Change it later in the 'User Settings' panel."> | ||
| 5889 | Change it later in the 'User Settings' panel. | ||
| 5890 | </span> | ||
| 5891 | </div> | ||
| 5892 | <label class="checkbox_label"> | ||
| 5893 | <input type="checkbox" name="enable_simple_mode" /> | ||
| 5894 | <span data-i18n="Enable simple UI mode"> | ||
| 5895 | Enable simple UI mode | ||
| 5896 | </span> | ||
| 5897 | </label> | ||
| 5898 | <div class="expander"></div> | 5985 | <div class="expander"></div> |
| 5899 | <div class="textAlignCenter"> | 5986 | <div class="textAlignCenter"> |
| 5900 | <h3 data-i18n="Looking for AI characters?"> | 5987 | <h3 data-i18n="Looking for AI characters?"> |
| @@ -6010,7 +6097,7 @@ | |||
| 6010 | <div id="alternate_greetings_template" class="template_element"> | 6097 | <div id="alternate_greetings_template" class="template_element"> |
| 6011 | <div class="alternate_grettings flexFlowColumn flex-container"> | 6098 | <div class="alternate_grettings flexFlowColumn flex-container"> |
| 6012 | <div class="title_restorable"> | 6099 | <div class="title_restorable"> |
| 6013 | <h3><span data-i18n="Alternate Greetings">Alternate Greetings</span></h3> | 6100 | <h3><span data-i18n="Alternate Greetings" class="mdhotkey_location">Alternate Greetings</span></h3> |
| 6014 | <div title="Add" class="menu_button fa-solid fa-plus add_alternate_greeting" data-i18n="[title]Add"></div> | 6101 | <div title="Add" class="menu_button fa-solid fa-plus add_alternate_greeting" data-i18n="[title]Add"></div> |
| 6015 | </div> | 6102 | </div> |
| 6016 | <small class="justifyLeft" data-i18n="Alternate_Greetings_desc"> | 6103 | <small class="justifyLeft" data-i18n="Alternate_Greetings_desc"> |
| @@ -6031,7 +6118,7 @@ | |||
| 6031 | <strong><span data-i18n="Alternate Greeting #">Alternate Greeting #</span><span class="greeting_index"></span></strong> | 6118 | <strong><span data-i18n="Alternate Greeting #">Alternate Greeting #</span><span class="greeting_index"></span></strong> |
| 6032 | <div class="menu_button fa-solid fa-trash-alt delete_alternate_greeting"></div> | 6119 | <div class="menu_button fa-solid fa-trash-alt delete_alternate_greeting"></div> |
| 6033 | </div> | 6120 | </div> |
| 6034 | <textarea name="alternate_greetings" data-i18n="[placeholder](This will be the first message from the character that starts every chat)" placeholder="(This will be the first message from the character that starts every chat)" class="text_pole textarea_compact alternate_greeting_text" maxlength="50000" value="" autocomplete="off" rows="16"></textarea> | 6121 | <textarea name="alternate_greetings" data-i18n="[placeholder](This will be the first message from the character that starts every chat)" placeholder="(This will be the first message from the character that starts every chat)" class="text_pole textarea_compact alternate_greeting_text mdHotkeys" value="" autocomplete="off" rows="16"></textarea> |
| 6035 | </div> | 6122 | </div> |
| 6036 | </div> | 6123 | </div> |
| 6037 | 6124 | ||
| @@ -6048,6 +6135,7 @@ | |||
| 6048 | <div class="right_menu_button mes_file_delete fa-solid fa-trash-can" title="Remove the file" data-i18n="[title]Remove the file"></div> | 6135 | <div class="right_menu_button mes_file_delete fa-solid fa-trash-can" title="Remove the file" data-i18n="[title]Remove the file"></div> |
| 6049 | </div> | 6136 | </div> |
| 6050 | </div> | 6137 | </div> |
| 6138 | </div> | ||
| 6051 | <div id="movingDivs"> | 6139 | <div id="movingDivs"> |
| 6052 | <div id="floatingPrompt" class="drawer-content flexGap5"> | 6140 | <div id="floatingPrompt" class="drawer-content flexGap5"> |
| 6053 | <div class="panelControlBar flex-container alignItemsBaseline"> | 6141 | <div class="panelControlBar flex-container alignItemsBaseline"> |
| @@ -6068,7 +6156,7 @@ | |||
| 6068 | <b data-i18n="Unique to this chat">Unique to this chat</b>.<br> | 6156 | <b data-i18n="Unique to this chat">Unique to this chat</b>.<br> |
| 6069 | <span data-i18n="Checkpoints inherit the Note from their parent, and can be changed individually after that.">Checkpoints inherit the Note from their parent, and can be changed individually after that.</span><br> | 6157 | <span data-i18n="Checkpoints inherit the Note from their parent, and can be changed individually after that.">Checkpoints inherit the Note from their parent, and can be changed individually after that.</span><br> |
| 6070 | </small> | 6158 | </small> |
| 6071 | <textarea id="extension_floating_prompt" class="text_pole textarea_compact" rows="8" maxlength="50000"></textarea> | 6159 | <textarea id="extension_floating_prompt" class="text_pole textarea_compact" rows="8"></textarea> |
| 6072 | <div class="extension_token_counter"> | 6160 | <div class="extension_token_counter"> |
| 6073 | <span data-i18n="extension_token_counter">Tokens:</span> <span id="extension_floating_prompt_token_counter">0</span> | 6161 | <span data-i18n="extension_token_counter">Tokens:</span> <span id="extension_floating_prompt_token_counter">0</span> |
| 6074 | </div> | 6162 | </div> |
| @@ -6125,7 +6213,7 @@ | |||
| 6125 | <div class="inline-drawer-content"> | 6213 | <div class="inline-drawer-content"> |
| 6126 | <small data-i18n="Will be automatically added as the author's note for this character. Will be used in groups, but can't be modified when a group chat is open.">Will be automatically added as the author's note for this character. Will be used in groups, but | 6214 | <small data-i18n="Will be automatically added as the author's note for this character. Will be used in groups, but can't be modified when a group chat is open.">Will be automatically added as the author's note for this character. Will be used in groups, but |
| 6127 | can't be modified when a group chat is open.</small> | 6215 | can't be modified when a group chat is open.</small> |
| 6128 | <textarea id="extension_floating_chara" class="text_pole textarea_compact" rows="8" maxlength="50000" placeholder="Example: [Scenario: wacky adventures; Genre: romantic comedy; Style: verbose, creative]"></textarea> | 6216 | <textarea id="extension_floating_chara" class="text_pole textarea_compact" rows="8" placeholder="Example: [Scenario: wacky adventures; Genre: romantic comedy; Style: verbose, creative]"></textarea> |
| 6129 | <div class="extension_token_counter"> | 6217 | <div class="extension_token_counter"> |
| 6130 | <span data-i18n="extension_token_counter">Tokens:</span> <span id="extension_floating_chara_token_counter">0</span> | 6218 | <span data-i18n="extension_token_counter">Tokens:</span> <span id="extension_floating_chara_token_counter">0</span> |
| 6131 | </div> | 6219 | </div> |
| @@ -6157,7 +6245,7 @@ | |||
| 6157 | </div> | 6245 | </div> |
| 6158 | <div class="inline-drawer-content"> | 6246 | <div class="inline-drawer-content"> |
| 6159 | <small data-i18n="Will be automatically added as the Author's Note for all new chats.">Will be automatically added as the Author's Note for all new chats.</small> | 6247 | <small data-i18n="Will be automatically added as the Author's Note for all new chats.">Will be automatically added as the Author's Note for all new chats.</small> |
| 6160 | <textarea id="extension_floating_default" class="text_pole textarea_compact" rows="8" maxlength="50000" placeholder="Example: [Scenario: wacky adventures; Genre: romantic comedy; Style: verbose, creative]"></textarea> | 6248 | <textarea id="extension_floating_default" class="text_pole textarea_compact" rows="8" placeholder="Example: [Scenario: wacky adventures; Genre: romantic comedy; Style: verbose, creative]"></textarea> |
| 6161 | <div class="extension_token_counter"> | 6249 | <div class="extension_token_counter"> |
| 6162 | <span data-i18n="extension_token_counter">Tokens:</span> <span id="extension_floating_default_token_counter">0</span> | 6250 | <span data-i18n="extension_token_counter">Tokens:</span> <span id="extension_floating_default_token_counter">0</span> |
| 6163 | </div> | 6251 | </div> |
| @@ -6414,7 +6502,7 @@ | |||
| 6414 | <div id="leftSendForm" class="alignContentCenter"> | 6502 | <div id="leftSendForm" class="alignContentCenter"> |
| 6415 | <div id="options_button" class="fa-solid fa-bars interactable"></div> | 6503 | <div id="options_button" class="fa-solid fa-bars interactable"></div> |
| 6416 | </div> | 6504 | </div> |
| 6417 | <textarea id="send_textarea" name="text" data-i18n="[no_connection_text]Not connected to API!;[connected_text]Type a message, or /? for help" placeholder="Not connected to API!" no_connection_text="Not connected to API!" connected_text="Type a message, or /? for help"></textarea> | 6505 | <textarea id="send_textarea" name="text" class="mdHotkeys" data-i18n="[no_connection_text]Not connected to API!;[connected_text]Type a message, or /? for help" placeholder="Not connected to API!" no_connection_text="Not connected to API!" connected_text="Type a message, or /? for help"></textarea> |
| 6418 | <div id="rightSendForm" class="alignContentCenter"> | 6506 | <div id="rightSendForm" class="alignContentCenter"> |
| 6419 | <div id="stscript_continue" title="Continue script execution" class="stscript_btn stscript_continue" data-i18n="[title]Continue script execution"> | 6507 | <div id="stscript_continue" title="Continue script execution" class="stscript_btn stscript_continue" data-i18n="[title]Continue script execution"> |
| 6420 | <i class="fa-solid fa-play"></i> | 6508 | <i class="fa-solid fa-play"></i> |
| @@ -6451,11 +6539,11 @@ | |||
| 6451 | <i class="fa-lg fa-solid fa-note-sticky"></i> | 6539 | <i class="fa-lg fa-solid fa-note-sticky"></i> |
| 6452 | <span data-i18n="Author's Note">Author's Note</span> | 6540 | <span data-i18n="Author's Note">Author's Note</span> |
| 6453 | </a> | 6541 | </a> |
| 6454 | <a data-newbie-hidden id="option_toggle_CFG"> | 6542 | <a id="option_toggle_CFG"> |
| 6455 | <i class="fa-lg fa-solid fa-scale-balanced"></i> | 6543 | <i class="fa-lg fa-solid fa-scale-balanced"></i> |
| 6456 | <span data-i18n="CFG Scale">CFG Scale</span> | 6544 | <span data-i18n="CFG Scale">CFG Scale</span> |
| 6457 | </a> | 6545 | </a> |
| 6458 | <a data-newbie-hidden id="option_toggle_logprobs"> | 6546 | <a id="option_toggle_logprobs"> |
| 6459 | <i class="fa-lg fa-solid fa-pie-chart"></i> | 6547 | <i class="fa-lg fa-solid fa-pie-chart"></i> |
| 6460 | <span data-i18n="Token Probabilities">Token Probabilities</span> | 6548 | <span data-i18n="Token Probabilities">Token Probabilities</span> |
| 6461 | </a> | 6549 | </a> |
| @@ -6503,69 +6591,17 @@ | |||
| 6503 | </a> | 6591 | </a> |
| 6504 | </div> | 6592 | </div> |
| 6505 | </div> | 6593 | </div> |
| 6506 | <div id="export_format_popup" class="list-group"> | 6594 | |
| 6507 | <div class="export_format list-group-item" data-format="png">PNG</div> | ||
| 6508 | <div class="export_format list-group-item" data-format="json">JSON</div> | ||
| 6509 | </div> | ||
| 6510 | <div id="zoomed_avatar_template" class="template_element"> | ||
| 6511 | <div class="zoomed_avatar"> | ||
| 6512 | <div class="panelControlBar flex-container"> | ||
| 6513 | <div class="fa-fw fa-solid fa-grip drag-grabber"></div> | ||
| 6514 | <div class="fa-fw fa-solid fa-circle-xmark dragClose" id="closeZoom"></div> | ||
| 6515 | </div> | ||
| 6516 | <div class="zoomed_avatar_container"> | ||
| 6517 | <img class="zoomed_avatar_img" src="" data-izoomify-url="" data-izoomify-magnify="1.8" data-izoomify-duration="300" alt=""> | ||
| 6518 | </div> | ||
| 6519 | </div> | ||
| 6520 | </div> | ||
| 6521 | <template id="generic_draggable_template"> | ||
| 6522 | <div class="draggable"> | ||
| 6523 | <div class="dragTitle"></div> | ||
| 6524 | <div class="panelControlBar flex-container"> | ||
| 6525 | <div class="fa-fw fa-solid fa-grip drag-grabber"></div> | ||
| 6526 | <div class="fa-fw fa-solid fa-circle-xmark dragClose"></div> | ||
| 6527 | </div> | ||
| 6528 | </div> | ||
| 6529 | </template> | ||
| 6530 | <div id="user_avatar_template" class="template_element"> | ||
| 6531 | <div class="avatar-container"> | ||
| 6532 | <div imgfile="" class="avatar"> | ||
| 6533 | <img src="" alt="User Avatar"> | ||
| 6534 | </div> | ||
| 6535 | <div class="flex-container wide100pLess70px character_select_container"> | ||
| 6536 | <div class="wide100p character_name_block"> | ||
| 6537 | <span class="ch_name flex1"></span> | ||
| 6538 | <div class="avatar-buttons"> | ||
| 6539 | <button class="menu_button bind_user_name" title="Bind user name to that avatar" data-i18n="[title]Bind user name to that avatar"> | ||
| 6540 | <i class="fa-fw fa-solid fa-user-edit"></i> | ||
| 6541 | </button> | ||
| 6542 | <button class="menu_button set_persona_image" title="Change persona image" data-i18n="[title]Change persona image"> | ||
| 6543 | <i class="fa-fw fa-solid fa-image"></i> | ||
| 6544 | </button> | ||
| 6545 | <button class="menu_button set_default_persona" title="Select this as default persona for the new chats." data-i18n="[title]Select this as default persona for the new chats."> | ||
| 6546 | <i class="fa-fw fa-solid fa-crown"></i> | ||
| 6547 | </button> | ||
| 6548 | <button class="menu_button duplicate_persona" title="Duplicate persona" data-i18n="[title]Duplicate persona"> | ||
| 6549 | <i class="fa-fw fa-solid fa-clone"></i> | ||
| 6550 | </button> | ||
| 6551 | <button class="menu_button delete_avatar" title="Delete persona" data-i18n="[title]Delete persona"> | ||
| 6552 | <i class="fa-fw fa-solid fa-trash-alt"></i> | ||
| 6553 | </button> | ||
| 6554 | </div> | ||
| 6555 | </div> | ||
| 6556 | <div class="ch_description"></div> | ||
| 6557 | </div> | ||
| 6558 | </div> | ||
| 6559 | </div> | ||
| 6560 | <!-- Script includes --> | 6595 | <!-- Script includes --> |
| 6596 | <script src="lib/polyfill.js"></script> | ||
| 6561 | <script src="lib/diff_match_patch.js"></script> | 6597 | <script src="lib/diff_match_patch.js"></script> |
| 6562 | <script src="lib/object-hasown.js"></script> | ||
| 6563 | <script src="lib/jquery-3.5.1.min.js"></script> | 6598 | <script src="lib/jquery-3.5.1.min.js"></script> |
| 6564 | <script src="lib/jquery-ui.min.js"></script> | 6599 | <script src="lib/jquery-ui.min.js"></script> |
| 6565 | <script src="lib/jquery.transit.min.js"></script> | 6600 | <script src="lib/jquery.transit.min.js"></script> |
| 6566 | <script src="lib/jquery-cookie-1.4.1.min.js"></script> | 6601 | <script src="lib/jquery-cookie-1.4.1.min.js"></script> |
| 6567 | <script src="lib/jquery.ui.touch-punch.min.js"></script> | 6602 | <script src="lib/jquery.ui.touch-punch.min.js"></script> |
| 6568 | <script src="lib/showdown.min.js"></script> | 6603 | <script src="lib/showdown.min.js"></script> |
| 6604 | <script src="lib/showdown-patch.js"></script> | ||
| 6569 | <script src="lib/showdown-katex.min.js"></script> | 6605 | <script src="lib/showdown-katex.min.js"></script> |
| 6570 | <script src="lib/popper.js"></script> | 6606 | <script src="lib/popper.js"></script> |
| 6571 | <script src="lib/purify.min.js"></script> | 6607 | <script src="lib/purify.min.js"></script> |
| @@ -1,4 +0,0 @@ | |||
| 1 | // Polyfill for old Safari versions | ||
| 2 | if (!Object.hasOwn) { | ||
| 3 | Object.hasOwn = function (obj, prop) { return obj.hasOwnProperty(prop); } | ||
| 4 | } | ||
| @@ -0,0 +1,19 @@ | |||
| 1 | // Polyfills for old Safari versions | ||
| 2 | if (!Object.hasOwn) { | ||
| 3 | Object.hasOwn = function (obj, prop) { return obj.hasOwnProperty(prop); } | ||
| 4 | } | ||
| 5 | |||
| 6 | if (!Array.prototype.findLastIndex) { | ||
| 7 | Array.prototype.findLastIndex = function (callback, thisArg) { | ||
| 8 | for (let i = this.length - 1; i >= 0; i--) { | ||
| 9 | if (callback.call(thisArg, this[i], i, this)) return i; | ||
| 10 | } | ||
| 11 | return -1; | ||
| 12 | }; | ||
| 13 | } | ||
| 14 | |||
| 15 | if (!Array.prototype.toSorted) { | ||
| 16 | Array.prototype.toSorted = function (compareFunction) { | ||
| 17 | return this.slice().sort(compareFunction); | ||
| 18 | }; | ||
| 19 | } | ||
| @@ -0,0 +1,24 @@ | |||
| 1 | showdown.subParser('unhashHTMLSpans', function (text, options, globals) { | ||
| 2 | 'use strict'; | ||
| 3 | text = globals.converter._dispatch('unhashHTMLSpans.before', text, options, globals); | ||
| 4 | |||
| 5 | for (var i = 0; i < globals.gHtmlSpans.length; ++i) { | ||
| 6 | var repText = globals.gHtmlSpans[i], | ||
| 7 | // limiter to prevent infinite loop (assume 10 as limit for recurse) | ||
| 8 | limit = 0; | ||
| 9 | |||
| 10 | while (/¨C(\d+)C/.test(repText)) { | ||
| 11 | var num = RegExp.$1; | ||
| 12 | repText = repText.replace('¨C' + num + 'C', globals.gHtmlSpans[num]); | ||
| 13 | if (limit === 10000) { | ||
| 14 | console.error('maximum nesting of 10000 spans reached!!!'); | ||
| 15 | break; | ||
| 16 | } | ||
| 17 | ++limit; | ||
| 18 | } | ||
| 19 | text = text.replace('¨C' + i + 'C', repText); | ||
| 20 | } | ||
| 21 | |||
| 22 | text = globals.converter._dispatch('unhashHTMLSpans.after', text, options, globals); | ||
| 23 | return text; | ||
| 24 | }); | ||
| @@ -32,7 +32,7 @@ | |||
| 32 | "Streaming_desc": "عرض الاستجابة لحظيا كما يتم إنشاؤها.", | 32 | "Streaming_desc": "عرض الاستجابة لحظيا كما يتم إنشاؤها.", |
| 33 | "context size(tokens)": "حجم الاحرف (بعدد الاحرف او الرموز)", | 33 | "context size(tokens)": "حجم الاحرف (بعدد الاحرف او الرموز)", |
| 34 | "unlocked": "مفتوح", | 34 | "unlocked": "مفتوح", |
| 35 | "Only enable this if your model supports context sizes greater than 4096 tokens": "قم بتمكين هذا فقط إذا كانت نموذجك يدعم مقاطع السياق بأحجام أكبر من 4096 رمزًا.", | 35 | "Only enable this if your model supports context sizes greater than 8192 tokens": "قم بتمكين هذا فقط إذا كانت نموذجك يدعم مقاطع السياق بأحجام أكبر من 8192 رمزًا.", |
| 36 | "Max prompt cost:": "أقصى تكلفة فورية:", | 36 | "Max prompt cost:": "أقصى تكلفة فورية:", |
| 37 | "Display the response bit by bit as it is generated.": "عرض الاستجابة بتدريج كما يتم إنشاؤها.", | 37 | "Display the response bit by bit as it is generated.": "عرض الاستجابة بتدريج كما يتم إنشاؤها.", |
| 38 | "When this is off, responses will be displayed all at once when they are complete.": "عند إيقاف هذا الخيار، سيتم عرض الردود جميعها دفعة واحدة عند اكتمالها.", | 38 | "When this is off, responses will be displayed all at once when they are complete.": "عند إيقاف هذا الخيار، سيتم عرض الردود جميعها دفعة واحدة عند اكتمالها.", |
| @@ -32,7 +32,7 @@ | |||
| 32 | "Streaming_desc": "Zeige die Antwort Stück für Stück an, während sie generiert wird.", | 32 | "Streaming_desc": "Zeige die Antwort Stück für Stück an, während sie generiert wird.", |
| 33 | "context size(tokens)": "Größe des Zusammenhangs (Tokens)", | 33 | "context size(tokens)": "Größe des Zusammenhangs (Tokens)", |
| 34 | "unlocked": "Freigeschaltet", | 34 | "unlocked": "Freigeschaltet", |
| 35 | "Only enable this if your model supports context sizes greater than 4096 tokens": "Aktiviere dies nur, wenn dein Modell Kontextgrößen von mehr als 4096 Tokens unterstützt.", | 35 | "Only enable this if your model supports context sizes greater than 8192 tokens": "Aktiviere dies nur, wenn dein Modell Kontextgrößen von mehr als 8192 Tokens unterstützt.", |
| 36 | "Max prompt cost:": "Maximale Sofortkosten:", | 36 | "Max prompt cost:": "Maximale Sofortkosten:", |
| 37 | "Display the response bit by bit as it is generated.": "Zeige die Antwort Stück für Stück, während sie generiert wird.", | 37 | "Display the response bit by bit as it is generated.": "Zeige die Antwort Stück für Stück, während sie generiert wird.", |
| 38 | "When this is off, responses will be displayed all at once when they are complete.": "Wenn dies ausgeschaltet ist, werden Antworten angezeigt, sobald sie vollständig sind.", | 38 | "When this is off, responses will be displayed all at once when they are complete.": "Wenn dies ausgeschaltet ist, werden Antworten angezeigt, sobald sie vollständig sind.", |
| @@ -32,7 +32,7 @@ | |||
| 32 | "Streaming_desc": "Mostrar la respuesta poco a poco según se genera", | 32 | "Streaming_desc": "Mostrar la respuesta poco a poco según se genera", |
| 33 | "context size(tokens)": "Tamaño de contexto (tokens)", | 33 | "context size(tokens)": "Tamaño de contexto (tokens)", |
| 34 | "unlocked": "Desbloqueado", | 34 | "unlocked": "Desbloqueado", |
| 35 | "Only enable this if your model supports context sizes greater than 4096 tokens": "Habilita esto solo si tu modelo admite tamaños de contexto mayores de 4096 tokens", | 35 | "Only enable this if your model supports context sizes greater than 8192 tokens": "Habilita esto solo si tu modelo admite tamaños de contexto mayores de 8192 tokens", |
| 36 | "Max prompt cost:": "Costo inmediato máximo:", | 36 | "Max prompt cost:": "Costo inmediato máximo:", |
| 37 | "Display the response bit by bit as it is generated.": "Mostrar la respuesta poco a poco a medida que se genera.", | 37 | "Display the response bit by bit as it is generated.": "Mostrar la respuesta poco a poco a medida que se genera.", |
| 38 | "When this is off, responses will be displayed all at once when they are complete.": "Cuando esto está apagado, las respuestas se mostrarán de una vez cuando estén completas.", | 38 | "When this is off, responses will be displayed all at once when they are complete.": "Cuando esto está apagado, las respuestas se mostrarán de una vez cuando estén completas.", |
| @@ -32,7 +32,7 @@ | |||
| 32 | "Streaming_desc": "Afficher la réponse bit par bit au fur et à mesure de sa génération", | 32 | "Streaming_desc": "Afficher la réponse bit par bit au fur et à mesure de sa génération", |
| 33 | "context size(tokens)": "Taille du contexte (en tokens)", | 33 | "context size(tokens)": "Taille du contexte (en tokens)", |
| 34 | "unlocked": "Déverrouillé", | 34 | "unlocked": "Déverrouillé", |
| 35 | "Only enable this if your model supports context sizes greater than 4096 tokens": "Activez cela uniquement si votre modèle prend en charge des tailles de contexte supérieures à 4096 tokens", | 35 | "Only enable this if your model supports context sizes greater than 8192 tokens": "Activez cela uniquement si votre modèle prend en charge des tailles de contexte supérieures à 8192 tokens", |
| 36 | "Max prompt cost:": "Coût rapide maximum :", | 36 | "Max prompt cost:": "Coût rapide maximum :", |
| 37 | "Display the response bit by bit as it is generated.": "Afficher la réponse morceau par morceau au fur et à mesure de sa génération.", | 37 | "Display the response bit by bit as it is generated.": "Afficher la réponse morceau par morceau au fur et à mesure de sa génération.", |
| 38 | "When this is off, responses will be displayed all at once when they are complete.": "Lorsque cette fonction est désactivée, les réponses s'affichent toutes en une fois lorsqu'elles sont complètes.", | 38 | "When this is off, responses will be displayed all at once when they are complete.": "Lorsque cette fonction est désactivée, les réponses s'affichent toutes en une fois lorsqu'elles sont complètes.", |
| @@ -32,7 +32,7 @@ | |||
| 32 | "Streaming_desc": "Birta svarið bita fyrir bita þegar það er myndað.", | 32 | "Streaming_desc": "Birta svarið bita fyrir bita þegar það er myndað.", |
| 33 | "context size(tokens)": "Stærð samhengis (í táknum eða stöfum)", | 33 | "context size(tokens)": "Stærð samhengis (í táknum eða stöfum)", |
| 34 | "unlocked": "Opinn", | 34 | "unlocked": "Opinn", |
| 35 | "Only enable this if your model supports context sizes greater than 4096 tokens": "Virkjið þetta aðeins ef stærð samhengis styður model meira en 4096 tákn.", | 35 | "Only enable this if your model supports context sizes greater than 8192 tokens": "Virkjið þetta aðeins ef stærð samhengis styður model meira en 8192 tákn.", |
| 36 | "Max prompt cost:": "Hámarks skyndikostnaður:", | 36 | "Max prompt cost:": "Hámarks skyndikostnaður:", |
| 37 | "Display the response bit by bit as it is generated.": "Birta svarid bita fyrir bita þegar það er búið til.", | 37 | "Display the response bit by bit as it is generated.": "Birta svarid bita fyrir bita þegar það er búið til.", |
| 38 | "When this is off, responses will be displayed all at once when they are complete.": "Þegar þetta er slökkt verða svör birt allt í einu þegar þau eru búin.", | 38 | "When this is off, responses will be displayed all at once when they are complete.": "Þegar þetta er slökkt verða svör birt allt í einu þegar þau eru búin.", |
| @@ -32,7 +32,7 @@ | |||
| 32 | "Streaming_desc": "Mostra la risposta pezzo per pezzo man mano che viene generata", | 32 | "Streaming_desc": "Mostra la risposta pezzo per pezzo man mano che viene generata", |
| 33 | "context size(tokens)": "Dimensione del contesto (token)", | 33 | "context size(tokens)": "Dimensione del contesto (token)", |
| 34 | "unlocked": "Sbloccato", | 34 | "unlocked": "Sbloccato", |
| 35 | "Only enable this if your model supports context sizes greater than 4096 tokens": "Abilita solo se il tuo modello supporta dimensioni del contesto superiori a 4096 token", | 35 | "Only enable this if your model supports context sizes greater than 8192 tokens": "Abilita solo se il tuo modello supporta dimensioni del contesto superiori a 8192 token", |
| 36 | "Max prompt cost:": "Costo massimo immediato:", | 36 | "Max prompt cost:": "Costo massimo immediato:", |
| 37 | "Display the response bit by bit as it is generated.": "Visualizza la risposta pezzo per pezzo mentre viene generata.", | 37 | "Display the response bit by bit as it is generated.": "Visualizza la risposta pezzo per pezzo mentre viene generata.", |
| 38 | "When this is off, responses will be displayed all at once when they are complete.": "Quando questo è disattivato, le risposte verranno visualizzate tutte in una volta quando sono complete.", | 38 | "When this is off, responses will be displayed all at once when they are complete.": "Quando questo è disattivato, le risposte verranno visualizzate tutte in una volta quando sono complete.", |
| @@ -32,7 +32,7 @@ | |||
| 32 | "Streaming_desc": "生成された応答を逐次表示します。", | 32 | "Streaming_desc": "生成された応答を逐次表示します。", |
| 33 | "context size(tokens)": "コンテキストのサイズ(トークン数)", | 33 | "context size(tokens)": "コンテキストのサイズ(トークン数)", |
| 34 | "unlocked": "ロック解除", | 34 | "unlocked": "ロック解除", |
| 35 | "Only enable this if your model supports context sizes greater than 4096 tokens": "モデルが4096トークンを超えるコンテキストサイズをサポートしている場合にのみ有効にします", | 35 | "Only enable this if your model supports context sizes greater than 8192 tokens": "モデルが8192トークンを超えるコンテキストサイズをサポートしている場合にのみ有効にします", |
| 36 | "Max prompt cost:": "最大プロンプトコスト:", | 36 | "Max prompt cost:": "最大プロンプトコスト:", |
| 37 | "Display the response bit by bit as it is generated.": "生成されるたびに、応答を逐次表示します。", | 37 | "Display the response bit by bit as it is generated.": "生成されるたびに、応答を逐次表示します。", |
| 38 | "When this is off, responses will be displayed all at once when they are complete.": "この機能がオフの場合、応答は完全に生成されたときに一度ですべて表示されます。", | 38 | "When this is off, responses will be displayed all at once when they are complete.": "この機能がオフの場合、応答は完全に生成されたときに一度ですべて表示されます。", |
| @@ -32,7 +32,7 @@ | |||
| 32 | "Streaming_desc": "생성되는대로 응답을 조금씩 표시하십시오", | 32 | "Streaming_desc": "생성되는대로 응답을 조금씩 표시하십시오", |
| 33 | "context size(tokens)": "컨텍스트 크기 (토큰)", | 33 | "context size(tokens)": "컨텍스트 크기 (토큰)", |
| 34 | "unlocked": "잠금 해제됨", | 34 | "unlocked": "잠금 해제됨", |
| 35 | "Only enable this if your model supports context sizes greater than 4096 tokens": "모델이 4096 토큰보다 큰 컨텍스트 크기를 지원하는 경우에만 활성화하십시오", | 35 | "Only enable this if your model supports context sizes greater than 8192 tokens": "모델이 8192 토큰보다 큰 컨텍스트 크기를 지원하는 경우에만 활성화하십시오", |
| 36 | "Max prompt cost:": "최대 프롬프트 비용:", | 36 | "Max prompt cost:": "최대 프롬프트 비용:", |
| 37 | "Display the response bit by bit as it is generated.": "생성되는 대답을 조금씩 표시합니다.", | 37 | "Display the response bit by bit as it is generated.": "생성되는 대답을 조금씩 표시합니다.", |
| 38 | "When this is off, responses will be displayed all at once when they are complete.": "이 기능이 꺼져 있으면 대답은 완료되면 한 번에 모두 표시됩니다.", | 38 | "When this is off, responses will be displayed all at once when they are complete.": "이 기능이 꺼져 있으면 대답은 완료되면 한 번에 모두 표시됩니다.", |
| @@ -32,7 +32,7 @@ | |||
| 32 | "Streaming_desc": "Toon de reactie beetje bij beetje zoals deze wordt gegenereerd", | 32 | "Streaming_desc": "Toon de reactie beetje bij beetje zoals deze wordt gegenereerd", |
| 33 | "context size(tokens)": "Contextgrootte (tokens)", | 33 | "context size(tokens)": "Contextgrootte (tokens)", |
| 34 | "unlocked": "Ontgrendeld", | 34 | "unlocked": "Ontgrendeld", |
| 35 | "Only enable this if your model supports context sizes greater than 4096 tokens": "Schakel dit alleen in als uw model contextgroottes ondersteunt groter dan 4096 tokens", | 35 | "Only enable this if your model supports context sizes greater than 8192 tokens": "Schakel dit alleen in als uw model contextgroottes ondersteunt groter dan 8192 tokens", |
| 36 | "Max prompt cost:": "Maximale promptkosten:", | 36 | "Max prompt cost:": "Maximale promptkosten:", |
| 37 | "Display the response bit by bit as it is generated.": "Toon het antwoord stuk voor stuk terwijl het wordt gegenereerd.", | 37 | "Display the response bit by bit as it is generated.": "Toon het antwoord stuk voor stuk terwijl het wordt gegenereerd.", |
| 38 | "When this is off, responses will be displayed all at once when they are complete.": "Als dit uit staat, worden reacties in één keer weergegeven wanneer ze compleet zijn.", | 38 | "When this is off, responses will be displayed all at once when they are complete.": "Als dit uit staat, worden reacties in één keer weergegeven wanneer ze compleet zijn.", |
| @@ -32,7 +32,7 @@ | |||
| 32 | "Streaming_desc": "Exibir a resposta pouco a pouco conforme ela é gerada", | 32 | "Streaming_desc": "Exibir a resposta pouco a pouco conforme ela é gerada", |
| 33 | "context size(tokens)": "Tamanho do contexto (tokens)", | 33 | "context size(tokens)": "Tamanho do contexto (tokens)", |
| 34 | "unlocked": "Desbloqueado", | 34 | "unlocked": "Desbloqueado", |
| 35 | "Only enable this if your model supports context sizes greater than 4096 tokens": "Ative isso apenas se seu modelo suportar tamanhos de contexto maiores que 4096 tokens", | 35 | "Only enable this if your model supports context sizes greater than 8192 tokens": "Ative isso apenas se seu modelo suportar tamanhos de contexto maiores que 8192 tokens", |
| 36 | "Max prompt cost:": "Custo imediato máximo:", | 36 | "Max prompt cost:": "Custo imediato máximo:", |
| 37 | "Display the response bit by bit as it is generated.": "Exibir a resposta bit a bit conforme é gerada.", | 37 | "Display the response bit by bit as it is generated.": "Exibir a resposta bit a bit conforme é gerada.", |
| 38 | "When this is off, responses will be displayed all at once when they are complete.": "Quando isso estiver desligado, as respostas serão exibidas de uma vez quando estiverem completas.", | 38 | "When this is off, responses will be displayed all at once when they are complete.": "Quando isso estiver desligado, as respostas serão exibidas de uma vez quando estiverem completas.", |
| @@ -43,7 +43,7 @@ | |||
| 43 | "Smoothing Factor": "Коэффициент сглаживания", | 43 | "Smoothing Factor": "Коэффициент сглаживания", |
| 44 | "No Repeat Ngram Size": "Размер no_repeat_ngram", | 44 | "No Repeat Ngram Size": "Размер no_repeat_ngram", |
| 45 | "Min Length": "Мин. длина", | 45 | "Min Length": "Мин. длина", |
| 46 | "Alternative server URL (leave empty to use the default value).": "Альтернативный URL сервера (оставьте пустым для стандартного значения)", | 46 | "Alternative server URL (leave empty to use the default value).": "URL альтернативного сервера (оставьте пустым для стандартного значения)", |
| 47 | "Remove your real OAI API Key from the API panel BEFORE typing anything into this box": "Удалите свой личный OAI API Key из панели API, и ТОЛЬКО ПОСЛЕ ЭТОГО вводите что-то сюда", | 47 | "Remove your real OAI API Key from the API panel BEFORE typing anything into this box": "Удалите свой личный OAI API Key из панели API, и ТОЛЬКО ПОСЛЕ ЭТОГО вводите что-то сюда", |
| 48 | "We cannot provide support for problems encountered while using an unofficial OpenAI proxy": "Мы не сможем предоставить помощь с проблемами, с которыми вы столкнетесь при использовании неофициальных прокси для OpenAI", | 48 | "We cannot provide support for problems encountered while using an unofficial OpenAI proxy": "Мы не сможем предоставить помощь с проблемами, с которыми вы столкнетесь при использовании неофициальных прокси для OpenAI", |
| 49 | "Context Size (tokens)": "Размер контекста (в токенах)", | 49 | "Context Size (tokens)": "Размер контекста (в токенах)", |
| @@ -89,7 +89,7 @@ | |||
| 89 | "Text Completion presets": "Пресеты для Text Completion", | 89 | "Text Completion presets": "Пресеты для Text Completion", |
| 90 | "Documentation on sampling parameters": "Документация по параметрам сэмплеров", | 90 | "Documentation on sampling parameters": "Документация по параметрам сэмплеров", |
| 91 | "Set all samplers to their neutral/disabled state.": "Установить все сэмплеры в нейтральное/отключенное состояние.", | 91 | "Set all samplers to their neutral/disabled state.": "Установить все сэмплеры в нейтральное/отключенное состояние.", |
| 92 | "Only enable this if your model supports context sizes greater than 4096 tokens": "Включайте эту опцию, только если ваша модель поддерживает размер контекста более 4096 токенов.\nУвеличивайте только если вы знаете, что делаете.", | 92 | "Only enable this if your model supports context sizes greater than 8192 tokens": "Включайте эту опцию, только если ваша модель поддерживает размер контекста более 8192 токенов.\nУвеличивайте только если вы знаете, что делаете.", |
| 93 | "Wrap in Quotes": "Заключать в кавычки", | 93 | "Wrap in Quotes": "Заключать в кавычки", |
| 94 | "Wrap entire user message in quotes before sending.": "Перед отправкой заключать всё сообщение пользователя в кавычки.", | 94 | "Wrap entire user message in quotes before sending.": "Перед отправкой заключать всё сообщение пользователя в кавычки.", |
| 95 | "Leave off if you use quotes manually for speech.": "Оставьте выключенным, если вручную выставляете кавычки для прямой речи.", | 95 | "Leave off if you use quotes manually for speech.": "Оставьте выключенным, если вручную выставляете кавычки для прямой речи.", |
| @@ -186,7 +186,7 @@ | |||
| 186 | "Generate only one line per request": "Генерировать одну строку на запрос", | 186 | "Generate only one line per request": "Генерировать одну строку на запрос", |
| 187 | "Misc. Settings": "Доп. настройки", | 187 | "Misc. Settings": "Доп. настройки", |
| 188 | "Auto-Continue": "Авто-продолжение", | 188 | "Auto-Continue": "Авто-продолжение", |
| 189 | "Collapse Consecutive Newlines": "Сворачивать последовательные новые строки", | 189 | "Collapse Consecutive Newlines": "Сворачивать неск. новых строк в одну", |
| 190 | "Allow for Chat Completion APIs": "Разрешить для Chat Completion API", | 190 | "Allow for Chat Completion APIs": "Разрешить для Chat Completion API", |
| 191 | "Target length (tokens)": "Целевая длина (в токенах)", | 191 | "Target length (tokens)": "Целевая длина (в токенах)", |
| 192 | "World Info": "Информация о мире", | 192 | "World Info": "Информация о мире", |
| @@ -373,7 +373,7 @@ | |||
| 373 | "Prefer Character Card Prompt": "Приоритет промпту из карточки персонажа", | 373 | "Prefer Character Card Prompt": "Приоритет промпту из карточки персонажа", |
| 374 | "Prefer Character Card Jailbreak": "Приоритет джейлбрейку из карточки персонажа", | 374 | "Prefer Character Card Jailbreak": "Приоритет джейлбрейку из карточки персонажа", |
| 375 | "Press Send to continue": "Кнопка отправки продолжает сообщение", | 375 | "Press Send to continue": "Кнопка отправки продолжает сообщение", |
| 376 | "Quick 'Continue' button": "Кнопка быстрого продолжения", | 376 | "Quick 'Continue' button": "Быстрое продолжение", |
| 377 | "Log prompts to console": "Выводить промпты в консоль", | 377 | "Log prompts to console": "Выводить промпты в консоль", |
| 378 | "Never resize avatars": "Не менять размер аватарок", | 378 | "Never resize avatars": "Не менять размер аватарок", |
| 379 | "Show avatar filenames": "Показывать названия файлов аватарок", | 379 | "Show avatar filenames": "Показывать названия файлов аватарок", |
| @@ -495,7 +495,7 @@ | |||
| 495 | "(Write a comma-separated list of tags)": "(Список тегов через запятую)", | 495 | "(Write a comma-separated list of tags)": "(Список тегов через запятую)", |
| 496 | "(A brief description of the personality)": "(Краткое описание личности)", | 496 | "(A brief description of the personality)": "(Краткое описание личности)", |
| 497 | "(Circumstances and context of the interaction)": "(Обстоятельства и контекст этого диалога)", | 497 | "(Circumstances and context of the interaction)": "(Обстоятельства и контекст этого диалога)", |
| 498 | "(Examples of chat dialog. Begin each example with START on a new line.)": "(Примеры диалога. Начинайте каждый пример с START или новой линией.)", | 498 | "(Examples of chat dialog. Begin each example with START on a new line.)": "(Примеры диалога. Начинайте каждый пример с START или новой строкой.)", |
| 499 | "Type here...": "Пишите здесь...", | 499 | "Type here...": "Пишите здесь...", |
| 500 | "Comma separated (required)": "Через запятую (обязательное поле)", | 500 | "Comma separated (required)": "Через запятую (обязательное поле)", |
| 501 | "What this keyword should mean to the AI, sent verbatim": "Что это ключевое слово должно означать для ИИ, отправляется дословно", | 501 | "What this keyword should mean to the AI, sent verbatim": "Что это ключевое слово должно означать для ИИ, отправляется дословно", |
| @@ -552,7 +552,7 @@ | |||
| 552 | "Click to set a new User Name": "Нажмите, чтобы задать новое имя пользователя.", | 552 | "Click to set a new User Name": "Нажмите, чтобы задать новое имя пользователя.", |
| 553 | "Click to lock your selected persona to the current chat. Click again to remove the lock.": "Нажмите, чтобы закрепить выбранную персону для текущего чата. Нажмите еще раз, чтобы открепить.", | 553 | "Click to lock your selected persona to the current chat. Click again to remove the lock.": "Нажмите, чтобы закрепить выбранную персону для текущего чата. Нажмите еще раз, чтобы открепить.", |
| 554 | "Click to set user name for all messages": "Нажмите, чтобы задать имя пользователя для всех сообщений.", | 554 | "Click to set user name for all messages": "Нажмите, чтобы задать имя пользователя для всех сообщений.", |
| 555 | "Create a dummy persona": "Создать персону-болванку", | 555 | "Create a dummy persona": "Создать пустую персону", |
| 556 | "Character Management": "Управление персонажами", | 556 | "Character Management": "Управление персонажами", |
| 557 | "Locked = Character Management panel will stay open": "Закреплено = Панель управление персонажами останется открытой", | 557 | "Locked = Character Management panel will stay open": "Закреплено = Панель управление персонажами останется открытой", |
| 558 | "Select/Create Characters": "Выбрать/Создать персонажа", | 558 | "Select/Create Characters": "Выбрать/Создать персонажа", |
| @@ -625,7 +625,7 @@ | |||
| 625 | "Automatically select a background based on the chat context": "Автоматический выбор фона в зависимости от контекста чата", | 625 | "Automatically select a background based on the chat context": "Автоматический выбор фона в зависимости от контекста чата", |
| 626 | "Filter": "Фильтр", | 626 | "Filter": "Фильтр", |
| 627 | "Exclude message from prompts": "Исключить сообщение из промпта", | 627 | "Exclude message from prompts": "Исключить сообщение из промпта", |
| 628 | "Include message in prompts": "Включить сообщение в подсказки", | 628 | "Include message in prompts": "Включить сообщение в промпт", |
| 629 | "Create checkpoint": "Создать чекпоинт", | 629 | "Create checkpoint": "Создать чекпоинт", |
| 630 | "Create Branch": "Создать ветку", | 630 | "Create Branch": "Создать ветку", |
| 631 | "Embed file or image": "Вставить файл или изображение", | 631 | "Embed file or image": "Вставить файл или изображение", |
| @@ -1661,5 +1661,52 @@ | |||
| 1661 | "ext_regex_ai_output_desc": "Сообщения, полученные от API", | 1661 | "ext_regex_ai_output_desc": "Сообщения, полученные от API", |
| 1662 | "ext_regex_sts_desc": "Сообщения, отправленные с помощью команд STscript", | 1662 | "ext_regex_sts_desc": "Сообщения, отправленные с помощью команд STscript", |
| 1663 | "ext_regex_wi_desc": "Содержимое лорбуков и миров. Для работы требует включения флажка \"Только промпт\"!", | 1663 | "ext_regex_wi_desc": "Содержимое лорбуков и миров. Для работы требует включения флажка \"Только промпт\"!", |
| 1664 | "ext_regex_only_format_display_desc": "История чата не изменится, замена будет осуществляться только в отображаемом сообщении (в UI)" | 1664 | "ext_regex_only_format_display_desc": "История чата не изменится, замена будет осуществляться только в отображаемом сообщении (в UI)", |
| 1665 | "Prefer Character Card Instructions": "Приоритет инструкциям из карточек", | ||
| 1666 | "If checked and the character card contains a Post-History Instructions override, use that instead": "Если в карточке персонажа имеется собственная инструкция после истории, в промпт попадёт именно она", | ||
| 1667 | "Auto-select Input Text": "Автовыделение вводимого текста", | ||
| 1668 | "Enable auto-select of input text in some text fields when clicking/selecting them. Applies to popup input textboxes, and possible other custom input fields.": "Автоматически выделять вводимый текст в некоторых текстовых полях при клике/выборе. Работает для вспл. окон и различных кастомных полей ввода.", | ||
| 1669 | "Reset MovingUI panel sizes/locations.": "Сбросить расположение и размеры панелей MovingUI.", | ||
| 1670 | "mui_reset": "Сброс", | ||
| 1671 | "Quick 'Impersonate' button": "Быстрое перевоплощение", | ||
| 1672 | "Show a button in the input area to ask the AI to impersonate your character for a single message": "Показать в поле ввода кнопку, по нажатии на которую ИИ сгенерирует одно сообщение от лица вашего персонажа.", | ||
| 1673 | "Separators as Stop Strings": "Разделители как стоп-строки", | ||
| 1674 | "Names as Stop Strings": "Имена как стоп-строки", | ||
| 1675 | "Add Character and User names to a list of stopping strings.": "Добавлять имена персонажа и пользователя в список стоп-строк.", | ||
| 1676 | "Allow Post-History Instructions": "Разрешить инструкции после истории", | ||
| 1677 | "context_allow_post_history_instructions": "Добавлять в конец промпта инструкции после истории. Работает только при наличии таких инструкций в карточке И при включенной опции ''Приоритет инструкциям из карточек''.\nНЕ РЕКОМЕНДУЕТСЯ ДЛЯ МОДЕЛЕЙ TEXT COMPLETION, МОЖЕТ ПОРТИТЬ ВЫХОДНОЙ ТЕКСТ.", | ||
| 1678 | "First User Prefix": "Первый префикс пользователя", | ||
| 1679 | "Inserted before the first User's message.": "Вставляется перед первым сообщением пользователя.", | ||
| 1680 | "Last User Prefix": "Последний префикс пользователя", | ||
| 1681 | "instruct_last_input_sequence": "Вставляется перед последним сообщением пользователя.", | ||
| 1682 | "Inserted before a User message and as a last prompt line when impersonating.": "Вставляется перед сообщением пользователя в качестве последней строки промпта при перевоплощении.", | ||
| 1683 | "Inserted before a System (added by slash commands or extensions) message.": "Вставляется перед сообщением системы (может быть добавлено слэш-командой или расширением).", | ||
| 1684 | "Load Asset List": "Загрузить список ресурсов", | ||
| 1685 | "Never add character names.": "Не вставлять имя персонажа.", | ||
| 1686 | "Don't add character names unless necessary.": "Вставлять имя персонажа только когда это необходимо.", | ||
| 1687 | "character_names_none": "Не добавлять имена персонажей в качестве префикса. Может повредить качеству ответов в групповых чатах, используйте с осторожностью.", | ||
| 1688 | "Auxiliary": "Вспомогательный", | ||
| 1689 | "Post-History Instructions": "Инструкции после истории", | ||
| 1690 | "Current persona updated": "Текущая персона изменена", | ||
| 1691 | "Your messages will now be sent as ${0}": "Ваши сообщения будут отправляться от лица ${0}", | ||
| 1692 | "Copied!": "Скопировано!", | ||
| 1693 | "Are you sure you want to delete this message?": "Вы точно хотите удалить это сообщение?", | ||
| 1694 | "Delete Message": "Удалить сообщение", | ||
| 1695 | "Delete Swipe": "Удалить свайп", | ||
| 1696 | "Could not get a reply from API. Check your connection settings / API key and try again.": "Не удалось получить ответ от API. Проверьте настройки соединения и API-ключ и повторите попытку.", | ||
| 1697 | "Connecting To Proxy": "Подключение к прокси", | ||
| 1698 | "Are you sure you want to connect to the following proxy URL?": "Вы точно хотите соединиться с прокси по этому адресу?", | ||
| 1699 | "API connection successful!": "Соединение с API установлено!", | ||
| 1700 | "Proxy Saved": "Прокси сохранена", | ||
| 1701 | "Proxy Deleted": "Прокси удалена", | ||
| 1702 | "Could not find proxy with name '${0}'": "Не удалось найти прокси с названием '${0}'", | ||
| 1703 | "Proxy preset '${0}' not found in proxies array.": "Пресет с названием '${0}' не найден в списке прокси.", | ||
| 1704 | "Please wait for the previous request to complete.": "Пожалуйста, дождитесь окончания обработки предыдущего запроса.", | ||
| 1705 | "Start new chat?": "Начать новый чат?", | ||
| 1706 | "If necessary, you can later restore this chat file from the /backups folder": "При необходимости этот чат можно будет восстановить из папки /backups", | ||
| 1707 | "Also delete the current chat file": "Также удалить текущий чат", | ||
| 1708 | "chat_rename_1": "Введите новое имя чата:", | ||
| 1709 | "chat_rename_2": "!!Не используйте имя уже существующего файла, это приведёт к ошибке!!", | ||
| 1710 | "chat_rename_3": "Будут разрушены связи между чатами-чекпоинтами.", | ||
| 1711 | "chat_rename_4": "Расширение '.jsonl' дописывать не нужно." | ||
| 1665 | } | 1712 | } |
| @@ -32,7 +32,7 @@ | |||
| 32 | "Streaming_desc": "Поступово відображати відповідь по мірі її створення", | 32 | "Streaming_desc": "Поступово відображати відповідь по мірі її створення", |
| 33 | "context size(tokens)": "Контекст (токени)", | 33 | "context size(tokens)": "Контекст (токени)", |
| 34 | "unlocked": "Розблоковано", | 34 | "unlocked": "Розблоковано", |
| 35 | "Only enable this if your model supports context sizes greater than 4096 tokens": "Увімкніть це лише в разі підтримки моделлю розмірів контексту більше 4096 токенів", | 35 | "Only enable this if your model supports context sizes greater than 8192 tokens": "Увімкніть це лише в разі підтримки моделлю розмірів контексту більше 8192 токенів", |
| 36 | "Max prompt cost:": "Максимальна оперативна вартість:", | 36 | "Max prompt cost:": "Максимальна оперативна вартість:", |
| 37 | "Display the response bit by bit as it is generated.": "Показувати відповідь по бітах по мірі її генерації.", | 37 | "Display the response bit by bit as it is generated.": "Показувати відповідь по бітах по мірі її генерації.", |
| 38 | "When this is off, responses will be displayed all at once when they are complete.": "Коли це вимкнено, відповіді будуть відображатися разом, коли вони будуть завершені.", | 38 | "When this is off, responses will be displayed all at once when they are complete.": "Коли це вимкнено, відповіді будуть відображатися разом, коли вони будуть завершені.", |
| @@ -1,132 +1,132 @@ | |||
| 1 | { | 1 | { |
| 2 | "Favorite": "Yêu thích", | 2 | "Favorite": "Yêu thích", |
| 3 | "Tag": "Nhãn", | 3 | "Tag": "Từ khóa", |
| 4 | "Duplicate": "Nhân bản", | 4 | "Duplicate": "Nhân đôi", |
| 5 | "Persona": "nhân cách", | 5 | "Persona": "Nhân cách", |
| 6 | "Delete": "Xóa", | 6 | "Delete": "Xóa", |
| 7 | "AI Response Configuration": "Cấu hình Phản hồi của AI", | 7 | "AI Response Configuration": "Setting Phản hồi của AI", |
| 8 | "AI Configuration panel will stay open": "Bảng cấu hình AI sẽ được mở", | 8 | "AI Configuration panel will stay open": "Bảng Setting AI sẽ luôn được mở", |
| 9 | "clickslidertips": "Nhấp vào thanh trượt để nhập giá trị bằng tay.", | 9 | "clickslidertips": "Nhấp vào thanh trượt để nhập giá trị bằng tay.", |
| 10 | "MAD LAB MODE ON": "CHẾ ĐỘ PHÒNG THÍ NGHIỆM ĐIÊN BẬT", | 10 | "MAD LAB MODE ON": "CHẾ ĐỘ PHÒNG THÍ NGHIỆM ĐIÊN RỒ ĐANG BẬT", |
| 11 | "Documentation on sampling parameters": "Tài liệu về các tham số lấy mẫu", | 11 | "Documentation on sampling parameters": "Tài liệu về các tham số lấy mẫu", |
| 12 | "kobldpresets": "Cài đặt trước Kobold", | 12 | "kobldpresets": "Cài đặt trước Kobold", |
| 13 | "guikoboldaisettings": "Cài đặt giao diện KoboldAI", | 13 | "guikoboldaisettings": "Cài đặt giao diện KoboldAI", |
| 14 | "Update current preset": "Cập nhật thiết lập hiện tại", | 14 | "Update current preset": "Cập nhật thiết lập hiện tại", |
| 15 | "Save preset as": "Lưu cài đặt trước dưới dạng", | 15 | "Save preset as": "Lưu cài đặt trước dưới dạng", |
| 16 | "Import preset": "Nhập thiết lập", | 16 | "Import preset": "Nhập preset", |
| 17 | "Export preset": "Xuất thiết lập", | 17 | "Export preset": "Xuất preset", |
| 18 | "Restore current preset": "Khôi phục cài đặt hiện tại", | 18 | "Restore current preset": "Khôi phục cài đặt hiện tại", |
| 19 | "Delete the preset": "Xóa thiết lập", | 19 | "Delete the preset": "Xóa preset", |
| 20 | "novelaipresets": "Cài đặt trước NovelAI", | 20 | "novelaipresets": "NovelAI presets", |
| 21 | "Default": "Mặc định", | 21 | "Default": "Mặc định", |
| 22 | "openaipresets": "Cài đặt trước OpenAI", | 22 | "openaipresets": "OpenAI presets", |
| 23 | "Text Completion presets": "Cài đặt hoàn thiện văn bản", | 23 | "Text Completion presets": "Preset cho Text Completion", |
| 24 | "AI Module": "Mô-đun Trí tuệ Nhân tạo", | 24 | "AI Module": "Mô-đun AI", |
| 25 | "Changes the style of the generated text.": "Thay đổi kiểu của văn bản được tạo ra.", | 25 | "Changes the style of the generated text.": "Thay đổi kiểu của văn bản được tạo.", |
| 26 | "No Module": "Không có mô-đun", | 26 | "No Module": "Không có mô-đun", |
| 27 | "Instruct": "Dạy", | 27 | "Instruct": "Instruct", |
| 28 | "Prose Augmenter": "Trình tăng cường văn xuôi", | 28 | "Prose Augmenter": "Gia tố văn xuôi", |
| 29 | "Text Adventure": "Cuộc phiêu lưu văn bản", | 29 | "Text Adventure": "Phiêu lưu văn bản", |
| 30 | "response legth(tokens)": "Độ dài phản hồi (trong các token)", | 30 | "response legth(tokens)": "Độ dài của văn phản hồi (trong các token)", |
| 31 | "Streaming": "Phát trực tuyến", | 31 | "Streaming": "Phát trực tiếp", |
| 32 | "Streaming_desc": "Hiển thị phản hồi từng chút một khi nó được tạo ra.", | 32 | "Streaming_desc": "Hiển thị văn phản hồi kí tự từng chút một khi nó được tạo.", |
| 33 | "context size(tokens)": "Kích thước ngữ cảnh (trong các token)", | 33 | "context size(tokens)": "Kích cỡ Context (token)", |
| 34 | "unlocked": "Đã mở", | 34 | "unlocked": "Đã mở", |
| 35 | "Only enable this if your model supports context sizes greater than 4096 tokens": "Chỉ bật tính năng này nếu mô hình của bạn hỗ trợ kích thước ngữ cảnh lớn hơn 4096 token.", | 35 | "Only enable this if your model supports context sizes greater than 4096 tokens": "Chỉ bật tính năng này nếu AI model của bạn hỗ trợ Context size lớn hơn 4096 token.", |
| 36 | "Max prompt cost:": "Chi phí nhanh chóng tối đa:", | 36 | "Max prompt cost:": "Chi phí cho prompt tối đa:", |
| 37 | "Display the response bit by bit as it is generated.": "Hiển thị phản hồi từng phần khi nó được tạo ra.", | 37 | "Display the response bit by bit as it is generated.": "Hiển thị phản hồi từ từ khi nó được tạo ra.", |
| 38 | "When this is off, responses will be displayed all at once when they are complete.": "Khi chức năng này tắt, các phản hồi sẽ được hiển thị một lần khi chúng hoàn thành.", | 38 | "When this is off, responses will be displayed all at once when they are complete.": "Khi tắt tính năng này, các phản hồi sẽ được hiển thị cùng lúc khi chúng hoàn thành.", |
| 39 | "Temperature": "Nhiệt độ", | 39 | "Temperature": "Nhiệt Độ (Temperature)", |
| 40 | "rep.pen": "Trừ phạt tái phát", | 40 | "rep.pen": "rep.pen", |
| 41 | "Rep. Pen. Range.": "Phạm vi Phạt lặp lại.", | 41 | "Rep. Pen. Range.": "Rep. Pen. Range.", |
| 42 | "Rep. Pen. Slope": "Góc Khuếch đại Bút phạt", | 42 | "Rep. Pen. Slope": "Rep. Pen. Slope", |
| 43 | "Rep. Pen. Freq.": "Tần suất Phạt lặp lại.", | 43 | "Rep. Pen. Freq.": "Rep. Pen. Freq.", |
| 44 | "Rep. Pen. Presence": "Sự hiện diện Phạt lặp lại", | 44 | "Rep. Pen. Presence": "Rep. Pen. Presence", |
| 45 | "TFS": "TFS", | 45 | "TFS": "TFS", |
| 46 | "Phrase Repetition Penalty": "Phạt Lặp Lại Cụm từ", | 46 | "Phrase Repetition Penalty": "Phrase Repetition Penalty", |
| 47 | "Off": "Tắt", | 47 | "Off": "Tắt", |
| 48 | "Very light": "Rất nhẹ", | 48 | "Very light": "Rất nhẹ", |
| 49 | "Light": "Nhẹ", | 49 | "Light": "Nhẹ", |
| 50 | "Medium": "Trung bình", | 50 | "Medium": "Trung bình", |
| 51 | "Aggressive": "Quyết đoán", | 51 | "Aggressive": "Quyết đoán", |
| 52 | "Very aggressive": "Rất quyết đoán", | 52 | "Very aggressive": "Rất quyết đoán", |
| 53 | "Unlocked Context Size": "Kích thước ngữ cảnh đã mở khóa", | 53 | "Unlocked Context Size": "Kích thước context đã mở khóa", |
| 54 | "Unrestricted maximum value for the context slider": "Giá trị tối đa không giới hạn cho thanh trượt ngữ cảnh", | 54 | "Unrestricted maximum value for the context slider": "Giá trị tối đa không giới hạn cho thanh trượt context", |
| 55 | "Context Size (tokens)": "Kích thước Ngữ cảnh (token)", | 55 | "Context Size (tokens)": "Kích thước context (token)", |
| 56 | "Max Response Length (tokens)": "Độ dài Tối đa của Phản hồi (token)", | 56 | "Max Response Length (tokens)": "Độ dài phản hồi tối đa (token)", |
| 57 | "Multiple swipes per generation": "Nhiều lần vuốt mỗi thế hệ", | 57 | "Multiple swipes per generation": "Vuốt nhiều lần trong một lần tạo", |
| 58 | "Enable OpenAI completion streaming": "Bật luồng hoàn thành của OpenAI", | 58 | "Enable OpenAI completion streaming": "Bật streaming của OpenAI", |
| 59 | "Enable Cohere web-search connector": "Bật trình kết nối tìm kiếm web Cohere", | 59 | "Enable Cohere web-search connector": "Bật web tìm kiếm của Cohere", |
| 60 | "Web-search": "Tìm kiếm trên web", | 60 | "Web-search": "Tìm kiếm trên web", |
| 61 | "Allow the model to use the web-search connector.": "Cho phép mô hình sử dụng trình kết nối tìm kiếm trên web.", | 61 | "Allow the model to use the web-search connector.": "Cho phép model sử dụng trình kết nối tìm kiếm trên web.", |
| 62 | "Frequency Penalty": "Phạt Tần số", | 62 | "Frequency Penalty": "Frequency Penalty", |
| 63 | "Presence Penalty": "Phạt Sự hiện", | 63 | "Presence Penalty": "Presence Penalty", |
| 64 | "Count Penalty": "Tính hình phạt", | 64 | "Count Penalty": "Count Penalty", |
| 65 | "Top K": "Top K", | 65 | "Top K": "Top K", |
| 66 | "Top P": "Top P", | 66 | "Top P": "Top P", |
| 67 | "Repetition Penalty": "Phạt lặp lại", | 67 | "Repetition Penalty": "Repetition Penalty", |
| 68 | "Min P": "tối thiểu P", | 68 | "Min P": "Min P", |
| 69 | "Top A": "Top A", | 69 | "Top A": "Top A", |
| 70 | "Quick Prompts Edit": "Chỉnh sửa nhanh lời mời", | 70 | "Quick Prompts Edit": "Chỉnh sửa nhanh prompt", |
| 71 | "Main": "Chính", | 71 | "Main": "Chính", |
| 72 | "NSFW": "NSFW", | 72 | "NSFW": "NSFW", |
| 73 | "Jailbreak": "Phá vỡ giam giữ", | 73 | "Jailbreak": "Bẻ khóa (Jailbreak)", |
| 74 | "Utility Prompts": "Lời mời tiện ích", | 74 | "Utility Prompts": "Tiện ích cho prompt", |
| 75 | "Impersonation prompt": "Lời nhắc Giả mạo", | 75 | "Impersonation prompt": "Giả danh văn thoại", |
| 76 | "Restore default prompt": "Khôi phục lời nhắc mặc định", | 76 | "Restore default prompt": "Khôi phục lại prompt mặc định", |
| 77 | "Prompt that is used for Impersonation function": "Lời nhắc được sử dụng cho chức năng Giả mạo", | 77 | "Prompt that is used for Impersonation function": "Prompt được sử dụng cho tính năng Giả danh", |
| 78 | "World Info Format Template": "Mẫu định dạng Thông tin thế giới", | 78 | "World Info Format Template": "Mẫu định dạng cho World Info", |
| 79 | "Restore default format": "Khôi phục định dạng mặc định", | 79 | "Restore default format": "Khôi phục định dạng mặc định", |
| 80 | "Wraps activated World Info entries before inserting into the prompt.": "Bao bọc các mục Thông tin thế giới đã kích hoạt trước khi chèn vào lời nhắc.", | 80 | "Wraps activated World Info entries before inserting into the prompt.": "Bao bọc các mục World Info đã kích hoạt trước khi chèn vào Prompt.", |
| 81 | "scenario_format_template_part_1": "Sử dụng", | 81 | "scenario_format_template_part_1": "Sử dụng", |
| 82 | "scenario_format_template_part_2": "để đánh dấu nơi chèn nội dung.", | 82 | "scenario_format_template_part_2": "để đánh dấu nơi chèn nội dung.", |
| 83 | "Scenario Format Template": "Mẫu định dạng kịch bản", | 83 | "Scenario Format Template": "Mẫu định dạng kịch bản", |
| 84 | "Personality Format Template": "Mẫu định dạng cá tính", | 84 | "Personality Format Template": "Mẫu cho định dạng Nhân cách", |
| 85 | "Group Nudge Prompt Template": "Mẫu lời nhắc Nhóm", | 85 | "Group Nudge Prompt Template": "Mẫu cho Prompt của Nhóm", |
| 86 | "Sent at the end of the group chat history to force reply from a specific character.": "Được gửi vào cuối lịch sử trò chuyện nhóm để buộc một nhân vật cụ thể trả lời.", | 86 | "Sent at the end of the group chat history to force reply from a specific character.": "Được chèn vào cuối lịch sử trò chuyện nhóm để buộc một nhân vật cụ thể phải trả đáp.", |
| 87 | "New Chat": "Cuộc trò truyện mới", | 87 | "New Chat": "Cuộc trò truyện mới", |
| 88 | "Restore new chat prompt": "Khôi phục lời nhắc trò chuyện mới", | 88 | "Restore new chat prompt": "Khôi phục Prompt cho trò chuyện mới", |
| 89 | "Set at the beginning of the chat history to indicate that a new chat is about to start.": "Đặt ở đầu lịch sử trò chuyện để cho biết cuộc trò chuyện mới sắp bắt đầu.", | 89 | "Set at the beginning of the chat history to indicate that a new chat is about to start.": "Được đặt ở đầu lịch sử trò chuyện để cho biết một cuộc trò chuyện mới sắp bắt đầu.", |
| 90 | "New Group Chat": "Trò chuyện nhóm mới", | 90 | "New Group Chat": "Trò chuyện nhóm mới", |
| 91 | "Restore new group chat prompt": "Khôi phục lời nhắc mặc định", | 91 | "Restore new group chat prompt": "Khôi phục Prompt mặc định", |
| 92 | "Set at the beginning of the chat history to indicate that a new group chat is about to start.": "Đặt ở đầu lịch sử trò chuyện để cho biết cuộc trò chuyện nhóm mới sắp bắt đầu.", | 92 | "Set at the beginning of the chat history to indicate that a new group chat is about to start.": "Đặt ở đầu lịch sử trò chuyện để cho biết cuộc trò chuyện nhóm mới sắp bắt đầu.", |
| 93 | "New Example Chat": "Trò chuyện mẫu mới", | 93 | "New Example Chat": "Mẫu trò chuyện mới", |
| 94 | "Set at the beginning of Dialogue examples to indicate that a new example chat is about to start.": "Đặt ở đầu Ví dụ hội thoại để cho biết rằng một cuộc trò chuyện mẫu mới sắp bắt đầu.", | 94 | "Set at the beginning of Dialogue examples to indicate that a new example chat is about to start.": "Đặt ở đầu Ví dụ hội thoại để cho biết rằng một cuộc trò chuyện mẫu mới sắp bắt đầu.", |
| 95 | "Continue nudge": "Tiếp tục di chuyển", | 95 | "Continue nudge": "Tiếp tục thúc giục", |
| 96 | "Set at the end of the chat history when the continue button is pressed.": "Đặt ở cuối lịch sử trò chuyện khi nhấn nút tiếp tục.", | 96 | "Set at the end of the chat history when the continue button is pressed.": "Đặt ở cuối lịch sử trò chuyện khi nhấn nút tiếp tục.", |
| 97 | "Replace empty message": "Thay thế tin nhắn trống", | 97 | "Replace empty message": "Thay thế văn bản trống", |
| 98 | "Send this text instead of nothing when the text box is empty.": "Gửi văn bản này thay vì không có gì khi ô văn bản trống.", | 98 | "Send this text instead of nothing when the text box is empty.": "Gửi văn bản này thay vì không gì khi ô văn bản đang bị trống.", |
| 99 | "Seed": "Hạt giống", | 99 | "Seed": "Hạt giống (Seed)", |
| 100 | "Set to get deterministic results. Use -1 for random seed.": "Đặt để có được kết quả xác định. Sử dụng -1 cho hạt giống ngẫu nhiên.", | 100 | "Set to get deterministic results. Use -1 for random seed.": "Đặt để có được kết quả xác định. Sử dụng -1 cho hạt giống (seed) ngẫu nhiên.", |
| 101 | "Temperature controls the randomness in token selection": "Nhiệt độ điều chỉnh sự ngẫu nhiên trong việc chọn token:\n- Nhiệt độ thấp (<1.0) dẫn đến văn bản dự đoán hơn, với ưu tiên cho các token có xác suất cao.\n- Nhiệt độ cao (>1.0) tăng tính sáng tạo và đa dạng của đầu ra, với nhiều cơ hội cho các token có xác suất thấp hơn.\nThiết lập giá trị 1.0 cho xác suất gốc.", | 101 | "Temperature controls the randomness in token selection": "Nhiệt độ (Temp) điều chỉnh sự ngẫu nhiên trong việc chọn token:\n- Nhiệt độ thấp (<1.0) dẫn đến văn bản dự đoán hơn, với ưu tiên cho các token có xác suất cao.\n- Nhiệt độ cao (>1.0) tăng tính sáng tạo và đa dạng của đầu ra, với nhiều cơ hội cho các token có xác suất thấp hơn.\nThiết lập giá trị 1.0 cho xác suất gốc.", |
| 102 | "Top_K_desc": "Top K đặt một giá trị tối đa cho số lượng token hàng đầu có thể được chọn từ đó.", | 102 | "Top_K_desc": "Top K đặt một giá trị tối đa cho số lượng token hàng đầu có thể được chọn từ đó.", |
| 103 | "Top_P_desc": "Top P (còn được gọi là mẫu hạt nhân) kết hợp tất cả các token hàng đầu cần thiết để đạt được một phần trăm nhất định.\nNói cách khác, nếu các token hàng đầu 2 đại diện cho 25%, và Top-P bằng 0.50, chỉ có hai token hàng đầu này được xem xét.\nThiết lập giá trị 1.0 để vô hiệu hóa.", | 103 | "Top_P_desc": "Top P (còn được gọi là mẫu hạt nhân) kết hợp tất cả các token hàng đầu cần thiết để đạt được một phần trăm nhất định.\nNói cách khác, nếu các token hàng đầu 2 đại diện cho 25%, và Top-P bằng 0.50, chỉ có hai token hàng đầu này được xem xét.\nThiết lập giá trị 1.0 để vô hiệu hóa.", |
| 104 | "Typical P": "P điển hình", | 104 | "Typical P": "Typical P", |
| 105 | "Typical_P_desc": "Mẫu P điển hình ưu tiên các token dựa trên sự sai lệch của chúng so với năng lượng cân bằng trung bình của tập hợp.\nCác token có xác suất tích lũy gần với ngưỡng được chỉ định (ví dụ: 0.5) được giữ lại, phân biệt chúng khỏi những token có thông tin trung bình.\nThiết lập giá trị 1.0 để vô hiệu hóa.", | 105 | "Typical_P_desc": "Mẫu P điển hình ưu tiên các token dựa trên sự sai lệch của chúng so với năng lượng cân bằng trung bình của tập hợp.\nCác token có xác suất tích lũy gần với ngưỡng được chỉ định (ví dụ: 0.5) được giữ lại, phân biệt chúng khỏi những token có thông tin trung bình.\nThiết lập giá trị 1.0 để vô hiệu hóa.", |
| 106 | "Min_P_desc": "Min P đặt một xác suất tối thiểu cơ bản. Nó được tinh chỉnh dựa trên xác suất token hàng đầu.\nNếu xác suất của token hàng đầu là 80%, và Min P là 0.1, chỉ có token với xác suất cao hơn 8% được xem xét.\nThiết lập giá trị 0 để vô hiệu hóa.", | 106 | "Min_P_desc": "Min P đặt một xác suất tối thiểu cơ bản. Nó được tinh chỉnh dựa trên xác suất token hàng đầu.\nNếu xác suất của token hàng đầu là 80%, và Min P là 0.1, chỉ có token với xác suất cao hơn 8% được xem xét.\nThiết lập giá trị 0 để vô hiệu hóa.", |
| 107 | "Top_A_desc": "Top A đặt một ngưỡng cho việc chọn token dựa trên bình phương của xác suất token cao nhất.\nNếu Top A là 0.2, và xác suất của token hàng đầu là 50%, các token có xác suất dưới 5% sẽ bị loại bỏ (0.2 * 0.5^2).\nThiết lập giá trị 0 để vô hiệu hóa.", | 107 | "Top_A_desc": "Top A đặt một ngưỡng cho việc chọn token dựa trên bình phương của xác suất token cao nhất.\nNếu Top A là 0.2, và xác suất của token hàng đầu là 50%, các token có xác suất dưới 5% sẽ bị loại bỏ (0.2 * 0.5^2).\nThiết lập giá trị 0 để vô hiệu hóa.", |
| 108 | "Tail_Free_Sampling_desc": "Mẫu không đuôi (TFS) tìm kiếm đuôi của token với xác suất nhỏ trong phân phối,\n thông qua phân tích tốc độ thay đổi xác suất token bằng cách sử dụng đạo hàm. Các token được giữ lại đến ngưỡng (ví dụ: 0.3), dựa trên đạo hàm hai lần thống nhất.\nMỗi khi tiến về 0, số lượng token bị loại bỏ tăng lên. Thiết lập giá trị 1.0 để vô hiệu hóa.", | 108 | "Tail_Free_Sampling_desc": "Mẫu không đuôi (TFS) tìm kiếm đuôi của token với xác suất nhỏ trong phân phối,\n thông qua phân tích tốc độ thay đổi xác suất token bằng cách sử dụng đạo hàm. Các token được giữ lại đến ngưỡng (ví dụ: 0.3), dựa trên đạo hàm hai lần thống nhất.\nMỗi khi tiến về 0, số lượng token bị loại bỏ tăng lên. Thiết lập giá trị 1.0 để vô hiệu hóa.", |
| 109 | "rep.pen range": "Phạm vi trừ phạt tái phát", | 109 | "rep.pen range": "Phạm vi trừ phạt tái phát", |
| 110 | "Mirostat": "Máy điều hòa nhiệt độ", | 110 | "Mirostat": "Mirostat", |
| 111 | "Mode": "Cách thức", | 111 | "Mode": "Mode", |
| 112 | "Mirostat_Mode_desc": "Giá trị 0 sẽ vô hiệu hóa hoàn toàn Mirostat. 1 dành cho Mirostat 1.0 và 2 dành cho Mirostat 2.0", | 112 | "Mirostat_Mode_desc": "Giá trị 0 sẽ vô hiệu hóa hoàn toàn Mirostat. 1 dành cho Mirostat 1.0 và 2 dành cho Mirostat 2.0", |
| 113 | "Tau": "Tàu", | 113 | "Tau": "Tau", |
| 114 | "Mirostat_Tau_desc": "Kiểm soát sự thay đổi của đầu ra Mirostat", | 114 | "Mirostat_Tau_desc": "Kiểm soát sự thay đổi của đầu ra Mirostat", |
| 115 | "Eta": "eta", | 115 | "Eta": "eta", |
| 116 | "Mirostat_Eta_desc": "Kiểm soát tốc độ học tập của Mirostat", | 116 | "Mirostat_Eta_desc": "Kiểm soát tốc độ học tập của Mirostat", |
| 117 | "Ban EOS Token": "Cấm EOS Token", | 117 | "Ban EOS Token": "Cấm EOS Token", |
| 118 | "Ban_EOS_Token_desc": "Cấm mã thông báo Cuối chuỗi (EOS) với KoboldCpp (và có thể cả các mã thông báo khác có KoboldAI).\rTốt cho việc viết truyện, nhưng không nên dùng cho chế độ trò chuyện và hướng dẫn.", | 118 | "Ban_EOS_Token_desc": "Cấm mã thông báo Cuối chuỗi (EOS) với KoboldCpp (và có thể cả các mã thông báo khác có KoboldAI).\rTốt cho việc viết truyện, nhưng không nên dùng cho chế độ trò chuyện và hướng dẫn.", |
| 119 | "GBNF Grammar": "Ngữ pháp GBNF", | 119 | "GBNF Grammar": "GBNF Grammar", |
| 120 | "Type in the desired custom grammar": "Nhập vào cú pháp tùy chỉnh mong muốn", | 120 | "Type in the desired custom grammar": "Nhập vào cú pháp tùy chỉnh mong muốn", |
| 121 | "Samplers Order": "Thứ tự Bộ lấy mẫu", | 121 | "Samplers Order": "Thứ tự Bộ lấy mẫu", |
| 122 | "Samplers will be applied in a top-down order. Use with caution.": "Các bộ lấy mẫu sẽ được áp dụng theo thứ tự từ trên xuống. Sử dụng cẩn thận.", | 122 | "Samplers will be applied in a top-down order. Use with caution.": "Các bộ lấy mẫu sẽ được áp dụng theo thứ tự từ trên xuống. Sử dụng cẩn thận.", |
| 123 | "Tail Free Sampling": "Mẫu Không đuôi", | 123 | "Tail Free Sampling": "Mẫu Không đuôi", |
| 124 | "Load koboldcpp order": "Tải đơn hàng koboldcpp", | 124 | "Load koboldcpp order": "Tải đơn hàng koboldcpp", |
| 125 | "Preamble": "Lời giới thiệu", | 125 | "Preamble": "Preamble", |
| 126 | "Use style tags to modify the writing style of the output.": "Sử dụng thẻ kiểu để sửa đổi kiểu viết của đầu ra.", | 126 | "Use style tags to modify the writing style of the output.": "Sử dụng tags để sửa đổi kiểu viết của đầu ra.", |
| 127 | "Banned Tokens": "Các Token Bị Cấm", | 127 | "Banned Tokens": "Các token Bị ban", |
| 128 | "Sequences you don't want to appear in the output. One per line.": "Các chuỗi bạn không muốn xuất hiện trong kết quả. Một dòng mỗi chuỗi.", | 128 | "Sequences you don't want to appear in the output. One per line.": "Các chuỗi bạn không muốn xuất hiện trong kết quả. Một dòng mỗi chuỗi.", |
| 129 | "Logit Bias": "Sự thiên vị Logit", | 129 | "Logit Bias": "Logit Bias", |
| 130 | "Add": "Thêm", | 130 | "Add": "Thêm", |
| 131 | "Helps to ban or reenforce the usage of certain words": "Giúp cấm hoặc củng cố việc sử dụng một số từ", | 131 | "Helps to ban or reenforce the usage of certain words": "Giúp cấm hoặc củng cố việc sử dụng một số từ", |
| 132 | "CFG Scale": "Tỷ lệ CFG", | 132 | "CFG Scale": "Tỷ lệ CFG", |
| @@ -134,8 +134,8 @@ | |||
| 134 | "Add text here that would make the AI generate things you don't want in your outputs.": "Thêm văn bản ở đây sẽ khiến trí tuệ nhân tạo tạo ra những điều bạn không muốn trong đầu ra của mình.", | 134 | "Add text here that would make the AI generate things you don't want in your outputs.": "Thêm văn bản ở đây sẽ khiến trí tuệ nhân tạo tạo ra những điều bạn không muốn trong đầu ra của mình.", |
| 135 | "Used if CFG Scale is unset globally, per chat or character": "Sử dụng nếu CFG Scale không được thiết lập toàn cầu, mỗi cuộc trò chuyện hoặc mỗi ký tự.", | 135 | "Used if CFG Scale is unset globally, per chat or character": "Sử dụng nếu CFG Scale không được thiết lập toàn cầu, mỗi cuộc trò chuyện hoặc mỗi ký tự.", |
| 136 | "Mirostat Tau": "Mirostat Tau", | 136 | "Mirostat Tau": "Mirostat Tau", |
| 137 | "Mirostat LR": "Máy điều hòa LR", | 137 | "Mirostat LR": "Mirostat LR", |
| 138 | "Min Length": "Độ dài tối thiểu", | 138 | "Min Length": "Min Length", |
| 139 | "Top K Sampling": "Mẫu Top K", | 139 | "Top K Sampling": "Mẫu Top K", |
| 140 | "Nucleus Sampling": "Mẫu hạt nhân", | 140 | "Nucleus Sampling": "Mẫu hạt nhân", |
| 141 | "Top A Sampling": "Mẫu Top A", | 141 | "Top A Sampling": "Mẫu Top A", |
| @@ -162,218 +162,218 @@ | |||
| 162 | "DRY_Multiplier_desc": "Đặt thành giá trị > 0 để bật DRY. Kiểm soát mức độ hình phạt đối với các chuỗi hình phạt ngắn nhất.", | 162 | "DRY_Multiplier_desc": "Đặt thành giá trị > 0 để bật DRY. Kiểm soát mức độ hình phạt đối với các chuỗi hình phạt ngắn nhất.", |
| 163 | "Multiplier": "Số nhân", | 163 | "Multiplier": "Số nhân", |
| 164 | "DRY_Base_desc": "Kiểm soát tốc độ tăng của hình phạt khi tăng độ dài chuỗi.", | 164 | "DRY_Base_desc": "Kiểm soát tốc độ tăng của hình phạt khi tăng độ dài chuỗi.", |
| 165 | "Base": "Căn cứ", | 165 | "Base": "Base", |
| 166 | "DRY_Allowed_Length_desc": "Trình tự dài nhất có thể được lặp lại mà không bị phạt.", | 166 | "DRY_Allowed_Length_desc": "Trình tự dài nhất có thể được lặp lại mà không bị phạt.", |
| 167 | "Allowed Length": "Độ dài cho phép", | 167 | "Allowed Length": "Allowed Length", |
| 168 | "Penalty Range": "Phạm vi phạt đền", | 168 | "Penalty Range": "Penalty Range", |
| 169 | "DRY_Sequence_Breakers_desc": "Các mã thông báo mà việc khớp trình tự không được tiếp tục. Được chỉ định dưới dạng danh sách các chuỗi được trích dẫn được phân tách bằng dấu phẩy.", | 169 | "DRY_Sequence_Breakers_desc": "Các mã thông báo mà việc khớp trình tự không được tiếp tục. Được chỉ định dưới dạng danh sách các chuỗi được trích dẫn được phân tách bằng dấu phẩy.", |
| 170 | "Sequence Breakers": "Bộ ngắt trình tự", | 170 | "Sequence Breakers": "Bộ ngắt trình tự", |
| 171 | "JSON-serialized array of strings.": "Mảng chuỗi được tuần tự hóa JSON.", | 171 | "JSON-serialized array of strings.": "Mảng chuỗi được tuần tự hóa JSON.", |
| 172 | "Dynamic Temperature": "Nhiệt độ động", | 172 | "Dynamic Temperature": "Dynamic Temperature", |
| 173 | "Scale Temperature dynamically per token, based on the variation of probabilities": "Nhiệt độ tỷ lệ động cho mỗi token, dựa trên sự biến đổi của xác suất.", | 173 | "Scale Temperature dynamically per token, based on the variation of probabilities": "Nhiệt độ tỷ lệ động cho mỗi token, dựa trên sự biến đổi của xác suất.", |
| 174 | "Minimum Temp": "Nhiệt độ Tối thiểu", | 174 | "Minimum Temp": "Nhiệt độ Tối thiểu", |
| 175 | "Maximum Temp": "Nhiệt độ Tối đa", | 175 | "Maximum Temp": "Nhiệt độ Tối đa", |
| 176 | "Exponent": "Số mũ", | 176 | "Exponent": "Exponent", |
| 177 | "Mirostat (mode=1 is only for llama.cpp)": "Mirostat (chế độ=1 chỉ dành cho llama.cpp)", | 177 | "Mirostat (mode=1 is only for llama.cpp)": "Mirostat (chế độ=1 chỉ dành cho llama.cpp)", |
| 178 | "Mirostat_desc": "Mirostat là một bộ điều chỉnh nhiệt cho sự phức tạp của đầu ra.", | 178 | "Mirostat_desc": "Mirostat là một bộ điều chỉnh nhiệt cho sự phức tạp của đầu ra.", |
| 179 | "Mirostat Mode": "Chế độ Mirostat", | 179 | "Mirostat Mode": "Chế độ Mirostat", |
| 180 | "Variability parameter for Mirostat outputs": "Tham số biến đổi cho đầu ra của Mirostat.", | 180 | "Variability parameter for Mirostat outputs": "Tham số biến đổi cho đầu ra của Mirostat.", |
| 181 | "Mirostat Eta": "Mirostat Eta", | 181 | "Mirostat Eta": "Mirostat Eta", |
| 182 | "Learning rate of Mirostat": "Tốc độ học của Mirostat.", | 182 | "Learning rate of Mirostat": "Learning rate of Mirostat.", |
| 183 | "Beam search": "Tìm kiếm Beam", | 183 | "Beam search": "Beam search", |
| 184 | "Helpful tip coming soon.": "Lời khuyên hữu ích sắp ra mắt.", | 184 | "Helpful tip coming soon.": "Lời khuyên hữu ích sắp ra mắt.", |
| 185 | "Number of Beams": "Số Lượng Beam", | 185 | "Number of Beams": "Số Lượng Beam", |
| 186 | "Length Penalty": "Phạt Độ dài", | 186 | "Length Penalty": "Length Penalty", |
| 187 | "Early Stopping": "Dừng Sớm", | 187 | "Early Stopping": "Dừng Sớm", |
| 188 | "Contrastive search": "Tìm kiếm Trái ngược", | 188 | "Contrastive search": "Contrastive search", |
| 189 | "Penalty Alpha": "Alpha Phạt", | 189 | "Penalty Alpha": "Penalty Alpha", |
| 190 | "Strength of the Contrastive Search regularization term. Set to 0 to disable CS": "Độ mạnh của thuật ngữ điều chỉnh Tìm kiếm Trái ngược. Đặt thành 0 để vô hiệu hóa CS.", | 190 | "Strength of the Contrastive Search regularization term. Set to 0 to disable CS": "Độ mạnh của thuật ngữ điều chỉnh Tìm kiếm Trái ngược. Đặt thành 0 để vô hiệu hóa CS.", |
| 191 | "Do Sample": "Lấy mẫu", | 191 | "Do Sample": "Lấy Sample", |
| 192 | "Add BOS Token": "Thêm BOS Token", | 192 | "Add BOS Token": "Thêm BOS Token", |
| 193 | "Add the bos_token to the beginning of prompts. Disabling this can make the replies more creative": "Thêm bos_token vào đầu câu hỏi. Vô hiệu hóa điều này có thể làm cho các câu trả lời sáng tạo hơn", | 193 | "Add the bos_token to the beginning of prompts. Disabling this can make the replies more creative": "Thêm bos_token vào đầu câu hỏi. Vô hiệu hóa điều này có thể làm cho các câu trả lời sáng tạo hơn", |
| 194 | "Ban the eos_token. This forces the model to never end the generation prematurely": "Cấm eos_token. Điều này buộc mô hình không bao giờ kết thúc quá trình sinh ra trước khi cần thiết", | 194 | "Ban the eos_token. This forces the model to never end the generation prematurely": "Cấm eos_token. Điều này buộc mô hình không bao giờ kết thúc quá trình sinh ra trước khi cần thiết", |
| 195 | "Ignore EOS Token": "Bỏ qua mã thông báo EOS", | 195 | "Ignore EOS Token": "Bỏ qua mã thông báo EOS", |
| 196 | "Ignore the EOS Token even if it generates.": "Bỏ qua EOS Token ngay cả khi nó được tạo ra.", | 196 | "Ignore the EOS Token even if it generates.": "Bỏ qua EOS Token ngay cả khi nó được tạo ra.", |
| 197 | "Skip Special Tokens": "Bỏ qua Các Token Đặc biệt", | 197 | "Skip Special Tokens": "Bỏ qua Các Token Đặc biệt", |
| 198 | "Temperature Last": "Nhiệt độ Cuối cùng", | 198 | "Temperature Last": "Temperature Last", |
| 199 | "Temperature_Last_desc": "Sử dụng bộ lấy mẫu nhiệt độ cuối cùng. Thường là hợp lý.\nKhi bật: Một nhóm các token tiềm năng được chọn trước tiên, sau đó nhiệt độ được áp dụng để hiệu chỉnh xác suất tương đối của chúng (kỹ thuật, logits).\nKhi vô hiệu hóa: Nhiệt độ được áp dụng trước tiên để hiệu chỉnh xác suất tương đối của từng token, sau đó một nhóm các token tiềm năng được chọn từ đó.\nVô hiệu hóa nhiệt độ cuối cùng.", | 199 | "Temperature_Last_desc": "Sử dụng bộ lấy Temperature cuối cùng. Thường là hợp lý.\nKhi bật: Một nhóm các token tiềm năng được chọn trước tiên, sau đó nhiệt độ được áp dụng để hiệu chỉnh xác suất tương đối của chúng (kỹ thuật, logits).\nKhi vô hiệu hóa: Nhiệt độ được áp dụng trước tiên để hiệu chỉnh xác suất tương đối của từng token, sau đó một nhóm các token tiềm năng được chọn từ đó.\nVô hiệu hóa nhiệt độ cuối cùng.", |
| 200 | "Speculative Ngram": "Ngram đầu cơ", | 200 | "Speculative Ngram": "Speculative Ngram", |
| 201 | "Use a different speculative decoding method without a draft model": "Sử dụng phương pháp giải mã suy đoán khác mà không cần mô hình phác thảo.\rƯu tiên sử dụng mô hình dự thảo. Ngram đầu cơ không hiệu quả bằng.", | 201 | "Use a different speculative decoding method without a draft model": "Sử dụng phương pháp giải mã suy đoán khác mà không cần mô hình phác thảo.\rƯu tiên sử dụng mô hình dự thảo. Ngram đầu cơ không hiệu quả bằng.", |
| 202 | "Spaces Between Special Tokens": "Khoảng cách giữa các mã thông báo đặc biệt", | 202 | "Spaces Between Special Tokens": "Khoảng cách giữa các mã thông báo đặc biệt", |
| 203 | "LLaMA / Mistral / Yi models only": "Chỉ áp dụng cho các mô hình LLaMA / Mistral / Yi. Hãy chắc chắn chọn bộ phân tích đúng trước.\nChuỗi phải không xuất hiện trong kết quả.\nMỗi dòng chỉ một chuỗi. Văn bản hoặc [nhận diện của token].\nNhiều token bắt đầu bằng dấu cách. Sử dụng bộ đếm token nếu bạn không chắc chắn.", | 203 | "LLaMA / Mistral / Yi models only": "Chỉ áp dụng cho các mô hình LLaMA / Mistral / Yi. Hãy chắc chắn chọn bộ phân tích đúng trước.\nChuỗi phải không xuất hiện trong kết quả.\nMỗi dòng chỉ một chuỗi. Văn bản hoặc [nhận diện của token].\nNhiều token bắt đầu bằng dấu cách. Sử dụng bộ đếm token nếu bạn không chắc chắn.", |
| 204 | "Example: some text [42, 69, 1337]": "Ví dụ:\nmột số văn bản\n[42, 69, 1337]", | 204 | "Example: some text [42, 69, 1337]": "Ví dụ:\nmột số văn bản\n[42, 69, 1337]", |
| 205 | "Classifier Free Guidance. More helpful tip coming soon": "Hướng dẫn không cần Bộ phân loại. Mẹo hữu ích hơn sẽ được cập nhật sớm.", | 205 | "Classifier Free Guidance. More helpful tip coming soon": "Hướng dẫn không cần Bộ phân loại. Mẹo hữu ích hơn sẽ được cập nhật sớm.", |
| 206 | "Scale": "Tỷ lệ", | 206 | "Scale": "Tỷ lệ", |
| 207 | "JSON Schema": "Lược đồ JSON", | 207 | "JSON Schema": "JSON Schema", |
| 208 | "Type in the desired JSON schema": "Nhập lược đồ JSON mong muốn", | 208 | "Type in the desired JSON schema": "Nhập JSON schema mong muốn", |
| 209 | "Grammar String": "Chuỗi ngữ pháp", | 209 | "Grammar String": "Chuỗi ngữ pháp", |
| 210 | "GBNF or EBNF, depends on the backend in use. If you're using this you should know which.": "GBNF hoặc EBNF, tùy thuộc vào backend đang sử dụng. Nếu bạn đang sử dụng cái này, bạn nên biết cái nào.", | 210 | "GBNF or EBNF, depends on the backend in use. If you're using this you should know which.": "GBNF hoặc EBNF, tùy thuộc vào backend đang sử dụng. Nếu bạn đang sử dụng cái này, bạn nên biết cái nào.", |
| 211 | "Top P & Min P": "P & P tối thiểu hàng đầu", | 211 | "Top P & Min P": "Top P & Min P", |
| 212 | "Load default order": "Tải thứ tự mặc định", | 212 | "Load default order": "Tải thứ tự mặc định", |
| 213 | "llama.cpp only. Determines the order of samplers. If Mirostat mode is not 0, sampler order is ignored.": "chỉ llama.cpp. Xác định thứ tự lấy mẫu. Nếu chế độ Mirostat khác 0, thứ tự lấy mẫu sẽ bị bỏ qua.", | 213 | "llama.cpp only. Determines the order of samplers. If Mirostat mode is not 0, sampler order is ignored.": "chỉ llama.cpp. Xác định thứ tự lấy mẫu. Nếu chế độ Mirostat khác 0, thứ tự lấy mẫu sẽ bị bỏ qua.", |
| 214 | "Sampler Priority": "Ưu tiên Mẫu", | 214 | "Sampler Priority": "Ưu tiên sampler", |
| 215 | "Ooba only. Determines the order of samplers.": "Chỉ Ooba. Xác định thứ tự của các mẫu.", | 215 | "Ooba only. Determines the order of samplers.": "Chỉ Ooba. Xác định thứ tự của samplers.", |
| 216 | "Character Names Behavior": "Tên nhân vật Hành vi", | 216 | "Character Names Behavior": "Cài đặt tên nhân vật", |
| 217 | "Helps the model to associate messages with characters.": "Giúp mô hình liên kết tin nhắn với các ký tự.", | 217 | "Helps the model to associate messages with characters.": "Giúp mô hình liên kết tin nhắn với các ký tự.", |
| 218 | "None": "Không", | 218 | "None": "Không", |
| 219 | "character_names_default": "Ngoại trừ các nhóm và cá tính trong quá khứ. Nếu không, hãy đảm bảo bạn cung cấp tên trong lời nhắc.", | 219 | "character_names_default": "Ngoại trừ các nhóm và cá tính trong quá khứ. Nếu không, hãy đảm bảo bạn cung cấp tên trong Prompt.", |
| 220 | "Don't add character names.": "Không thêm tên nhân vật.", | 220 | "Don't add character names.": "Không thêm tên nhân vật.", |
| 221 | "Completion": "Đối tượng hoàn thành", | 221 | "Completion": "Hoàn thành", |
| 222 | "character_names_completion": "Áp dụng hạn chế: chỉ chữ và số Latinh và dấu gạch dưới. Không hoạt động với tất cả các nguồn, đặc biệt là: Claude, MistralAI, Google.", | 222 | "character_names_completion": "Áp dụng hạn chế: chỉ chữ và số Latinh và dấu gạch dưới. Không hoạt động với tất cả các nguồn, đặc biệt là: Claude, MistralAI, Google.", |
| 223 | "Add character names to completion objects.": "Thêm tên nhân vật vào các đối tượng hoàn thành.", | 223 | "Add character names to completion objects.": "Thêm tên nhân vật vào completion objects.", |
| 224 | "Message Content": "Nội dung tin nhắn", | 224 | "Message Content": "Nội dung tin nhắn", |
| 225 | "Prepend character names to message contents.": "Thêm tên ký tự vào nội dung tin nhắn.", | 225 | "Prepend character names to message contents.": "Thêm tên ký tự vào nội dung tin nhắn.", |
| 226 | "Continue Postfix": "Tiếp tục hậu tố", | 226 | "Continue Postfix": "Tiếp tục Prefix", |
| 227 | "The next chunk of the continued message will be appended using this as a separator.": "Đoạn tiếp theo của tin nhắn tiếp theo sẽ được thêm vào bằng cách sử dụng đoạn này làm dấu phân cách.", | 227 | "The next chunk of the continued message will be appended using this as a separator.": "Đoạn tiếp theo của tin nhắn tiếp theo sẽ được thêm vào bằng cách sử dụng đoạn này làm dấu phân cách.", |
| 228 | "Space": "Không gian", | 228 | "Space": "Không gian", |
| 229 | "Newline": "Dòng mới", | 229 | "Newline": "Dòng mới", |
| 230 | "Double Newline": "Dòng mới đôi", | 230 | "Double Newline": "Dòng mới kép", |
| 231 | "Wrap user messages in quotes before sending": "Bao gói tin nhắn của người dùng trong dấu ngoặc trước khi gửi", | 231 | "Wrap user messages in quotes before sending": "Cho tin nhắn của người dùng trong dấu ngoặc kép trước khi gửi", |
| 232 | "Wrap in Quotes": "Bọc trong dấu ngoặc", | 232 | "Wrap in Quotes": "Cho vào trong dấu ngoặc", |
| 233 | "Wrap entire user message in quotes before sending.": "Bọc toàn bộ tin nhắn của người dùng trong dấu ngoặc trước khi gửi.", | 233 | "Wrap entire user message in quotes before sending.": "Cho toàn bộ tin nhắn của người dùng trong dấu ngoặc kép trước khi gửi", |
| 234 | "Leave off if you use quotes manually for speech.": "Bỏ đi nếu bạn sử dụng dấu ngoặc bằng tay cho phần nói.", | 234 | "Leave off if you use quotes manually for speech.": "Bỏ qua nếu bạn sử dụng dấu ngoặc kép cho lời nói.", |
| 235 | "Continue prefill": "Tiếp tục điền trước", | 235 | "Continue prefill": "Tiếp tục Prefill", |
| 236 | "Continue sends the last message as assistant role instead of system message with instruction.": "Tiếp tục gửi tin nhắn cuối cùng dưới dạng vai trò trợ lý thay vì tin nhắn hệ thống với hướng dẫn.", | 236 | "Continue sends the last message as assistant role instead of system message with instruction.": "Tiếp tục gửi tin nhắn cuối cùng dưới dạng Assistant thay vì Prompt hệ thống với Instruction.", |
| 237 | "Squash system messages": "Nén các tin nhắn hệ thống", | 237 | "Squash system messages": "Nén tin nhắn văn bản hệ thống", |
| 238 | "Combines consecutive system messages into one (excluding example dialogues). May improve coherence for some models.": "Kết hợp các tin nhắn hệ thống liên tiếp thành một (loại bỏ các đoạn hội thoại mẫu). Có thể cải thiện tính nhất quán cho một số mô hình.", | 238 | "Combines consecutive system messages into one (excluding example dialogues). May improve coherence for some models.": "Kết hợp các tin nhắn hệ thống liên tiếp thành một (loại bỏ các đoạn hội thoại mẫu). Có thể cải thiện tính nhất quán cho một số model.", |
| 239 | "Enable function calling": "Kích hoạt tính năng gọi hàm", | 239 | "Enable function calling": "Sử dụng tính năng gọi hàm (function calling)", |
| 240 | "Send inline images": "Gửi hình ảnh nội bộ", | 240 | "Send inline images": "Gửi hình ảnh nội bộ", |
| 241 | "image_inlining_hint_1": "Gửi hình ảnh theo lời nhắc nếu kiểu máy hỗ trợ (ví dụ: GPT-4V, Claude 3 hoặc Llava 13B).\n Sử dụng", | 241 | "image_inlining_hint_1": "Gửi hình ảnh theo Prompt nếu kiểu máy hỗ trợ (ví dụ: GPT-4V, Claude 3 hoặc Llava 13B).\n Sử dụng", |
| 242 | "image_inlining_hint_2": "hành động đối với bất kỳ tin nhắn nào hoặc", | 242 | "image_inlining_hint_2": "hành động đối với bất kỳ tin nhắn nào hoặc", |
| 243 | "image_inlining_hint_3": "menu để đính kèm tệp hình ảnh vào cuộc trò chuyện.", | 243 | "image_inlining_hint_3": "menu để đính kèm tệp hình ảnh vào cuộc trò chuyện.", |
| 244 | "Inline Image Quality": "Chất lượng hình ảnh nội tuyến", | 244 | "Inline Image Quality": "Chất lượng hình ảnh nội tuyến", |
| 245 | "openai_inline_image_quality_auto": "Tự động", | 245 | "openai_inline_image_quality_auto": "Tự động", |
| 246 | "openai_inline_image_quality_low": "Thấp", | 246 | "openai_inline_image_quality_low": "Thấp", |
| 247 | "openai_inline_image_quality_high": "Cao", | 247 | "openai_inline_image_quality_high": "Cao", |
| 248 | "Use AI21 Tokenizer": "Sử dụng mã thông báo AI21", | 248 | "Use AI21 Tokenizer": "Sử bộ Tokenizer (bộ tách từ) của AI21", |
| 249 | "Use the appropriate tokenizer for Jurassic models, which is more efficient than GPT's.": "Sử dụng mã thông báo thích hợp cho các mô hình kỷ Jura, hiệu quả hơn GPT.", | 249 | "Use the appropriate tokenizer for Jurassic models, which is more efficient than GPT's.": "Sử dụng bộ tách từ thích hợp cho các Model của Jurassic, hiệu quả hơn GPT.", |
| 250 | "Use Google Tokenizer": "Sử dụng bộ mã hóa của Google", | 250 | "Use Google Tokenizer": "Sử Tokenizer của Google", |
| 251 | "Use the appropriate tokenizer for Google models via their API. Slower prompt processing, but offers much more accurate token counting.": "Sử dụng bộ mã hóa phù hợp cho các mô hình của Google thông qua API của họ. Xử lý lời mời chậm hơn, nhưng cung cấp đếm token chính xác hơn nhiều.", | 251 | "Use the appropriate tokenizer for Google models via their API. Slower prompt processing, but offers much more accurate token counting.": "Sử dụng bộ tách từ phù hợp cho các model của Google thông qua API. Xử lý prompt chậm hơn, nhưng đếm token chính xác hơn.", |
| 252 | "Use system prompt": "Sử dụng lời nhắc hệ thống", | 252 | "Use system prompt": "Sử dụng Prompt hệ thống", |
| 253 | "(Gemini 1.5 Pro/Flash only)": "(Chỉ Gemini 1.5 Pro/Flash)", | 253 | "(Gemini 1.5 Pro/Flash only)": "(Chỉ cho Gemini 1.5 Pro/Flash)", |
| 254 | "Merges_all_system_messages_desc_1": "Hợp nhất tất cả các tin nhắn hệ thống cho đến tin nhắn đầu tiên có vai trò không thuộc hệ thống và gửi chúng theo cách", | 254 | "Merges_all_system_messages_desc_1": "Hợp nhất tất cả các tin nhắn văn bản hệ thống cho đến tin nhắn đầu tiên có vai trò không thuộc hệ thống và gửi chúng theo cách", |
| 255 | "Merges_all_system_messages_desc_2": "cánh đồng.", | 255 | "Merges_all_system_messages_desc_2": "cánh đồng.", |
| 256 | "Assistant Prefill": "Điền trước của trợ lý", | 256 | "Assistant Prefill": "Prefill trợ lý", |
| 257 | "Start Claude's answer with...": "Bắt đầu câu trả lời của Claude với...", | 257 | "Start Claude's answer with...": "Claude trả lời bắt đầu bằng...", |
| 258 | "Assistant Impersonation Prefill": "Điền trước mạo danh trợ lý", | 258 | "Assistant Impersonation Prefill": "Prefill cho mạo danh trợ lý", |
| 259 | "Use system prompt (Claude 2.1+ only)": "Sử dụng lời mời hệ thống (Chỉ áp dụng cho Claude 2.1+)", | 259 | "Use system prompt (Claude 2.1+ only)": "Sử dụng prompt hệ thống (Chỉ áp dụng từ Claude 2.1+)", |
| 260 | "Send the system prompt for supported models. If disabled, the user message is added to the beginning of the prompt.": "Gửi lời mời hệ thống cho các mô hình được hỗ trợ. Nếu tắt, tin nhắn của người dùng sẽ được thêm vào đầu lời mời.", | 260 | "Send the system prompt for supported models. If disabled, the user message is added to the beginning of the prompt.": "Gửi yêu cầu hệ thống cho các model được hỗ trợ. Nếu bị vô hiệu hóa, tin nhắn của người dùng sẽ được thêm vào đầu yêu cầu.", |
| 261 | "User first message": "Tin nhắn đầu tiên của người dùng", | 261 | "User first message": "Tin nhắn đầu tiên của người dùng", |
| 262 | "Restore User first message": "Khôi phục tin nhắn đầu tiên của người dùng", | 262 | "Restore User first message": "Khôi phục tin nhắn đầu tiên của người dùng", |
| 263 | "Human message": "Thông điệp, hướng dẫn của con người, v.v.\nKhông thêm gì khi trống, tức là yêu cầu lời nhắc mới với vai trò 'người dùng'.", | 263 | "Human message": "Prompt, hướng dẫn của human, v.v.\nKhông thêm gì khi trống, tức là yêu cầu Prompt mới với vai trò 'người dùng'.", |
| 264 | "New preset": "Thiết lập mới", | 264 | "New preset": "Preset mới", |
| 265 | "Delete preset": "Xóa thiết lập", | 265 | "Delete preset": "Xóa preset", |
| 266 | "View / Edit bias preset": "Xem / Chỉnh sửa cài đặt thiên vị", | 266 | "View / Edit bias preset": "Xem / Chỉnh sửa cài đặt thiên vị", |
| 267 | "Add bias entry": "Thêm mục thiên vị", | 267 | "Add bias entry": "Thêm mục thiên vị", |
| 268 | "Most tokens have a leading space.": "Hầu hết các token đều có khoảng trống ở đầu.", | 268 | "Most tokens have a leading space.": "Hầu hết các token đều có khoảng trống ở đầu.", |
| 269 | "API Connections": "Kết nối API", | 269 | "API Connections": "Kết nối API", |
| 270 | "Text Completion": "Hoàn thành văn bản", | 270 | "Text Completion": "Text Completion", |
| 271 | "Chat Completion": "Hoàn thành trò chuyện", | 271 | "Chat Completion": "Chat Completion", |
| 272 | "NovelAI": "NovelAI", | 272 | "NovelAI": "NovelAI", |
| 273 | "KoboldAI Horde": "Bầy KoboldAI", | 273 | "KoboldAI Horde": "KoboldAI Horde", |
| 274 | "KoboldAI": "KoboldAI", | 274 | "KoboldAI": "KoboldAI", |
| 275 | "Avoid sending sensitive information to the Horde.": "Tránh gửi thông tin nhạy cảm cho Horde.", | 275 | "Avoid sending sensitive information to the Horde.": "Tránh gửi thông tin nhạy cảm cho Horde.", |
| 276 | "Review the Privacy statement": "Xem lại Tuyên bố Quyền riêng tư", | 276 | "Review the Privacy statement": "Xem lại Chính sách bảo mật", |
| 277 | "Register a Horde account for faster queue times": "Đăng ký một tài khoản Horde để có thời gian chờ nhanh hơn", | 277 | "Register a Horde account for faster queue times": "Đăng ký tài khoản Horde để có thời gian xếp hàng ngắn hơn", |
| 278 | "Learn how to contribute your idle GPU cycles to the Horde": "Học cách đóng góp các chu kỳ GPU không hoạt động của bạn cho Bầy", | 278 | "Learn how to contribute your idle GPU cycles to the Horde": "Tìm hiểu cách đóng góp công sức GPU của bạn cho Horde", |
| 279 | "Adjust context size to worker capabilities": "Điều chỉnh kích thước ngữ cảnh cho phù hợp với khả năng của công nhân", | 279 | "Adjust context size to worker capabilities": "Điều chỉnh kích thước context cho phù hợp với khả năng của công nhân", |
| 280 | "Adjust response length to worker capabilities": "Điều chỉnh độ dài phản hồi cho phù hợp với khả năng của công nhân", | 280 | "Adjust response length to worker capabilities": "Điều chỉnh độ dài phản hồi cho phù hợp với khả năng của công nhân", |
| 281 | "Can help with bad responses by queueing only the approved workers. May slowdown the response time.": "Có thể giúp đỡ với các phản hồi không tốt bằng cách xếp hàng chỉ các nhân viên được phê duyệt. Có thể làm chậm lại thời gian phản hồi.", | 281 | "Can help with bad responses by queueing only the approved workers. May slowdown the response time.": "Có thể giúp đỡ với các phản hồi không tốt bằng cách xếp hàng chỉ các nhân viên được phê duyệt. Có thể làm chậm lại thời gian phản hồi.", |
| 282 | "Trusted workers only": "Chỉ các nhân viên được tin cậy", | 282 | "Trusted workers only": "Chỉ các nhân viên được tin cậy", |
| 283 | "API key": "Khóa API", | 283 | "API key": "Key API", |
| 284 | "Get it here:": "Nhận nó tại đây:", | 284 | "Get it here:": "Nhận nó tại đây:", |
| 285 | "Register": "Đăng ký", | 285 | "Register": "Đăng ký", |
| 286 | "View my Kudos": "Xem các phần Kudos của tôi", | 286 | "View my Kudos": "Xem Kudos của tui", |
| 287 | "Enter": "Nhập", | 287 | "Enter": "Nhập", |
| 288 | "to use anonymous mode.": "để sử dụng chế độ ẩn danh.", | 288 | "to use anonymous mode.": "để sử dụng chế độ ẩn danh.", |
| 289 | "Clear your API key": "Xóa khóa API của bạn", | 289 | "Clear your API key": "Xóa key API của tui", |
| 290 | "For privacy reasons, your API key will be hidden after you reload the page.": "Vì lý do bảo mật, khóa API của bạn sẽ bị ẩn sau khi bạn tải lại trang.", | 290 | "For privacy reasons, your API key will be hidden after you reload the page.": "Vì lý do bảo mật, khóa API của bạn sẽ bị ẩn sau khi bạn tải lại trang.", |
| 291 | "Models": "Mô hình", | 291 | "Models": "Model", |
| 292 | "Refresh models": "Làm mới các mô hình", | 292 | "Refresh models": "Làm mới model", |
| 293 | "-- Horde models not loaded --": "-- Các mô hình Horde không được tải --", | 293 | "-- Horde models not loaded --": "-- Các mô hình Horde không được tải --", |
| 294 | "Not connected...": "Không kết nối...", | 294 | "Not connected...": "Không kết nối...", |
| 295 | "API url": "URL API", | 295 | "API url": "URL API", |
| 296 | "Example: http://127.0.0.1:5000/api ": "Ví dụ: http://127.0.0.1:5000/api", | 296 | "Example: http://127.0.0.1:5000/api ": "Ví dụ: http://127.0.0.1:5000/api", |
| 297 | "Connect": "Kết nối", | 297 | "Connect": "Kết nối", |
| 298 | "Cancel": "Hủy bỏ", | 298 | "Cancel": "Hủy bỏ", |
| 299 | "Novel API key": "Khóa API NovelAI", | 299 | "Novel API key": "Key API NovelAI", |
| 300 | "Get your NovelAI API Key": "Nhận khóa API NovelAI của bạn", | 300 | "Get your NovelAI API Key": "Nhận khóa API NovelAI của bạn", |
| 301 | "Enter it in the box below": "Nhập nó vào ô dưới đây", | 301 | "Enter it in the box below": "Nhập nó vào ô dưới đây", |
| 302 | "Novel AI Model": "Mô hình Novel AI", | 302 | "Novel AI Model": "Model Novel AI", |
| 303 | "No connection...": "Không có kết nối...", | 303 | "No connection...": "Không có kết nối...", |
| 304 | "API Type": "Loại API", | 304 | "API Type": "Loại API", |
| 305 | "Default (completions compatible)": "Mặc định [OpenAI/tương thích hoàn thành: oobabooga, LM Studio, v.v.]", | 305 | "Default (completions compatible)": "Mặc định [OpenAI/tương thích hoàn thành: oobabooga, LM Studio, v.v.]", |
| 306 | "TogetherAI API Key": "Khóa API TogetherAI", | 306 | "TogetherAI API Key": "Key API TogetherAI", |
| 307 | "TogetherAI Model": "Mô hình TogetherAI", | 307 | "TogetherAI Model": "Model TogetherAI", |
| 308 | "-- Connect to the API --": "-- Kết nối với API --", | 308 | "-- Connect to the API --": "-- Kết nối với API --", |
| 309 | "OpenRouter API Key": "Khóa API của OpenRouter", | 309 | "OpenRouter API Key": "Key API của OpenRouter", |
| 310 | "Click Authorize below or get the key from": "Nhấp vào Tác động dưới đây hoặc lấy khóa từ", | 310 | "Click Authorize below or get the key from": "Nhấp vào Tác động dưới đây hoặc lấy Key từ", |
| 311 | "View Remaining Credits": "Xem số dư còn lại", | 311 | "View Remaining Credits": "Xem số dư còn lại", |
| 312 | "OpenRouter Model": "Mô hình OpenRouter", | 312 | "OpenRouter Model": "Model OpenRouter", |
| 313 | "Model Providers": "Nhà cung cấp mô hình", | 313 | "Model Providers": "Nhà cung cấp model", |
| 314 | "InfermaticAI API Key": "Khóa API InfermaticAI", | 314 | "InfermaticAI API Key": "Key API InfermaticAI", |
| 315 | "InfermaticAI Model": "Mô hình InfermaticAI", | 315 | "InfermaticAI Model": "Model InfermaticAI", |
| 316 | "DreamGen API key": "Khóa API DreamGen", | 316 | "DreamGen API key": "Key API DreamGen", |
| 317 | "DreamGen Model": "Model DreamGen", | 317 | "DreamGen Model": "Model DreamGen", |
| 318 | "Mancer API key": "Khóa API của Mancer", | 318 | "Mancer API key": "Key API của Mancer", |
| 319 | "Mancer Model": "Mô hình Mancer", | 319 | "Mancer Model": "Model Mancer", |
| 320 | "Make sure you run it with": "Đảm bảo bạn chạy nó với", | 320 | "Make sure you run it with": "Đảm bảo bạn chạy nó với nó", |
| 321 | "flag": "cờ", | 321 | "flag": "cờ", |
| 322 | "API key (optional)": "Khóa API (tùy chọn)", | 322 | "API key (optional)": "Key API (tùy chọn)", |
| 323 | "Server url": "URL máy chủ", | 323 | "Server url": "URL máy chủ", |
| 324 | "Example: 127.0.0.1:5000": "Ví dụ: 127.0.0.1:5000", | 324 | "Example: 127.0.0.1:5000": "Ví dụ: 127.0.0.1:5000", |
| 325 | "Custom model (optional)": "Mô hình tùy chỉnh (tùy chọn)", | 325 | "Custom model (optional)": "Model tùy chỉnh (tùy chọn)", |
| 326 | "vllm-project/vllm": "vllm-project/vllm (Chế độ trình bao bọc API OpenAI)", | 326 | "vllm-project/vllm": "vllm-project/vllm (Chế độ trình bao bọc API OpenAI)", |
| 327 | "vLLM API key": "Khóa API vLLM", | 327 | "vLLM API key": "Key API vLLM", |
| 328 | "Example: 127.0.0.1:8000": "Ví dụ: http://127.0.0.1:8000", | 328 | "Example: 127.0.0.1:8000": "Ví dụ: http://127.0.0.1:8000", |
| 329 | "vLLM Model": "Mô hình vLLM", | 329 | "vLLM Model": "Model vLLM", |
| 330 | "PygmalionAI/aphrodite-engine": "PygmalionAI/aphrodite-engine (Chế độ đóng gói cho Giao diện lập trình ứng dụng OpenAI)", | 330 | "PygmalionAI/aphrodite-engine": "PygmalionAI/aphrodite-engine (Chế độ đóng gói cho Giao diện lập trình ứng dụng OpenAI)", |
| 331 | "Aphrodite API key": "Khóa API Aphrodite", | 331 | "Aphrodite API key": "Key API Aphrodite", |
| 332 | "Aphrodite Model": "Người Mẫu Aphrodite", | 332 | "Aphrodite Model": "Moddel cho Aphrodite", |
| 333 | "ggerganov/llama.cpp": "ggerganov/llama.cpp", | 333 | "ggerganov/llama.cpp": "ggerganov/llama.cpp", |
| 334 | "Example: 127.0.0.1:8080": "Ví dụ: 127.0.0.1:8080", | 334 | "Example: 127.0.0.1:8080": "Ví dụ: 127.0.0.1:8080", |
| 335 | "Example: 127.0.0.1:11434": "Ví dụ: 127.0.0.1:11434", | 335 | "Example: 127.0.0.1:11434": "Ví dụ: 127.0.0.1:11434", |
| 336 | "Ollama Model": "Mô hình Ollama", | 336 | "Ollama Model": "Model Ollama", |
| 337 | "Download": "Tải xuống", | 337 | "Download": "Tải xuống", |
| 338 | "Tabby API key": "Khóa API Tabby", | 338 | "Tabby API key": "Key API Tabby", |
| 339 | "koboldcpp API key (optional)": "Khóa API koboldcpp (tùy chọn)", | 339 | "koboldcpp API key (optional)": "Key API koboldcpp (tùy chọn)", |
| 340 | "Example: 127.0.0.1:5001": "Ví dụ: 127.0.0.1:5001", | 340 | "Example: 127.0.0.1:5001": "Ví dụ: 127.0.0.1:5001", |
| 341 | "Authorize": "Ủy quyền", | 341 | "Cho phép": "Ủy quyền", |
| 342 | "Get your OpenRouter API token using OAuth flow. You will be redirected to openrouter.ai": "Nhận mã thông báo API OpenRouter của bạn bằng cách sử dụng luồng OAuth. Bạn sẽ được chuyển hướng đến openrouter.ai", | 342 | "Get your OpenRouter API token using OAuth flow. You will be redirected to openrouter.ai": "Nhận mã thông báo API OpenRouter của bạn bằng cách sử dụng luồng OAuth. Bạn sẽ được chuyển hướng đến openrouter.ai", |
| 343 | "Legacy API (pre-OAI, no streaming)": "API cũ (trước OAI, không có streaming)", | 343 | "Legacy API (pre-OAI, no streaming)": "API cũ (trước OAI, không có streaming)", |
| 344 | "Bypass status check": "Bỏ qua kiểm tra trạng thái", | 344 | "Bypass status check": "Bỏ qua check trạng thái", |
| 345 | "Chat Completion Source": "Nguồn Hoàn thành Trò chuyện", | 345 | "Chat Completion Source": "Nguồn cho Chat Completion", |
| 346 | "Reverse Proxy": "Proxy ngược", | 346 | "Reverse Proxy": "Proxy", |
| 347 | "Proxy Presets": "Cài đặt trước proxy", | 347 | "Proxy Presets": "Preset proxy", |
| 348 | "Saved addresses and passwords.": "Địa chỉ và mật khẩu đã lưu.", | 348 | "Saved addresses and passwords.": "Link và mật khẩu đã lưu.", |
| 349 | "Save Proxy": "Lưu proxy", | 349 | "Save Proxy": "Lưu proxy", |
| 350 | "Delete Proxy": "Xóa proxy", | 350 | "Delete Proxy": "Xóa proxy", |
| 351 | "Proxy Name": "Tên Proxy", | 351 | "Proxy Name": "Tên của Proxy", |
| 352 | "This will show up as your saved preset.": "Điều này sẽ hiển thị dưới dạng cài đặt trước đã lưu của bạn.", | 352 | "This will show up as your saved preset.": "Điều này sẽ hiển thị dưới dạng cài đặt trước đã lưu của bạn.", |
| 353 | "Proxy Server URL": "URL máy chủ proxy", | 353 | "Proxy Server URL": "Link URL proxy", |
| 354 | "Alternative server URL (leave empty to use the default value).": "URL máy chủ thay thế (để trống để sử dụng giá trị mặc định).", | 354 | "Alternative server URL (leave empty to use the default value).": "URL máy chủ thay thế (để trống để sử dụng giá trị mặc định).", |
| 355 | "Remove your real OAI API Key from the API panel BEFORE typing anything into this box": "Xóa khóa API OAI thực của bạn khỏi bảng API TRƯỚC khi nhập bất kỳ điều gì vào hộp này", | 355 | "Remove your real OAI API Key from the API panel BEFORE typing anything into this box": "Xóa Key API OAI thực của bạn khỏi bảng API TRƯỚC khi nhập bất kỳ điều gì vào hộp này", |
| 356 | "We cannot provide support for problems encountered while using an unofficial OpenAI proxy": "Chúng tôi không thể cung cấp hỗ trợ cho các vấn đề gặp phải khi sử dụng proxy OpenAI không chính thức", | 356 | "We cannot provide support for problems encountered while using an unofficial OpenAI proxy": "Chúng tôi không thể cung cấp hỗ trợ cho các vấn đề gặp phải khi sử dụng proxy OpenAI không chính thức", |
| 357 | "Doesn't work? Try adding": "Không hoạt động? Hãy thử thêm", | 357 | "Doesn't work? Try adding": "Không hoạt động? Hãy thử thêm", |
| 358 | "at the end!": "cuối cùng!", | 358 | "at the end!": " ở cuối cùng!", |
| 359 | "Proxy Password": "Mật khẩu ủy quyền", | 359 | "Proxy Password": "Mật khẩu cho proxy", |
| 360 | "Will be used as a password for the proxy instead of API key.": "Sẽ được sử dụng làm mật khẩu cho proxy thay vì khóa API.", | 360 | "Will be used as a password for the proxy instead of API key.": "Sẽ được sử dụng làm mật khẩu cho proxy thay vì key API.", |
| 361 | "Peek a password": "Xem mật khẩu", | 361 | "Peek a password": "Xem mật khẩu", |
| 362 | "OpenAI API key": "Khóa API OpenAI", | 362 | "OpenAI API key": "OpenAI API key", |
| 363 | "View API Usage Metrics": "Xem số liệu sử dụng API", | 363 | "View API Usage Metrics": "Xem stats xài API", |
| 364 | "Follow": "Theo dõi", | 364 | "Follow": "Theo dõi", |
| 365 | "these directions": "những hướng dẫn này", | 365 | "these directions": "những hướng dẫn này", |
| 366 | "to get your OpenAI API key.": "để lấy khóa API của OpenAI.", | 366 | "to get your OpenAI API key.": "để lấy Key API của OpenAI.", |
| 367 | "Use Proxy password field instead. This input will be ignored.": "Thay vào đó, hãy sử dụng trường \"Mật khẩu proxy\". Đầu vào này sẽ bị bỏ qua.", | 367 | "Use Proxy password field instead. This input will be ignored.": "Dùng ô \"Mật khẩu proxy\" đi. Ô này không dùng được đâu.", |
| 368 | "OpenAI Model": "Mô hình OpenAI", | 368 | "OpenAI Model": "Model OpenAI", |
| 369 | "Bypass API status check": "Bỏ qua kiểm tra trạng thái API", | 369 | "Bypass API status check": "Bỏ qua kiểm tra trạng thái API", |
| 370 | "Show External models (provided by API)": "Hiển thị các mô hình bên ngoài (do API cung cấp)", | 370 | "Show External models (provided by API)": "Hiện các model ngoài vào (do API cung cấp)", |
| 371 | "Get your key from": "Lấy khóa của bạn từ", | 371 | "Get your key from": "Lấy Key của bạn từ", |
| 372 | "Anthropic's developer console": "bảng điều khiển nhà phát triển của Anthropic", | 372 | "Anthropic's developer console": "developer console của Anthropic", |
| 373 | "Slack and Poe cookies will not work here, do not bother trying.": "Slack và Poe cookies sẽ không hoạt động ở đây, đừng cố gắng.", | 373 | "Slack and Poe cookies will not work here, do not bother trying.": "Cookie Slack và Poe không xài được ở đây, đừng có thử.", |
| 374 | "Claude Model": "Mô hình Claude", | 374 | "Claude Model": "Model Claude", |
| 375 | "Window AI Model": "Mô hình Window AI", | 375 | "Window AI Model": "Model Window AI", |
| 376 | "Model Order": "Sắp xếp mô hình OpenRouter", | 376 | "Model Order": "Sắp xếp model OpenRouter", |
| 377 | "Alphabetically": "Theo thứ tự bảng chữ cái", | 377 | "Alphabetically": "Theo thứ tự bảng chữ cái", |
| 378 | "Price": "Giá (rẻ nhất)", | 378 | "Price": "Giá (rẻ nhất)", |
| 379 | "Context Size": "Kích thước bối cảnh", | 379 | "Context Size": "Kích thước bối cảnh", |
| @@ -382,45 +382,45 @@ | |||
| 382 | "Allow fallback routes": "Cho phép các tuyến đường phụ", | 382 | "Allow fallback routes": "Cho phép các tuyến đường phụ", |
| 383 | "Allow fallback routes Description": "Bot thay thế tự động nếu mô hình được chọn không thể đáp ứng yêu cầu của bạn.", | 383 | "Allow fallback routes Description": "Bot thay thế tự động nếu mô hình được chọn không thể đáp ứng yêu cầu của bạn.", |
| 384 | "openrouter_force_instruct": "Tùy chọn này đã lỗi thời và sẽ bị xóa trong tương lai. Để sử dụng định dạng hướng dẫn, vui lòng chuyển sang OpenRouter trong API hoàn thành văn bản.", | 384 | "openrouter_force_instruct": "Tùy chọn này đã lỗi thời và sẽ bị xóa trong tương lai. Để sử dụng định dạng hướng dẫn, vui lòng chuyển sang OpenRouter trong API hoàn thành văn bản.", |
| 385 | "LEGACY": "DI SẢN", | 385 | "LEGACY": "Cũ", |
| 386 | "Force Instruct Mode formatting": "Buộc định dạng Chế độ hướng dẫn", | 386 | "Force Instruct Mode formatting": "Buộc định dạng Instruct Mode", |
| 387 | "Force_Instruct_Mode_formatting_Description": "Nếu cả Chế độ hướng dẫn và chế độ này được bật, lời nhắc sẽ được SillyTavern định dạng bằng cách sử dụng\n cài đặt định dạng nâng cao (ngoại trừ hướng dẫn System Nhắc). Nếu bị tắt, lời nhắc sẽ được OpenRouter định dạng.", | 387 | "Force_Instruct_Mode_formatting_Description": "Nếu cả Instruct Mode và chế độ này được bật, Prompt sẽ được SillyTavern định dạng bằng cách sử dụng\n cài đặt định dạng nâng cao (ngoại trừ hướng dẫn System Nhắc). Nếu bị tắt, Prompt sẽ được OpenRouter định dạng.", |
| 388 | "Scale API Key": "Khóa API của Scale", | 388 | "Scale API Key": "Scale API Key", |
| 389 | "Clear your cookie": "Xóa cookie của bạn", | 389 | "Clear your cookie": "Xóa cookie", |
| 390 | "Alt Method": "Phương pháp thay thế", | 390 | "Alt Method": "Phương pháp thay thế", |
| 391 | "AI21 API Key": "Khóa API của AI21", | 391 | "AI21 API Key": "AI21 API Key", |
| 392 | "AI21 Model": "Mô hình AI21", | 392 | "AI21 Model": "Model của AI21", |
| 393 | "Google AI Studio API Key": "Khóa API Google AI Studio", | 393 | "Google AI Studio API Key": "Google AI Studio API Key", |
| 394 | "Google Model": "Mô hình Google", | 394 | "Google Model": "Model của Google", |
| 395 | "MistralAI API Key": "Khóa API MistralAI", | 395 | "MistralAI API Key": "MistralAI API Key", |
| 396 | "MistralAI Model": "Mô hình MistralAI", | 396 | "MistralAI Model": "Model của MistralAI", |
| 397 | "Groq API Key": "Khóa API Groq", | 397 | "Groq API Key": "Groq API Key", |
| 398 | "Groq Model": "Mô hình Groq", | 398 | "Groq Model": "Model của Groq", |
| 399 | "Perplexity API Key": "Khóa API phức tạp", | 399 | "Perplexity API Key": "Perplexity API Key", |
| 400 | "Perplexity Model": "Mô hình bối rối", | 400 | "Perplexity Model": "Model của Perplexity", |
| 401 | "Cohere API Key": "Khóa API Cohere", | 401 | "Cohere API Key": "Cohere API Key", |
| 402 | "Cohere Model": "Mô hình mạch lạc", | 402 | "Cohere Model": "Model của Cohere", |
| 403 | "Custom Endpoint (Base URL)": "Điểm cuối tùy chỉnh (URL cơ sở)", | 403 | "Custom Endpoint (Base URL)": "Đường link custom (Base URL)", |
| 404 | "Custom API Key": "Khóa API tùy chỉnh", | 404 | "Custom API Key": "Key API tùy chỉnh", |
| 405 | "Available Models": "Các mẫu có sẵn", | 405 | "Available Models": "Các Model hiện có", |
| 406 | "Prompt Post-Processing": "Hậu xử lý nhanh chóng", | 406 | "Prompt Post-Processing": "Xử lý hậu kỳ Prompt", |
| 407 | "Applies additional processing to the prompt before sending it to the API.": "Áp dụng xử lý bổ sung cho lời nhắc trước khi gửi nó tới API.", | 407 | "Applies additional processing to the prompt before sending it to the API.": "Áp dụng xử lý bổ sung cho Prompt trước khi gửi nó tới API.", |
| 408 | "Verifies your API connection by sending a short test message. Be aware that you'll be credited for it!": "Xác minh kết nối API của bạn bằng cách gửi một tin nhắn kiểm tra ngắn. Hãy nhớ rằng bạn sẽ được ghi nhận về điều đó!", | 408 | "Verifies your API connection by sending a short test message. Be aware that you'll be credited for it!": "Xác minh kết nối API của bạn bằng cách gửi một tin nhắn kiểm tra ngắn. Hãy nhớ rằng bạn sẽ được ghi nhận về điều đó!", |
| 409 | "Test Message": "Tin nhắn kiểm tra", | 409 | "Test Message": "Test tin nhắn", |
| 410 | "Auto-connect to Last Server": "Tự động kết nối với Máy chủ Cuối cùng", | 410 | "Auto-connect to Last Server": "Tự động kết nối với link trước đó", |
| 411 | "Missing key": "❌ Thiếu chìa khóa", | 411 | "Missing key": "❌ Thiếu Key", |
| 412 | "Key saved": "✔️ Đã lưu chìa khóa", | 412 | "Key saved": "✔️ Đã lưu Key", |
| 413 | "View hidden API keys": "Xem các khóa API ẩn", | 413 | "View hidden API keys": "Xem các Key API ẩn", |
| 414 | "AI Response Formatting": "Định dạng Phản hồi của AI", | 414 | "AI Response Formatting": "Định dạng Phản hồi của AI", |
| 415 | "Advanced Formatting": "Định dạng Nâng cao", | 415 | "Advanced Formatting": "Định dạng Nâng cao", |
| 416 | "Context Template": "Mẫu Ngữ cảnh", | 416 | "Context Template": "Mẫu context", |
| 417 | "Auto-select this preset for Instruct Mode": "Tự động chọn thiết lập này cho Chế độ Hướng dẫn", | 417 | "Auto-select this preset for Instruct Mode": "Tự động chọn thiết lập này cho Chế độ Hướng dẫn", |
| 418 | "Story String": "Chuỗi Truyện", | 418 | "Story String": "Chuỗi Truyện", |
| 419 | "Example Separator": "Ngăn cách Mẫu", | 419 | "Example Separator": "Ngăn cách Mẫu", |
| 420 | "Chat Start": "Bắt đầu Trò chuyện", | 420 | "Chat Start": "Bắt đầu Chat", |
| 421 | "Add Chat Start and Example Separator to a list of stopping strings.": "Thêm Bắt đầu trò chuyện và Dấu phân cách ví dụ vào danh sách các chuỗi dừng.", | 421 | "Add Chat Start and Example Separator to a list of stopping strings.": "Thêm Bắt đầu trò chuyện và Dấu phân cách ví dụ vào danh sách các chuỗi dừng.", |
| 422 | "Use as Stop Strings": "Sử dụng như chuỗi dừng", | 422 | "Use as Stop Strings": "Sử dụng như chuỗi dừng", |
| 423 | "context_allow_jailbreak": "Bao gồm Bẻ khóa ở cuối lời nhắc, nếu được xác định trong thẻ ký tự VÀ ''Thích Char. Bẻ khóa'' được bật.\nĐIỀU NÀY KHÔNG ĐƯỢC KHUYẾN NGHỊ CHO CÁC MÔ HÌNH HOÀN THÀNH VĂN BẢN, CÓ THỂ DẪN ĐẾN ĐẦU RA XẤU.", | 423 | "context_allow_jailbreak": "Bao gồm Bẻ khóa ở cuối Prompt, nếu được xác định trong thẻ ký tự VÀ ''Thích Char. Bẻ khóa'' được bật.\nĐIỀU NÀY KHÔNG ĐƯỢC KHUYẾN NGHỊ CHO CÁC MÔ HÌNH HOÀN THÀNH VĂN BẢN, CÓ THỂ DẪN ĐẾN ĐẦU RA XẤU.", |
| 424 | "Allow Jailbreak": "Cho phép bẻ khóa", | 424 | "Allow Jailbreak": "Cho phép bẻ khóa", |
| 425 | "Context Order": "Thứ tự bối cảnh", | 425 | "Context Order": "Thứ tự bối cảnh", |
| 426 | "Summary": "Bản tóm tắt", | 426 | "Summary": "Bản tóm tắt", |
| @@ -430,9 +430,9 @@ | |||
| 430 | "In-Chat Position not affected": "Thứ tự Tóm tắt và Ghi chú của tác giả chỉ bị ảnh hưởng khi chúng không được đặt vị trí Trong trò chuyện.", | 430 | "In-Chat Position not affected": "Thứ tự Tóm tắt và Ghi chú của tác giả chỉ bị ảnh hưởng khi chúng không được đặt vị trí Trong trò chuyện.", |
| 431 | "Instruct Mode": "Chế độ Hướng dẫn", | 431 | "Instruct Mode": "Chế độ Hướng dẫn", |
| 432 | "Enabled": "Đã bật", | 432 | "Enabled": "Đã bật", |
| 433 | "instruct_bind_to_context": "Nếu được bật, các mẫu ngữ cảnh sẽ được tự động chọn dựa trên tên mẫu hướng dẫn đã chọn hoặc theo sở thích.", | 433 | "instruct_bind_to_context": "Nếu được bật, các mẫu context sẽ được tự động chọn dựa trên tên mẫu hướng dẫn đã chọn hoặc theo sở thích.", |
| 434 | "Bind to Context": "Buộc vào Ngữ cảnh", | 434 | "Bind to Context": "Buộc vào Context", |
| 435 | "Presets": "Cài đặt trước", | 435 | "Presets": "Cài đặt Preset", |
| 436 | "Auto-select this preset on API connection": "Tự động chọn thiết lập này khi kết nối API", | 436 | "Auto-select this preset on API connection": "Tự động chọn thiết lập này khi kết nối API", |
| 437 | "Activation Regex": "Kích hoạt Regex", | 437 | "Activation Regex": "Kích hoạt Regex", |
| 438 | "Wrap Sequences with Newline": "Bao gói Các chuỗi với Dòng mới", | 438 | "Wrap Sequences with Newline": "Bao gói Các chuỗi với Dòng mới", |
| @@ -440,12 +440,12 @@ | |||
| 440 | "Skip Example Dialogues Formatting": "Bỏ qua Định dạng Đoạn hội thoại Mẫu", | 440 | "Skip Example Dialogues Formatting": "Bỏ qua Định dạng Đoạn hội thoại Mẫu", |
| 441 | "Include Names": "Bao gồm Tên", | 441 | "Include Names": "Bao gồm Tên", |
| 442 | "Force for Groups and Personas": "Ép buộc cho Nhóm và Nhân vật", | 442 | "Force for Groups and Personas": "Ép buộc cho Nhóm và Nhân vật", |
| 443 | "System Prompt": "Lời nhắc Hệ thống", | 443 | "System Prompt": "Prompt của hệ thống", |
| 444 | "Instruct Mode Sequences": "Các chuỗi chế độ hướng dẫn", | 444 | "Instruct Mode Sequences": "Các chuỗi chế độ hướng dẫn", |
| 445 | "System Prompt Wrapping": "Gói lời nhắc hệ thống", | 445 | "System Prompt Wrapping": "Gói Prompt hệ thống", |
| 446 | "Inserted before a System prompt.": "Được chèn trước lời nhắc Hệ thống.", | 446 | "Inserted before a System prompt.": "Được chèn trước Prompt Hệ thống.", |
| 447 | "System Prompt Prefix": "Tiền tố nhắc hệ thống", | 447 | "System Prompt Prefix": "Tiếp đầu ngữ cho Prompt hệ thống", |
| 448 | "Inserted after a System prompt.": "Được chèn sau lời nhắc của Hệ thống.", | 448 | "Inserted after a System prompt.": "Được chèn sau Prompt của Hệ thống.", |
| 449 | "System Prompt Suffix": "Hậu tố nhắc nhở hệ thống", | 449 | "System Prompt Suffix": "Hậu tố nhắc nhở hệ thống", |
| 450 | "Chat Messages Wrapping": "Gói tin nhắn trò chuyện", | 450 | "Chat Messages Wrapping": "Gói tin nhắn trò chuyện", |
| 451 | "Inserted before a User message and as a last prompt line when impersonating.": "Được chèn trước thông báo Người dùng và làm dòng nhắc nhở cuối cùng khi mạo danh.", | 451 | "Inserted before a User message and as a last prompt line when impersonating.": "Được chèn trước thông báo Người dùng và làm dòng nhắc nhở cuối cùng khi mạo danh.", |
| @@ -473,8 +473,8 @@ | |||
| 473 | "Stop Sequence": "Chuỗi Dừng", | 473 | "Stop Sequence": "Chuỗi Dừng", |
| 474 | "Will be inserted at the start of the chat history if it doesn't start with a User message.": "Sẽ được chèn vào đầu lịch sử trò chuyện nếu nó không bắt đầu bằng tin nhắn Người dùng.", | 474 | "Will be inserted at the start of the chat history if it doesn't start with a User message.": "Sẽ được chèn vào đầu lịch sử trò chuyện nếu nó không bắt đầu bằng tin nhắn Người dùng.", |
| 475 | "User Filler Message": "Thông báo điền của người dùng", | 475 | "User Filler Message": "Thông báo điền của người dùng", |
| 476 | "Context Formatting": "Định dạng Ngữ cảnh", | 476 | "Context Formatting": "Định dạng context", |
| 477 | "(Saved to Context Template)": "(Đã lưu trong Mẫu Ngữ cảnh)", | 477 | "(Saved to Context Template)": "(Đã lưu trong Mẫu context)", |
| 478 | "Always add character's name to prompt": "Luôn thêm tên nhân vật vào điều khiển", | 478 | "Always add character's name to prompt": "Luôn thêm tên nhân vật vào điều khiển", |
| 479 | "Generate only one line per request": "Chỉ tạo một dòng cho mỗi yêu cầu", | 479 | "Generate only one line per request": "Chỉ tạo một dòng cho mỗi yêu cầu", |
| 480 | "Trim Incomplete Sentences": "Cắt các câu không hoàn chỉnh", | 480 | "Trim Incomplete Sentences": "Cắt các câu không hoàn chỉnh", |
| @@ -495,12 +495,12 @@ | |||
| 495 | "Auto-Continue": "Tự động Tiếp tục", | 495 | "Auto-Continue": "Tự động Tiếp tục", |
| 496 | "Allow for Chat Completion APIs": "Cho phép các API hoàn thành Trò chuyện", | 496 | "Allow for Chat Completion APIs": "Cho phép các API hoàn thành Trò chuyện", |
| 497 | "Target length (tokens)": "Độ dài mục tiêu (token)", | 497 | "Target length (tokens)": "Độ dài mục tiêu (token)", |
| 498 | "World Info": "Thông tin Thế giới", | 498 | "World Info": "World Info", |
| 499 | "Locked = World Editor will stay open": "Được khóa = Trình chỉnh sửa Thế giới sẽ được mở", | 499 | "Locked = World Editor will stay open": "Được khóa = Trình chỉnh sửa Thế giới sẽ được mở", |
| 500 | "Worlds/Lorebooks": "Thế giới", | 500 | "Worlds/Lorebooks": "Thế giới", |
| 501 | "Active World(s) for all chats": "Thế giới Hoạt động cho tất cả các cuộc trò chuyện", | 501 | "Active World(s) for all chats": "Thế giới Hoạt động cho tất cả các cuộc trò chuyện", |
| 502 | "-- World Info not found --": "-- Không tìm thấy Thông tin Thế giới --", | 502 | "-- World Info not found --": "-- Không tìm thấy World Info --", |
| 503 | "Global World Info/Lorebook activation settings": "Cài đặt kích hoạt Thông tin thế giới toàn cầu/Lorebook", | 503 | "Global World Info/Lorebook activation settings": "Cài đặt kích hoạt Thông tin thế giới World Info/Lorebook", |
| 504 | "Click to expand": "Bấm để mở rộng", | 504 | "Click to expand": "Bấm để mở rộng", |
| 505 | "Scan Depth": "Độ sâu quét", | 505 | "Scan Depth": "Độ sâu quét", |
| 506 | "Context %": "Bối cảnh %", | 506 | "Context %": "Bối cảnh %", |
| @@ -516,7 +516,7 @@ | |||
| 516 | "Global Lore First": "Sử liệu toàn cầu đầu tiên", | 516 | "Global Lore First": "Sử liệu toàn cầu đầu tiên", |
| 517 | "Entries can activate other entries by mentioning their keywords": "Các mục có thể kích hoạt các mục khác bằng cách đề cập đến từ khóa của họ", | 517 | "Entries can activate other entries by mentioning their keywords": "Các mục có thể kích hoạt các mục khác bằng cách đề cập đến từ khóa của họ", |
| 518 | "Recursive Scan": "Quét đệ quy", | 518 | "Recursive Scan": "Quét đệ quy", |
| 519 | "Lookup for the entry keys in the context will respect the case": "Tìm kiếm các khóa mục trong ngữ cảnh sẽ tôn trọng trường hợp", | 519 | "Lookup for the entry keys in the context will respect the case": "Tìm kiếm các khóa mục trong context sẽ tôn trọng trường hợp", |
| 520 | "Case Sensitive": "Phân biệt chữ hoa chữ thường", | 520 | "Case Sensitive": "Phân biệt chữ hoa chữ thường", |
| 521 | "If the entry key consists of only one word, it would not be matched as part of other words": "Nếu khóa mục bao gồm chỉ một từ, nó sẽ không được kết hợp như một phần của các từ khác", | 521 | "If the entry key consists of only one word, it would not be matched as part of other words": "Nếu khóa mục bao gồm chỉ một từ, nó sẽ không được kết hợp như một phần của các từ khác", |
| 522 | "Match Whole Words": "Khớp toàn bộ từ", | 522 | "Match Whole Words": "Khớp toàn bộ từ", |
| @@ -527,15 +527,15 @@ | |||
| 527 | "New": "Mới", | 527 | "New": "Mới", |
| 528 | "or": "hoặc", | 528 | "or": "hoặc", |
| 529 | "--- Pick to Edit ---": "--- Chọn để Chỉnh sửa ---", | 529 | "--- Pick to Edit ---": "--- Chọn để Chỉnh sửa ---", |
| 530 | "Rename World Info": "Đổi tên Thông tin Thế giới", | 530 | "Rename World Info": "Đổi tên World Info", |
| 531 | "Open all Entries": "Mở tất cả các Mục", | 531 | "Open all Entries": "Mở tất cả các Mục", |
| 532 | "Close all Entries": "Đóng tất cả các Mục", | 532 | "Close all Entries": "Đóng tất cả các Mục", |
| 533 | "New Entry": "Mục mới", | 533 | "New Entry": "Mục mới", |
| 534 | "Fill empty Memo/Titles with Keywords": "Điền vào Memo/Tiêu đề trống với từ khóa", | 534 | "Fill empty Memo/Titles with Keywords": "Điền vào Memo/Tiêu đề trống với từ khóa", |
| 535 | "Import World Info": "Nhập Thông tin Thế giới", | 535 | "Import World Info": "Nhập World Info", |
| 536 | "Export World Info": "Xuất Thông tin Thế giới", | 536 | "Export World Info": "Xuất World Info", |
| 537 | "Duplicate World Info": "Nhân đôi Thông tin Thế giới", | 537 | "Duplicate World Info": "Nhân đôi World Info", |
| 538 | "Delete World Info": "Xóa Thông tin Thế giới", | 538 | "Delete World Info": "Xóa World Info", |
| 539 | "Search...": "Tìm kiếm...", | 539 | "Search...": "Tìm kiếm...", |
| 540 | "Search": "Tìm kiếm", | 540 | "Search": "Tìm kiếm", |
| 541 | "Priority": "Ưu tiên", | 541 | "Priority": "Ưu tiên", |
| @@ -587,11 +587,11 @@ | |||
| 587 | "UI Border": "Viền UI", | 587 | "UI Border": "Viền UI", |
| 588 | "User Message Blur Tint": "Màu sắc làm mờ Tin nhắn của Người dùng", | 588 | "User Message Blur Tint": "Màu sắc làm mờ Tin nhắn của Người dùng", |
| 589 | "AI Message Blur Tint": "Màu sắc làm mờ Tin nhắn của Trí tuệ Nhân tạo", | 589 | "AI Message Blur Tint": "Màu sắc làm mờ Tin nhắn của Trí tuệ Nhân tạo", |
| 590 | "Chat Width": "Chiều rộng trò chuyện", | 590 | "Chat Width": "Chiều rộng chat", |
| 591 | "Width of the main chat window in % of screen width": "Chiều rộng của cửa sổ trò chuyện chính tính bằng % chiều rộng màn hình", | 591 | "Width of the main chat window in % of screen width": "Chiều rộng của cửa sổ trò chuyện chính tính bằng % chiều rộng màn hình", |
| 592 | "Font Scale": "Tỷ lệ Font", | 592 | "Font Scale": "Tỷ lệ Font", |
| 593 | "Font size": "Cỡ chữ", | 593 | "Font size": "Cỡ chữ", |
| 594 | "Blur Strength": "Sức mạnh mờ", | 594 | "Blur Strength": "Mực độ mạnh mờ", |
| 595 | "Blur strength on UI panels.": "Độ mờ trên bảng UI.", | 595 | "Blur strength on UI panels.": "Độ mờ trên bảng UI.", |
| 596 | "Text Shadow Width": "Độ rộng bóng văn bản", | 596 | "Text Shadow Width": "Độ rộng bóng văn bản", |
| 597 | "Strength of the text shadows": "Độ mạnh của bóng văn bản", | 597 | "Strength of the text shadows": "Độ mạnh của bóng văn bản", |
| @@ -603,7 +603,7 @@ | |||
| 603 | "No Text Shadows": "Không có bóng văn bản", | 603 | "No Text Shadows": "Không có bóng văn bản", |
| 604 | "Reduce chat height, and put a static sprite behind the chat window": "Giảm chiều cao của cuộc trò chuyện và đặt một sprite tĩnh phía sau cửa sổ trò chuyện", | 604 | "Reduce chat height, and put a static sprite behind the chat window": "Giảm chiều cao của cuộc trò chuyện và đặt một sprite tĩnh phía sau cửa sổ trò chuyện", |
| 605 | "Waifu Mode": "Chế độ Waifu", | 605 | "Waifu Mode": "Chế độ Waifu", |
| 606 | "Always show the full list of the Message Actions context items for chat messages, instead of hiding them behind '...'": "Luôn hiển thị danh sách đầy đủ các mục ngữ cảnh Hành động Tin nhắn cho các tin nhắn trò chuyện, thay vì ẩn chúng sau '...'", | 606 | "Always show the full list of the Message Actions context items for chat messages, instead of hiding them behind '...'": "Luôn hiển thị danh sách đầy đủ các mục context Hành động Tin nhắn cho các tin nhắn trò chuyện, thay vì ẩn chúng sau '...'", |
| 607 | "Auto-Expand Message Actions": "Tự động mở rộng Hành động Tin nhắn", | 607 | "Auto-Expand Message Actions": "Tự động mở rộng Hành động Tin nhắn", |
| 608 | "Alternative UI for numeric sampling parameters with fewer steps": "Giao diện người dùng thay thế cho các tham số mẫu số học với ít bước hơn", | 608 | "Alternative UI for numeric sampling parameters with fewer steps": "Giao diện người dùng thay thế cho các tham số mẫu số học với ít bước hơn", |
| 609 | "Zen Sliders": "Thanh trượt Zen", | 609 | "Zen Sliders": "Thanh trượt Zen", |
| @@ -614,7 +614,7 @@ | |||
| 614 | "Show a timestamp for each message in the chat log": "Hiển thị dấu thời gian cho mỗi tin nhắn trong nhật ký trò chuyện", | 614 | "Show a timestamp for each message in the chat log": "Hiển thị dấu thời gian cho mỗi tin nhắn trong nhật ký trò chuyện", |
| 615 | "Chat Timestamps": "Dấu thời gian Chat", | 615 | "Chat Timestamps": "Dấu thời gian Chat", |
| 616 | "Show an icon for the API that generated the message": "Hiển thị biểu tượng cho API đã tạo ra tin nhắn", | 616 | "Show an icon for the API that generated the message": "Hiển thị biểu tượng cho API đã tạo ra tin nhắn", |
| 617 | "Model Icon": "Biểu tượng Mô hình", | 617 | "Model Icon": "Biểu tượng Model", |
| 618 | "Show sequential message numbers in the chat log": "Hiển thị số tin nhắn tuần tự trong nhật ký trò chuyện", | 618 | "Show sequential message numbers in the chat log": "Hiển thị số tin nhắn tuần tự trong nhật ký trò chuyện", |
| 619 | "Message IDs": "ID Tin nhắn", | 619 | "Message IDs": "ID Tin nhắn", |
| 620 | "Hide avatars in chat messages.": "Ẩn hình đại diện trong tin nhắn trò chuyện.", | 620 | "Hide avatars in chat messages.": "Ẩn hình đại diện trong tin nhắn trò chuyện.", |
| @@ -639,9 +639,9 @@ | |||
| 639 | "Use fuzzy matching, and search characters in the list by all data fields, not just by a name substring": "Sử dụng kết hợp mờ, và tìm kiếm nhân vật trong danh sách bằng tất cả các trường dữ liệu, không chỉ bằng một phần của tên", | 639 | "Use fuzzy matching, and search characters in the list by all data fields, not just by a name substring": "Sử dụng kết hợp mờ, và tìm kiếm nhân vật trong danh sách bằng tất cả các trường dữ liệu, không chỉ bằng một phần của tên", |
| 640 | "Advanced Character Search": "Tìm kiếm Nhân vật Nâng cao", | 640 | "Advanced Character Search": "Tìm kiếm Nhân vật Nâng cao", |
| 641 | "If checked and the character card contains a prompt override (System Prompt), use that instead": "Nếu được kiểm tra và thẻ nhân vật chứa một lệnh ghi đè (Lệnh hệ thống), hãy sử dụng thay vào đó", | 641 | "If checked and the character card contains a prompt override (System Prompt), use that instead": "Nếu được kiểm tra và thẻ nhân vật chứa một lệnh ghi đè (Lệnh hệ thống), hãy sử dụng thay vào đó", |
| 642 | "Prefer Character Card Prompt": "Ưu tiên Gợi ý từ Thẻ Nhân vật", | 642 | "Prefer Character Card Prompt": "Ưu tiên Gợi ý từ Card", |
| 643 | "If checked and the character card contains a jailbreak override (Post History Instruction), use that instead": "Nếu được kiểm tra và thẻ nhân vật chứa một lệnh phá vỡ giam giữ (Hướng dẫn Lịch sử Bài viết), hãy sử dụng thay vào đó", | 643 | "If checked and the character card contains a jailbreak override (Post History Instruction), use that instead": "Nếu được kiểm tra và thẻ nhân vật chứa một lệnh phá vỡ giam giữ (Hướng dẫn Lịch sử Bài viết), hãy sử dụng thay vào đó", |
| 644 | "Prefer Character Card Jailbreak": "Ưu tiên Phá vỡ Hỏa", | 644 | "Prefer Character Card Jailbreak": "Ưu tiên Jailbreak từ Card", |
| 645 | "Avoid cropping and resizing imported character images. When off, crop/resize to 512x768": "Tránh cắt xén và thay đổi kích thước hình ảnh ký tự đã nhập. Khi tắt, hãy cắt/thay đổi kích thước thành 512x768.", | 645 | "Avoid cropping and resizing imported character images. When off, crop/resize to 512x768": "Tránh cắt xén và thay đổi kích thước hình ảnh ký tự đã nhập. Khi tắt, hãy cắt/thay đổi kích thước thành 512x768.", |
| 646 | "Never resize avatars": "Không bao giờ thay đổi kích thước hình đại diện", | 646 | "Never resize avatars": "Không bao giờ thay đổi kích thước hình đại diện", |
| 647 | "Show actual file names on the disk, in the characters list display only": "Hiển thị tên tệp thực tế trên đĩa, chỉ trong danh sách nhân vật", | 647 | "Show actual file names on the disk, in the characters list display only": "Hiển thị tên tệp thực tế trên đĩa, chỉ trong danh sách nhân vật", |
| @@ -649,26 +649,26 @@ | |||
| 649 | "Prompt to import embedded card tags on character import. Otherwise embedded tags are ignored": "Nhắc nhập các thẻ thẻ nhúng trên thẻ nhân vật nhập khẩu. Nếu không, các thẻ nhúng sẽ bị bỏ qua", | 649 | "Prompt to import embedded card tags on character import. Otherwise embedded tags are ignored": "Nhắc nhập các thẻ thẻ nhúng trên thẻ nhân vật nhập khẩu. Nếu không, các thẻ nhúng sẽ bị bỏ qua", |
| 650 | "Import Card Tags": "Nhập Tags Thẻ", | 650 | "Import Card Tags": "Nhập Tags Thẻ", |
| 651 | "Hide character definitions from the editor panel behind a spoiler button": "Ẩn định nghĩa nhân vật từ bảng chỉnh sửa sau một nút spoil", | 651 | "Hide character definitions from the editor panel behind a spoiler button": "Ẩn định nghĩa nhân vật từ bảng chỉnh sửa sau một nút spoil", |
| 652 | "Spoiler Free Mode": "Chế độ Không bị lộ", | 652 | "Spoiler Free Mode": "Ẩn spoiler", |
| 653 | "Miscellaneous": "Đa dạng", | 653 | "Miscellaneous": "Linh tinh", |
| 654 | "Reload and redraw the currently open chat": "Tải lại và vẽ lại cuộc trò chuyện đang mở hiện tại", | 654 | "Reload and redraw the currently open chat": "Tải lại và vẽ lại cuộc trò chuyện đang mở hiện tại", |
| 655 | "Reload Chat": "Tải lại Chat", | 655 | "Reload Chat": "Tải lại Chat", |
| 656 | "Debug Menu": "Menu Debug", | 656 | "Debug Menu": "Menu Debug", |
| 657 | "Smooth Streaming": "Truyền phát mượt mà", | 657 | "Smooth Streaming": "Streaming mượt", |
| 658 | "Experimental feature. May not work for all backends.": "Tính năng thực nghiệm. Có thể không hoạt động cho tất cả các chương trình phụ trợ.", | 658 | "Experimental feature. May not work for all backends.": "Tính năng thực nghiệm. Có thể không hoạt động cho tất cả các Backends.", |
| 659 | "Slow": "Chậm", | 659 | "Slow": "Chậm", |
| 660 | "Fast": "Nhanh", | 660 | "Fast": "Nhanh", |
| 661 | "Play a sound when a message generation finishes": "Phát ra âm thanh khi quá trình tạo tin nhắn kết thúc", | 661 | "Play a sound when a message generation finishes": "Phát ra âm thanh thông báo khi tin nhắn từ Char kết thúc", |
| 662 | "Message Sound": "Âm thanh Tin nhắn", | 662 | "Message Sound": "Âm thanh Tin nhắn", |
| 663 | "Only play a sound when ST's browser tab is unfocused": "Chỉ phát âm thanh khi tab trình duyệt của ST không được tập trung", | 663 | "Only play a sound when ST's browser tab is unfocused": "Chỉ phát âm thanh khi tab trình duyệt ST không được tập trung", |
| 664 | "Background Sound Only": "Chỉ Âm thanh Nền", | 664 | "Background Sound Only": "Chỉ Âm thanh Nền", |
| 665 | "Reduce the formatting requirements on API URLs": "Giảm yêu cầu định dạng trên URL của API", | 665 | "Reduce the formatting requirements on API URLs": "Giảm yêu cầu định dạng trên URL của API", |
| 666 | "Relaxed API URLS": "URL API được thư giãn", | 666 | "Relaxed API URLS": "URL API thư giãn", |
| 667 | "Ask to import the World Info/Lorebook for every new character with embedded lorebook. If unchecked, a brief message will be shown instead": "Hỏi để nhập Thông tin Thế giới/Sách lịch sử cho mỗi nhân vật mới có sẵn sách lịch sử nhúng. Nếu không được kiểm tra, thay vào đó sẽ hiển thị một tin nhắn tóm tắt", | 667 | "Ask to import the World Info/Lorebook for every new character with embedded lorebook. If unchecked, a brief message will be shown instead": "Hỏi để nhập World Info/Lorebook cho mỗi nhân vật mới có sẵn lorebook nhúng. Nếu không được kiểm tra, thay vào đó sẽ hiển thị một tin nhắn tóm tắt", |
| 668 | "Lorebook Import Dialog": "Hộp thoại Nhập khẩu Sách về truyền thống", | 668 | "Lorebook Import Dialog": "Nhập ví dụ lời thoại của Lorebook", |
| 669 | "Restore unsaved user input on page refresh": "Khôi phục đầu vào của người dùng chưa được lưu khi làm mới trang", | 669 | "Restore unsaved user input on page refresh": "Khôi phục đầu vào của người dùng chưa được lưu khi refresh trang", |
| 670 | "Restore User Input": "Khôi phục Đầu vào Người dùng", | 670 | "Restore User Input": "Khôi phục input của người dùng", |
| 671 | "Allow repositioning certain UI elements by dragging them. PC only, no effect on mobile": "Cho phép di chuyển lại một số phần tử giao diện người dùng bằng cách kéo chúng. Chỉ dành cho PC, không ảnh hưởng đến điện thoại di động", | 671 | "Allow repositioning certain UI elements by dragging them. PC only, no effect on mobile": "Cho phép di chuyển một số thành phần giao diện người dùng bằng cách kéo chúng. Chỉ dành cho PC, không có tác dụng trên điền thoại", |
| 672 | "Movable UI Panels": "Bảng Giao diện người dùng Có thể di chuyển", | 672 | "Movable UI Panels": "Bảng Giao diện người dùng Có thể di chuyển", |
| 673 | "MovingUI preset. Predefined/saved draggable positions": "Cài đặt trước MovingUI. Vị trí có thể kéo trước/saved", | 673 | "MovingUI preset. Predefined/saved draggable positions": "Cài đặt trước MovingUI. Vị trí có thể kéo trước/saved", |
| 674 | "MUI Preset": "Cài đặt trước MUI:", | 674 | "MUI Preset": "Cài đặt trước MUI:", |
| @@ -681,15 +681,15 @@ | |||
| 681 | "# Messages to Load": "# tin nhắn. để tải", | 681 | "# Messages to Load": "# tin nhắn. để tải", |
| 682 | "The number of chat history messages to load before pagination.": "Số lượng tin nhắn lịch sử trò chuyện cần tải trước khi phân trang.", | 682 | "The number of chat history messages to load before pagination.": "Số lượng tin nhắn lịch sử trò chuyện cần tải trước khi phân trang.", |
| 683 | "(0 = All)": "(0 = Tất cả)", | 683 | "(0 = All)": "(0 = Tất cả)", |
| 684 | "Streaming FPS": "FPS Phát trực tiếp", | 684 | "Streaming FPS": "FPS của Streaming", |
| 685 | "Update speed of streamed text.": "Cập nhật tốc độ của văn bản truyền phát.", | 685 | "Update speed of streamed text.": "Tốc đọ của streaming văn bản.", |
| 686 | "Example Messages Behavior": "Hành vi Tin nhắn Mẫu", | 686 | "Example Messages Behavior": "Hành vi Tin nhắn Mẫu", |
| 687 | "Gradual push-out": "Đẩy ra dần", | 687 | "Gradual push-out": "Đẩy ra dần", |
| 688 | "Always include examples": "Luôn bao gồm các ví dụ", | 688 | "Always include examples": "Luôn bao gồm các ví dụ", |
| 689 | "Never include examples": "Không bao giờ bao gồm các ví dụ", | 689 | "Never include examples": "Không bao giờ bao gồm các ví dụ", |
| 690 | "Send on Enter": "Gửi khi nhấn Enter", | 690 | "Send on Enter": "Gửi khi nhấn Enter", |
| 691 | "Disabled": "Vô hiệu", | 691 | "Disabled": "Vô hiệu", |
| 692 | "Automatic (PC)": "Tự động (PC)", | 692 | "Automatic (PC)": "Tự động (Trên PC)", |
| 693 | "Press Send to continue": "Nhấn Gửi để tiếp tục", | 693 | "Press Send to continue": "Nhấn Gửi để tiếp tục", |
| 694 | "Show a button in the input area to ask the AI to continue (extend) its last message": "Hiển thị một nút trong khu vực nhập để yêu cầu trí tuệ nhân tạo tiếp tục (mở rộng) tin nhắn cuối cùng của nó", | 694 | "Show a button in the input area to ask the AI to continue (extend) its last message": "Hiển thị một nút trong khu vực nhập để yêu cầu trí tuệ nhân tạo tiếp tục (mở rộng) tin nhắn cuối cùng của nó", |
| 695 | "Quick 'Continue' button": "Nút 'Tiếp tục' nhanh", | 695 | "Quick 'Continue' button": "Nút 'Tiếp tục' nhanh", |
| @@ -712,10 +712,10 @@ | |||
| 712 | "Skip encoding and characters in message text, allowing a subset of HTML markup as well as Markdown": "Bỏ qua mã hóa và ký tự trong văn bản tin nhắn, cho phép một tập con của đánh dấu HTML cũng như Markdown", | 712 | "Skip encoding and characters in message text, allowing a subset of HTML markup as well as Markdown": "Bỏ qua mã hóa và ký tự trong văn bản tin nhắn, cho phép một tập con của đánh dấu HTML cũng như Markdown", |
| 713 | "Show tags in responses": "Hiển thị thẻ trong các phản hồi", | 713 | "Show tags in responses": "Hiển thị thẻ trong các phản hồi", |
| 714 | "Allow AI messages in groups to contain lines spoken by other group members": "Cho phép các tin nhắn của trí tuệ nhân tạo trong các nhóm chứa các dòng được nói bởi các thành viên khác trong nhóm", | 714 | "Allow AI messages in groups to contain lines spoken by other group members": "Cho phép các tin nhắn của trí tuệ nhân tạo trong các nhóm chứa các dòng được nói bởi các thành viên khác trong nhóm", |
| 715 | "Relax message trim in Groups": "Thư giãn việc cắt tỉa tin nhắn trong Nhóm", | 715 | "Relax message trim in Groups": "Giảm nhẹ việc cắt đoạn tin nhắn trong Nhóm", |
| 716 | "Log prompts to console": "Ghi nhận các lời nhắc vào bảng điều khiển", | 716 | "Log prompts to console": "Ghi nhận các Prompt vào bảng điều khiển", |
| 717 | "Requests logprobs from the API for the Token Probabilities feature": "Yêu cầu logprobs từ API cho tính năng Xác suất Token", | 717 | "Requests logprobs from the API for the Token Probabilities feature": "Yêu cầu logprobs từ API cho bảng Xác suất Token", |
| 718 | "Request token probabilities": "Yêu cầu xác suất token", | 718 | "Request token probabilities": "Yêu cầu bảng xác suất token", |
| 719 | "Automatically reject and re-generate AI message based on configurable criteria": "Tự động từ chối và tạo lại tin nhắn của trí tuệ nhân tạo dựa trên các tiêu chí có thể cấu hình", | 719 | "Automatically reject and re-generate AI message based on configurable criteria": "Tự động từ chối và tạo lại tin nhắn của trí tuệ nhân tạo dựa trên các tiêu chí có thể cấu hình", |
| 720 | "Auto-swipe": "Tự động vuốt", | 720 | "Auto-swipe": "Tự động vuốt", |
| 721 | "Enable the auto-swipe function. Settings in this section only have an effect when auto-swipe is enabled": "Bật chức năng tự động vuốt. Các cài đặt trong phần này chỉ có tác dụng khi tự động vuốt được bật", | 721 | "Enable the auto-swipe function. Settings in this section only have an effect when auto-swipe is enabled": "Bật chức năng tự động vuốt. Các cài đặt trong phần này chỉ có tác dụng khi tự động vuốt được bật", |
| @@ -731,11 +731,11 @@ | |||
| 731 | "Autocomplete Matching": "Kết hợp", | 731 | "Autocomplete Matching": "Kết hợp", |
| 732 | "Starts with": "Bắt đầu với", | 732 | "Starts with": "Bắt đầu với", |
| 733 | "Includes": "Bao gồm", | 733 | "Includes": "Bao gồm", |
| 734 | "Fuzzy": "Mờ", | 734 | "Fuzzy": "Fuzzy", |
| 735 | "Sets the style of the autocomplete.": "Đặt kiểu tự động hoàn thành.", | 735 | "Sets the style of the autocomplete.": "Đặt kiểu tự động hoàn thành.", |
| 736 | "Autocomplete Style": "Phong cách", | 736 | "Autocomplete Style": "Phong cách", |
| 737 | "Follow Theme": "Theo dõi chủ đề", | 737 | "Follow Theme": "Đồng bộ giao diện", |
| 738 | "Dark": "Tối tăm", | 738 | "Dark": "Giao diện tối", |
| 739 | "Sets the font size of the autocomplete.": "Đặt kích thước phông chữ của tự động hoàn thành.", | 739 | "Sets the font size of the autocomplete.": "Đặt kích thước phông chữ của tự động hoàn thành.", |
| 740 | "Sets the width of the autocomplete.": "Đặt chiều rộng của tự động hoàn thành.", | 740 | "Sets the width of the autocomplete.": "Đặt chiều rộng của tự động hoàn thành.", |
| 741 | "Autocomplete Width": "Chiều rộng", | 741 | "Autocomplete Width": "Chiều rộng", |
| @@ -751,21 +751,21 @@ | |||
| 751 | "REPLACE_GETVAR": "REPLACE_GETVAR", | 751 | "REPLACE_GETVAR": "REPLACE_GETVAR", |
| 752 | "Change Background Image": "Thay đổi Hình nền", | 752 | "Change Background Image": "Thay đổi Hình nền", |
| 753 | "Filter": "Bộ lọc", | 753 | "Filter": "Bộ lọc", |
| 754 | "Automatically select a background based on the chat context": "Tự động chọn một nền dựa trên ngữ cảnh trò chuyện", | 754 | "Automatically select a background based on the chat context": "Tự động chọn một nền dựa trên context trò chuyện", |
| 755 | "Auto-select": "Tự động chọn", | 755 | "Auto-select": "Tự động chọn", |
| 756 | "System Backgrounds": "Nền Hệ thống", | 756 | "System Backgrounds": "Nền Hệ thống", |
| 757 | "Chat Backgrounds": "Hình nền Chat", | 757 | "Chat Backgrounds": "Hình nền Chat", |
| 758 | "bg_chat_hint_1": "Hình nền trò chuyện được tạo bằng", | 758 | "bg_chat_hint_1": "Hình nền trò chuyện được tạo bằng", |
| 759 | "bg_chat_hint_2": "tiện ích mở rộng sẽ xuất hiện ở đây.", | 759 | "bg_chat_hint_2": "tiện ích sẽ xuất hiện ở đây.", |
| 760 | "Extensions": "Tiện ích", | 760 | "Extensions": "Tiện ích", |
| 761 | "Notify on extension updates": "Thông báo về các bản cập nhật của tiện ích mở rộng", | 761 | "Notify on extension updates": "Thông báo về các bản cập nhật của tiện ích", |
| 762 | "Manage extensions": "Quản lý tiện ích mở rộng", | 762 | "Manage extensions": "Quản lý tiện ích", |
| 763 | "Import Extension From Git Repo": "Nhập mở rộng từ Git Repo", | 763 | "Import Extension From Git Repo": "Nhập tiện ích từ Git Repo", |
| 764 | "Install extension": "Cài đặt tiện ích mở rộng", | 764 | "Install extension": "Cài đặt tiện ích", |
| 765 | "Extras API:": "API bổ sung:", | 765 | "Extras API:": "API bổ sung:", |
| 766 | "Auto-connect": "Tự động kết nối", | 766 | "Auto-connect": "Tự động kết nối", |
| 767 | "Extras API URL": "URL API bổ sung", | 767 | "Extras API URL": "URL API bổ sung", |
| 768 | "Extras API key (optional)": "Khóa API Phụ (tùy chọn)", | 768 | "Extras API key (optional)": "Key API Phụ (tùy chọn)", |
| 769 | "Persona Management": "Quản lý Nhân cách", | 769 | "Persona Management": "Quản lý Nhân cách", |
| 770 | "How do I use this?": "Tôi sử dụng cái này như thế nào?", | 770 | "How do I use this?": "Tôi sử dụng cái này như thế nào?", |
| 771 | "Click for stats!": "Nhấp để xem thống kê!", | 771 | "Click for stats!": "Nhấp để xem thống kê!", |
| @@ -774,17 +774,17 @@ | |||
| 774 | "Backup": "Sao lưu", | 774 | "Backup": "Sao lưu", |
| 775 | "Restore your personas from a file": "Khôi phục nhân cách của bạn từ một tập tin", | 775 | "Restore your personas from a file": "Khôi phục nhân cách của bạn từ một tập tin", |
| 776 | "Restore": "Khôi phục", | 776 | "Restore": "Khôi phục", |
| 777 | "Create a dummy persona": "Tạo một nhân cách giả mạo", | 777 | "Create a dummy persona": "Tạo một nhân cách giả", |
| 778 | "Create": "Tạo", | 778 | "Create": "Tạo", |
| 779 | "Toggle grid view": "Chuyển đổi chế độ xem lưới", | 779 | "Toggle grid view": "Chuyển đổi chế độ xem lưới", |
| 780 | "No persona description": "[Không có mô tả]", | 780 | "No persona description": "[Không có mô tả]", |
| 781 | "Name": "Tên", | 781 | "Name": "Tên", |
| 782 | "Enter your name": "Nhập tên của bạn", | 782 | "Enter your name": "Nhập tên của bạn", |
| 783 | "Click to set a new User Name": "Nhấp để đặt một tên Người dùng mới", | 783 | "Click to set a new User Name": "Đúp để đặt một tên Người dùng mới", |
| 784 | "Click to lock your selected persona to the current chat. Click again to remove the lock.": "Nhấp để khóa nhân cách được chọn của bạn vào cuộc trò chuyện hiện tại. Nhấp một lần nữa để loại bỏ khóa.", | 784 | "Click to lock your selected persona to the current chat. Click again to remove the lock.": "Đúp để khóa nhân cách được chọn của bạn vào cuộc trò chuyện hiện tại. Nhấp một lần nữa để loại bỏ khóa.", |
| 785 | "Click to set user name for all messages": "Nhấp để đặt tên người dùng cho tất cả các tin nhắn", | 785 | "Click to set user name for all messages": "Nhấp để đặt tên người dùng cho tất cả các tin nhắn", |
| 786 | "Persona Description": "Mô tả Nhân cách", | 786 | "Persona Description": "Mô tả Nhân cách", |
| 787 | "Example: [{{user}} is a 28-year-old Romanian cat girl.]": "Ví dụ: [{{user}} là một cô gái mèo Rumani 28 tuổi.]", | 787 | "Example: [{{user}} is a 28-year-old Romanian cat girl.]": "Ví dụ: [{{user}} là một cô bé mèo người România 28 tuổi.]", |
| 788 | "Tokens persona description": "Mô tả Nhân cách", | 788 | "Tokens persona description": "Mô tả Nhân cách", |
| 789 | "Position:": "Vị trí:", | 789 | "Position:": "Vị trí:", |
| 790 | "In Story String / Prompt Manager": "Trong Chuỗi Truyện / Quản lý Lời nhắc", | 790 | "In Story String / Prompt Manager": "Trong Chuỗi Truyện / Quản lý Lời nhắc", |
| @@ -805,12 +805,12 @@ | |||
| 805 | "Total tokens": "Tổng số token", | 805 | "Total tokens": "Tổng số token", |
| 806 | "Calculating...": "Đang tính...", | 806 | "Calculating...": "Đang tính...", |
| 807 | "Tokens": "Token", | 807 | "Tokens": "Token", |
| 808 | "Permanent tokens": "Mã thông báo vĩnh viễn", | 808 | "Permanent tokens": "Token vĩnh viễn", |
| 809 | "Permanent": "Vĩnh viễn", | 809 | "Permanent": "Vĩnh viễn", |
| 810 | "About Token 'Limits'": "Giới thiệu về 'Giới hạn' mã thông báo", | 810 | "About Token 'Limits'": "Giới thiệu về 'Giới hạn' Token", |
| 811 | "Toggle character info panel": "Chuyển đổi bảng thông tin nhân vật", | 811 | "Toggle character info panel": "Chuyển đổi bảng thông tin nhân vật", |
| 812 | "Name this character": "Đặt tên cho nhân vật này", | 812 | "Name this character": "Đặt tên cho nhân vật này", |
| 813 | "extension_token_counter": "Mã thông báo:", | 813 | "extension_token_counter": "Đếm Token:", |
| 814 | "Click to select a new avatar for this character": "Nhấp để chọn một hình đại diện mới cho nhân vật này", | 814 | "Click to select a new avatar for this character": "Nhấp để chọn một hình đại diện mới cho nhân vật này", |
| 815 | "Add to Favorites": "Thêm vào Mục ưa thích", | 815 | "Add to Favorites": "Thêm vào Mục ưa thích", |
| 816 | "Advanced Definition": "Định nghĩa Nâng cao", | 816 | "Advanced Definition": "Định nghĩa Nâng cao", |
| @@ -821,26 +821,26 @@ | |||
| 821 | "Create Character": "Tạo Nhân vật", | 821 | "Create Character": "Tạo Nhân vật", |
| 822 | "Delete Character": "Xóa Nhân vật", | 822 | "Delete Character": "Xóa Nhân vật", |
| 823 | "More...": "Thêm...", | 823 | "More...": "Thêm...", |
| 824 | "Link to World Info": "Liên kết đến Thông tin Thế giới", | 824 | "Link to World Info": "Liên kết đến World Info", |
| 825 | "Import Card Lore": "Nhập lời nhắc Thẻ", | 825 | "Import Card Lore": "Nhập Card Lore", |
| 826 | "Scenario Override": "Ghi đè Kịch bản", | 826 | "Scenario Override": "Ghi đè Kịch bản", |
| 827 | "Convert to Persona": "Chuyển đổi sang Persona", | 827 | "Convert to Persona": "Chuyển đổi sang Persona (Nhân cách)", |
| 828 | "Rename": "Đổi tên", | 828 | "Rename": "Đổi tên", |
| 829 | "Link to Source": "Liên kết tới nguồn", | 829 | "Link to Source": "Liên kết tới nguồn", |
| 830 | "Replace / Update": "Thay thế/Cập nhật", | 830 | "Replace / Update": "Thay thế/Cập nhật", |
| 831 | "Import Tags": "Nhập thẻ", | 831 | "Import Tags": "Nhập thẻ", |
| 832 | "Search / Create Tags": "Tìm kiếm / Tạo Tags", | 832 | "Search / Create Tags": "Tìm kiếm / Tạo Thẻ", |
| 833 | "View all tags": "Xem tất cả các tag", | 833 | "View all tags": "Xem tất cả các tag", |
| 834 | "Creator's Notes": "Ghi chú của Người tạo", | 834 | "Creator's Notes": "Ghi chú của Tác giả", |
| 835 | "Show / Hide Description and First Message": "Hiện / Ẩn Mô tả và Tin nhắn Đầu tiên", | 835 | "Show / Hide Description and First Message": "Hiện / Ẩn Mô tả và Tin nhắn Đầu tiên", |
| 836 | "Character Description": "Mô tả Nhân vật", | 836 | "Character Description": "Mô tả Nhân vật", |
| 837 | "Click to allow/forbid the use of external media for this character.": "Bấm để cho phép/cấm sử dụng phương tiện bên ngoài cho ký tự này.", | 837 | "Click to allow/forbid the use of external media for this character.": "Đúp để cho phép/cấm sử dụng phương tiện bên ngoài cho nhân vật này.", |
| 838 | "Ext. Media": "Ex. Phương tiện truyền thông", | 838 | "Ext. Media": "Ex. Tệp", |
| 839 | "Describe your character's physical and mental traits here.": "Mô tả các đặc điểm về thể chất và tinh thần của nhân vật ở đây.", | 839 | "Describe your character's physical and mental traits here.": "Mô tả ngoại hình và tính cách nhân vật của bạn ở đây.", |
| 840 | "First message": "Tin nhắn đầu tiên", | 840 | "First message": "Tin nhắn đầu tiên", |
| 841 | "Click to set additional greeting messages": "Nhấp để đặt thêm tin nhắn chào mừng", | 841 | "Click to set additional greeting messages": "Bấm để set thêm câu chào :>", |
| 842 | "Alt. Greetings": "thay thế. Lời chào hỏi", | 842 | "Alt. Greetings": "thay thế. Lời chào hỏi", |
| 843 | "This will be the first message from the character that starts every chat.": "Điều này sẽ là tin nhắn đầu tiên từ nhân vật mà bắt đầu mỗi cuộc trò chuyện.", | 843 | "This will be the first message from the character that starts every chat.": "Đây sẽ là câu chào đầu tiên của nhân vật mỗi khi mở đầu cuộc trò chuyện nè :>", |
| 844 | "Group Controls": "Điều khiển Nhóm", | 844 | "Group Controls": "Điều khiển Nhóm", |
| 845 | "Chat Name (Optional)": "Tên Trò chuyện (Tùy chọn)", | 845 | "Chat Name (Optional)": "Tên Trò chuyện (Tùy chọn)", |
| 846 | "Click to select a new avatar for this group": "Nhấp để chọn một hình đại diện mới cho nhóm này", | 846 | "Click to select a new avatar for this group": "Nhấp để chọn một hình đại diện mới cho nhóm này", |
| @@ -857,17 +857,17 @@ | |||
| 857 | "Inserted after each part of the joined fields.": "Được chèn sau mỗi phần của các trường đã nối.", | 857 | "Inserted after each part of the joined fields.": "Được chèn sau mỗi phần của các trường đã nối.", |
| 858 | "Join Suffix": "Tham gia hậu tố", | 858 | "Join Suffix": "Tham gia hậu tố", |
| 859 | "Set a group chat scenario": "Đặt một kịch bản trò chuyện nhóm", | 859 | "Set a group chat scenario": "Đặt một kịch bản trò chuyện nhóm", |
| 860 | "Click to allow/forbid the use of external media for this group.": "Nhấp để cho phép/cấm sử dụng phương tiện truyền thông bên ngoài cho nhóm này.", | 860 | "Click to allow/forbid the use of external media for this group.": "Đúp để cho phép/cấm sử dụng phương tiện bên ngoài cho nhóm này.", |
| 861 | "Restore collage avatar": "Khôi phục hình đại diện hợp thành", | 861 | "Restore collage avatar": "Khôi phục ảnh đại diện ghép", |
| 862 | "Allow self responses": "Cho phép phản hồi tự", | 862 | "Allow self responses": "Cho phép tự phản hồi", |
| 863 | "Auto Mode": "Chế độ Tự động", | 863 | "Auto Mode": "Chế độ Tự động", |
| 864 | "Auto Mode delay": "Độ trễ chế độ tự động", | 864 | "Auto Mode delay": "Độ trễ chế độ tự động", |
| 865 | "Hide Muted Member Sprites": "Ẩn các thành viên bị tắt tiếng", | 865 | "Hide Muted Member Sprites": "Ẩn các thành viên bị câm", |
| 866 | "Current Members": "Thành viên hiện tại", | 866 | "Current Members": "Thành viên hiện tại", |
| 867 | "Add Members": "Thêm thành viên", | 867 | "Add Members": "Thêm thành viên", |
| 868 | "Create New Character": "Tạo Nhân vật Mới", | 868 | "Create New Character": "Tạo Nhân vật Mới", |
| 869 | "Import Character from File": "Nhập Nhân vật từ Tệp", | 869 | "Import Character from File": "Nhập Nhân vật từ Tệp", |
| 870 | "Import content from external URL": "Nhập nội dung từ URL bên ngoài", | 870 | "Import content from external URL": "Nhập nội dung từ link URL bên ngoài", |
| 871 | "Create New Chat Group": "Tạo Nhóm Trò chuyện Mới", | 871 | "Create New Chat Group": "Tạo Nhóm Trò chuyện Mới", |
| 872 | "Characters sorting order": "Thứ tự sắp xếp Nhân vật", | 872 | "Characters sorting order": "Thứ tự sắp xếp Nhân vật", |
| 873 | "A-Z": "A-Z", | 873 | "A-Z": "A-Z", |
| @@ -878,70 +878,70 @@ | |||
| 878 | "Recent": "Gần đây", | 878 | "Recent": "Gần đây", |
| 879 | "Most chats": "Nhiều cuộc trò chuyện nhất", | 879 | "Most chats": "Nhiều cuộc trò chuyện nhất", |
| 880 | "Least chats": "Ít cuộc trò chuyện nhất", | 880 | "Least chats": "Ít cuộc trò chuyện nhất", |
| 881 | "Most tokens": "Nhiều nhất các mã thông báo", | 881 | "Most tokens": "Nhiều token nhất", |
| 882 | "Least tokens": "Ít nhất các mã thông báo", | 882 | "Least tokens": "Ít token nhất", |
| 883 | "Random": "Ngẫu nhiên", | 883 | "Random": "Ngẫu nhiên", |
| 884 | "Toggle character grid view": "Chuyển đổi chế độ xem lưới nhân vật", | 884 | "Toggle character grid view": "Chuyển đổi chế độ xem lưới nhân vật", |
| 885 | "Bulk_edit_characters": "Chỉnh sửa nhân vật theo lô", | 885 | "Bulk_edit_characters": "Chỉnh sửa nhân vật theo lô", |
| 886 | "Bulk select all characters": "Chọn hàng loạt tất cả các ký tự", | 886 | "Bulk select all characters": "Chọn hàng loạt tất cả các ký tự", |
| 887 | "Bulk delete characters": "Xóa nhân vật theo lô", | 887 | "Bulk delete characters": "Xóa nhân vật theo lô", |
| 888 | "popup-button-save": "Cứu", | 888 | "popup-button-save": "Lưu", |
| 889 | "popup-button-yes": "Đúng", | 889 | "popup-button-yes": "Đúng", |
| 890 | "popup-button-no": "KHÔNG", | 890 | "popup-button-no": "KHÔNG", |
| 891 | "popup-button-cancel": "Hủy bỏ", | 891 | "popup-button-cancel": "Hủy", |
| 892 | "popup-button-import": "Nhập khẩu", | 892 | "popup-button-import": "Nhập", |
| 893 | "Advanced Defininitions": "Các Định nghĩa Nâng cao", | 893 | "Advanced Defininitions": "Các Định nghĩa Nâng cao", |
| 894 | "Prompt Overrides": "Ghi đè nhắc nhở", | 894 | "Prompt Overrides": "Ghi đè Prompt", |
| 895 | "(For Chat Completion and Instruct Mode)": "(Đối với chế độ hoàn thành trò chuyện và hướng dẫn)", | 895 | "(For Chat Completion and Instruct Mode)": "(Đối với chế độ hoàn thành trò chuyện và hướng dẫn)", |
| 896 | "Insert {{original}} into either box to include the respective default prompt from system settings.": "Chèn {{original}} vào bất kỳ hộp nào để bao gồm lời nhắc mặc định tương ứng từ cài đặt hệ thống.", | 896 | "Insert {{original}} into either box to include the respective default prompt from system settings.": "Chèn {{original}} vào bất kỳ hộp nào để bao gồm Prompt mặc định tương ứng từ cài đặt hệ thống.", |
| 897 | "Main Prompt": "Lời nhắc Chính", | 897 | "Main Prompt": "Prompt Chính", |
| 898 | "Any contents here will replace the default Main Prompt used for this character. (v2 spec: system_prompt)": "Bất kỳ nội dung nào ở đây sẽ thay thế Lời nhắc Chính mặc định được sử dụng cho nhân vật này. (v2 spec: hệ thống_lời_nhắc)", | 898 | "Any contents here will replace the default Main Prompt used for this character. (v2 spec: system_prompt)": "Bất kỳ nội dung nào ở đây sẽ thay thế Lời nhắc Chính mặc định được sử dụng cho nhân vật này. (v2 spec: hệ thống_lời_nhắc)", |
| 899 | "Any contents here will replace the default Jailbreak Prompt used for this character. (v2 spec: post_history_instructions)": "Bất kỳ nội dung nào ở đây sẽ thay thế Lời nhắc Phá vỡ giam giữ mặc định được sử dụng cho nhân vật này. (v2 spec: hệ thống_lời_nhắc_sau_lịch_sử)", | 899 | "Any contents here will replace the default Jailbreak Prompt used for this character. (v2 spec: post_history_instructions)": "Bất kỳ nội dung nào ở đây sẽ thay thế Lời nhắc Phá vỡ giam giữ mặc định được sử dụng cho nhân vật này. (v2 spec: hệ thống_lời_nhắc_sau_lịch_sử)", |
| 900 | "Creator's Metadata (Not sent with the AI prompt)": "Dữ liệu siêu dữ liệu của Người tạo (Không được gửi kèm với lời nhắc AI)", | 900 | "Creator's Metadata (Not sent with the AI prompt)": "Dữ liệu siêu dữ liệu của tác giả (Không được gửi kèm với Prompt AI)", |
| 901 | "Creator's Metadata": "Siêu dữ liệu của người sáng tạo", | 901 | "Creator's Metadata": "Siêu dữ liệu của tác giả", |
| 902 | "(Not sent with the AI Prompt)": "(Không được gửi bằng Lời nhắc AI)", | 902 | "(Not sent with the AI Prompt)": "(Không được gửi bằng Lời nhắc AI)", |
| 903 | "Everything here is optional": "Tất cả mọi thứ ở đây đều là tùy chọn", | 903 | "Everything here is optional": "Tất cả mọi thứ ở đây đều là tùy chọn", |
| 904 | "(Botmaker's name / Contact Info)": "(Tên của Người tạo Bot / Thông tin Liên hệ)", | 904 | "(Botmaker's name / Contact Info)": "(Tên của tác giả Bot / Thông tin Liên hệ)", |
| 905 | "(If you want to track character versions)": "(Nếu bạn muốn theo dõi phiên bản của nhân vật)", | 905 | "(If you want to track character versions)": "(Nếu bạn muốn theo dõi phiên bản của nhân vật)", |
| 906 | "(Describe the bot, give use tips, or list the chat models it has been tested on. This will be displayed in the character list.)": "(Mô tả bot, cung cấp mẹo sử dụng hoặc liệt kê các mô hình trò chuyện mà nó đã được thử nghiệm. Điều này sẽ được hiển thị trong danh sách nhân vật.)", | 906 | "(Describe the bot, give use tips, or list the chat models it has been tested on. This will be displayed in the character list.)": "(Mô tả bot, cung cấp mẹo sử dụng hoặc liệt kê các model mà nó đã được thử nghiệm. Cái này sẽ được hiển thị trong danh sách nhân vật.)", |
| 907 | "Tags to Embed": "Tags để nhúng", | 907 | "Tags to Embed": "Tags để nhúng", |
| 908 | "(Write a comma-separated list of tags)": "(Viết một danh sách các tags được phân tách bằng dấu phẩy)", | 908 | "(Write a comma-separated list of tags)": "(Viết một danh sách các tags được phân tách bằng dấu phẩy)", |
| 909 | "Personality summary": "Tóm tắt Tính cách", | 909 | "Personality summary": "Tóm tắt Tính cách", |
| 910 | "(A brief description of the personality)": "(Một mô tả ngắn gọn về tính cách)", | 910 | "(A brief description of the personality)": "(Một mô tả ngắn gọn về tính cách)", |
| 911 | "Scenario": "Tình huống", | 911 | "Scenario": "Tình huống", |
| 912 | "(Circumstances and context of the interaction)": "(Hoàn cảnh và ngữ cảnh của sự tương tác)", | 912 | "(Circumstances and context of the interaction)": "(Hoàn cảnh và context của sự tương tác)", |
| 913 | "Character's Note": "Ghi chú của nhân vật", | 913 | "Character's Note": "Ghi chú của nhân vật", |
| 914 | "(Text to be inserted in-chat @ designated depth and role)": "(Văn bản sẽ được chèn vào cuộc trò chuyện @ độ sâu và vai trò được chỉ định)", | 914 | "(Text to be inserted in-chat @ designated depth and role)": "(Văn bản sẽ được chèn vào cuộc trò chuyện @ độ sâu và vai trò được chỉ định)", |
| 915 | "@ Depth": "@ Chiều sâu", | 915 | "@ Depth": "@ Chiều sâu", |
| 916 | "Role": "Vai trò", | 916 | "Role": "Vai trò", |
| 917 | "Talkativeness": "Tính chuyện", | 917 | "Talkativeness": "Mức nói lắm", |
| 918 | "How often the character speaks in group chats!": "Nhân vật nói chuyện trong các cuộc trò chuyện nhóm như thế nào!", | 918 | "How often the character speaks in group chats!": "Tần suất nhân vật này phát biểu trong các cuộc trò chuyện nhóm!", |
| 919 | "How often the character speaks in": "Tần suất nhân vật nói chuyện", | 919 | "How often the character speaks in": "Tần suất nhân vật này phát biểu trong", |
| 920 | "group chats!": "các cuộc trò chuyện nhóm!", | 920 | "group chats!": "các cuộc trò chuyện nhóm!", |
| 921 | "Shy": "Rụt rè", | 921 | "Shy": "Nhát", |
| 922 | "Normal": "Bình thường", | 922 | "Normal": "Bình thường", |
| 923 | "Chatty": "Nói nhiều", | 923 | "Chatty": "Lắm mồm", |
| 924 | "Examples of dialogue": "Ví dụ về đối thoại", | 924 | "Examples of dialogue": "Ví dụ về lời đối thoại", |
| 925 | "Important to set the character's writing style.": "Quan trọng để thiết lập phong cách viết của nhân vật.", | 925 | "Important to set the character's writing style.": "Quan trọng là phải thiết lập phong cách viết của nhân vật.", |
| 926 | "(Examples of chat dialog. Begin each example with START on a new line.)": "(Các ví dụ về đoạn hội thoại trò chuyện. Bắt đầu mỗi ví dụ với START trên một dòng mới.)", | 926 | "(Examples of chat dialog. Begin each example with START on a new line.)": "(Các ví dụ về đoạn hội thoại trò chuyện. Bắt đầu mỗi ví dụ với START trên một dòng mới.)", |
| 927 | "Save": "Lưu", | 927 | "Save": "Lưu", |
| 928 | "Chat History": "Lịch sử Trò chuyện", | 928 | "Chat History": "Lịch sử Trò chuyện", |
| 929 | "Import Chat": "Nhập trò chuyện", | 929 | "Import Chat": "Nhập trò chuyện", |
| 930 | "Copy to system backgrounds": "Sao chép vào nền hệ thống", | 930 | "Copy to system backgrounds": "Sao chép vào nền hệ thống", |
| 931 | "Rename background": "Đổi tên nền", | 931 | "Rename background": "Đổi tên nền background", |
| 932 | "Lock": "Khóa", | 932 | "Lock": "Khóa", |
| 933 | "Unlock": "Mở khóa", | 933 | "Unlock": "Mở khóa", |
| 934 | "Delete background": "Xóa nền", | 934 | "Delete background": "Xóa nền background", |
| 935 | "Chat Scenario Override": "Ghi đè kịch bản trò chuyện", | 935 | "Chat Scenario Override": "Ghi đè kịch bản trò chuyện", |
| 936 | "Remove": "Xóa", | 936 | "Remove": "Xóa", |
| 937 | "Type here...": "Nhập vào đây...", | 937 | "Type here...": "Nhập vào đây...", |
| 938 | "Chat Lorebook": "Sách truyền thuyết trò chuyện cho", | 938 | "Chat Lorebook": "Sách truyền thuyết trò chuyện cho", |
| 939 | "Chat Lorebook for": "Sách truyền thuyết trò chuyện cho", | 939 | "Chat Lorebook for": "Sách truyền thuyết trò chuyện cho", |
| 940 | "chat_world_template_txt": "Thông tin thế giới được chọn sẽ bị ràng buộc với cuộc trò chuyện này. Khi tạo phản hồi AI,\n nó sẽ được kết hợp với các mục từ sách truyền thuyết toàn cầu và nhân vật.", | 940 | "chat_world_template_txt": "Thông tin thế giới được chọn sẽ bị ràng buộc với cuộc trò chuyện này. Khi tạo phản hồi AI,\n nó sẽ được kết hợp với các mục từ sách truyền thuyết toàn cầu và nhân vật.", |
| 941 | "Select a World Info file for": "Chọn một tệp Thông tin Thế giới cho", | 941 | "Select a World Info file for": "Chọn một tệp World Info cho", |
| 942 | "Primary Lorebook": "Sách Truyền thuyết Chính", | 942 | "Primary Lorebook": "Sách Truyền thuyết Chính", |
| 943 | "A selected World Info will be bound to this character as its own Lorebook.": "Một Thông tin Thế giới được chọn sẽ được gắn với nhân vật này như một cuốn sách Truyền thuyết riêng của nó.", | 943 | "A selected World Info will be bound to this character as its own Lorebook.": "World Info được chọn sẽ được gắn với nhân vật này như một Lorebook riêng của nó.", |
| 944 | "When generating an AI reply, it will be combined with the entries from a global World Info selector.": "Khi tạo phản hồi của AI, nó sẽ được kết hợp với các mục từ một bộ chọn Thông tin Thế giới toàn cầu.", | 944 | "When generating an AI reply, it will be combined with the entries from a global World Info selector.": "Khi tạo phản hồi của AI, nó sẽ được kết hợp với các mục từ một bộ chọn World Info.", |
| 945 | "Exporting a character would also export the selected Lorebook file embedded in the JSON data.": "Việc xuất khẩu một nhân vật cũng sẽ xuất khẩu tệp Sách Truyền thuyết được chọn được nhúng trong dữ liệu JSON.", | 945 | "Exporting a character would also export the selected Lorebook file embedded in the JSON data.": "Việc xuất khẩu một nhân vật cũng sẽ xuất khẩu tệp Sách Truyền thuyết được chọn được nhúng trong dữ liệu JSON.", |
| 946 | "Additional Lorebooks": "Sách Truyền thuyết Bổ sung", | 946 | "Additional Lorebooks": "Sách Truyền thuyết Bổ sung", |
| 947 | "Associate one or more auxillary Lorebooks with this character.": "Liên kết một hoặc nhiều Sách Truyền thuyết phụ trợ với nhân vật này.", | 947 | "Associate one or more auxillary Lorebooks with this character.": "Liên kết một hoặc nhiều Sách Truyền thuyết phụ trợ với nhân vật này.", |
| @@ -989,12 +989,12 @@ | |||
| 989 | "Optional Filter": "Bộ lọc Tùy chọn", | 989 | "Optional Filter": "Bộ lọc Tùy chọn", |
| 990 | "Keywords or Regexes (ignored if empty)": "Từ khóa hoặc Regexes (bỏ qua nếu trống)", | 990 | "Keywords or Regexes (ignored if empty)": "Từ khóa hoặc Regexes (bỏ qua nếu trống)", |
| 991 | "Comma separated list (ignored if empty)": "Danh sách được phân tách bằng dấu phẩy (bỏ qua nếu trống)", | 991 | "Comma separated list (ignored if empty)": "Danh sách được phân tách bằng dấu phẩy (bỏ qua nếu trống)", |
| 992 | "Use global setting": "Sử dụng cài đặt toàn cầu", | 992 | "Use global setting": "Sử dụng cài đặt chung", |
| 993 | "Case-Sensitive": "Phân biệt chữ hoa chữ thường", | 993 | "Case-Sensitive": "Phân biệt chữ hoa chữ thường", |
| 994 | "Yes": "Có", | 994 | "Yes": "Có", |
| 995 | "No": "Không", | 995 | "No": "Không", |
| 996 | "Can be used to automatically activate Quick Replies": "Có thể được sử dụng để tự động kích hoạt Trả lời nhanh", | 996 | "Can be used to automatically activate Quick Replies": "Có thể được sử dụng để tự động kích hoạt Trả lời nhanh", |
| 997 | "Automation ID": "ID tự động hóa", | 997 | "Automation ID": "ID tự động", |
| 998 | "( None )": "( Không có )", | 998 | "( None )": "( Không có )", |
| 999 | "Content": "Nội dung", | 999 | "Content": "Nội dung", |
| 1000 | "Exclude from recursion": "Loại trừ khỏi đệ quy", | 1000 | "Exclude from recursion": "Loại trừ khỏi đệ quy", |
| @@ -1017,27 +1017,27 @@ | |||
| 1017 | "close": "đóng", | 1017 | "close": "đóng", |
| 1018 | "prompt_manager_edit": "Biên tập", | 1018 | "prompt_manager_edit": "Biên tập", |
| 1019 | "prompt_manager_name": "Tên", | 1019 | "prompt_manager_name": "Tên", |
| 1020 | "A name for this prompt.": "Tên cho lời nhắc này.", | 1020 | "A name for this prompt.": "Tên cho Prompt này.", |
| 1021 | "To whom this message will be attributed.": "Tin nhắn này sẽ được quy cho ai.", | 1021 | "To whom this message will be attributed.": "Tin nhắn này sẽ được quy cho ai.", |
| 1022 | "AI Assistant": "Trợ lý AI", | 1022 | "AI Assistant": "Trợ lý AI", |
| 1023 | "prompt_manager_position": "Chức vụ", | 1023 | "prompt_manager_position": "Chức vụ", |
| 1024 | "Injection position. Next to other prompts (relative) or in-chat (absolute).": "Vị trí tiêm. Bên cạnh các lời nhắc khác (tương đối) hoặc trong trò chuyện (tuyệt đối).", | 1024 | "Injection position. Next to other prompts (relative) or in-chat (absolute).": "Vị trí tiêm. Bên cạnh các Prompt khác (tương đối) hoặc trong trò chuyện (tuyệt đối).", |
| 1025 | "prompt_manager_relative": "Liên quan đến", | 1025 | "prompt_manager_relative": "Liên quan đến", |
| 1026 | "prompt_manager_depth": "Chiều sâu", | 1026 | "prompt_manager_depth": "Chiều sâu", |
| 1027 | "Injection depth. 0 = after the last message, 1 = before the last message, etc.": "Độ sâu phun. 0 = sau tin nhắn cuối cùng, 1 = trước tin nhắn cuối cùng, v.v.", | 1027 | "Injection depth. 0 = after the last message, 1 = before the last message, etc.": "Độ sâu phun. 0 = sau tin nhắn cuối cùng, 1 = trước tin nhắn cuối cùng, v.v.", |
| 1028 | "Prompt": "Đề xuất", | 1028 | "Prompt": "Prompt", |
| 1029 | "The prompt to be sent.": "Lời nhắc được gửi đi.", | 1029 | "The prompt to be sent.": "Lời nhắc được gửi đi.", |
| 1030 | "This prompt cannot be overridden by character cards, even if overrides are preferred.": "Lời nhắc này không thể bị ghi đè bằng thẻ ký tự, ngay cả khi ưu tiên ghi đè.", | 1030 | "This prompt cannot be overridden by character cards, even if overrides are preferred.": "Lời nhắc này không thể bị ghi đè bằng thẻ ký tự, ngay cả khi ưu tiên ghi đè.", |
| 1031 | "prompt_manager_forbid_overrides": "Cấm ghi đè", | 1031 | "prompt_manager_forbid_overrides": "Cấm ghi đè", |
| 1032 | "reset": "cài lại", | 1032 | "reset": "đặt lại", |
| 1033 | "save": "cứu", | 1033 | "save": "lưu", |
| 1034 | "This message is invisible for the AI": "Tin nhắn này không thể nhìn thấy cho AI", | 1034 | "This message is invisible for the AI": "Tin nhắn này AI không thấy được đâu", |
| 1035 | "Message Actions": "Hành động tin nhắn", | 1035 | "Message Actions": "Hành động tin nhắn", |
| 1036 | "Translate message": "Dịch tin nhắn", | 1036 | "Translate message": "Dịch tin nhắn", |
| 1037 | "Generate Image": "Tạo Hình ảnh", | 1037 | "Generate Image": "Tạo Hình ảnh", |
| 1038 | "Narrate": "Kể chuyện", | 1038 | "Narrate": "Dẫn chuyện", |
| 1039 | "Exclude message from prompts": "Loại trừ tin nhắn khỏi các lời nhắc", | 1039 | "Exclude message from prompts": "Loại trừ tin nhắn khỏi các Prompt", |
| 1040 | "Include message in prompts": "Bao gồm tin nhắn trong các lời nhắc", | 1040 | "Include message in prompts": "Bao gồm tin nhắn trong các Prompt", |
| 1041 | "Embed file or image": "Nhúng tệp hoặc hình ảnh", | 1041 | "Embed file or image": "Nhúng tệp hoặc hình ảnh", |
| 1042 | "Create checkpoint": "Tạo điểm kiểm tra", | 1042 | "Create checkpoint": "Tạo điểm kiểm tra", |
| 1043 | "Create Branch": "Tạo Chi nhánh", | 1043 | "Create Branch": "Tạo Chi nhánh", |
| @@ -1050,25 +1050,25 @@ | |||
| 1050 | "Move message up": "Di chuyển tin nhắn lên", | 1050 | "Move message up": "Di chuyển tin nhắn lên", |
| 1051 | "Move message down": "Di chuyển tin nhắn xuống", | 1051 | "Move message down": "Di chuyển tin nhắn xuống", |
| 1052 | "Enlarge": "Phóng to", | 1052 | "Enlarge": "Phóng to", |
| 1053 | "Welcome to SillyTavern!": "Chào mừng đến với SillyTavern!", | 1053 | "Welcome to SillyTavern!": "SillyTavern xin chào!", |
| 1054 | "welcome_message_part_1": "Đọc", | 1054 | "welcome_message_part_1": "Xem", |
| 1055 | "welcome_message_part_2": "Tài liệu chính thức", | 1055 | "welcome_message_part_2": "Tài liệu chính thức", |
| 1056 | "welcome_message_part_3": null, | 1056 | "welcome_message_part_3": null, |
| 1057 | "welcome_message_part_4": "Kiểu", | 1057 | "welcome_message_part_4": "Kiểu", |
| 1058 | "welcome_message_part_5": "trong trò chuyện để nhận lệnh và macro.", | 1058 | "welcome_message_part_5": "trong trò chuyện để nhận lệnh và macro.", |
| 1059 | "welcome_message_part_6": "Tham gia", | 1059 | "welcome_message_part_6": "Tham gia", |
| 1060 | "Discord server": "Máy chủ bất hòa", | 1060 | "Discord server": "Server Discord", |
| 1061 | "welcome_message_part_7": "để biết thông tin và thông báo.", | 1061 | "welcome_message_part_7": "để biết thêm thông tin và nhận thông báo chính thức.", |
| 1062 | "SillyTavern is aimed at advanced users.": "SillyTavern nhắm đến người dùng cao cấp.", | 1062 | "SillyTavern is aimed at advanced users.": "SillyTavern dành cho dân pro, dân chơi thứ thiệt.", |
| 1063 | "If you're new to this, enable the simplified UI mode below.": "Nếu bạn chưa quen với điều này, hãy bật chế độ giao diện người dùng đơn giản hóa bên dưới.", | 1063 | "If you're new to this, enable the simplified UI mode below.": "Nếu bạn chưa quen dùng lắm, bật chế độ UI đơn giản bên dưới nha.", |
| 1064 | "Change it later in the 'User Settings' panel.": "Thay đổi nó sau trong bảng 'Cài đặt người dùng'.", | 1064 | "Change it later in the 'User Settings' panel.": "Thay đổi nó sau trong bảng 'Cài đặt người dùng'.", |
| 1065 | "Enable simple UI mode": "Bật chế độ giao diện người dùng đơn giản", | 1065 | "Enable simple UI mode": "Bật chế độ giao diện người dùng đơn giản", |
| 1066 | "Looking for AI characters?": "Bạn đang tìm kiếm nhân vật AI?", | 1066 | "Looking for AI characters?": "Bạn đang tìm kiếm các nhân vật AI à?", |
| 1067 | "onboarding_import": "Nhập khẩu", | 1067 | "onboarding_import": "Nhập", |
| 1068 | "from supported sources or view": "từ các nguồn hoặc chế độ xem được hỗ trợ", | 1068 | "from supported sources or view": "từ các nguồn hoặc chế độ xem được hỗ trợ", |
| 1069 | "Sample characters": "Ký tự mẫu", | 1069 | "Sample characters": "Ký tự mẫu", |
| 1070 | "Your Persona": "Nhân cách của bạn", | 1070 | "Your Persona": "Nhân cách của bạn", |
| 1071 | "Before you get started, you must select a persona name.": "Trước khi bắt đầu, bạn phải chọn một tên cá nhân.", | 1071 | "Before you get started, you must select a persona name.": "Trước khi bắt đầu, bạn phải chọn một cái tên nhân vật đã.", |
| 1072 | "welcome_message_part_8": "Điều này có thể được thay đổi bất cứ lúc nào thông qua", | 1072 | "welcome_message_part_8": "Điều này có thể được thay đổi bất cứ lúc nào thông qua", |
| 1073 | "welcome_message_part_9": "biểu tượng.", | 1073 | "welcome_message_part_9": "biểu tượng.", |
| 1074 | "Persona Name:": "Tên nhân vật:", | 1074 | "Persona Name:": "Tên nhân vật:", |
| @@ -1086,15 +1086,15 @@ | |||
| 1086 | "(This will be the first message from the character that starts every chat)": "(Điều này sẽ là tin nhắn đầu tiên từ nhân vật mà bắt đầu mỗi cuộc trò chuyện)", | 1086 | "(This will be the first message from the character that starts every chat)": "(Điều này sẽ là tin nhắn đầu tiên từ nhân vật mà bắt đầu mỗi cuộc trò chuyện)", |
| 1087 | "Forbid Media Override explanation": "Khả năng sử dụng phương tiện truyền thông bên ngoài trong trò chuyện của nhân vật/nhóm hiện tại.", | 1087 | "Forbid Media Override explanation": "Khả năng sử dụng phương tiện truyền thông bên ngoài trong trò chuyện của nhân vật/nhóm hiện tại.", |
| 1088 | "Forbid Media Override subtitle": "Phương tiện: hình ảnh, video, âm thanh. Bên ngoài: không được lưu trữ trên máy chủ cục bộ.", | 1088 | "Forbid Media Override subtitle": "Phương tiện: hình ảnh, video, âm thanh. Bên ngoài: không được lưu trữ trên máy chủ cục bộ.", |
| 1089 | "Always forbidden": "Luôn bị cấm", | 1089 | "Always forbidden": "Luôn cấm", |
| 1090 | "Always allowed": "Luôn luôn cho phép", | 1090 | "Always allowed": "Luôn luôn cho phép", |
| 1091 | "View contents": "Xem nội dung", | 1091 | "View contents": "Xem nội dung", |
| 1092 | "Remove the file": "Xóa tập tin", | 1092 | "Remove the file": "Xóa tập tin", |
| 1093 | "Unique to this chat": "Duy nhất cho cuộc trò chuyện này", | 1093 | "Unique to this chat": "Duy nhất cho cuộc trò chuyện này", |
| 1094 | "Checkpoints inherit the Note from their parent, and can be changed individually after that.": "Điểm kiểm tra kế thừa Ghi chú từ cha mẹ của chúng và có thể được thay đổi riêng lẻ sau đó.", | 1094 | "Checkpoints inherit the Note from their parent, and can be changed individually after that.": "Điểm kiểm tra kế thừa Ghi chú từ cha mẹ của chúng và có thể được thay đổi riêng lẻ sau đó.", |
| 1095 | "Include in World Info Scanning": "Bao gồm trong Quét thông tin thế giới", | 1095 | "Include in World Info Scanning": "Bao gồm trong World Info scanning", |
| 1096 | "Before Main Prompt / Story String": "Trước Lời nhắc chính/Chuỗi câu chuyện", | 1096 | "Before Main Prompt / Story String": "Trước Lời nhắc chính/Chuỗi câu chuyện", |
| 1097 | "After Main Prompt / Story String": "Sau lời nhắc chính/chuỗi câu chuyện", | 1097 | "After Main Prompt / Story String": "Sau Prompt chính/chuỗi câu chuyện", |
| 1098 | "as": "BẰNG", | 1098 | "as": "BẰNG", |
| 1099 | "Insertion Frequency": "Tần số chèn", | 1099 | "Insertion Frequency": "Tần số chèn", |
| 1100 | "(0 = Disable, 1 = Always)": "(0 = Tắt, 1 = Luôn luôn)", | 1100 | "(0 = Disable, 1 = Always)": "(0 = Tắt, 1 = Luôn luôn)", |
| @@ -1116,8 +1116,8 @@ | |||
| 1116 | "Global CFG": "CFG toàn cầu", | 1116 | "Global CFG": "CFG toàn cầu", |
| 1117 | "Will be used as the default CFG options for every chat unless overridden.": "Sẽ được sử dụng làm tùy chọn CFG mặc định cho mọi cuộc trò chuyện trừ khi bị ghi đè.", | 1117 | "Will be used as the default CFG options for every chat unless overridden.": "Sẽ được sử dụng làm tùy chọn CFG mặc định cho mọi cuộc trò chuyện trừ khi bị ghi đè.", |
| 1118 | "CFG Prompt Cascading": "Xếp tầng nhắc nhở CFG", | 1118 | "CFG Prompt Cascading": "Xếp tầng nhắc nhở CFG", |
| 1119 | "Combine positive/negative prompts from other boxes.": "Kết hợp những lời nhắc tích cực/tiêu cực từ các ô khác.", | 1119 | "Combine positive/negative prompts from other boxes.": "Kết hợp những Prompt tích cực/tiêu cực từ các ô khác.", |
| 1120 | "For example, ticking the chat, global, and character boxes combine all negative prompts into a comma-separated string.": "Ví dụ: việc đánh dấu vào các hộp trò chuyện, chung và ký tự sẽ kết hợp tất cả các lời nhắc phủ định thành một chuỗi được phân tách bằng dấu phẩy.", | 1120 | "For example, ticking the chat, global, and character boxes combine all negative prompts into a comma-separated string.": "Ví dụ: việc đánh dấu vào các hộp trò chuyện, chung và ký tự sẽ kết hợp tất cả các Prompt phủ định thành một chuỗi được phân tách bằng dấu phẩy.", |
| 1121 | "Always Include": "Luôn bao gồm", | 1121 | "Always Include": "Luôn bao gồm", |
| 1122 | "Chat Negatives": "Trò chuyện phủ định", | 1122 | "Chat Negatives": "Trò chuyện phủ định", |
| 1123 | "Character Negatives": "Nhân vật tiêu cực", | 1123 | "Character Negatives": "Nhân vật tiêu cực", |
| @@ -1127,35 +1127,35 @@ | |||
| 1127 | "Token Probabilities": "Xác suất Mã thông báo", | 1127 | "Token Probabilities": "Xác suất Mã thông báo", |
| 1128 | "Select a token to see alternatives considered by the AI.": "Chọn một mã thông báo để xem các phương án thay thế được AI xem xét.", | 1128 | "Select a token to see alternatives considered by the AI.": "Chọn một mã thông báo để xem các phương án thay thế được AI xem xét.", |
| 1129 | "Not connected to API!": "Không kết nối với API!", | 1129 | "Not connected to API!": "Không kết nối với API!", |
| 1130 | "Type a message, or /? for help": "Nhập tin nhắn hoặc /? để được giúp đỡ", | 1130 | "Type a message, or /? for help": "Nhập gì đó đi bồ ơi, hoặc gõ /? để tui bày cho", |
| 1131 | "Continue script execution": "Tiếp tục thực thi tập lệnh", | 1131 | "Continue script execution": "Tiếp tục thực thi tập lệnh", |
| 1132 | "Pause script execution": "Tạm dừng thực thi tập lệnh", | 1132 | "Pause script execution": "Tạm dừng thực thi tập lệnh", |
| 1133 | "Abort script execution": "Hủy bỏ việc thực thi tập lệnh", | 1133 | "Abort script execution": "Hủy bỏ việc thực thi tập lệnh", |
| 1134 | "Abort request": "Hủy yêu cầu", | 1134 | "Abort request": "Hủy yêu cầu", |
| 1135 | "Continue the last message": "Tiếp tục tin nhắn cuối cùng", | 1135 | "Continue the last message": "Tiếp tục từ tin nhắn cuối cùng", |
| 1136 | "Send a message": "Gửi một tin nhắn", | 1136 | "Send a message": "Gửi tin nhắn", |
| 1137 | "Close chat": "Đóng trò chuyện", | 1137 | "Close chat": "Đóng trò chuyện", |
| 1138 | "Toggle Panels": "Chuyển đổi bảng", | 1138 | "Toggle Panels": "Bật bảng lên", |
| 1139 | "Back to parent chat": "Quay lại trò chuyện cha", | 1139 | "Back to parent chat": "Quay lại cuộc trò chuyện chính", |
| 1140 | "Save checkpoint": "Lưu điểm kiểm tra", | 1140 | "Save checkpoint": "Lưu diểm checkpoint", |
| 1141 | "Convert to group": "Chuyển đổi thành nhóm", | 1141 | "Convert to group": "Chuyển đổi thành nhóm", |
| 1142 | "Start new chat": "Bắt đầu trò chuyện mới", | 1142 | "Start new chat": "Bắt đầu trò chuyện mới", |
| 1143 | "Manage chat files": "Quản lý tệp trò chuyện", | 1143 | "Manage chat files": "Quản lý tệp trò chuyện", |
| 1144 | "Delete messages": "Xóa tin nhắn", | 1144 | "Delete messages": "Xóa tin nhắn", |
| 1145 | "Regenerate": "Tạo lại", | 1145 | "Regenerate": "Tạo lại", |
| 1146 | "Ask AI to write your message for you": "Yêu cầu AI viết tin nhắn của bạn cho bạn", | 1146 | "Ask AI to write your message for you": "Kêu AI viết tin nhắn hộ bạn", |
| 1147 | "Impersonate": "Mô phỏng", | 1147 | "Impersonate": "Giả thoại danh", |
| 1148 | "Continue": "Tiếp tục", | 1148 | "Continue": "Tiếp tục", |
| 1149 | "Bind user name to that avatar": "Ràng buộc tên người dùng với hình đại diện đó", | 1149 | "Bind user name to that avatar": "Liên kết tên người dùng với avatar đó", |
| 1150 | "Change persona image": "Thay đổi hình ảnh nhân cách", | 1150 | "Change persona image": "Thay đổi ảnh đại diện nhân cách", |
| 1151 | "Select this as default persona for the new chats.": "Chọn đây làm nhân cách mặc định cho các cuộc trò chuyện mới.", | 1151 | "Select this as default persona for the new chats.": "Chọn cái này làm nhân cách mặc định cho các cuộc trò chuyện mới.", |
| 1152 | "Delete persona": "Xóa nhân cách", | 1152 | "Delete persona": "Xóa nhân cách", |
| 1153 | "These characters are the winners of character design contests and have outstandable quality.": "Những nhân vật này là người chiến thắng trong các cuộc thi thiết kế nhân vật và có chất lượng vượt trội.", | 1153 | "These characters are the winners of character design contests and have outstandable quality.": "Những nhân vật này là người chiến thắng trong các cuộc thi thiết kế nhân vật và có chất lượng vượt trội.", |
| 1154 | "Contest Winners": "Người chiến thắng cuộc thi", | 1154 | "Contest Winners": "Người chiến thắng cuộc thi", |
| 1155 | "These characters are the finalists of character design contests and have remarkable quality.": "Những nhân vật này lọt vào vòng chung kết của các cuộc thi thiết kế nhân vật và có chất lượng vượt trội.", | 1155 | "These characters are the finalists of character design contests and have remarkable quality.": "Những nhân vật này lọt vào vòng chung kết của các cuộc thi thiết kế nhân vật và có chất lượng vượt trội.", |
| 1156 | "Featured Characters": "Nhân vật nổi bật", | 1156 | "Featured Characters": "Nhân vật nổi bật", |
| 1157 | "Attach a File": "Đính kèm một tập tin", | 1157 | "Attach a File": "Đính kèm tập tin", |
| 1158 | "Open Data Bank": "Ngân hàng dữ liệu mở", | 1158 | "Open Data Bank": "Mở Ngân hàng dữ liệu", |
| 1159 | "Enter a URL or the ID of a Fandom wiki page to scrape:": "Nhập URL hoặc ID của trang wiki Fandom để thu thập:", | 1159 | "Enter a URL or the ID of a Fandom wiki page to scrape:": "Nhập URL hoặc ID của trang wiki Fandom để thu thập:", |
| 1160 | "Examples:": "Ví dụ:", | 1160 | "Examples:": "Ví dụ:", |
| 1161 | "Example:": "Ví dụ:", | 1161 | "Example:": "Ví dụ:", |
| @@ -1197,19 +1197,19 @@ | |||
| 1197 | "ext_sum_force_text": "Tóm tắt ngay bây giờ", | 1197 | "ext_sum_force_text": "Tóm tắt ngay bây giờ", |
| 1198 | "Disable automatic summary updates. While paused, the summary remains as-is. You can still force an update by pressing the Summarize now button (which is only available with the Main API).": "Tắt cập nhật tóm tắt tự động. Trong khi tạm dừng, tóm tắt vẫn giữ nguyên. Bạn vẫn có thể buộc cập nhật bằng cách nhấn nút Tóm tắt ngay (chỉ khả dụng với API chính).", | 1198 | "Disable automatic summary updates. While paused, the summary remains as-is. You can still force an update by pressing the Summarize now button (which is only available with the Main API).": "Tắt cập nhật tóm tắt tự động. Trong khi tạm dừng, tóm tắt vẫn giữ nguyên. Bạn vẫn có thể buộc cập nhật bằng cách nhấn nút Tóm tắt ngay (chỉ khả dụng với API chính).", |
| 1199 | "ext_sum_pause": "Tạm ngừng", | 1199 | "ext_sum_pause": "Tạm ngừng", |
| 1200 | "Omit World Info and Author's Note from text to be summarized. Only has an effect when using the Main API. The Extras API always omits WI/AN.": "Bỏ qua Thông tin thế giới và Ghi chú của tác giả khỏi văn bản cần tóm tắt. Chỉ có tác dụng khi sử dụng API chính. API bổ sung luôn bỏ qua WI/AN.", | 1200 | "Omit World Info and Author's Note from text to be summarized. Only has an effect when using the Main API. The Extras API always omits WI/AN.": "Bỏ qua World Info và Ghi chú của tác giả khỏi văn bản cần tóm tắt. Chỉ có tác dụng khi sử dụng API chính. API bổ sung luôn bỏ qua WI/AN.", |
| 1201 | "ext_sum_no_wi_an": "Không có WI/AN", | 1201 | "ext_sum_no_wi_an": "Không có WI/AN", |
| 1202 | "ext_sum_settings_tip": "Chỉnh sửa lời nhắc tóm tắt, vị trí chèn, v.v.", | 1202 | "ext_sum_settings_tip": "Chỉnh sửa Prompt tóm tắt, vị trí chèn, v.v.", |
| 1203 | "ext_sum_settings": "Cài đặt tóm tắt", | 1203 | "ext_sum_settings": "Cài đặt tóm tắt", |
| 1204 | "ext_sum_prompt_builder": "Trình tạo nhắc nhở", | 1204 | "ext_sum_prompt_builder": "Trình tạo nhắc nhở", |
| 1205 | "ext_sum_prompt_builder_1_desc": "Tiện ích mở rộng sẽ xây dựng lời nhắc riêng bằng cách sử dụng các thông báo chưa được tóm tắt. Chặn cuộc trò chuyện cho đến khi bản tóm tắt được tạo.", | 1205 | "ext_sum_prompt_builder_1_desc": "Tiện ích mở rộng sẽ xây dựng Prompt riêng bằng cách sử dụng các thông báo chưa được tóm tắt. Chặn cuộc trò chuyện cho đến khi bản tóm tắt được tạo.", |
| 1206 | "ext_sum_prompt_builder_1": "Nguyên, chặn", | 1206 | "ext_sum_prompt_builder_1": "Nguyên, chặn", |
| 1207 | "ext_sum_prompt_builder_2_desc": "Tiện ích mở rộng sẽ xây dựng lời nhắc riêng bằng cách sử dụng các thông báo chưa được tóm tắt. Không chặn cuộc trò chuyện trong khi bản tóm tắt đang được tạo. Không phải tất cả các chương trình phụ trợ đều hỗ trợ chế độ này.", | 1207 | "ext_sum_prompt_builder_2_desc": "Tiện ích mở rộng sẽ xây dựng Prompt riêng bằng cách sử dụng các thông báo chưa được tóm tắt. Không chặn cuộc trò chuyện trong khi bản tóm tắt đang được tạo. Không phải tất cả các chương trình phụ trợ đều hỗ trợ chế độ này.", |
| 1208 | "ext_sum_prompt_builder_2": "Nguyên, không chặn", | 1208 | "ext_sum_prompt_builder_2": "Nguyên, không chặn", |
| 1209 | "ext_sum_prompt_builder_3_desc": "Tiện ích mở rộng sẽ sử dụng trình tạo lời nhắc chính thông thường và thêm yêu cầu tóm tắt vào đó làm thông báo hệ thống cuối cùng.", | 1209 | "ext_sum_prompt_builder_3_desc": "Tiện ích mở rộng sẽ sử dụng trình tạo Prompt chính thông thường và thêm yêu cầu tóm tắt vào đó làm thông báo hệ thống cuối cùng.", |
| 1210 | "ext_sum_prompt_builder_3": "Cổ điển, chặn", | 1210 | "ext_sum_prompt_builder_3": "Cổ điển, chặn", |
| 1211 | "Summary Prompt": "Lời nhắc tóm tắt", | 1211 | "Summary Prompt": "Lời nhắc tóm tắt", |
| 1212 | "ext_sum_restore_default_prompt_tip": "Khôi phục lời nhắc mặc định", | 1212 | "ext_sum_restore_default_prompt_tip": "Khôi phục Prompt mặc định", |
| 1213 | "ext_sum_prompt_placeholder": "Lời nhắc này sẽ được gửi tới AI để yêu cầu tạo bản tóm tắt. {{words}} sẽ phân giải thành tham số 'Số từ'.", | 1213 | "ext_sum_prompt_placeholder": "Lời nhắc này sẽ được gửi tới AI để yêu cầu tạo bản tóm tắt. {{words}} sẽ phân giải thành tham số 'Số từ'.", |
| 1214 | "ext_sum_target_length_1": "Độ dài tóm tắt mục tiêu", | 1214 | "ext_sum_target_length_1": "Độ dài tóm tắt mục tiêu", |
| 1215 | "ext_sum_target_length_2": null, | 1215 | "ext_sum_target_length_2": null, |
| @@ -1257,13 +1257,13 @@ | |||
| 1257 | "ext_regex_user_input": "Đầu vào của người dùng", | 1257 | "ext_regex_user_input": "Đầu vào của người dùng", |
| 1258 | "ext_regex_ai_output": "Đầu ra AI", | 1258 | "ext_regex_ai_output": "Đầu ra AI", |
| 1259 | "Slash Commands": "Lệnh gạch chéo", | 1259 | "Slash Commands": "Lệnh gạch chéo", |
| 1260 | "ext_regex_min_depth_desc": "Khi áp dụng cho lời nhắc hoặc hiển thị, chỉ ảnh hưởng đến các tin nhắn có độ sâu ít nhất N cấp độ. 0 = tin nhắn cuối cùng, 1 = tin nhắn áp chót, v.v. Chỉ tính các mục WI @Depth và các tin nhắn có thể sử dụng được, tức là không bị ẩn hoặc hệ thống.", | 1260 | "ext_regex_min_depth_desc": "Khi áp dụng cho Prompt hoặc hiển thị, chỉ ảnh hưởng đến các tin nhắn có độ sâu ít nhất N cấp độ. 0 = tin nhắn cuối cùng, 1 = tin nhắn áp chót, v.v. Chỉ tính các mục WI @Depth và các tin nhắn có thể sử dụng được, tức là không bị ẩn hoặc hệ thống.", |
| 1261 | "Min Depth": "Độ sâu tối thiểu", | 1261 | "Min Depth": "Độ sâu tối thiểu", |
| 1262 | "ext_regex_min_depth_placeholder": "Vô hạn", | 1262 | "ext_regex_min_depth_placeholder": "Vô hạn", |
| 1263 | "ext_regex_max_depth_desc": "Khi áp dụng cho lời nhắc hoặc màn hình, chỉ ảnh hưởng đến tin nhắn không quá N cấp độ. 0 = tin nhắn cuối cùng, 1 = tin nhắn áp chót, v.v. Chỉ tính các mục WI @Depth và các tin nhắn có thể sử dụng được, tức là không bị ẩn hoặc hệ thống.", | 1263 | "ext_regex_max_depth_desc": "Khi áp dụng cho Prompt hoặc màn hình, chỉ ảnh hưởng đến tin nhắn không quá N cấp độ. 0 = tin nhắn cuối cùng, 1 = tin nhắn áp chót, v.v. Chỉ tính các mục WI @Depth và các tin nhắn có thể sử dụng được, tức là không bị ẩn hoặc hệ thống.", |
| 1264 | "ext_regex_other_options": "Sự lựa chọn khác", | 1264 | "ext_regex_other_options": "Sự lựa chọn khác", |
| 1265 | "Only Format Display": "Chỉ hiển thị định dạng", | 1265 | "Only Format Display": "Chỉ hiển thị định dạng", |
| 1266 | "ext_regex_only_format_prompt_desc": "Lịch sử trò chuyện sẽ không thay đổi, chỉ có lời nhắc khi yêu cầu được gửi (khi tạo).", | 1266 | "ext_regex_only_format_prompt_desc": "Lịch sử trò chuyện sẽ không thay đổi, chỉ có Prompt khi yêu cầu được gửi (khi tạo).", |
| 1267 | "Only Format Prompt (?)": "Chỉ định dạng nhắc nhở", | 1267 | "Only Format Prompt (?)": "Chỉ định dạng nhắc nhở", |
| 1268 | "Run On Edit": "Chạy trên Chỉnh sửa", | 1268 | "Run On Edit": "Chạy trên Chỉnh sửa", |
| 1269 | "ext_regex_substitute_regex_desc": "Thay thế {{macros}} trong Tìm Regex trước khi chạy nó", | 1269 | "ext_regex_substitute_regex_desc": "Thay thế {{macros}} trong Tìm Regex trước khi chạy nó", |
| @@ -1285,13 +1285,13 @@ | |||
| 1285 | "sd_Raw_Last_Message": "Tin nhắn cuối cùng thô", | 1285 | "sd_Raw_Last_Message": "Tin nhắn cuối cùng thô", |
| 1286 | "sd_Background": "Lý lịch", | 1286 | "sd_Background": "Lý lịch", |
| 1287 | "Image Generation": "Tạo hình ảnh", | 1287 | "Image Generation": "Tạo hình ảnh", |
| 1288 | "sd_refine_mode": "Cho phép chỉnh sửa lời nhắc theo cách thủ công trước khi gửi chúng đến API thế hệ", | 1288 | "sd_refine_mode": "Cho phép chỉnh sửa Prompt theo cách thủ công trước khi gửi chúng đến API thế hệ", |
| 1289 | "sd_refine_mode_txt": "Chỉnh sửa lời nhắc trước khi tạo", | 1289 | "sd_refine_mode_txt": "Chỉnh sửa Prompt trước khi tạo", |
| 1290 | "sd_interactive_mode": "Tự động tạo hình ảnh khi gửi tin nhắn như “gửi cho tôi ảnh con mèo”.", | 1290 | "sd_interactive_mode": "Tự động tạo hình ảnh khi gửi tin nhắn như “gửi cho tôi ảnh con mèo”.", |
| 1291 | "sd_interactive_mode_txt": "Chế độ tương tác", | 1291 | "sd_interactive_mode_txt": "Chế độ tương tác", |
| 1292 | "sd_multimodal_captioning": "Sử dụng chú thích đa phương thức để tạo lời nhắc về chân dung người dùng và nhân vật dựa trên hình đại diện của họ.", | 1292 | "sd_multimodal_captioning": "Sử dụng chú thích đa phương thức để tạo Prompt về chân dung người dùng và nhân vật dựa trên hình đại diện của họ.", |
| 1293 | "sd_multimodal_captioning_txt": "Sử dụng chú thích đa phương thức cho ảnh chân dung", | 1293 | "sd_multimodal_captioning_txt": "Sử dụng chú thích đa phương thức cho ảnh chân dung", |
| 1294 | "sd_expand": "Tự động mở rộng lời nhắc bằng mô hình tạo văn bản", | 1294 | "sd_expand": "Tự động mở rộng Prompt bằng mô hình tạo văn bản", |
| 1295 | "sd_expand_txt": "Lời nhắc tự động nâng cao", | 1295 | "sd_expand_txt": "Lời nhắc tự động nâng cao", |
| 1296 | "sd_snap": "Điều chỉnh nhanh các yêu cầu tạo có tỷ lệ khung hình bắt buộc (chân dung, hình nền) về độ phân giải đã biết gần nhất, đồng thời cố gắng duy trì số lượng pixel tuyệt đối (được khuyến nghị cho SDXL).", | 1296 | "sd_snap": "Điều chỉnh nhanh các yêu cầu tạo có tỷ lệ khung hình bắt buộc (chân dung, hình nền) về độ phân giải đã biết gần nhất, đồng thời cố gắng duy trì số lượng pixel tuyệt đối (được khuyến nghị cho SDXL).", |
| 1297 | "sd_snap_txt": "Chụp độ phân giải được điều chỉnh tự động", | 1297 | "sd_snap_txt": "Chụp độ phân giải được điều chỉnh tự động", |
| @@ -1341,14 +1341,14 @@ | |||
| 1341 | "Hires. Fix": "Thuê. Sửa chữa", | 1341 | "Hires. Fix": "Thuê. Sửa chữa", |
| 1342 | "Upscaler": "nâng cấp", | 1342 | "Upscaler": "nâng cấp", |
| 1343 | "Upscale by": "Cao cấp bởi", | 1343 | "Upscale by": "Cao cấp bởi", |
| 1344 | "Denoising strength": "Sức mạnh khử nhiễu", | 1344 | "Denoising strength": "Mức độ khử noise", |
| 1345 | "Hires steps (2nd pass)": "Thuê bước (đạt thứ 2)", | 1345 | "Hires steps (2nd pass)": "Thuê bước (đạt thứ 2)", |
| 1346 | "Preset for prompt prefix and negative prompt": "Đặt trước cho tiền tố lời nhắc và lời nhắc phủ định", | 1346 | "Preset for prompt prefix and negative prompt": "Đặt trước cho tiền tố Prompt và Prompt phủ định", |
| 1347 | "Style": "Phong cách", | 1347 | "Style": "Phong cách", |
| 1348 | "Save style": "Lưu kiểu", | 1348 | "Save style": "Lưu kiểu", |
| 1349 | "Delete style": "Xóa kiểu", | 1349 | "Delete style": "Xóa kiểu", |
| 1350 | "Common prompt prefix": "Tiền tố nhắc chung", | 1350 | "Common prompt prefix": "Tiền tố nhắc chung", |
| 1351 | "sd_prompt_prefix_placeholder": "Sử dụng {prompt} để chỉ định vị trí chèn lời nhắc được tạo", | 1351 | "sd_prompt_prefix_placeholder": "Sử dụng {prompt} để chỉ định vị trí chèn Prompt được tạo", |
| 1352 | "Negative common prompt prefix": "Tiền tố dấu nhắc chung phủ định", | 1352 | "Negative common prompt prefix": "Tiền tố dấu nhắc chung phủ định", |
| 1353 | "Character-specific prompt prefix": "Tiền tố nhắc nhở dành riêng cho ký tự", | 1353 | "Character-specific prompt prefix": "Tiền tố nhắc nhở dành riêng cho ký tự", |
| 1354 | "Won't be used in groups.": "Sẽ không được sử dụng trong nhóm.", | 1354 | "Won't be used in groups.": "Sẽ không được sử dụng trong nhóm.", |
| @@ -1371,60 +1371,60 @@ | |||
| 1371 | "Current Password:": "Mật khẩu hiện tại:", | 1371 | "Current Password:": "Mật khẩu hiện tại:", |
| 1372 | "New Password:": "Mật khẩu mới:", | 1372 | "New Password:": "Mật khẩu mới:", |
| 1373 | "Confirm New Password:": "Xác nhận mật khẩu mới:", | 1373 | "Confirm New Password:": "Xác nhận mật khẩu mới:", |
| 1374 | "Debug Warning": "Các chức năng trong danh mục này chỉ dành cho người dùng nâng cao. Đừng nhấp vào bất cứ thứ gì nếu bạn không chắc chắn về hậu quả.", | 1374 | "Debug Warning": "Các chức năng trong danh mục này chỉ dành cho người dùng pro. Đừng nhấp vào bất cứ thứ gì nếu bạn không chắc chắn về hậu quả.", |
| 1375 | "Execute": "Hành hình", | 1375 | "Execute": "Thực hiện", |
| 1376 | "Are you sure you want to delete this user?": "Bạn có chắc chắn muốn xóa người dùng này?", | 1376 | "Are you sure you want to delete this user?": "Bạn có chắc chắn muốn xóa người dùng này?", |
| 1377 | "Deleting:": "Đang xóa:", | 1377 | "Deleting:": "Đang xóa:", |
| 1378 | "Also wipe user data.": "Đồng thời xóa dữ liệu người dùng.", | 1378 | "Also wipe user data.": "Đồng thời xóa dữ liệu người dùng.", |
| 1379 | "Warning:": "Cảnh báo:", | 1379 | "Warning:": "Cảnh báo:", |
| 1380 | "This action is irreversible.": "Hành động này là không thể đảo ngược.", | 1380 | "This action is irreversible.": "Hành động này không thể hoàn tác.", |
| 1381 | "Type the user's handle below to confirm:": "Nhập tên người dùng bên dưới để xác nhận:", | 1381 | "Type the user's handle below to confirm:": "Nhập tên người dùng bên dưới để xác nhận:", |
| 1382 | "Import Characters": "Nhập ký tự", | 1382 | "Import Characters": "Nhập ký tự", |
| 1383 | "Enter the URL of the content to import": "Nhập URL của nội dung cần nhập", | 1383 | "Enter the URL of the content to import": "Nhập URL của nội dung cần nhập", |
| 1384 | "Supported sources:": "Các nguồn được hỗ trợ:", | 1384 | "Supported sources:": "Các nguồn được hỗ trợ:", |
| 1385 | "char_import_1": "Nhân vật Chub (Liên kết trực tiếp hoặc ID)", | 1385 | "char_import_1": "Nhân vật Chub (Liên kết trực tiếp hoặc ID)", |
| 1386 | "char_import_example": "Ví dụ:", | 1386 | "char_import_example": "Ví dụ:", |
| 1387 | "char_import_2": "Sách về Chub (Liên kết trực tiếp hoặc ID)", | 1387 | "char_import_2": "Chub (Nhập URL trực tiếp hoặc ID)", |
| 1388 | "char_import_3": "Nhân vật JanitorAI (Liên kết trực tiếp hoặc UUID)", | 1388 | "char_import_3": "JanitorAI (Nhập URL trực tiếp hoặc UUID)", |
| 1389 | "char_import_4": "Nhân vật Pygmalion.chat (Liên kết trực tiếp hoặc UUID)", | 1389 | "char_import_4": "Pygmalion.chat (Nhập URL trực tiếp hoặc UUID)", |
| 1390 | "char_import_5": "Ký tự AICharacterCard.com (Liên kết trực tiếp hoặc ID)", | 1390 | "char_import_5": "AICharacterCard.com (Nhập URL trực tiếp hoặc ID)", |
| 1391 | "char_import_6": "Liên kết PNG trực tiếp (tham khảo", | 1391 | "char_import_6": "Nhập PNG trực tiếp (tham khảo", |
| 1392 | "char_import_7": "đối với các máy chủ được phép)", | 1392 | "char_import_7": "đối với các máy chủ được phép)", |
| 1393 | "char_import_8": "Nhân vật RisuRealm (Liên kết trực tiếp)", | 1393 | "char_import_8": "RisuRealm (URL trực tiếp)", |
| 1394 | "Supports importing multiple characters.": "Hỗ trợ nhập nhiều ký tự.", | 1394 | "Supports importing multiple characters.": "Hỗ trợ nhập nhiều ký tự.", |
| 1395 | "Write each URL or ID into a new line.": "Viết mỗi URL hoặc ID vào một dòng mới.", | 1395 | "Write each URL or ID into a new line.": "Viết mỗi URL hoặc ID vào một dòng mới.", |
| 1396 | "Export for character": "Xuất cho nhân vật", | 1396 | "Export for character": "Xuất cho nhân vật", |
| 1397 | "Export prompts for this character, including their order.": "Xuất lời nhắc cho ký tự này, bao gồm cả thứ tự của chúng.", | 1397 | "Export prompts for this character, including their order.": "Xuất Prompt cho ký tự này, bao gồm cả thứ tự của chúng.", |
| 1398 | "Export all": "Xuất tất cả", | 1398 | "Export all": "Xuất tất cả", |
| 1399 | "Export all your prompts to a file": "Xuất tất cả lời nhắc của bạn sang một tệp", | 1399 | "Export all your prompts to a file": "Xuất tất cả Prompt của bạn sang một tệp", |
| 1400 | "Insert prompt": "Chèn lời mời", | 1400 | "Insert prompt": "Chèn Prompt", |
| 1401 | "Delete prompt": "Xóa lời mời", | 1401 | "Delete prompt": "Xóa Prompt", |
| 1402 | "Import a prompt list": "Nhập danh sách lời mời", | 1402 | "Import a prompt list": "Nhập danh sách Prompt", |
| 1403 | "Export this prompt list": "Xuất danh sách lời mời này", | 1403 | "Export this prompt list": "Xuất danh sách Prompt này", |
| 1404 | "Reset current character": "Đặt lại nhân vật hiện tại", | 1404 | "Reset current character": "Đặt lại nhân vật hiện tại", |
| 1405 | "New prompt": "Lời mời mới", | 1405 | "New prompt": "Prompt mới", |
| 1406 | "Prompts": "Lời mời", | 1406 | "Prompts": "Prompts", |
| 1407 | "Total Tokens:": "Tổng số token:", | 1407 | "Total Tokens:": "Tổng cộng token:", |
| 1408 | "prompt_manager_tokens": "Mã thông báo", | 1408 | "prompt_manager_tokens": "Bộ Tách từ", |
| 1409 | "Are you sure you want to reset your settings to factory defaults?": "Bạn có chắc chắn muốn đặt lại cài đặt của mình về mặc định ban đầu không?", | 1409 | "Are you sure you want to reset your settings to factory defaults?": "Bạn có chắc chắn muốn đặt lại cài đặt về mặc định ban đầu không?", |
| 1410 | "Don't forget to save a snapshot of your settings before proceeding.": "Đừng quên lưu ảnh chụp nhanh cài đặt của bạn trước khi tiếp tục.", | 1410 | "Don't forget to save a snapshot of your settings before proceeding.": "Đừng quên sao lưu snapshot của cài đặt của bạn trước khi tiếp tục nha.", |
| 1411 | "Settings Snapshots": "Cài đặt Ảnh chụp nhanh", | 1411 | "Settings Snapshots": "Cài đặt Snapshot", |
| 1412 | "Record a snapshot of your current settings.": "Ghi lại ảnh chụp nhanh các cài đặt hiện tại của bạn.", | 1412 | "Record a snapshot of your current settings.": "Ghi lại Snapshot của cài đặt hiện tại.", |
| 1413 | "Make a Snapshot": "Tạo một ảnh chụp nhanh", | 1413 | "Make a Snapshot": "Tạo một Snapshot", |
| 1414 | "Restore this snapshot": "Khôi phục ảnh chụp nhanh này", | 1414 | "Restore this snapshot": "Khôi phục Snapshot này", |
| 1415 | "Hi,": "CHÀO,", | 1415 | "Hi,": "CHÀO,", |
| 1416 | "To enable multi-account features, restart the SillyTavern server with": "Để bật tính năng nhiều tài khoản, hãy khởi động lại máy chủ SillyTavern bằng", | 1416 | "To enable multi-account features, restart the SillyTavern server with": "Để bật tính năng đa tài khoản, hãy khởi động lại máy chủ SillyTavern bằng", |
| 1417 | "set to true in the config.yaml file.": "đặt thành true trong tệp config.yaml.", | 1417 | "set to true in the config.yaml file.": "cách đặt enableUserAccounts thành true trong config.yaml.", |
| 1418 | "Account Info": "Thông tin tài khoản", | 1418 | "Account Info": "Thông tin tài khoản", |
| 1419 | "To change your user avatar, use the buttons below or select a default persona in the Persona Management menu.": "Để thay đổi hình đại diện người dùng của bạn, hãy sử dụng các nút bên dưới hoặc chọn nhân vật mặc định trong menu Quản lý Persona.", | 1419 | "To change your user avatar, use the buttons below or select a default persona in the Persona Management menu.": "Để thay đổi hình đại diện người dùng của bạn, hãy sử dụng các nút bên dưới hoặc chọn nhân vật mặc định trong menu Quản lý Persona.", |
| 1420 | "Set your custom avatar.": "Thiết lập hình đại diện tùy chỉnh của bạn.", | 1420 | "Set your custom avatar.": "Đặt avatar tùy chỉnh của bạn.", |
| 1421 | "Remove your custom avatar.": "Xóa hình đại diện tùy chỉnh của bạn.", | 1421 | "Remove your custom avatar.": "Xóa hình avatar của bạn.", |
| 1422 | "Handle:": "Xử lý:", | 1422 | "Handle:": "Xử lý:", |
| 1423 | "This account is password protected.": "Tài khoản này được bảo vệ bằng mật khẩu.", | 1423 | "This account is password protected.": "Tài khoản này được bảo vệ bằng mật khẩu.", |
| 1424 | "This account is not password protected.": "Tài khoản này không được bảo vệ bằng mật khẩu.", | 1424 | "This account is not password protected.": "Tài khoản này không được bảo vệ bằng mật khẩu.", |
| 1425 | "Account Actions": "Hành động tài khoản", | 1425 | "Account Actions": "Các thao tác tài khoản", |
| 1426 | "Change Password": "Đổi mật khẩu", | 1426 | "Change Password": "Đổi mật khẩu", |
| 1427 | "Manage your settings snapshots.": "Quản lý ảnh chụp nhanh cài đặt của bạn.", | 1427 | "Manage your settings snapshots.": "Quản lý ảnh snapshots cài đặt của bạn.", |
| 1428 | "Download a complete backup of your user data.": "Tải xuống bản sao lưu đầy đủ dữ liệu người dùng của bạn.", | 1428 | "Download a complete backup of your user data.": "Tải xuống bản sao lưu đầy đủ dữ liệu người dùng của bạn.", |
| 1429 | "Download Backup": "Tải xuống bản sao lưu", | 1429 | "Download Backup": "Tải xuống bản sao lưu", |
| 1430 | "Danger Zone": "Khu vực nguy hiểm", | 1430 | "Danger Zone": "Khu vực nguy hiểm", |
| @@ -1434,21 +1434,21 @@ | |||
| 1434 | "Reset Everything": "Đặt lại mọi thứ", | 1434 | "Reset Everything": "Đặt lại mọi thứ", |
| 1435 | "Reset Code:": "Đặt lại mã:", | 1435 | "Reset Code:": "Đặt lại mã:", |
| 1436 | "Want to update?": "Muốn cập nhật?", | 1436 | "Want to update?": "Muốn cập nhật?", |
| 1437 | "How to start chatting?": "Làm thế nào để bắt đầu trò chuyện?", | 1437 | "How to start chatting?": "Bắt đầu chat chit kiểu gì zậy?", |
| 1438 | "Click _space": "Nhấp chuột", | 1438 | "Click _space": "Đúp vào", |
| 1439 | "and select a": "và chọn một", | 1439 | "and select a": "và chọn ", |
| 1440 | "Chat API": "API Trò chuyện", | 1440 | "Chat API": "Chat API", |
| 1441 | "and pick a character.": "và chọn một nhân vật.", | 1441 | "and pick a character.": "và chọn nhân vật.", |
| 1442 | "You can browse a list of bundled characters in the": "Bạn có thể duyệt danh sách các ký tự được nhóm trong", | 1442 | "You can browse a list of bundled characters in the": "Bạn có thể xem qua danh sách các nhân vật có sẵn", |
| 1443 | "Download Extensions & Assets": "Tải xuống tiện ích mở rộng và nội dung", | 1443 | "Download Extensions & Assets": "Tải xuống tiện ích mở rộng và Asests", |
| 1444 | "menu within": "thực đơn bên trong", | 1444 | "menu within": "menu bên trong", |
| 1445 | "Confused or lost?": "Lạc lõng hoặc bối rối?", | 1445 | "Confused or lost?": "Đơ đầu hay lạc trôi?", |
| 1446 | "click these icons!": "nhấp vào các biểu tượng này!", | 1446 | "click these icons!": "nhấp vào các biểu tượng này!", |
| 1447 | "in the chat bar": "trong thanh trò chuyện", | 1447 | "in the chat bar": "trong thanh trò chuyện", |
| 1448 | "SillyTavern Documentation Site": "Trang tài liệu SillyTavern", | 1448 | "SillyTavern Documentation Site": "Tài liệu về SillyTavern", |
| 1449 | "Extras Installation Guide": "Hướng dẫn cài đặt bổ sung", | 1449 | "Extras Installation Guide": "Hướng dẫn cài đặt bổ sung", |
| 1450 | "Still have questions?": "Bạn vẫn còn câu hỏi?", | 1450 | "Still have questions?": "Bạn còn thắc mắc?", |
| 1451 | "Join the SillyTavern Discord": "Tham gia Discord của SillyTavern", | 1451 | "Join the SillyTavern Discord": "Tham gia Kênh Discord của SillyTavern", |
| 1452 | "Post a GitHub issue": "Đăng một vấn đề trên GitHub", | 1452 | "Post a GitHub issue": "Đăng một vấn đề trên GitHub", |
| 1453 | "Contact the developers": "Liên hệ với các nhà phát triển" | 1453 | "Contact the developers": "Liên hệ với Devs" |
| 1454 | } | 1454 | } |
| @@ -32,7 +32,7 @@ | |||
| 32 | "Streaming_desc": "逐位显示生成的回复", | 32 | "Streaming_desc": "逐位显示生成的回复", |
| 33 | "context size(tokens)": "上下文长度(以词符数计)", | 33 | "context size(tokens)": "上下文长度(以词符数计)", |
| 34 | "unlocked": "解锁", | 34 | "unlocked": "解锁", |
| 35 | "Only enable this if your model supports context sizes greater than 4096 tokens": "仅在您的模型支持大于4096个词符的上下文大小时启用此选项", | 35 | "Only enable this if your model supports context sizes greater than 8192 tokens": "仅在您的模型支持大于8192个词符的上下文大小时启用此选项", |
| 36 | "Max prompt cost:": "最大提示词费用:", | 36 | "Max prompt cost:": "最大提示词费用:", |
| 37 | "Display the response bit by bit as it is generated.": "随着回复的生成,逐位显示结果。", | 37 | "Display the response bit by bit as it is generated.": "随着回复的生成,逐位显示结果。", |
| 38 | "When this is off, responses will be displayed all at once when they are complete.": "当此选项关闭时,回复将在完成后一次性显示。", | 38 | "When this is off, responses will be displayed all at once when they are complete.": "当此选项关闭时,回复将在完成后一次性显示。", |
| @@ -1305,6 +1305,7 @@ | |||
| 1305 | "ext_sum_current_summary": "当前摘要:", | 1305 | "ext_sum_current_summary": "当前摘要:", |
| 1306 | "ext_sum_restore_previous": "恢复上一个", | 1306 | "ext_sum_restore_previous": "恢复上一个", |
| 1307 | "ext_sum_memory_placeholder": "摘要将在这里生成...", | 1307 | "ext_sum_memory_placeholder": "摘要将在这里生成...", |
| 1308 | "ext_sum_restore_tip": "恢复先前的摘要;重复使用以清除此聊天的摘要状态", | ||
| 1308 | "ext_sum_force_tip": "立即触发摘要更新。", | 1309 | "ext_sum_force_tip": "立即触发摘要更新。", |
| 1309 | "ext_sum_force_text": "现在总结", | 1310 | "ext_sum_force_text": "现在总结", |
| 1310 | "Disable automatic summary updates. While paused, the summary remains as-is. You can still force an update by pressing the Summarize now button (which is only available with the Main API).": "禁用自动摘要更新。暂停时,摘要保持原样。您仍然可以通过按“立即汇总”按钮(仅适用于主 API)强制更新。", | 1311 | "Disable automatic summary updates. While paused, the summary remains as-is. You can still force an update by pressing the Summarize now button (which is only available with the Main API).": "禁用自动摘要更新。暂停时,摘要保持原样。您仍然可以通过按“立即汇总”按钮(仅适用于主 API)强制更新。", |
| @@ -32,7 +32,7 @@ | |||
| 32 | "Streaming_desc": "生成時逐位顯示回應。當此功能關閉時,回應將在完成後一次顯示。", | 32 | "Streaming_desc": "生成時逐位顯示回應。當此功能關閉時,回應將在完成後一次顯示。", |
| 33 | "context size(tokens)": "上下文大小(符記數)", | 33 | "context size(tokens)": "上下文大小(符記數)", |
| 34 | "unlocked": "解鎖", | 34 | "unlocked": "解鎖", |
| 35 | "Only enable this if your model supports context sizes greater than 4096 tokens": "僅在您的模型支援超過4096個符記的上下文大小時啟用此功能", | 35 | "Only enable this if your model supports context sizes greater than 8192 tokens": "僅在您的模型支援超過8192個符記的上下文大小時啟用此功能", |
| 36 | "Max prompt cost:": "最多提示詞費用", | 36 | "Max prompt cost:": "最多提示詞費用", |
| 37 | "Display the response bit by bit as it is generated.": "生成時逐位顯示回應。", | 37 | "Display the response bit by bit as it is generated.": "生成時逐位顯示回應。", |
| 38 | "When this is off, responses will be displayed all at once when they are complete.": "關閉時,回應將在完成後一次性顯示。", | 38 | "When this is off, responses will be displayed all at once when they are complete.": "關閉時,回應將在完成後一次性顯示。", |
| @@ -1,4 +1,4 @@ | |||
| 1 | import { humanizedDateTime, favsToHotswap, getMessageTimeStamp, dragElement, isMobile, initRossMods, shouldSendOnEnter } from './scripts/RossAscends-mods.js'; | 1 | import { humanizedDateTime, favsToHotswap, getMessageTimeStamp, dragElement, isMobile, initRossMods, shouldSendOnEnter, addSafariPatch } from './scripts/RossAscends-mods.js'; |
| 2 | import { userStatsHandler, statMesProcess, initStats } from './scripts/stats.js'; | 2 | import { userStatsHandler, statMesProcess, initStats } from './scripts/stats.js'; |
| 3 | import { | 3 | import { |
| 4 | generateKoboldWithStreaming, | 4 | generateKoboldWithStreaming, |
| @@ -78,12 +78,11 @@ import { | |||
| 78 | renderStoryString, | 78 | renderStoryString, |
| 79 | sortEntitiesList, | 79 | sortEntitiesList, |
| 80 | registerDebugFunction, | 80 | registerDebugFunction, |
| 81 | ui_mode, | ||
| 82 | switchSimpleMode, | ||
| 83 | flushEphemeralStoppingStrings, | 81 | flushEphemeralStoppingStrings, |
| 84 | context_presets, | 82 | context_presets, |
| 85 | resetMovableStyles, | 83 | resetMovableStyles, |
| 86 | forceCharacterEditorTokenize, | 84 | forceCharacterEditorTokenize, |
| 85 | applyPowerUserSettings, | ||
| 87 | } from './scripts/power-user.js'; | 86 | } from './scripts/power-user.js'; |
| 88 | 87 | ||
| 89 | import { | 88 | import { |
| @@ -101,7 +100,7 @@ import { | |||
| 101 | proxies, | 100 | proxies, |
| 102 | loadProxyPresets, | 101 | loadProxyPresets, |
| 103 | selected_proxy, | 102 | selected_proxy, |
| 104 | initOpenai, | 103 | initOpenAI, |
| 105 | } from './scripts/openai.js'; | 104 | } from './scripts/openai.js'; |
| 106 | 105 | ||
| 107 | import { | 106 | import { |
| @@ -118,9 +117,9 @@ import { | |||
| 118 | } from './scripts/nai-settings.js'; | 117 | } from './scripts/nai-settings.js'; |
| 119 | 118 | ||
| 120 | import { | 119 | import { |
| 121 | createNewBookmark, | 120 | initBookmarks, |
| 122 | showBookmarksButtons, | 121 | showBookmarksButtons, |
| 123 | createBranch, | 122 | updateBookmarkDisplay, |
| 124 | } from './scripts/bookmarks.js'; | 123 | } from './scripts/bookmarks.js'; |
| 125 | 124 | ||
| 126 | import { | 125 | import { |
| @@ -212,7 +211,7 @@ import { | |||
| 212 | selectContextPreset, | 211 | selectContextPreset, |
| 213 | } from './scripts/instruct-mode.js'; | 212 | } from './scripts/instruct-mode.js'; |
| 214 | import { initLocales, t, translate } from './scripts/i18n.js'; | 213 | import { initLocales, t, translate } from './scripts/i18n.js'; |
| 215 | import { getFriendlyTokenizerName, getTokenCount, getTokenCountAsync, getTokenizerModel, initTokenizers, saveTokenCache } from './scripts/tokenizers.js'; | 214 | import { getFriendlyTokenizerName, getTokenCount, getTokenCountAsync, getTokenizerModel, initTokenizers, saveTokenCache, TOKENIZER_SUPPORTED_KEY } from './scripts/tokenizers.js'; |
| 216 | import { | 215 | import { |
| 217 | user_avatar, | 216 | user_avatar, |
| 218 | getUserAvatars, | 217 | getUserAvatars, |
| @@ -225,8 +224,8 @@ import { | |||
| 225 | import { getBackgrounds, initBackgrounds, loadBackgroundSettings, background_settings } from './scripts/backgrounds.js'; | 224 | import { getBackgrounds, initBackgrounds, loadBackgroundSettings, background_settings } from './scripts/backgrounds.js'; |
| 226 | import { hideLoader, showLoader } from './scripts/loader.js'; | 225 | import { hideLoader, showLoader } from './scripts/loader.js'; |
| 227 | import { BulkEditOverlay, CharacterContextMenu } from './scripts/BulkEditOverlay.js'; | 226 | import { BulkEditOverlay, CharacterContextMenu } from './scripts/BulkEditOverlay.js'; |
| 228 | import { loadFeatherlessModels, loadMancerModels, loadOllamaModels, loadTogetherAIModels, loadInfermaticAIModels, loadOpenRouterModels, loadVllmModels, loadAphroditeModels, loadDreamGenModels, initTextGenModels } from './scripts/textgen-models.js'; | 227 | import { loadFeatherlessModels, loadMancerModels, loadOllamaModels, loadTogetherAIModels, loadInfermaticAIModels, loadOpenRouterModels, loadVllmModels, loadAphroditeModels, loadDreamGenModels, initTextGenModels, loadTabbyModels } from './scripts/textgen-models.js'; |
| 229 | import { appendFileContent, hasPendingFileAttachment, populateFileAttachment, decodeStyleTags, encodeStyleTags, isExternalMediaAllowed, getCurrentEntityId } from './scripts/chats.js'; | 228 | import { appendFileContent, hasPendingFileAttachment, populateFileAttachment, decodeStyleTags, encodeStyleTags, isExternalMediaAllowed, getCurrentEntityId, preserveNeutralChat, restoreNeutralChat } from './scripts/chats.js'; |
| 230 | import { initPresetManager } from './scripts/preset-manager.js'; | 229 | import { initPresetManager } from './scripts/preset-manager.js'; |
| 231 | import { MacrosParser, evaluateMacros, getLastMessageId } from './scripts/macros.js'; | 230 | import { MacrosParser, evaluateMacros, getLastMessageId } from './scripts/macros.js'; |
| 232 | import { currentUser, setUserControls } from './scripts/user.js'; | 231 | import { currentUser, setUserControls } from './scripts/user.js'; |
| @@ -243,6 +242,9 @@ import { INTERACTABLE_CONTROL_CLASS, initKeyboard } from './scripts/keyboard.js' | |||
| 243 | import { initDynamicStyles } from './scripts/dynamic-styles.js'; | 242 | import { initDynamicStyles } from './scripts/dynamic-styles.js'; |
| 244 | import { SlashCommandEnumValue, enumTypes } from './scripts/slash-commands/SlashCommandEnumValue.js'; | 243 | import { SlashCommandEnumValue, enumTypes } from './scripts/slash-commands/SlashCommandEnumValue.js'; |
| 245 | import { commonEnumProviders, enumIcons } from './scripts/slash-commands/SlashCommandCommonEnumsProvider.js'; | 244 | import { commonEnumProviders, enumIcons } from './scripts/slash-commands/SlashCommandCommonEnumsProvider.js'; |
| 245 | import { initInputMarkdown } from './scripts/input-md-formatting.js'; | ||
| 246 | import { AbortReason } from './scripts/util/AbortReason.js'; | ||
| 247 | import { initSystemPrompts } from './scripts/sysprompt.js'; | ||
| 246 | 248 | ||
| 247 | //exporting functions and vars for mods | 249 | //exporting functions and vars for mods |
| 248 | export { | 250 | export { |
| @@ -411,10 +413,12 @@ export const event_types = { | |||
| 411 | MESSAGE_FILE_EMBEDDED: 'message_file_embedded', | 413 | MESSAGE_FILE_EMBEDDED: 'message_file_embedded', |
| 412 | IMPERSONATE_READY: 'impersonate_ready', | 414 | IMPERSONATE_READY: 'impersonate_ready', |
| 413 | CHAT_CHANGED: 'chat_id_changed', | 415 | CHAT_CHANGED: 'chat_id_changed', |
| 416 | GENERATION_AFTER_COMMANDS: 'GENERATION_AFTER_COMMANDS', | ||
| 414 | GENERATION_STARTED: 'generation_started', | 417 | GENERATION_STARTED: 'generation_started', |
| 415 | GENERATION_STOPPED: 'generation_stopped', | 418 | GENERATION_STOPPED: 'generation_stopped', |
| 416 | GENERATION_ENDED: 'generation_ended', | 419 | GENERATION_ENDED: 'generation_ended', |
| 417 | EXTENSIONS_FIRST_LOAD: 'extensions_first_load', | 420 | EXTENSIONS_FIRST_LOAD: 'extensions_first_load', |
| 421 | EXTENSION_SETTINGS_LOADED: 'extension_settings_loaded', | ||
| 418 | SETTINGS_LOADED: 'settings_loaded', | 422 | SETTINGS_LOADED: 'settings_loaded', |
| 419 | SETTINGS_UPDATED: 'settings_updated', | 423 | SETTINGS_UPDATED: 'settings_updated', |
| 420 | GROUP_UPDATED: 'group_updated', | 424 | GROUP_UPDATED: 'group_updated', |
| @@ -452,7 +456,9 @@ export const event_types = { | |||
| 452 | // TODO: Naming convention is inconsistent with other events | 456 | // TODO: Naming convention is inconsistent with other events |
| 453 | CHARACTER_DELETED: 'characterDeleted', | 457 | CHARACTER_DELETED: 'characterDeleted', |
| 454 | CHARACTER_DUPLICATED: 'character_duplicated', | 458 | CHARACTER_DUPLICATED: 'character_duplicated', |
| 455 | SMOOTH_STREAM_TOKEN_RECEIVED: 'smooth_stream_token_received', | 459 | /** @deprecated The event is aliased to STREAM_TOKEN_RECEIVED. */ |
| 460 | SMOOTH_STREAM_TOKEN_RECEIVED: 'stream_token_received', | ||
| 461 | STREAM_TOKEN_RECEIVED: 'stream_token_received', | ||
| 456 | FILE_ATTACHMENT_DELETED: 'file_attachment_deleted', | 462 | FILE_ATTACHMENT_DELETED: 'file_attachment_deleted', |
| 457 | WORLDINFO_FORCE_ACTIVATE: 'worldinfo_force_activate', | 463 | WORLDINFO_FORCE_ACTIVATE: 'worldinfo_force_activate', |
| 458 | OPEN_CHARACTER_LIBRARY: 'open_character_library', | 464 | OPEN_CHARACTER_LIBRARY: 'open_character_library', |
| @@ -460,6 +466,7 @@ export const event_types = { | |||
| 460 | LLM_FUNCTION_TOOL_CALL: 'llm_function_tool_call', | 466 | LLM_FUNCTION_TOOL_CALL: 'llm_function_tool_call', |
| 461 | ONLINE_STATUS_CHANGED: 'online_status_changed', | 467 | ONLINE_STATUS_CHANGED: 'online_status_changed', |
| 462 | IMAGE_SWIPED: 'image_swiped', | 468 | IMAGE_SWIPED: 'image_swiped', |
| 469 | CONNECTION_PROFILE_LOADED: 'connection_profile_loaded', | ||
| 463 | }; | 470 | }; |
| 464 | 471 | ||
| 465 | export const eventSource = new EventEmitter(); | 472 | export const eventSource = new EventEmitter(); |
| @@ -482,18 +489,11 @@ const promptStorage = new localforage.createInstance({ name: 'SillyTavern_Prompt | |||
| 482 | export let itemizedPrompts = []; | 489 | export let itemizedPrompts = []; |
| 483 | 490 | ||
| 484 | export const systemUserName = 'SillyTavern System'; | 491 | export const systemUserName = 'SillyTavern System'; |
| 492 | export const neutralCharacterName = 'Assistant'; | ||
| 485 | let default_user_name = 'User'; | 493 | let default_user_name = 'User'; |
| 486 | export let name1 = default_user_name; | 494 | export let name1 = default_user_name; |
| 487 | export let name2 = 'SillyTavern System'; | 495 | export let name2 = systemUserName; |
| 488 | export let chat = []; | 496 | export let chat = []; |
| 489 | let safetychat = [ | ||
| 490 | { | ||
| 491 | name: systemUserName, | ||
| 492 | is_user: false, | ||
| 493 | create_date: 0, | ||
| 494 | mes: 'You deleted a character/chat and arrived back here for safety reasons! Pick another character!', | ||
| 495 | }, | ||
| 496 | ]; | ||
| 497 | let chatSaveTimeout; | 497 | let chatSaveTimeout; |
| 498 | let importFlashTimeout; | 498 | let importFlashTimeout; |
| 499 | export let isChatSaving = false; | 499 | export let isChatSaving = false; |
| @@ -512,6 +512,7 @@ let saveCharactersPage = 0; | |||
| 512 | export const default_avatar = 'img/ai4.png'; | 512 | export const default_avatar = 'img/ai4.png'; |
| 513 | export const system_avatar = 'img/five.png'; | 513 | export const system_avatar = 'img/five.png'; |
| 514 | export const comment_avatar = 'img/quill.png'; | 514 | export const comment_avatar = 'img/quill.png'; |
| 515 | export const default_user_avatar = 'img/user-default.png'; | ||
| 515 | export let CLIENT_VERSION = 'SillyTavern:UNKNOWN:Cohee#1207'; // For Horde header | 516 | export let CLIENT_VERSION = 'SillyTavern:UNKNOWN:Cohee#1207'; // For Horde header |
| 516 | let optionsPopper = Popper.createPopper(document.getElementById('options_button'), document.getElementById('options'), { | 517 | let optionsPopper = Popper.createPopper(document.getElementById('options_button'), document.getElementById('options'), { |
| 517 | placement: 'top-start', | 518 | placement: 'top-start', |
| @@ -561,14 +562,14 @@ export const system_message_types = { | |||
| 561 | GROUP: 'group', | 562 | GROUP: 'group', |
| 562 | EMPTY: 'empty', | 563 | EMPTY: 'empty', |
| 563 | GENERIC: 'generic', | 564 | GENERIC: 'generic', |
| 564 | BOOKMARK_CREATED: 'bookmark_created', | ||
| 565 | BOOKMARK_BACK: 'bookmark_back', | ||
| 566 | NARRATOR: 'narrator', | 565 | NARRATOR: 'narrator', |
| 567 | COMMENT: 'comment', | 566 | COMMENT: 'comment', |
| 568 | SLASH_COMMANDS: 'slash_commands', | 567 | SLASH_COMMANDS: 'slash_commands', |
| 569 | FORMATTING: 'formatting', | 568 | FORMATTING: 'formatting', |
| 570 | HOTKEYS: 'hotkeys', | 569 | HOTKEYS: 'hotkeys', |
| 571 | MACROS: 'macros', | 570 | MACROS: 'macros', |
| 571 | WELCOME_PROMPT: 'welcome_prompt', | ||
| 572 | ASSISTANT_NOTE: 'assistant_note', | ||
| 572 | }; | 573 | }; |
| 573 | 574 | ||
| 574 | /** | 575 | /** |
| @@ -592,6 +593,17 @@ export const extension_prompt_roles = { | |||
| 592 | 593 | ||
| 593 | export const MAX_INJECTION_DEPTH = 1000; | 594 | export const MAX_INJECTION_DEPTH = 1000; |
| 594 | 595 | ||
| 596 | const SAFETY_CHAT = [ | ||
| 597 | { | ||
| 598 | name: systemUserName, | ||
| 599 | force_avatar: system_avatar, | ||
| 600 | is_system: true, | ||
| 601 | is_user: false, | ||
| 602 | create_date: 0, | ||
| 603 | mes: 'You deleted a character/chat and arrived back here for safety reasons! Pick another character!', | ||
| 604 | }, | ||
| 605 | ]; | ||
| 606 | |||
| 595 | export let system_messages = {}; | 607 | export let system_messages = {}; |
| 596 | 608 | ||
| 597 | async function getSystemMessages() { | 609 | async function getSystemMessages() { |
| @@ -661,19 +673,25 @@ async function getSystemMessages() { | |||
| 661 | is_system: true, | 673 | is_system: true, |
| 662 | mes: 'Generic system message. User `text` parameter to override the contents', | 674 | mes: 'Generic system message. User `text` parameter to override the contents', |
| 663 | }, | 675 | }, |
| 664 | bookmark_created: { | 676 | welcome_prompt: { |
| 665 | name: systemUserName, | 677 | name: systemUserName, |
| 666 | force_avatar: system_avatar, | 678 | force_avatar: system_avatar, |
| 667 | is_user: false, | 679 | is_user: false, |
| 668 | is_system: true, | 680 | is_system: true, |
| 669 | mes: 'Checkpoint created! Click here to open the checkpoint chat: <a class="bookmark_link" file_name="{0}" href="javascript:void(null);">{1}</a>', | 681 | mes: await renderTemplateAsync('welcomePrompt'), |
| 682 | extra: { | ||
| 683 | isSmallSys: true, | ||
| 684 | }, | ||
| 670 | }, | 685 | }, |
| 671 | bookmark_back: { | 686 | assistant_note: { |
| 672 | name: systemUserName, | 687 | name: systemUserName, |
| 673 | force_avatar: system_avatar, | 688 | force_avatar: system_avatar, |
| 674 | is_user: false, | 689 | is_user: false, |
| 675 | is_system: true, | 690 | is_system: true, |
| 676 | mes: 'Click here to return to the previous chat: <a class="bookmark_link" file_name="{0}" href="javascript:void(null);">Return</a>', | 691 | mes: await renderTemplateAsync('assistantNote'), |
| 692 | extra: { | ||
| 693 | isSmallSys: true, | ||
| 694 | }, | ||
| 677 | }, | 695 | }, |
| 678 | }; | 696 | }; |
| 679 | } | 697 | } |
| @@ -851,7 +869,6 @@ let abortController; | |||
| 851 | 869 | ||
| 852 | //css | 870 | //css |
| 853 | var css_send_form_display = $('<div id=send_form></div>').css('display'); | 871 | var css_send_form_display = $('<div id=send_form></div>').css('display'); |
| 854 | const MAX_GENERATION_LOOPS = 5; | ||
| 855 | 872 | ||
| 856 | var kobold_horde_model = ''; | 873 | var kobold_horde_model = ''; |
| 857 | 874 | ||
| @@ -911,23 +928,27 @@ async function firstLoadInit() { | |||
| 911 | throw new Error('Initialization failed'); | 928 | throw new Error('Initialization failed'); |
| 912 | } | 929 | } |
| 913 | 930 | ||
| 931 | addSafariPatch(); | ||
| 914 | await getClientVersion(); | 932 | await getClientVersion(); |
| 915 | await readSecretState(); | 933 | await readSecretState(); |
| 916 | initLocales(); | 934 | await initLocales(); |
| 917 | initDefaultSlashCommands(); | 935 | initDefaultSlashCommands(); |
| 918 | initTextGenModels(); | 936 | initTextGenModels(); |
| 937 | initOpenAI(); | ||
| 938 | initSystemPrompts(); | ||
| 939 | await initPresetManager(); | ||
| 919 | await getSystemMessages(); | 940 | await getSystemMessages(); |
| 920 | sendSystemMessage(system_message_types.WELCOME); | 941 | sendSystemMessage(system_message_types.WELCOME); |
| 942 | sendSystemMessage(system_message_types.WELCOME_PROMPT); | ||
| 921 | await getSettings(); | 943 | await getSettings(); |
| 922 | initKeyboard(); | 944 | initKeyboard(); |
| 923 | initDynamicStyles(); | 945 | initDynamicStyles(); |
| 924 | initTags(); | 946 | initTags(); |
| 925 | initOpenai(); | 947 | initBookmarks(); |
| 926 | await getUserAvatars(true, user_avatar); | 948 | await getUserAvatars(true, user_avatar); |
| 927 | await getCharacters(); | 949 | await getCharacters(); |
| 928 | await getBackgrounds(); | 950 | await getBackgrounds(); |
| 929 | await initTokenizers(); | 951 | await initTokenizers(); |
| 930 | await initPresetManager(); | ||
| 931 | initBackgrounds(); | 952 | initBackgrounds(); |
| 932 | initAuthorsNote(); | 953 | initAuthorsNote(); |
| 933 | initPersonas(); | 954 | initPersonas(); |
| @@ -935,6 +956,7 @@ async function firstLoadInit() { | |||
| 935 | initStats(); | 956 | initStats(); |
| 936 | initCfg(); | 957 | initCfg(); |
| 937 | initLogprobs(); | 958 | initLogprobs(); |
| 959 | initInputMarkdown(); | ||
| 938 | doDailyExtensionUpdatesCheck(); | 960 | doDailyExtensionUpdatesCheck(); |
| 939 | await hideLoader(); | 961 | await hideLoader(); |
| 940 | await fixViewport(); | 962 | await fixViewport(); |
| @@ -947,8 +969,8 @@ async function fixViewport() { | |||
| 947 | document.body.style.position = ''; | 969 | document.body.style.position = ''; |
| 948 | } | 970 | } |
| 949 | 971 | ||
| 950 | function cancelStatusCheck() { | 972 | function cancelStatusCheck(reason = 'Manually cancelled status check') { |
| 951 | abortStatusCheck?.abort(); | 973 | abortStatusCheck?.abort(new AbortReason(reason)); |
| 952 | abortStatusCheck = new AbortController(); | 974 | abortStatusCheck = new AbortController(); |
| 953 | setOnlineStatus('no_connection'); | 975 | setOnlineStatus('no_connection'); |
| 954 | } | 976 | } |
| @@ -1148,7 +1170,7 @@ async function getStatusTextgen() { | |||
| 1148 | body: JSON.stringify({ | 1170 | body: JSON.stringify({ |
| 1149 | api_server: endpoint, | 1171 | api_server: endpoint, |
| 1150 | api_type: textgen_settings.type, | 1172 | api_type: textgen_settings.type, |
| 1151 | legacy_api: textgen_settings.legacy_api && (textgen_settings.type === OOBA || textgen_settings.type === APHRODITE), | 1173 | legacy_api: textgen_settings.legacy_api && textgen_settings.type === OOBA, |
| 1152 | }), | 1174 | }), |
| 1153 | signal: abortStatusCheck.signal, | 1175 | signal: abortStatusCheck.signal, |
| 1154 | }); | 1176 | }); |
| @@ -1182,6 +1204,9 @@ async function getStatusTextgen() { | |||
| 1182 | } else if (textgen_settings.type === FEATHERLESS) { | 1204 | } else if (textgen_settings.type === FEATHERLESS) { |
| 1183 | loadFeatherlessModels(data?.data); | 1205 | loadFeatherlessModels(data?.data); |
| 1184 | setOnlineStatus(textgen_settings.featherless_model); | 1206 | setOnlineStatus(textgen_settings.featherless_model); |
| 1207 | } else if (textgen_settings.type === TABBY) { | ||
| 1208 | loadTabbyModels(data?.data); | ||
| 1209 | setOnlineStatus(textgen_settings.tabby_model || data?.result); | ||
| 1185 | } else { | 1210 | } else { |
| 1186 | setOnlineStatus(data?.result); | 1211 | setOnlineStatus(data?.result); |
| 1187 | } | 1212 | } |
| @@ -1193,12 +1218,20 @@ async function getStatusTextgen() { | |||
| 1193 | // Determine instruct mode preset | 1218 | // Determine instruct mode preset |
| 1194 | autoSelectInstructPreset(online_status); | 1219 | autoSelectInstructPreset(online_status); |
| 1195 | 1220 | ||
| 1221 | const supportsTokenization = response.headers.get('x-supports-tokenization') === 'true'; | ||
| 1222 | supportsTokenization ? sessionStorage.setItem(TOKENIZER_SUPPORTED_KEY, 'true') : sessionStorage.removeItem(TOKENIZER_SUPPORTED_KEY); | ||
| 1223 | |||
| 1196 | // We didn't get a 200 status code, but the endpoint has an explanation. Which means it DID connect, but I digress. | 1224 | // We didn't get a 200 status code, but the endpoint has an explanation. Which means it DID connect, but I digress. |
| 1197 | if (online_status === 'no_connection' && data.response) { | 1225 | if (online_status === 'no_connection' && data.response) { |
| 1198 | toastr.error(data.response, 'API Error', { timeOut: 5000, preventDuplicates: true }); | 1226 | toastr.error(data.response, 'API Error', { timeOut: 5000, preventDuplicates: true }); |
| 1199 | } | 1227 | } |
| 1200 | } catch (err) { | 1228 | } catch (err) { |
| 1229 | if (err instanceof AbortReason) { | ||
| 1230 | console.info('Status check aborted.', err.reason); | ||
| 1231 | } else { | ||
| 1201 | console.error('Error getting status', err); | 1232 | console.error('Error getting status', err); |
| 1233 | |||
| 1234 | } | ||
| 1202 | setOnlineStatus('no_connection'); | 1235 | setOnlineStatus('no_connection'); |
| 1203 | } | 1236 | } |
| 1204 | 1237 | ||
| @@ -1820,6 +1853,7 @@ export async function deleteLastMessage() { | |||
| 1820 | } | 1853 | } |
| 1821 | 1854 | ||
| 1822 | export async function reloadCurrentChat() { | 1855 | export async function reloadCurrentChat() { |
| 1856 | preserveNeutralChat(); | ||
| 1823 | await clearChat(); | 1857 | await clearChat(); |
| 1824 | chat.length = 0; | 1858 | chat.length = 0; |
| 1825 | 1859 | ||
| @@ -1831,6 +1865,7 @@ export async function reloadCurrentChat() { | |||
| 1831 | } | 1865 | } |
| 1832 | else { | 1866 | else { |
| 1833 | resetChatState(); | 1867 | resetChatState(); |
| 1868 | restoreNeutralChat(); | ||
| 1834 | await getCharacters(); | 1869 | await getCharacters(); |
| 1835 | await printMessages(); | 1870 | await printMessages(); |
| 1836 | await eventSource.emit(event_types.CHAT_CHANGED, getCurrentChatId()); | 1871 | await eventSource.emit(event_types.CHAT_CHANGED, getCurrentChatId()); |
| @@ -1843,7 +1878,7 @@ export async function reloadCurrentChat() { | |||
| 1843 | /** | 1878 | /** |
| 1844 | * Send the message currently typed into the chat box. | 1879 | * Send the message currently typed into the chat box. |
| 1845 | */ | 1880 | */ |
| 1846 | export function sendTextareaMessage() { | 1881 | export async function sendTextareaMessage() { |
| 1847 | if (is_send_press) return; | 1882 | if (is_send_press) return; |
| 1848 | if (isExecutingCommandsFromChatInput) return; | 1883 | if (isExecutingCommandsFromChatInput) return; |
| 1849 | 1884 | ||
| @@ -1852,6 +1887,7 @@ export function sendTextareaMessage() { | |||
| 1852 | // message was sent from a character (not the user or the system). | 1887 | // message was sent from a character (not the user or the system). |
| 1853 | const textareaText = String($('#send_textarea').val()); | 1888 | const textareaText = String($('#send_textarea').val()); |
| 1854 | if (power_user.continue_on_send && | 1889 | if (power_user.continue_on_send && |
| 1890 | !hasPendingFileAttachment() && | ||
| 1855 | !textareaText && | 1891 | !textareaText && |
| 1856 | !selected_group && | 1892 | !selected_group && |
| 1857 | chat.length && | 1893 | chat.length && |
| @@ -1861,6 +1897,10 @@ export function sendTextareaMessage() { | |||
| 1861 | generateType = 'continue'; | 1897 | generateType = 'continue'; |
| 1862 | } | 1898 | } |
| 1863 | 1899 | ||
| 1900 | if (textareaText && !selected_group && this_chid === undefined && name2 !== neutralCharacterName) { | ||
| 1901 | await newAssistantChat(); | ||
| 1902 | } | ||
| 1903 | |||
| 1864 | Generate(generateType); | 1904 | Generate(generateType); |
| 1865 | } | 1905 | } |
| 1866 | 1906 | ||
| @@ -1940,9 +1980,7 @@ export function messageFormatting(mes, ch_name, isSystem, isUser, messageId) { | |||
| 1940 | mes = mes.replaceAll('<', '<').replaceAll('>', '>'); | 1980 | mes = mes.replaceAll('<', '<').replaceAll('>', '>'); |
| 1941 | } | 1981 | } |
| 1942 | 1982 | ||
| 1943 | if (this_chid === undefined && !selected_group) { | 1983 | if (!isSystem) { |
| 1944 | mes = mes.replace(/\*\*(.+?)\*\*/g, '<b>$1</b>'); | ||
| 1945 | } else if (!isSystem) { | ||
| 1946 | // Save double quotes in tags as a special character to prevent them from being encoded | 1984 | // Save double quotes in tags as a special character to prevent them from being encoded |
| 1947 | if (!power_user.encode_tags) { | 1985 | if (!power_user.encode_tags) { |
| 1948 | mes = mes.replace(/<([^>]+)>/g, function (_, contents) { | 1986 | mes = mes.replace(/<([^>]+)>/g, function (_, contents) { |
| @@ -1981,13 +2019,6 @@ export function messageFormatting(mes, ch_name, isSystem, isUser, messageId) { | |||
| 1981 | }); | 2019 | }); |
| 1982 | } | 2020 | } |
| 1983 | 2021 | ||
| 1984 | /* | ||
| 1985 | // Hides bias from empty messages send with slash commands | ||
| 1986 | if (isSystem) { | ||
| 1987 | mes = mes.replace(/\{\{[\s\S]*?\}\}/gm, ""); | ||
| 1988 | } | ||
| 1989 | */ | ||
| 1990 | |||
| 1991 | if (!power_user.allow_name2_display && ch_name && !isUser && !isSystem) { | 2022 | if (!power_user.allow_name2_display && ch_name && !isUser && !isSystem) { |
| 1992 | mes = mes.replace(new RegExp(`(^|\n)${escapeRegex(ch_name)}:`, 'g'), '$1'); | 2023 | mes = mes.replace(new RegExp(`(^|\n)${escapeRegex(ch_name)}:`, 'g'), '$1'); |
| 1993 | } | 2024 | } |
| @@ -2093,6 +2124,7 @@ function getMessageFromTemplate({ | |||
| 2093 | tokenCount && mes.find('.tokenCounterDisplay').text(`${tokenCount}t`); | 2124 | tokenCount && mes.find('.tokenCounterDisplay').text(`${tokenCount}t`); |
| 2094 | title && mes.attr('title', title); | 2125 | title && mes.attr('title', title); |
| 2095 | timerValue && mes.find('.mes_timer').attr('title', timerTitle).text(timerValue); | 2126 | timerValue && mes.find('.mes_timer').attr('title', timerTitle).text(timerValue); |
| 2127 | bookmarkLink && updateBookmarkDisplay(mes); | ||
| 2096 | 2128 | ||
| 2097 | if (power_user.timestamp_model_icon && extra?.api) { | 2129 | if (power_user.timestamp_model_icon && extra?.api) { |
| 2098 | insertSVGIcon(mes, extra); | 2130 | insertSVGIcon(mes, extra); |
| @@ -2190,7 +2222,7 @@ export function addCopyToCodeBlocks(messageElement) { | |||
| 2190 | codeBlocks.get(i).appendChild(copyButton); | 2222 | codeBlocks.get(i).appendChild(copyButton); |
| 2191 | copyButton.addEventListener('pointerup', function (event) { | 2223 | copyButton.addEventListener('pointerup', function (event) { |
| 2192 | navigator.clipboard.writeText(codeBlocks.get(i).innerText); | 2224 | navigator.clipboard.writeText(codeBlocks.get(i).innerText); |
| 2193 | toastr.info('Copied!', '', { timeOut: 2000 }); | 2225 | toastr.info(t`Copied!`, '', { timeOut: 2000 }); |
| 2194 | }); | 2226 | }); |
| 2195 | } | 2227 | } |
| 2196 | } | 2228 | } |
| @@ -2703,7 +2735,7 @@ function addPersonaDescriptionExtensionPrompt() { | |||
| 2703 | const INJECT_TAG = 'PERSONA_DESCRIPTION'; | 2735 | const INJECT_TAG = 'PERSONA_DESCRIPTION'; |
| 2704 | setExtensionPrompt(INJECT_TAG, '', extension_prompt_types.IN_PROMPT, 0); | 2736 | setExtensionPrompt(INJECT_TAG, '', extension_prompt_types.IN_PROMPT, 0); |
| 2705 | 2737 | ||
| 2706 | if (!power_user.persona_description) { | 2738 | if (!power_user.persona_description || power_user.persona_description_position === persona_description_positions.NONE) { |
| 2707 | return; | 2739 | return; |
| 2708 | } | 2740 | } |
| 2709 | 2741 | ||
| @@ -2793,21 +2825,22 @@ export function baseChatReplace(value, name1, name2) { | |||
| 2793 | */ | 2825 | */ |
| 2794 | export function getCharacterCardFields() { | 2826 | export function getCharacterCardFields() { |
| 2795 | const result = { system: '', mesExamples: '', description: '', personality: '', persona: '', scenario: '', jailbreak: '', version: '' }; | 2827 | const result = { system: '', mesExamples: '', description: '', personality: '', persona: '', scenario: '', jailbreak: '', version: '' }; |
| 2828 | result.persona = baseChatReplace(power_user.persona_description?.trim(), name1, name2); | ||
| 2829 | |||
| 2796 | const character = characters[this_chid]; | 2830 | const character = characters[this_chid]; |
| 2797 | 2831 | ||
| 2798 | if (!character) { | 2832 | if (!character) { |
| 2799 | return result; | 2833 | return result; |
| 2800 | } | 2834 | } |
| 2801 | 2835 | ||
| 2802 | const scenarioText = chat_metadata['scenario'] || characters[this_chid]?.scenario; | 2836 | const scenarioText = chat_metadata['scenario'] || character.scenario || ''; |
| 2803 | result.description = baseChatReplace(characters[this_chid].description?.trim(), name1, name2); | 2837 | result.description = baseChatReplace(character.description?.trim(), name1, name2); |
| 2804 | result.personality = baseChatReplace(characters[this_chid].personality?.trim(), name1, name2); | 2838 | result.personality = baseChatReplace(character.personality?.trim(), name1, name2); |
| 2805 | result.scenario = baseChatReplace(scenarioText.trim(), name1, name2); | 2839 | result.scenario = baseChatReplace(scenarioText.trim(), name1, name2); |
| 2806 | result.mesExamples = baseChatReplace(characters[this_chid].mes_example?.trim(), name1, name2); | 2840 | result.mesExamples = baseChatReplace(character.mes_example?.trim(), name1, name2); |
| 2807 | result.persona = baseChatReplace(power_user.persona_description?.trim(), name1, name2); | 2841 | result.system = power_user.prefer_character_prompt ? baseChatReplace(character.data?.system_prompt?.trim(), name1, name2) : ''; |
| 2808 | result.system = power_user.prefer_character_prompt ? baseChatReplace(characters[this_chid].data?.system_prompt?.trim(), name1, name2) : ''; | 2842 | result.jailbreak = power_user.prefer_character_jailbreak ? baseChatReplace(character.data?.post_history_instructions?.trim(), name1, name2) : ''; |
| 2809 | result.jailbreak = power_user.prefer_character_jailbreak ? baseChatReplace(characters[this_chid].data?.post_history_instructions?.trim(), name1, name2) : ''; | 2843 | result.version = character.data?.character_version ?? ''; |
| 2810 | result.version = characters[this_chid].data?.character_version ?? ''; | ||
| 2811 | 2844 | ||
| 2812 | if (selected_group) { | 2845 | if (selected_group) { |
| 2813 | const groupCards = getGroupCharacterCards(selected_group, Number(this_chid)); | 2846 | const groupCards = getGroupCharacterCards(selected_group, Number(this_chid)); |
| @@ -2824,8 +2857,13 @@ export function getCharacterCardFields() { | |||
| 2824 | } | 2857 | } |
| 2825 | 2858 | ||
| 2826 | export function isStreamingEnabled() { | 2859 | export function isStreamingEnabled() { |
| 2827 | const noStreamSources = [chat_completion_sources.SCALE, chat_completion_sources.AI21]; | 2860 | const noStreamSources = [chat_completion_sources.SCALE]; |
| 2828 | return ((main_api == 'openai' && oai_settings.stream_openai && !noStreamSources.includes(oai_settings.chat_completion_source) && !(oai_settings.chat_completion_source == chat_completion_sources.MAKERSUITE && oai_settings.google_model.includes('bison'))) | 2861 | return ( |
| 2862 | (main_api == 'openai' && | ||
| 2863 | oai_settings.stream_openai && | ||
| 2864 | !noStreamSources.includes(oai_settings.chat_completion_source) && | ||
| 2865 | !(oai_settings.chat_completion_source == chat_completion_sources.OPENAI && oai_settings.openai_model.startsWith('o1-')) && | ||
| 2866 | !(oai_settings.chat_completion_source == chat_completion_sources.MAKERSUITE && oai_settings.google_model.includes('bison'))) | ||
| 2829 | || (main_api == 'kobold' && kai_settings.streaming_kobold && kai_flags.can_use_streaming) | 2867 | || (main_api == 'kobold' && kai_settings.streaming_kobold && kai_flags.can_use_streaming) |
| 2830 | || (main_api == 'novel' && nai_settings.streaming_novel) | 2868 | || (main_api == 'novel' && nai_settings.streaming_novel) |
| 2831 | || (main_api == 'textgenerationwebui' && textgen_settings.streaming)); | 2869 | || (main_api == 'textgenerationwebui' && textgen_settings.streaming)); |
| @@ -3068,6 +3106,12 @@ class StreamingProcessor { | |||
| 3068 | this.hideMessageButtons(this.messageId); | 3106 | this.hideMessageButtons(this.messageId); |
| 3069 | generatedPromptCache = ''; | 3107 | generatedPromptCache = ''; |
| 3070 | unblockGeneration(); | 3108 | unblockGeneration(); |
| 3109 | |||
| 3110 | const noEmitTypes = ['swipe', 'impersonate', 'continue']; | ||
| 3111 | if (!noEmitTypes.includes(this.type)) { | ||
| 3112 | eventSource.emit(event_types.MESSAGE_RECEIVED, this.messageId); | ||
| 3113 | eventSource.emit(event_types.CHARACTER_MESSAGE_RENDERED, this.messageId); | ||
| 3114 | } | ||
| 3071 | } | 3115 | } |
| 3072 | 3116 | ||
| 3073 | setFirstSwipe(messageId) { | 3117 | setFirstSwipe(messageId) { |
| @@ -3117,6 +3161,7 @@ class StreamingProcessor { | |||
| 3117 | if (logprobs) { | 3161 | if (logprobs) { |
| 3118 | this.messageLogprobs.push(...(Array.isArray(logprobs) ? logprobs : [logprobs])); | 3162 | this.messageLogprobs.push(...(Array.isArray(logprobs) ? logprobs : [logprobs])); |
| 3119 | } | 3163 | } |
| 3164 | await eventSource.emit(event_types.STREAM_TOKEN_RECEIVED, text); | ||
| 3120 | await sw.tick(() => this.onProgressStreaming(this.messageId, this.continueMessage + text)); | 3165 | await sw.tick(() => this.onProgressStreaming(this.messageId, this.continueMessage + text)); |
| 3121 | } | 3166 | } |
| 3122 | const seconds = (timestamps[timestamps.length - 1] - timestamps[0]) / 1000; | 3167 | const seconds = (timestamps[timestamps.length - 1] - timestamps[0]) / 1000; |
| @@ -3221,7 +3266,7 @@ export async function generateRaw(prompt, api, instructOverride, quietToLoud, sy | |||
| 3221 | } | 3266 | } |
| 3222 | 3267 | ||
| 3223 | if (data.error) { | 3268 | if (data.error) { |
| 3224 | throw new Error(data.error); | 3269 | throw new Error(data.response); |
| 3225 | } | 3270 | } |
| 3226 | 3271 | ||
| 3227 | const message = cleanUpMessage(extractMessageFromData(data), false, false, true); | 3272 | const message = cleanUpMessage(extractMessageFromData(data), false, false, true); |
| @@ -3293,14 +3338,16 @@ function removeLastMessage() { | |||
| 3293 | * @param {GenerateOptions} options Generation options | 3338 | * @param {GenerateOptions} options Generation options |
| 3294 | * @param {boolean} dryRun Whether to actually generate a message or just assemble the prompt | 3339 | * @param {boolean} dryRun Whether to actually generate a message or just assemble the prompt |
| 3295 | * @returns {Promise<any>} Returns a promise that resolves when the text is done generating. | 3340 | * @returns {Promise<any>} Returns a promise that resolves when the text is done generating. |
| 3296 | * @typedef {{automatic_trigger?: boolean, force_name2?: boolean, quiet_prompt?: string, quietToLoud?: boolean, skipWIAN?: boolean, force_chid?: number, signal?: AbortSignal, quietImage?: string, maxLoops?: number, quietName?: string }} GenerateOptions | 3341 | * @typedef {{automatic_trigger?: boolean, force_name2?: boolean, quiet_prompt?: string, quietToLoud?: boolean, skipWIAN?: boolean, force_chid?: number, signal?: AbortSignal, quietImage?: string, quietName?: string }} GenerateOptions |
| 3297 | */ | 3342 | */ |
| 3298 | export async function Generate(type, { automatic_trigger, force_name2, quiet_prompt, quietToLoud, skipWIAN, force_chid, signal, quietImage, maxLoops, quietName } = {}, dryRun = false) { | 3343 | export async function Generate(type, { automatic_trigger, force_name2, quiet_prompt, quietToLoud, skipWIAN, force_chid, signal, quietImage, quietName } = {}, dryRun = false) { |
| 3299 | console.log('Generate entered'); | 3344 | console.log('Generate entered'); |
| 3300 | eventSource.emit(event_types.GENERATION_STARTED, type, { automatic_trigger, force_name2, quiet_prompt, quietToLoud, skipWIAN, force_chid, signal, quietImage, maxLoops }, dryRun); | ||
| 3301 | setGenerationProgress(0); | 3345 | setGenerationProgress(0); |
| 3302 | generation_started = new Date(); | 3346 | generation_started = new Date(); |
| 3303 | 3347 | ||
| 3348 | // Occurs every time, even if the generation is aborted due to slash commands execution | ||
| 3349 | await eventSource.emit(event_types.GENERATION_STARTED, type, { automatic_trigger, force_name2, quiet_prompt, quietToLoud, skipWIAN, force_chid, signal, quietImage }, dryRun); | ||
| 3350 | |||
| 3304 | // Don't recreate abort controller if signal is passed | 3351 | // Don't recreate abort controller if signal is passed |
| 3305 | if (!(abortController && signal)) { | 3352 | if (!(abortController && signal)) { |
| 3306 | abortController = new AbortController(); | 3353 | abortController = new AbortController(); |
| @@ -3320,6 +3367,9 @@ export async function Generate(type, { automatic_trigger, force_name2, quiet_pro | |||
| 3320 | } | 3367 | } |
| 3321 | } | 3368 | } |
| 3322 | 3369 | ||
| 3370 | // Occurs only if the generation is not aborted due to slash commands execution | ||
| 3371 | await eventSource.emit(event_types.GENERATION_AFTER_COMMANDS, type, { automatic_trigger, force_name2, quiet_prompt, quietToLoud, skipWIAN, force_chid, signal, quietImage }, dryRun); | ||
| 3372 | |||
| 3323 | if (main_api == 'kobold' && kai_settings.streaming_kobold && !kai_flags.can_use_streaming) { | 3373 | if (main_api == 'kobold' && kai_settings.streaming_kobold && !kai_flags.can_use_streaming) { |
| 3324 | toastr.error('Streaming is enabled, but the version of Kobold used does not support token streaming.', undefined, { timeOut: 10000, preventDuplicates: true }); | 3374 | toastr.error('Streaming is enabled, but the version of Kobold used does not support token streaming.', undefined, { timeOut: 10000, preventDuplicates: true }); |
| 3325 | unblockGeneration(type); | 3375 | unblockGeneration(type); |
| @@ -3329,7 +3379,7 @@ export async function Generate(type, { automatic_trigger, force_name2, quiet_pro | |||
| 3329 | if (main_api === 'textgenerationwebui' && | 3379 | if (main_api === 'textgenerationwebui' && |
| 3330 | textgen_settings.streaming && | 3380 | textgen_settings.streaming && |
| 3331 | textgen_settings.legacy_api && | 3381 | textgen_settings.legacy_api && |
| 3332 | (textgen_settings.type === OOBA || textgen_settings.type === APHRODITE)) { | 3382 | textgen_settings.type === OOBA) { |
| 3333 | toastr.error('Streaming is not supported for the Legacy API. Update Ooba and use new API to enable streaming.', undefined, { timeOut: 10000, preventDuplicates: true }); | 3383 | toastr.error('Streaming is not supported for the Legacy API. Update Ooba and use new API to enable streaming.', undefined, { timeOut: 10000, preventDuplicates: true }); |
| 3334 | unblockGeneration(type); | 3384 | unblockGeneration(type); |
| 3335 | return Promise.resolve(); | 3385 | return Promise.resolve(); |
| @@ -3359,7 +3409,7 @@ export async function Generate(type, { automatic_trigger, force_name2, quiet_pro | |||
| 3359 | if (selected_group && !is_group_generating) { | 3409 | if (selected_group && !is_group_generating) { |
| 3360 | if (!dryRun) { | 3410 | if (!dryRun) { |
| 3361 | // Returns the promise that generateGroupWrapper returns; resolves when generation is done | 3411 | // Returns the promise that generateGroupWrapper returns; resolves when generation is done |
| 3362 | return generateGroupWrapper(false, type, { quiet_prompt, force_chid, signal: abortController.signal, quietImage, maxLoops }); | 3412 | return generateGroupWrapper(false, type, { quiet_prompt, force_chid, signal: abortController.signal, quietImage }); |
| 3363 | } | 3413 | } |
| 3364 | 3414 | ||
| 3365 | const characterIndexMap = new Map(characters.map((char, index) => [char.avatar, index])); | 3415 | const characterIndexMap = new Map(characters.map((char, index) => [char.avatar, index])); |
| @@ -3377,7 +3427,7 @@ export async function Generate(type, { automatic_trigger, force_name2, quiet_pro | |||
| 3377 | .filter((index) => index !== undefined && index !== null); | 3427 | .filter((index) => index !== undefined && index !== null); |
| 3378 | 3428 | ||
| 3379 | if (memberIds.length > 0) { | 3429 | if (memberIds.length > 0) { |
| 3380 | setCharacterId(memberIds[0]); | 3430 | if (menu_type != 'character_edit') setCharacterId(memberIds[0]); |
| 3381 | setCharacterName(''); | 3431 | setCharacterName(''); |
| 3382 | } else { | 3432 | } else { |
| 3383 | console.log('No enabled members found'); | 3433 | console.log('No enabled members found'); |
| @@ -3393,14 +3443,11 @@ export async function Generate(type, { automatic_trigger, force_name2, quiet_pro | |||
| 3393 | quiet_prompt = main_api == 'novel' && !quietToLoud ? adjustNovelInstructionPrompt(quiet_prompt) : quiet_prompt; | 3443 | quiet_prompt = main_api == 'novel' && !quietToLoud ? adjustNovelInstructionPrompt(quiet_prompt) : quiet_prompt; |
| 3394 | } | 3444 | } |
| 3395 | 3445 | ||
| 3396 | const isChatValid = online_status !== 'no_connection' && this_chid !== undefined; | 3446 | const hasBackendConnection = online_status !== 'no_connection'; |
| 3397 | 3447 | ||
| 3398 | // We can't do anything because we're not in a chat right now. (Unless it's a dry run, in which case we need to | 3448 | // We can't do anything because we're not in a chat right now. (Unless it's a dry run, in which case we need to |
| 3399 | // assemble the prompt so we can count its tokens regardless of whether a chat is active.) | 3449 | // assemble the prompt so we can count its tokens regardless of whether a chat is active.) |
| 3400 | if (!dryRun && !isChatValid) { | 3450 | if (!dryRun && !hasBackendConnection) { |
| 3401 | if (this_chid === undefined) { | ||
| 3402 | toastr.warning('Сharacter is not selected'); | ||
| 3403 | } | ||
| 3404 | is_send_press = false; | 3451 | is_send_press = false; |
| 3405 | return Promise.resolve(); | 3452 | return Promise.resolve(); |
| 3406 | } | 3453 | } |
| @@ -3446,8 +3493,17 @@ export async function Generate(type, { automatic_trigger, force_name2, quiet_pro | |||
| 3446 | //PRE FORMATING STRING | 3493 | //PRE FORMATING STRING |
| 3447 | //********************************* | 3494 | //********************************* |
| 3448 | 3495 | ||
| 3496 | // These generation types should not attach pending files to the chat | ||
| 3497 | const noAttachTypes = [ | ||
| 3498 | 'regenerate', | ||
| 3499 | 'swipe', | ||
| 3500 | 'impersonate', | ||
| 3501 | 'quiet', | ||
| 3502 | 'continue', | ||
| 3503 | 'ask_command', | ||
| 3504 | ]; | ||
| 3449 | //for normal messages sent from user.. | 3505 | //for normal messages sent from user.. |
| 3450 | if ((textareaText != '' || hasPendingFileAttachment()) && !automatic_trigger && type !== 'quiet' && !dryRun) { | 3506 | if ((textareaText != '' || (hasPendingFileAttachment() && !noAttachTypes.includes(type))) && !automatic_trigger && type !== 'quiet' && !dryRun) { |
| 3451 | // If user message contains no text other than bias - send as a system message | 3507 | // If user message contains no text other than bias - send as a system message |
| 3452 | if (messageBias && !removeMacros(textareaText)) { | 3508 | if (messageBias && !removeMacros(textareaText)) { |
| 3453 | sendSystemMessage(system_message_types.GENERIC, ' ', { bias: messageBias }); | 3509 | sendSystemMessage(system_message_types.GENERIC, ' ', { bias: messageBias }); |
| @@ -3471,9 +3527,14 @@ export async function Generate(type, { automatic_trigger, force_name2, quiet_pro | |||
| 3471 | jailbreak, | 3527 | jailbreak, |
| 3472 | } = getCharacterCardFields(); | 3528 | } = getCharacterCardFields(); |
| 3473 | 3529 | ||
| 3474 | if (isInstruct) { | 3530 | if (main_api !== 'openai') { |
| 3475 | system = power_user.prefer_character_prompt && system ? system : baseChatReplace(power_user.instruct.system_prompt, name1, name2); | 3531 | if (power_user.sysprompt.enabled) { |
| 3476 | system = formatInstructModeSystemPrompt(substituteParams(system, name1, name2, power_user.instruct.system_prompt)); | 3532 | system = power_user.prefer_character_prompt && system ? system : baseChatReplace(power_user.sysprompt.content, name1, name2); |
| 3533 | system = isInstruct ? formatInstructModeSystemPrompt(substituteParams(system, name1, name2, power_user.sysprompt.content)) : system; | ||
| 3534 | } else { | ||
| 3535 | // Nullify if it's not enabled | ||
| 3536 | system = ''; | ||
| 3537 | } | ||
| 3477 | } | 3538 | } |
| 3478 | 3539 | ||
| 3479 | // Depth prompt (character-specific A/N) | 3540 | // Depth prompt (character-specific A/N) |
| @@ -3486,9 +3547,9 @@ export async function Generate(type, { automatic_trigger, force_name2, quiet_pro | |||
| 3486 | setExtensionPrompt('DEPTH_PROMPT_' + index, value.text, extension_prompt_types.IN_CHAT, value.depth, extension_settings.note.allowWIScan, role); | 3547 | setExtensionPrompt('DEPTH_PROMPT_' + index, value.text, extension_prompt_types.IN_CHAT, value.depth, extension_settings.note.allowWIScan, role); |
| 3487 | }); | 3548 | }); |
| 3488 | } else { | 3549 | } else { |
| 3489 | const depthPromptText = baseChatReplace(characters[this_chid].data?.extensions?.depth_prompt?.prompt?.trim(), name1, name2) || ''; | 3550 | const depthPromptText = baseChatReplace(characters[this_chid]?.data?.extensions?.depth_prompt?.prompt?.trim(), name1, name2) || ''; |
| 3490 | const depthPromptDepth = characters[this_chid].data?.extensions?.depth_prompt?.depth ?? depth_prompt_depth_default; | 3551 | const depthPromptDepth = characters[this_chid]?.data?.extensions?.depth_prompt?.depth ?? depth_prompt_depth_default; |
| 3491 | const depthPromptRole = getExtensionPromptRoleByName(characters[this_chid].data?.extensions?.depth_prompt?.role ?? depth_prompt_role_default); | 3552 | const depthPromptRole = getExtensionPromptRoleByName(characters[this_chid]?.data?.extensions?.depth_prompt?.role ?? depth_prompt_role_default); |
| 3492 | setExtensionPrompt('DEPTH_PROMPT', depthPromptText, extension_prompt_types.IN_CHAT, depthPromptDepth, extension_settings.note.allowWIScan, depthPromptRole); | 3553 | setExtensionPrompt('DEPTH_PROMPT', depthPromptText, extension_prompt_types.IN_CHAT, depthPromptDepth, extension_settings.note.allowWIScan, depthPromptRole); |
| 3493 | } | 3554 | } |
| 3494 | 3555 | ||
| @@ -3724,9 +3785,9 @@ export async function Generate(type, { automatic_trigger, force_name2, quiet_pro | |||
| 3724 | const storyStringParams = { | 3785 | const storyStringParams = { |
| 3725 | description: description, | 3786 | description: description, |
| 3726 | personality: personality, | 3787 | personality: personality, |
| 3727 | persona: persona, | 3788 | persona: power_user.persona_description_position == persona_description_positions.IN_PROMPT ? persona : '', |
| 3728 | scenario: scenario, | 3789 | scenario: scenario, |
| 3729 | system: isInstruct ? system : '', | 3790 | system: system, |
| 3730 | char: name2, | 3791 | char: name2, |
| 3731 | user: name1, | 3792 | user: name1, |
| 3732 | wiBefore: worldInfoBefore, | 3793 | wiBefore: worldInfoBefore, |
| @@ -3758,7 +3819,7 @@ export async function Generate(type, { automatic_trigger, force_name2, quiet_pro | |||
| 3758 | } | 3819 | } |
| 3759 | 3820 | ||
| 3760 | let examplesString = ''; | 3821 | let examplesString = ''; |
| 3761 | let chatString = ''; | 3822 | let chatString = addChatsPreamble(addChatsSeparator('')); |
| 3762 | let cyclePrompt = ''; | 3823 | let cyclePrompt = ''; |
| 3763 | 3824 | ||
| 3764 | async function getMessagesTokenCount() { | 3825 | async function getMessagesTokenCount() { |
| @@ -3767,10 +3828,10 @@ export async function Generate(type, { automatic_trigger, force_name2, quiet_pro | |||
| 3767 | storyString, | 3828 | storyString, |
| 3768 | afterScenarioAnchor, | 3829 | afterScenarioAnchor, |
| 3769 | examplesString, | 3830 | examplesString, |
| 3831 | userAlignmentMessage, | ||
| 3770 | chatString, | 3832 | chatString, |
| 3771 | quiet_prompt, | 3833 | modifyLastPromptLine(''), |
| 3772 | cyclePrompt, | 3834 | cyclePrompt, |
| 3773 | userAlignmentMessage, | ||
| 3774 | ].join('').replace(/\r/gm, ''); | 3835 | ].join('').replace(/\r/gm, ''); |
| 3775 | return getTokenCountAsync(encodeString, power_user.token_padding); | 3836 | return getTokenCountAsync(encodeString, power_user.token_padding); |
| 3776 | } | 3837 | } |
| @@ -3801,8 +3862,8 @@ export async function Generate(type, { automatic_trigger, force_name2, quiet_pro | |||
| 3801 | } | 3862 | } |
| 3802 | 3863 | ||
| 3803 | tokenCount += await getTokenCountAsync(item.replace(/\r/gm, '')); | 3864 | tokenCount += await getTokenCountAsync(item.replace(/\r/gm, '')); |
| 3804 | chatString = item + chatString; | ||
| 3805 | if (tokenCount < this_max_context) { | 3865 | if (tokenCount < this_max_context) { |
| 3866 | chatString = chatString + item; | ||
| 3806 | arrMes[index] = item; | 3867 | arrMes[index] = item; |
| 3807 | lastAddedIndex = Math.max(lastAddedIndex, index); | 3868 | lastAddedIndex = Math.max(lastAddedIndex, index); |
| 3808 | } else { | 3869 | } else { |
| @@ -3828,8 +3889,8 @@ export async function Generate(type, { automatic_trigger, force_name2, quiet_pro | |||
| 3828 | } | 3889 | } |
| 3829 | 3890 | ||
| 3830 | tokenCount += await getTokenCountAsync(item.replace(/\r/gm, '')); | 3891 | tokenCount += await getTokenCountAsync(item.replace(/\r/gm, '')); |
| 3831 | chatString = item + chatString; | ||
| 3832 | if (tokenCount < this_max_context) { | 3892 | if (tokenCount < this_max_context) { |
| 3893 | chatString = chatString + item; | ||
| 3833 | arrMes[i] = item; | 3894 | arrMes[i] = item; |
| 3834 | lastAddedIndex = Math.max(lastAddedIndex, i); | 3895 | lastAddedIndex = Math.max(lastAddedIndex, i); |
| 3835 | } else { | 3896 | } else { |
| @@ -4026,15 +4087,16 @@ export async function Generate(type, { automatic_trigger, force_name2, quiet_pro | |||
| 4026 | async function checkPromptSize() { | 4087 | async function checkPromptSize() { |
| 4027 | console.debug('---checking Prompt size'); | 4088 | console.debug('---checking Prompt size'); |
| 4028 | setPromptString(); | 4089 | setPromptString(); |
| 4090 | const jointMessages = mesSend.map((e) => `${e.extensionPrompts.join('')}${e.message}`).join(''); | ||
| 4029 | const prompt = [ | 4091 | const prompt = [ |
| 4030 | beforeScenarioAnchor, | 4092 | beforeScenarioAnchor, |
| 4031 | storyString, | 4093 | storyString, |
| 4032 | afterScenarioAnchor, | 4094 | afterScenarioAnchor, |
| 4033 | mesExmString, | 4095 | mesExmString, |
| 4034 | mesSend.map((e) => `${e.extensionPrompts.join('')}${e.message}`).join(''), | 4096 | addChatsPreamble(addChatsSeparator(jointMessages)), |
| 4035 | '\n', | 4097 | '\n', |
| 4098 | modifyLastPromptLine(''), | ||
| 4036 | generatedPromptCache, | 4099 | generatedPromptCache, |
| 4037 | quiet_prompt, | ||
| 4038 | ].join('').replace(/\r/gm, ''); | 4100 | ].join('').replace(/\r/gm, ''); |
| 4039 | let thisPromptContextSize = await getTokenCountAsync(prompt, power_user.token_padding); | 4101 | let thisPromptContextSize = await getTokenCountAsync(prompt, power_user.token_padding); |
| 4040 | 4102 | ||
| @@ -4299,8 +4361,9 @@ export async function Generate(type, { automatic_trigger, force_name2, quiet_pro | |||
| 4299 | this_max_context: this_max_context, | 4361 | this_max_context: this_max_context, |
| 4300 | padding: power_user.token_padding, | 4362 | padding: power_user.token_padding, |
| 4301 | main_api: main_api, | 4363 | main_api: main_api, |
| 4302 | instruction: isInstruct ? substituteParams(power_user.prefer_character_prompt && system ? system : power_user.instruct.system_prompt) : '', | 4364 | instruction: main_api !== 'openai' && power_user.sysprompt.enabled ? substituteParams(power_user.prefer_character_prompt && system ? system : power_user.sysprompt.content) : '', |
| 4303 | userPersona: (power_user.persona_description || ''), | 4365 | userPersona: (power_user.persona_description_position == persona_description_positions.IN_PROMPT ? (persona || '') : ''), |
| 4366 | tokenizer: getFriendlyTokenizerName(main_api).tokenizerName || '', | ||
| 4304 | }; | 4367 | }; |
| 4305 | 4368 | ||
| 4306 | //console.log(additionalPromptStuff); | 4369 | //console.log(additionalPromptStuff); |
| @@ -4362,9 +4425,9 @@ export async function Generate(type, { automatic_trigger, force_name2, quiet_pro | |||
| 4362 | generatedPromptCache = ''; | 4425 | generatedPromptCache = ''; |
| 4363 | 4426 | ||
| 4364 | if (data?.response) { | 4427 | if (data?.response) { |
| 4365 | toastr.error(data.response, 'API Error'); | 4428 | toastr.error(data.response, 'API Error', { preventDuplicates: true }); |
| 4366 | } | 4429 | } |
| 4367 | throw data?.response; | 4430 | throw new Error(data?.response); |
| 4368 | } | 4431 | } |
| 4369 | 4432 | ||
| 4370 | //const getData = await response.json(); | 4433 | //const getData = await response.json(); |
| @@ -4384,7 +4447,6 @@ export async function Generate(type, { automatic_trigger, force_name2, quiet_pro | |||
| 4384 | const displayIncomplete = type === 'quiet' && !quietToLoud; | 4447 | const displayIncomplete = type === 'quiet' && !quietToLoud; |
| 4385 | getMessage = cleanUpMessage(getMessage, isImpersonate, isContinue, displayIncomplete); | 4448 | getMessage = cleanUpMessage(getMessage, isImpersonate, isContinue, displayIncomplete); |
| 4386 | 4449 | ||
| 4387 | if (getMessage.length > 0 || data.allowEmptyResponse) { | ||
| 4388 | if (isImpersonate) { | 4450 | if (isImpersonate) { |
| 4389 | $('#send_textarea').val(getMessage)[0].dispatchEvent(new Event('input', { bubbles: true })); | 4451 | $('#send_textarea').val(getMessage)[0].dispatchEvent(new Event('input', { bubbles: true })); |
| 4390 | generatedPromptCache = ''; | 4452 | generatedPromptCache = ''; |
| @@ -4410,28 +4472,6 @@ export async function Generate(type, { automatic_trigger, force_name2, quiet_pro | |||
| 4410 | if (type !== 'quiet') { | 4472 | if (type !== 'quiet') { |
| 4411 | playMessageSound(); | 4473 | playMessageSound(); |
| 4412 | } | 4474 | } |
| 4413 | } else { | ||
| 4414 | // If maxLoops is not passed in (e.g. first time generating), set it to MAX_GENERATION_LOOPS | ||
| 4415 | maxLoops ??= MAX_GENERATION_LOOPS; | ||
| 4416 | |||
| 4417 | if (maxLoops === 0) { | ||
| 4418 | if (type !== 'quiet') { | ||
| 4419 | throwCircuitBreakerError(); | ||
| 4420 | } | ||
| 4421 | throw new Error('Generate circuit breaker interruption'); | ||
| 4422 | } | ||
| 4423 | |||
| 4424 | // regenerate with character speech reenforced | ||
| 4425 | // to make sure we leave on swipe type while also adding the name2 appendage | ||
| 4426 | await delay(1000); | ||
| 4427 | // A message was already deleted on regeneration, so instead treat is as a normal gen | ||
| 4428 | if (type === 'regenerate') { | ||
| 4429 | type = 'normal'; | ||
| 4430 | } | ||
| 4431 | // The first await is for waiting for the generate to start. The second one is waiting for it to finish | ||
| 4432 | const result = await await Generate(type, { automatic_trigger, force_name2: true, quiet_prompt, quietToLoud, skipWIAN, force_chid, signal, quietImage, quietName, maxLoops: maxLoops - 1 }); | ||
| 4433 | return result; | ||
| 4434 | } | ||
| 4435 | 4475 | ||
| 4436 | if (power_user.auto_swipe) { | 4476 | if (power_user.auto_swipe) { |
| 4437 | console.debug('checking for autoswipeblacklist on non-streaming message'); | 4477 | console.debug('checking for autoswipeblacklist on non-streaming message'); |
| @@ -4820,6 +4860,13 @@ export function getMaxContextSize(overrideResponseLength = null) { | |||
| 4820 | console.log(`NovelAI subscription limit reached. Max context size is now ${this_max_context}`); | 4860 | console.log(`NovelAI subscription limit reached. Max context size is now ${this_max_context}`); |
| 4821 | } | 4861 | } |
| 4822 | } | 4862 | } |
| 4863 | if (nai_settings.model_novel.includes('erato')) { | ||
| 4864 | // subscriber limits coming soon | ||
| 4865 | this_max_context = Math.min(max_context, 8192); | ||
| 4866 | |||
| 4867 | // Added special tokens and whatnot | ||
| 4868 | this_max_context -= 1; | ||
| 4869 | } | ||
| 4823 | 4870 | ||
| 4824 | this_max_context = this_max_context - (overrideResponseLength || amount_gen); | 4871 | this_max_context = this_max_context - (overrideResponseLength || amount_gen); |
| 4825 | } | 4872 | } |
| @@ -4899,7 +4946,7 @@ async function duplicateCharacter() { | |||
| 4899 | return ''; | 4946 | return ''; |
| 4900 | } | 4947 | } |
| 4901 | 4948 | ||
| 4902 | export async function itemizedParams(itemizedPrompts, thisPromptSet) { | 4949 | export async function itemizedParams(itemizedPrompts, thisPromptSet, incomingMesId) { |
| 4903 | const params = { | 4950 | const params = { |
| 4904 | charDescriptionTokens: await getTokenCountAsync(itemizedPrompts[thisPromptSet].charDescription), | 4951 | charDescriptionTokens: await getTokenCountAsync(itemizedPrompts[thisPromptSet].charDescription), |
| 4905 | charPersonalityTokens: await getTokenCountAsync(itemizedPrompts[thisPromptSet].charPersonality), | 4952 | charPersonalityTokens: await getTokenCountAsync(itemizedPrompts[thisPromptSet].charPersonality), |
| @@ -4918,8 +4965,20 @@ export async function itemizedParams(itemizedPrompts, thisPromptSet) { | |||
| 4918 | chatInjects: await getTokenCountAsync(itemizedPrompts[thisPromptSet].chatInjects), | 4965 | chatInjects: await getTokenCountAsync(itemizedPrompts[thisPromptSet].chatInjects), |
| 4919 | chatVectorsStringTokens: await getTokenCountAsync(itemizedPrompts[thisPromptSet].chatVectorsString), | 4966 | chatVectorsStringTokens: await getTokenCountAsync(itemizedPrompts[thisPromptSet].chatVectorsString), |
| 4920 | dataBankVectorsStringTokens: await getTokenCountAsync(itemizedPrompts[thisPromptSet].dataBankVectorsString), | 4967 | dataBankVectorsStringTokens: await getTokenCountAsync(itemizedPrompts[thisPromptSet].dataBankVectorsString), |
| 4968 | modelUsed: chat[incomingMesId]?.extra?.model, | ||
| 4969 | apiUsed: chat[incomingMesId]?.extra?.api, | ||
| 4921 | }; | 4970 | }; |
| 4922 | 4971 | ||
| 4972 | const getFriendlyName = (value) => $(`#rm_api_block select option[value="${value}"]`).first().text() || value; | ||
| 4973 | |||
| 4974 | if (params.apiUsed) { | ||
| 4975 | params.apiUsed = getFriendlyName(params.apiUsed); | ||
| 4976 | } | ||
| 4977 | |||
| 4978 | if (params.this_main_api) { | ||
| 4979 | params.mainApiFriendlyName = getFriendlyName(params.this_main_api); | ||
| 4980 | } | ||
| 4981 | |||
| 4923 | if (params.chatInjects) { | 4982 | if (params.chatInjects) { |
| 4924 | params.ActualChatHistoryTokens = params.ActualChatHistoryTokens - params.chatInjects; | 4983 | params.ActualChatHistoryTokens = params.ActualChatHistoryTokens - params.chatInjects; |
| 4925 | } | 4984 | } |
| @@ -4998,7 +5057,7 @@ export async function itemizedParams(itemizedPrompts, thisPromptSet) { | |||
| 4998 | params.promptBiasTokensPercentage = ((params.promptBiasTokens / (params.totalTokensInPrompt)) * 100).toFixed(2); | 5057 | params.promptBiasTokensPercentage = ((params.promptBiasTokens / (params.totalTokensInPrompt)) * 100).toFixed(2); |
| 4999 | params.worldInfoStringTokensPercentage = ((params.worldInfoStringTokens / (params.totalTokensInPrompt)) * 100).toFixed(2); | 5058 | params.worldInfoStringTokensPercentage = ((params.worldInfoStringTokens / (params.totalTokensInPrompt)) * 100).toFixed(2); |
| 5000 | params.allAnchorsTokensPercentage = ((params.allAnchorsTokens / (params.totalTokensInPrompt)) * 100).toFixed(2); | 5059 | params.allAnchorsTokensPercentage = ((params.allAnchorsTokens / (params.totalTokensInPrompt)) * 100).toFixed(2); |
| 5001 | params.selectedTokenizer = getFriendlyTokenizerName(params.this_main_api).tokenizerName; | 5060 | params.selectedTokenizer = itemizedPrompts[thisPromptSet]?.tokenizer || getFriendlyTokenizerName(params.this_main_api).tokenizerName; |
| 5002 | } | 5061 | } |
| 5003 | return params; | 5062 | return params; |
| 5004 | } | 5063 | } |
| @@ -5034,7 +5093,7 @@ async function promptItemize(itemizedPrompts, requestedMesId) { | |||
| 5034 | return null; | 5093 | return null; |
| 5035 | } | 5094 | } |
| 5036 | 5095 | ||
| 5037 | const params = await itemizedParams(itemizedPrompts, thisPromptSet); | 5096 | const params = await itemizedParams(itemizedPrompts, thisPromptSet, incomingMesId); |
| 5038 | const flatten = (rawPrompt) => Array.isArray(rawPrompt) ? rawPrompt.map(x => x.content).join('\n') : rawPrompt; | 5097 | const flatten = (rawPrompt) => Array.isArray(rawPrompt) ? rawPrompt.map(x => x.content).join('\n') : rawPrompt; |
| 5039 | 5098 | ||
| 5040 | const template = params.this_main_api == 'openai' | 5099 | const template = params.this_main_api == 'openai' |
| @@ -5078,7 +5137,7 @@ async function promptItemize(itemizedPrompts, requestedMesId) { | |||
| 5078 | } | 5137 | } |
| 5079 | 5138 | ||
| 5080 | navigator.clipboard.writeText(rawPromptValues); | 5139 | navigator.clipboard.writeText(rawPromptValues); |
| 5081 | toastr.info('Copied!'); | 5140 | toastr.info(t`Copied!`); |
| 5082 | }); | 5141 | }); |
| 5083 | 5142 | ||
| 5084 | popup.dlg.querySelector('#showRawPrompt').addEventListener('click', function () { | 5143 | popup.dlg.querySelector('#showRawPrompt').addEventListener('click', function () { |
| @@ -5191,11 +5250,6 @@ function getGenerateUrl(api) { | |||
| 5191 | } | 5250 | } |
| 5192 | } | 5251 | } |
| 5193 | 5252 | ||
| 5194 | function throwCircuitBreakerError() { | ||
| 5195 | callPopup(`Could not extract reply in ${MAX_GENERATION_LOOPS} attempts. Try generating again`, 'text'); | ||
| 5196 | unblockGeneration(); | ||
| 5197 | } | ||
| 5198 | |||
| 5199 | function extractTitleFromData(data) { | 5253 | function extractTitleFromData(data) { |
| 5200 | if (main_api == 'koboldhorde') { | 5254 | if (main_api == 'koboldhorde') { |
| 5201 | return data.workerName; | 5255 | return data.workerName; |
| @@ -5344,17 +5398,10 @@ export function cleanUpMessage(getMessage, isImpersonate, isContinue, displayInc | |||
| 5344 | // Regex uses vars, so add before formatting | 5398 | // Regex uses vars, so add before formatting |
| 5345 | getMessage = getRegexedString(getMessage, isImpersonate ? regex_placement.USER_INPUT : regex_placement.AI_OUTPUT); | 5399 | getMessage = getRegexedString(getMessage, isImpersonate ? regex_placement.USER_INPUT : regex_placement.AI_OUTPUT); |
| 5346 | 5400 | ||
| 5347 | if (!displayIncompleteSentences && power_user.trim_sentences) { | ||
| 5348 | getMessage = trimToEndSentence(getMessage, power_user.include_newline); | ||
| 5349 | } | ||
| 5350 | |||
| 5351 | if (power_user.collapse_newlines) { | 5401 | if (power_user.collapse_newlines) { |
| 5352 | getMessage = collapseNewlines(getMessage); | 5402 | getMessage = collapseNewlines(getMessage); |
| 5353 | } | 5403 | } |
| 5354 | 5404 | ||
| 5355 | if (power_user.trim_spaces) { | ||
| 5356 | getMessage = getMessage.trim(); | ||
| 5357 | } | ||
| 5358 | // trailing invisible whitespace before every newlines, on a multiline string | 5405 | // trailing invisible whitespace before every newlines, on a multiline string |
| 5359 | // "trailing whitespace on newlines \nevery line of the string \n?sample text" -> | 5406 | // "trailing whitespace on newlines \nevery line of the string \n?sample text" -> |
| 5360 | // "trailing whitespace on newlines\nevery line of the string\nsample text" | 5407 | // "trailing whitespace on newlines\nevery line of the string\nsample text" |
| @@ -5446,6 +5493,14 @@ export function cleanUpMessage(getMessage, isImpersonate, isContinue, displayInc | |||
| 5446 | getMessage = getMessage.trim(); | 5493 | getMessage = getMessage.trim(); |
| 5447 | } | 5494 | } |
| 5448 | 5495 | ||
| 5496 | if (!displayIncompleteSentences && power_user.trim_sentences) { | ||
| 5497 | getMessage = trimToEndSentence(getMessage); | ||
| 5498 | } | ||
| 5499 | |||
| 5500 | if (power_user.trim_spaces) { | ||
| 5501 | getMessage = getMessage.trim(); | ||
| 5502 | } | ||
| 5503 | |||
| 5449 | return getMessage; | 5504 | return getMessage; |
| 5450 | } | 5505 | } |
| 5451 | 5506 | ||
| @@ -5671,12 +5726,12 @@ export function deactivateSendButtons() { | |||
| 5671 | } | 5726 | } |
| 5672 | 5727 | ||
| 5673 | export function resetChatState() { | 5728 | export function resetChatState() { |
| 5729 | // replaces deleted charcter name with system user since it will be displayed next. | ||
| 5730 | name2 = (this_chid === undefined && neutralCharacterName) ? neutralCharacterName : systemUserName; | ||
| 5674 | //unsets expected chid before reloading (related to getCharacters/printCharacters from using old arrays) | 5731 | //unsets expected chid before reloading (related to getCharacters/printCharacters from using old arrays) |
| 5675 | this_chid = undefined; | 5732 | this_chid = undefined; |
| 5676 | // replaces deleted charcter name with system user since it will be displayed next. | ||
| 5677 | name2 = systemUserName; | ||
| 5678 | // sets up system user to tell user about having deleted a character | 5733 | // sets up system user to tell user about having deleted a character |
| 5679 | chat = [...safetychat]; | 5734 | chat.splice(0, chat.length, ...SAFETY_CHAT); |
| 5680 | // resets chat metadata | 5735 | // resets chat metadata |
| 5681 | chat_metadata = {}; | 5736 | chat_metadata = {}; |
| 5682 | // resets the characters array, forcing getcharacters to reset | 5737 | // resets the characters array, forcing getcharacters to reset |
| @@ -5896,11 +5951,16 @@ export function saveChatDebounced() { | |||
| 5896 | }, 1000); | 5951 | }, 1000); |
| 5897 | } | 5952 | } |
| 5898 | 5953 | ||
| 5899 | export async function saveChat(chat_name, withMetadata, mesId) { | 5954 | export async function saveChat(chatName, withMetadata, mesId) { |
| 5900 | const metadata = { ...chat_metadata, ...(withMetadata || {}) }; | 5955 | const metadata = { ...chat_metadata, ...(withMetadata || {}) }; |
| 5901 | let file_name = chat_name ?? characters[this_chid]?.chat; | 5956 | const fileName = chatName ?? characters[this_chid]?.chat; |
| 5957 | |||
| 5958 | if (!fileName && name2 === neutralCharacterName) { | ||
| 5959 | // TODO: Do something for a temporary chat with no character. | ||
| 5960 | return; | ||
| 5961 | } | ||
| 5902 | 5962 | ||
| 5903 | if (!file_name) { | 5963 | if (!fileName) { |
| 5904 | console.warn('saveChat called without chat_name and no chat file found'); | 5964 | console.warn('saveChat called without chat_name and no chat file found'); |
| 5905 | return; | 5965 | return; |
| 5906 | } | 5966 | } |
| @@ -5941,7 +6001,7 @@ export async function saveChat(chat_name, withMetadata, mesId) { | |||
| 5941 | url: '/api/chats/save', | 6001 | url: '/api/chats/save', |
| 5942 | data: JSON.stringify({ | 6002 | data: JSON.stringify({ |
| 5943 | ch_name: characters[this_chid].name, | 6003 | ch_name: characters[this_chid].name, |
| 5944 | file_name: file_name, | 6004 | file_name: fileName, |
| 5945 | chat: save_chat, | 6005 | chat: save_chat, |
| 5946 | avatar_url: characters[this_chid].avatar, | 6006 | avatar_url: characters[this_chid].avatar, |
| 5947 | }), | 6007 | }), |
| @@ -6307,21 +6367,17 @@ export function setUserName(value) { | |||
| 6307 | console.log(`User name changed to ${name1}`); | 6367 | console.log(`User name changed to ${name1}`); |
| 6308 | $('#your_name').val(name1); | 6368 | $('#your_name').val(name1); |
| 6309 | if (power_user.persona_show_notifications) { | 6369 | if (power_user.persona_show_notifications) { |
| 6310 | toastr.success(`Your messages will now be sent as ${name1}`, 'Current persona updated'); | 6370 | toastr.success(t`Your messages will now be sent as ${name1}`, t`Current persona updated`); |
| 6311 | } | 6371 | } |
| 6312 | saveSettingsDebounced(); | 6372 | saveSettingsDebounced(); |
| 6313 | } | 6373 | } |
| 6314 | 6374 | ||
| 6315 | async function doOnboarding(avatarId) { | 6375 | async function doOnboarding(avatarId) { |
| 6316 | let simpleUiMode = false; | ||
| 6317 | const template = $('#onboarding_template .onboarding'); | 6376 | const template = $('#onboarding_template .onboarding'); |
| 6318 | template.find('input[name="enable_simple_mode"]').on('input', function () { | 6377 | let userName = await callGenericPopup(template, POPUP_TYPE.INPUT, currentUser?.name || name1, { rows: 2, wider: true, cancelButton: false }); |
| 6319 | simpleUiMode = $(this).is(':checked'); | ||
| 6320 | }); | ||
| 6321 | let userName = await callGenericPopup(template, POPUP_TYPE.INPUT, currentUser?.name || name1, { rows: 2, wide: true, large: true }); | ||
| 6322 | 6378 | ||
| 6323 | if (userName) { | 6379 | if (userName) { |
| 6324 | userName = userName.replace('\n', ' '); | 6380 | userName = String(userName).replace('\n', ' '); |
| 6325 | setUserName(userName); | 6381 | setUserName(userName); |
| 6326 | console.log(`Binding persona ${avatarId} to name ${userName}`); | 6382 | console.log(`Binding persona ${avatarId} to name ${userName}`); |
| 6327 | power_user.personas[avatarId] = userName; | 6383 | power_user.personas[avatarId] = userName; |
| @@ -6330,12 +6386,6 @@ async function doOnboarding(avatarId) { | |||
| 6330 | position: persona_description_positions.IN_PROMPT, | 6386 | position: persona_description_positions.IN_PROMPT, |
| 6331 | }; | 6387 | }; |
| 6332 | } | 6388 | } |
| 6333 | |||
| 6334 | if (simpleUiMode) { | ||
| 6335 | power_user.ui_mode = ui_mode.SIMPLE; | ||
| 6336 | $('#ui_mode_select').val(power_user.ui_mode); | ||
| 6337 | switchSimpleMode(); | ||
| 6338 | } | ||
| 6339 | } | 6389 | } |
| 6340 | 6390 | ||
| 6341 | function reloadLoop() { | 6391 | function reloadLoop() { |
| @@ -6459,6 +6509,9 @@ export async function getSettings() { | |||
| 6459 | // Load power user settings | 6509 | // Load power user settings |
| 6460 | await loadPowerUserSettings(settings, data); | 6510 | await loadPowerUserSettings(settings, data); |
| 6461 | 6511 | ||
| 6512 | // Apply theme toggles from power user settings | ||
| 6513 | applyPowerUserSettings(); | ||
| 6514 | |||
| 6462 | // Load character tags | 6515 | // Load character tags |
| 6463 | loadTagsSettings(settings); | 6516 | loadTagsSettings(settings); |
| 6464 | 6517 | ||
| @@ -6513,9 +6566,10 @@ export async function getSettings() { | |||
| 6513 | selected_button = settings.selected_button; | 6566 | selected_button = settings.selected_button; |
| 6514 | 6567 | ||
| 6515 | if (data.enable_extensions) { | 6568 | if (data.enable_extensions) { |
| 6569 | const enableAutoUpdate = Boolean(data.enable_extensions_auto_update); | ||
| 6516 | const isVersionChanged = settings.currentVersion !== currentVersion; | 6570 | const isVersionChanged = settings.currentVersion !== currentVersion; |
| 6517 | await loadExtensionSettings(settings, isVersionChanged); | 6571 | await loadExtensionSettings(settings, isVersionChanged, enableAutoUpdate); |
| 6518 | eventSource.emit(event_types.EXTENSION_SETTINGS_LOADED); | 6572 | await eventSource.emit(event_types.EXTENSION_SETTINGS_LOADED); |
| 6519 | } | 6573 | } |
| 6520 | 6574 | ||
| 6521 | firstRun = !!settings.firstRun; | 6575 | firstRun = !!settings.firstRun; |
| @@ -6663,7 +6717,7 @@ function updateMessage(div) { | |||
| 6663 | function openMessageDelete(fromSlashCommand) { | 6717 | function openMessageDelete(fromSlashCommand) { |
| 6664 | closeMessageEditor(); | 6718 | closeMessageEditor(); |
| 6665 | hideSwipeButtons(); | 6719 | hideSwipeButtons(); |
| 6666 | if (fromSlashCommand || (this_chid != undefined && !is_send_press) || (selected_group && !is_group_generating)) { | 6720 | if (fromSlashCommand || (!is_send_press) || (selected_group && !is_group_generating)) { |
| 6667 | $('#dialogue_del_mes').css('display', 'block'); | 6721 | $('#dialogue_del_mes').css('display', 'block'); |
| 6668 | $('#send_form').css('display', 'none'); | 6722 | $('#send_form').css('display', 'none'); |
| 6669 | $('.del_checkbox').each(function () { | 6723 | $('.del_checkbox').each(function () { |
| @@ -6891,15 +6945,13 @@ export async function displayPastChats() { | |||
| 6891 | } | 6945 | } |
| 6892 | // Check whether `text` {string} includes all of the `fragments` {string[]}. | 6946 | // Check whether `text` {string} includes all of the `fragments` {string[]}. |
| 6893 | function matchFragments(fragments, text) { | 6947 | function matchFragments(fragments, text) { |
| 6894 | if (!text) { | 6948 | if (!text || !text.toLowerCase) return false; |
| 6895 | return false; | 6949 | return fragments.every(item => text.toLowerCase().includes(item)); |
| 6896 | } | ||
| 6897 | return fragments.every(item => text.includes(item)); | ||
| 6898 | } | 6950 | } |
| 6899 | const fragments = makeQueryFragments(searchQuery); | 6951 | const fragments = makeQueryFragments(searchQuery); |
| 6900 | // At least one chat message must match *all* the fragments. | 6952 | // At least one chat message must match *all* the fragments. |
| 6901 | // Currently, this doesn't match if the fragment matches are distributed across several chat messages. | 6953 | // Currently, this doesn't match if the fragment matches are distributed across several chat messages. |
| 6902 | return chatContent && Object.values(chatContent).some(message => matchFragments(fragments, message?.mes?.toLowerCase())); | 6954 | return chatContent && Object.values(chatContent).some(message => matchFragments(fragments, message?.mes)); |
| 6903 | }); | 6955 | }); |
| 6904 | 6956 | ||
| 6905 | console.debug(filteredData); | 6957 | console.debug(filteredData); |
| @@ -7423,7 +7475,7 @@ export function showSwipeButtons() { | |||
| 7423 | 7475 | ||
| 7424 | const currentMessage = $('#chat').children().filter(`[mesid="${chat.length - 1}"]`); | 7476 | const currentMessage = $('#chat').children().filter(`[mesid="${chat.length - 1}"]`); |
| 7425 | const swipeId = chat[chat.length - 1].swipe_id; | 7477 | const swipeId = chat[chat.length - 1].swipe_id; |
| 7426 | var swipesCounterHTML = (`${(swipeId + 1)}/${(chat[chat.length - 1].swipes.length)}`); | 7478 | const swipeCounterText = (`${(swipeId + 1)}\u200B/\u200b${(chat[chat.length - 1].swipes.length)}`); |
| 7427 | 7479 | ||
| 7428 | if (swipeId !== undefined && (chat[chat.length - 1].swipes.length > 1 || swipeId > 0)) { | 7480 | if (swipeId !== undefined && (chat[chat.length - 1].swipes.length > 1 || swipeId > 0)) { |
| 7429 | currentMessage.children('.swipe_left').css('display', 'flex'); | 7481 | currentMessage.children('.swipe_left').css('display', 'flex'); |
| @@ -7440,7 +7492,7 @@ export function showSwipeButtons() { | |||
| 7440 | } | 7492 | } |
| 7441 | //console.log(swipesCounterHTML); | 7493 | //console.log(swipesCounterHTML); |
| 7442 | 7494 | ||
| 7443 | $('.swipes-counter').html(swipesCounterHTML); | 7495 | $('.swipes-counter').text(swipeCounterText); |
| 7444 | 7496 | ||
| 7445 | //console.log(swipeId); | 7497 | //console.log(swipeId); |
| 7446 | //console.log(chat[chat.length - 1].swipes.length); | 7498 | //console.log(chat[chat.length - 1].swipes.length); |
| @@ -7452,6 +7504,53 @@ export function hideSwipeButtons() { | |||
| 7452 | $('#chat').find('.swipe_left').css('display', 'none'); | 7504 | $('#chat').find('.swipe_left').css('display', 'none'); |
| 7453 | } | 7505 | } |
| 7454 | 7506 | ||
| 7507 | /** | ||
| 7508 | * Deletes a swipe from the chat. | ||
| 7509 | * | ||
| 7510 | * @param {number?} swipeId - The ID of the swipe to delete. If not provided, the current swipe will be deleted. | ||
| 7511 | * @returns {Promise<number>|undefined} - The ID of the new swipe after deletion. | ||
| 7512 | */ | ||
| 7513 | export async function deleteSwipe(swipeId = null) { | ||
| 7514 | if (swipeId && (isNaN(swipeId) || swipeId < 0)) { | ||
| 7515 | toastr.warning(`Invalid swipe ID: ${swipeId + 1}`); | ||
| 7516 | return; | ||
| 7517 | } | ||
| 7518 | |||
| 7519 | const lastMessage = chat[chat.length - 1]; | ||
| 7520 | if (!lastMessage || !Array.isArray(lastMessage.swipes) || !lastMessage.swipes.length) { | ||
| 7521 | toastr.warning('No messages to delete swipes from.'); | ||
| 7522 | return; | ||
| 7523 | } | ||
| 7524 | |||
| 7525 | if (lastMessage.swipes.length <= 1) { | ||
| 7526 | toastr.warning('Can\'t delete the last swipe.'); | ||
| 7527 | return; | ||
| 7528 | } | ||
| 7529 | |||
| 7530 | swipeId = swipeId ?? lastMessage.swipe_id; | ||
| 7531 | |||
| 7532 | if (swipeId < 0 || swipeId >= lastMessage.swipes.length) { | ||
| 7533 | toastr.warning(`Invalid swipe ID: ${swipeId + 1}`); | ||
| 7534 | return; | ||
| 7535 | } | ||
| 7536 | |||
| 7537 | lastMessage.swipes.splice(swipeId, 1); | ||
| 7538 | |||
| 7539 | if (Array.isArray(lastMessage.swipe_info) && lastMessage.swipe_info.length) { | ||
| 7540 | lastMessage.swipe_info.splice(swipeId, 1); | ||
| 7541 | } | ||
| 7542 | |||
| 7543 | // Select the next swip, or the one before if it was the last one | ||
| 7544 | const newSwipeId = Math.min(swipeId, lastMessage.swipes.length - 1); | ||
| 7545 | lastMessage.swipe_id = newSwipeId; | ||
| 7546 | lastMessage.mes = lastMessage.swipes[newSwipeId]; | ||
| 7547 | |||
| 7548 | await saveChatConditional(); | ||
| 7549 | await reloadCurrentChat(); | ||
| 7550 | |||
| 7551 | return newSwipeId; | ||
| 7552 | } | ||
| 7553 | |||
| 7455 | export async function saveMetadata() { | 7554 | export async function saveMetadata() { |
| 7456 | if (selected_group) { | 7555 | if (selected_group) { |
| 7457 | await editGroup(selected_group, true, false); | 7556 | await editGroup(selected_group, true, false); |
| @@ -7782,13 +7881,19 @@ async function createOrEditCharacter(e) { | |||
| 7782 | formData.set('avatar', convertedFile); | 7881 | formData.set('avatar', convertedFile); |
| 7783 | } | 7882 | } |
| 7784 | 7883 | ||
| 7884 | const headers = getRequestHeaders(); | ||
| 7885 | delete headers['Content-Type']; | ||
| 7886 | |||
| 7785 | if ($('#form_create').attr('actiontype') == 'createcharacter') { | 7887 | if ($('#form_create').attr('actiontype') == 'createcharacter') { |
| 7786 | if (String($('#character_name_pole').val()).length > 0) { | 7888 | if (String($('#character_name_pole').val()).length === 0) { |
| 7889 | toastr.error('Name is required'); | ||
| 7890 | return; | ||
| 7891 | } | ||
| 7787 | if (is_group_generating || is_send_press) { | 7892 | if (is_group_generating || is_send_press) { |
| 7788 | toastr.error('Cannot create characters while generating. Stop the request and try again.', 'Creation aborted'); | 7893 | toastr.error('Cannot create characters while generating. Stop the request and try again.', 'Creation aborted'); |
| 7789 | throw new Error('Cannot import character while generating'); | 7894 | return; |
| 7790 | } | 7895 | } |
| 7791 | 7896 | try { | |
| 7792 | //if the character name text area isn't empty (only posible when creating a new character) | 7897 | //if the character name text area isn't empty (only posible when creating a new character) |
| 7793 | let url = '/api/characters/create'; | 7898 | let url = '/api/characters/create'; |
| 7794 | 7899 | ||
| @@ -7803,18 +7908,19 @@ async function createOrEditCharacter(e) { | |||
| 7803 | 7908 | ||
| 7804 | formData.append('extensions', JSON.stringify(create_save.extensions)); | 7909 | formData.append('extensions', JSON.stringify(create_save.extensions)); |
| 7805 | 7910 | ||
| 7806 | await jQuery.ajax({ | 7911 | const fetchResult = await fetch(url, { |
| 7807 | type: 'POST', | 7912 | method: 'POST', |
| 7808 | url: url, | 7913 | headers: headers, |
| 7809 | data: formData, | 7914 | body: formData, |
| 7810 | beforeSend: function () { | 7915 | cache: 'no-cache', |
| 7811 | $('#create_button').attr('disabled', String(true)); | 7916 | }); |
| 7812 | $('#create_button').attr('value', '⏳'); | 7917 | |
| 7813 | }, | 7918 | if (!fetchResult.ok) { |
| 7814 | cache: false, | 7919 | throw new Error('Fetch result is not ok'); |
| 7815 | contentType: false, | 7920 | } |
| 7816 | processData: false, | 7921 | |
| 7817 | success: async function (html) { | 7922 | const avatarId = await fetchResult.text(); |
| 7923 | |||
| 7818 | $('#character_cross').trigger('click'); //closes the advanced character editing popup | 7924 | $('#character_cross').trigger('click'); //closes the advanced character editing popup |
| 7819 | const fields = [ | 7925 | const fields = [ |
| 7820 | { id: '#character_name_pole', callback: value => create_save.name = value }, | 7926 | { id: '#character_name_pole', callback: value => create_save.name = value }, |
| @@ -7849,33 +7955,29 @@ async function createOrEditCharacter(e) { | |||
| 7849 | 7955 | ||
| 7850 | create_save.avatar = ''; | 7956 | create_save.avatar = ''; |
| 7851 | 7957 | ||
| 7852 | $('#create_button').removeAttr('disabled'); | ||
| 7853 | $('#add_avatar_button').replaceWith( | 7958 | $('#add_avatar_button').replaceWith( |
| 7854 | $('#add_avatar_button').val('').clone(true), | 7959 | $('#add_avatar_button').val('').clone(true), |
| 7855 | ); | 7960 | ); |
| 7856 | 7961 | ||
| 7857 | $('#create_button').attr('value', '✅'); | ||
| 7858 | let oldSelectedChar = null; | 7962 | let oldSelectedChar = null; |
| 7859 | if (this_chid !== undefined) { | 7963 | if (this_chid !== undefined) { |
| 7860 | oldSelectedChar = characters[this_chid].avatar; | 7964 | oldSelectedChar = characters[this_chid].avatar; |
| 7861 | } | 7965 | } |
| 7862 | 7966 | ||
| 7863 | console.log(`new avatar id: ${html}`); | 7967 | console.log(`new avatar id: ${avatarId}`); |
| 7864 | createTagMapFromList('#tagList', html); | 7968 | createTagMapFromList('#tagList', avatarId); |
| 7865 | await getCharacters(); | 7969 | await getCharacters(); |
| 7866 | 7970 | ||
| 7867 | select_rm_info('char_create', html, oldSelectedChar); | 7971 | select_rm_info('char_create', avatarId, oldSelectedChar); |
| 7868 | 7972 | ||
| 7869 | crop_data = undefined; | 7973 | crop_data = undefined; |
| 7870 | }, | 7974 | |
| 7871 | error: function (jqXHR, exception) { | 7975 | } catch (error) { |
| 7872 | $('#create_button').removeAttr('disabled'); | 7976 | console.error('Error creating character', error); |
| 7873 | }, | 7977 | toastr.error('Failed to create character'); |
| 7874 | }); | ||
| 7875 | } else { | ||
| 7876 | toastr.error('Name is required'); | ||
| 7877 | } | 7978 | } |
| 7878 | } else { | 7979 | } else { |
| 7980 | try { | ||
| 7879 | let url = '/api/characters/edit'; | 7981 | let url = '/api/characters/edit'; |
| 7880 | 7982 | ||
| 7881 | if (crop_data != undefined) { | 7983 | if (crop_data != undefined) { |
| @@ -7890,19 +7992,16 @@ async function createOrEditCharacter(e) { | |||
| 7890 | } | 7992 | } |
| 7891 | } | 7993 | } |
| 7892 | 7994 | ||
| 7893 | await jQuery.ajax({ | 7995 | const fetchResult = await fetch(url, { |
| 7894 | type: 'POST', | 7996 | method: 'POST', |
| 7895 | url: url, | 7997 | headers: headers, |
| 7896 | data: formData, | 7998 | body: formData, |
| 7897 | beforeSend: function () { | 7999 | cache: 'no-cache', |
| 7898 | $('#create_button').attr('disabled', String(true)); | 8000 | }); |
| 7899 | $('#create_button').attr('value', 'Save'); | 8001 | |
| 7900 | }, | 8002 | if (!fetchResult.ok) { |
| 7901 | cache: false, | 8003 | throw new Error('Fetch result is not ok'); |
| 7902 | contentType: false, | 8004 | } |
| 7903 | processData: false, | ||
| 7904 | success: async function (html) { | ||
| 7905 | $('#create_button').removeAttr('disabled'); | ||
| 7906 | 8005 | ||
| 7907 | await getOneCharacter(formData.get('avatar_url')); | 8006 | await getOneCharacter(formData.get('avatar_url')); |
| 7908 | favsToHotswap(); // Update fav state | 8007 | favsToHotswap(); // Update fav state |
| @@ -7912,7 +8011,7 @@ async function createOrEditCharacter(e) { | |||
| 7912 | ); | 8011 | ); |
| 7913 | $('#create_button').attr('value', 'Save'); | 8012 | $('#create_button').attr('value', 'Save'); |
| 7914 | crop_data = undefined; | 8013 | crop_data = undefined; |
| 7915 | eventSource.emit(event_types.CHARACTER_EDITED, { detail: { id: this_chid, character: characters[this_chid] } }); | 8014 | await eventSource.emit(event_types.CHARACTER_EDITED, { detail: { id: this_chid, character: characters[this_chid] } }); |
| 7916 | 8015 | ||
| 7917 | // Recreate the chat if it hasn't been used at least once (i.e. with continue). | 8016 | // Recreate the chat if it hasn't been used at least once (i.e. with continue). |
| 7918 | const message = getFirstMessage(); | 8017 | const message = getFirstMessage(); |
| @@ -7932,13 +8031,10 @@ async function createOrEditCharacter(e) { | |||
| 7932 | await eventSource.emit(event_types.CHARACTER_MESSAGE_RENDERED, messageId); | 8031 | await eventSource.emit(event_types.CHARACTER_MESSAGE_RENDERED, messageId); |
| 7933 | await saveChatConditional(); | 8032 | await saveChatConditional(); |
| 7934 | } | 8033 | } |
| 7935 | }, | 8034 | } catch (error) { |
| 7936 | error: function (jqXHR, exception) { | 8035 | console.log(error); |
| 7937 | $('#create_button').removeAttr('disabled'); | ||
| 7938 | console.log('Error! Either a file with the same name already existed, or the image file provided was in an invalid format. Double check that the image is not a webp.'); | ||
| 7939 | toastr.error('Something went wrong while saving the character, or the image file provided was in an invalid format. Double check that the image is not a webp.'); | 8036 | toastr.error('Something went wrong while saving the character, or the image file provided was in an invalid format. Double check that the image is not a webp.'); |
| 7940 | }, | 8037 | } |
| 7941 | }); | ||
| 7942 | } | 8038 | } |
| 7943 | } | 8039 | } |
| 7944 | 8040 | ||
| @@ -7995,7 +8091,7 @@ window['SillyTavern'].getContext = function () { | |||
| 7995 | registerHelper: () => { }, | 8091 | registerHelper: () => { }, |
| 7996 | registerMacro: MacrosParser.registerMacro.bind(MacrosParser), | 8092 | registerMacro: MacrosParser.registerMacro.bind(MacrosParser), |
| 7997 | unregisterMacro: MacrosParser.unregisterMacro.bind(MacrosParser), | 8093 | unregisterMacro: MacrosParser.unregisterMacro.bind(MacrosParser), |
| 7998 | registedDebugFunction: registerDebugFunction, | 8094 | registerDebugFunction: registerDebugFunction, |
| 7999 | /** @deprecated Use renderExtensionTemplateAsync instead. */ | 8095 | /** @deprecated Use renderExtensionTemplateAsync instead. */ |
| 8000 | renderExtensionTemplate: renderExtensionTemplate, | 8096 | renderExtensionTemplate: renderExtensionTemplate, |
| 8001 | renderExtensionTemplateAsync: renderExtensionTemplateAsync, | 8097 | renderExtensionTemplateAsync: renderExtensionTemplateAsync, |
| @@ -8163,24 +8259,6 @@ function swipe_left() { // when we swipe left..but no generation. | |||
| 8163 | } | 8259 | } |
| 8164 | } | 8260 | } |
| 8165 | 8261 | ||
| 8166 | /** | ||
| 8167 | * Creates a new branch from the message with the given ID | ||
| 8168 | * @param {number} mesId Message ID | ||
| 8169 | * @returns {Promise<string>} Branch file name | ||
| 8170 | */ | ||
| 8171 | async function branchChat(mesId) { | ||
| 8172 | const fileName = await createBranch(mesId); | ||
| 8173 | await saveItemizedPrompts(fileName); | ||
| 8174 | |||
| 8175 | if (selected_group) { | ||
| 8176 | await openGroupChat(selected_group, fileName); | ||
| 8177 | } else { | ||
| 8178 | await openCharacterChat(fileName); | ||
| 8179 | } | ||
| 8180 | |||
| 8181 | return fileName; | ||
| 8182 | } | ||
| 8183 | |||
| 8184 | // when we click swipe right button | 8262 | // when we click swipe right button |
| 8185 | const swipe_right = () => { | 8263 | const swipe_right = () => { |
| 8186 | if (chat.length - 1 === Number(this_edit_mes_id)) { | 8264 | if (chat.length - 1 === Number(this_edit_mes_id)) { |
| @@ -8426,51 +8504,53 @@ for (const chatCompletionSource of Object.values(chat_completion_sources)) { | |||
| 8426 | }; | 8504 | }; |
| 8427 | } | 8505 | } |
| 8428 | 8506 | ||
| 8429 | async function selectContextCallback(_, name) { | 8507 | async function selectContextCallback(args, name) { |
| 8430 | if (!name) { | 8508 | if (!name) { |
| 8431 | return power_user.context.preset; | 8509 | return power_user.context.preset; |
| 8432 | } | 8510 | } |
| 8433 | 8511 | ||
| 8512 | const quiet = isTrueBoolean(args?.quiet); | ||
| 8434 | const contextNames = context_presets.map(preset => preset.name); | 8513 | const contextNames = context_presets.map(preset => preset.name); |
| 8435 | const fuse = new Fuse(contextNames); | 8514 | const fuse = new Fuse(contextNames); |
| 8436 | const result = fuse.search(name); | 8515 | const result = fuse.search(name); |
| 8437 | 8516 | ||
| 8438 | if (result.length === 0) { | 8517 | if (result.length === 0) { |
| 8439 | toastr.warning(`Context preset "${name}" not found`); | 8518 | !quiet && toastr.warning(`Context template "${name}" not found`); |
| 8440 | return ''; | 8519 | return ''; |
| 8441 | } | 8520 | } |
| 8442 | 8521 | ||
| 8443 | const foundName = result[0].item; | 8522 | const foundName = result[0].item; |
| 8444 | selectContextPreset(foundName); | 8523 | selectContextPreset(foundName, { quiet: quiet }); |
| 8445 | return foundName; | 8524 | return foundName; |
| 8446 | } | 8525 | } |
| 8447 | 8526 | ||
| 8448 | async function selectInstructCallback(_, name) { | 8527 | async function selectInstructCallback(args, name) { |
| 8449 | if (!name) { | 8528 | if (!name) { |
| 8450 | return power_user.instruct.preset; | 8529 | return power_user.instruct.enabled || isTrueBoolean(args?.forceGet) ? power_user.instruct.preset : ''; |
| 8451 | } | 8530 | } |
| 8452 | 8531 | ||
| 8532 | const quiet = isTrueBoolean(args?.quiet); | ||
| 8453 | const instructNames = instruct_presets.map(preset => preset.name); | 8533 | const instructNames = instruct_presets.map(preset => preset.name); |
| 8454 | const fuse = new Fuse(instructNames); | 8534 | const fuse = new Fuse(instructNames); |
| 8455 | const result = fuse.search(name); | 8535 | const result = fuse.search(name); |
| 8456 | 8536 | ||
| 8457 | if (result.length === 0) { | 8537 | if (result.length === 0) { |
| 8458 | toastr.warning(`Instruct preset "${name}" not found`); | 8538 | !quiet && toastr.warning(`Instruct template "${name}" not found`); |
| 8459 | return ''; | 8539 | return ''; |
| 8460 | } | 8540 | } |
| 8461 | 8541 | ||
| 8462 | const foundName = result[0].item; | 8542 | const foundName = result[0].item; |
| 8463 | selectInstructPreset(foundName); | 8543 | selectInstructPreset(foundName, { quiet: quiet }); |
| 8464 | return foundName; | 8544 | return foundName; |
| 8465 | } | 8545 | } |
| 8466 | 8546 | ||
| 8467 | async function enableInstructCallback() { | 8547 | async function enableInstructCallback() { |
| 8468 | $('#instruct_enabled').prop('checked', true).trigger('change'); | 8548 | $('#instruct_enabled').prop('checked', true).trigger('input').trigger('change'); |
| 8469 | return ''; | 8549 | return ''; |
| 8470 | } | 8550 | } |
| 8471 | 8551 | ||
| 8472 | async function disableInstructCallback() { | 8552 | async function disableInstructCallback() { |
| 8473 | $('#instruct_enabled').prop('checked', false).trigger('change'); | 8553 | $('#instruct_enabled').prop('checked', false).trigger('input').trigger('change'); |
| 8474 | return ''; | 8554 | return ''; |
| 8475 | } | 8555 | } |
| 8476 | 8556 | ||
| @@ -8511,20 +8591,27 @@ async function connectAPISlash(args, text) { | |||
| 8511 | return ''; | 8591 | return ''; |
| 8512 | } | 8592 | } |
| 8513 | 8593 | ||
| 8594 | let connectionRequired = false; | ||
| 8595 | |||
| 8596 | if (main_api !== apiConfig.selected) { | ||
| 8514 | $(`#main_api option[value='${apiConfig.selected || text}']`).prop('selected', true); | 8597 | $(`#main_api option[value='${apiConfig.selected || text}']`).prop('selected', true); |
| 8515 | $('#main_api').trigger('change'); | 8598 | $('#main_api').trigger('change'); |
| 8599 | connectionRequired = true; | ||
| 8600 | } | ||
| 8516 | 8601 | ||
| 8517 | if (apiConfig.source) { | 8602 | if (apiConfig.source && oai_settings.chat_completion_source !== apiConfig.source) { |
| 8518 | $(`#chat_completion_source option[value='${apiConfig.source}']`).prop('selected', true); | 8603 | $(`#chat_completion_source option[value='${apiConfig.source}']`).prop('selected', true); |
| 8519 | $('#chat_completion_source').trigger('change'); | 8604 | $('#chat_completion_source').trigger('change'); |
| 8605 | connectionRequired = true; | ||
| 8520 | } | 8606 | } |
| 8521 | 8607 | ||
| 8522 | if (apiConfig.type) { | 8608 | if (apiConfig.type && textgen_settings.type !== apiConfig.type) { |
| 8523 | $(`#textgen_type option[value='${apiConfig.type}']`).prop('selected', true); | 8609 | $(`#textgen_type option[value='${apiConfig.type}']`).prop('selected', true); |
| 8524 | $('#textgen_type').trigger('change'); | 8610 | $('#textgen_type').trigger('change'); |
| 8611 | connectionRequired = true; | ||
| 8525 | } | 8612 | } |
| 8526 | 8613 | ||
| 8527 | if (apiConfig.button) { | 8614 | if (connectionRequired && apiConfig.button) { |
| 8528 | $(apiConfig.button).trigger('click'); | 8615 | $(apiConfig.button).trigger('click'); |
| 8529 | } | 8616 | } |
| 8530 | 8617 | ||
| @@ -8749,7 +8836,7 @@ export async function renameChat(oldFileName, newName) { | |||
| 8749 | is_group: !!selected_group, | 8836 | is_group: !!selected_group, |
| 8750 | avatar_url: characters[this_chid]?.avatar, | 8837 | avatar_url: characters[this_chid]?.avatar, |
| 8751 | original_file: `${oldFileName}.jsonl`, | 8838 | original_file: `${oldFileName}.jsonl`, |
| 8752 | renamed_file: `${newName}.jsonl`, | 8839 | renamed_file: `${newName.trim()}.jsonl`, |
| 8753 | }; | 8840 | }; |
| 8754 | 8841 | ||
| 8755 | try { | 8842 | try { |
| @@ -8770,6 +8857,10 @@ export async function renameChat(oldFileName, newName) { | |||
| 8770 | throw new Error('Server returned an error.'); | 8857 | throw new Error('Server returned an error.'); |
| 8771 | } | 8858 | } |
| 8772 | 8859 | ||
| 8860 | if (data.sanitizedFileName) { | ||
| 8861 | newName = data.sanitizedFileName; | ||
| 8862 | } | ||
| 8863 | |||
Binary file
Diff truncated