Merge pull request #5430 from skymkmk/pr-manual-regen-title

feat: menual regen title
This commit is contained in:
Dogtiti 2024-09-14 18:10:32 +08:00 committed by GitHub
commit 26c3edd023
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
21 changed files with 69 additions and 9 deletions

View File

@ -43,6 +43,7 @@ import QualityIcon from "../icons/hd.svg";
import StyleIcon from "../icons/palette.svg";
import PluginIcon from "../icons/plugin.svg";
import ShortcutkeyIcon from "../icons/shortcutkey.svg";
import ReloadIcon from "../icons/reload.svg";
import {
ChatMessage,
@ -1541,6 +1542,17 @@ function _Chat() {
</div>
</div>
<div className="window-actions">
<div className="window-action-button">
<IconButton
icon={<ReloadIcon />}
bordered
title={Locale.Chat.Actions.RefreshTitle}
onClick={() => {
showToast(Locale.Chat.Actions.RefreshToast);
chatStore.summarizeSession(true);
}}
/>
</div>
{!isMobileScreen && (
<div className="window-action-button">
<IconButton

View File

@ -43,6 +43,8 @@ const ar: PartialLocaleType = {
PinToastAction: "عرض",
Delete: "حذف",
Edit: "تحرير",
RefreshTitle: "تحديث العنوان",
RefreshToast: "تم إرسال طلب تحديث العنوان",
},
Commands: {
new: "دردشة جديدة",

View File

@ -43,6 +43,8 @@ const bn: PartialLocaleType = {
PinToastAction: "দেখুন",
Delete: "মুছে ফেলুন",
Edit: "সম্পাদনা করুন",
RefreshTitle: "শিরোনাম রিফ্রেশ করুন",
RefreshToast: "শিরোনাম রিফ্রেশ অনুরোধ পাঠানো হয়েছে",
},
Commands: {
new: "নতুন চ্যাট",

View File

@ -44,6 +44,8 @@ const cn = {
Delete: "删除",
Edit: "编辑",
FullScreen: "全屏",
RefreshTitle: "刷新标题",
RefreshToast: "已发送刷新标题请求",
},
Commands: {
new: "新建聊天",

View File

@ -43,6 +43,8 @@ const cs: PartialLocaleType = {
PinToastAction: "Zobrazit",
Delete: "Smazat",
Edit: "Upravit",
RefreshTitle: "Obnovit název",
RefreshToast: "Požadavek na obnovení názvu byl odeslán",
},
Commands: {
new: "Nová konverzace",

View File

@ -43,6 +43,8 @@ const de: PartialLocaleType = {
PinToastAction: "Ansehen",
Delete: "Löschen",
Edit: "Bearbeiten",
RefreshTitle: "Titel aktualisieren",
RefreshToast: "Anfrage zur Titelaktualisierung gesendet",
},
Commands: {
new: "Neues Gespräch",

View File

@ -45,6 +45,8 @@ const en: LocaleType = {
Delete: "Delete",
Edit: "Edit",
FullScreen: "FullScreen",
RefreshTitle: "Refresh Title",
RefreshToast: "Title refresh request sent",
},
Commands: {
new: "Start a new chat",

View File

@ -44,6 +44,8 @@ const es: PartialLocaleType = {
PinToastAction: "Ver",
Delete: "Eliminar",
Edit: "Editar",
RefreshTitle: "Actualizar título",
RefreshToast: "Se ha enviado la solicitud de actualización del título",
},
Commands: {
new: "Nueva conversación",

View File

@ -43,6 +43,8 @@ const fr: PartialLocaleType = {
PinToastAction: "Voir",
Delete: "Supprimer",
Edit: "Modifier",
RefreshTitle: "Actualiser le titre",
RefreshToast: "Demande d'actualisation du titre envoyée",
},
Commands: {
new: "Nouvelle discussion",

View File

@ -43,6 +43,8 @@ const id: PartialLocaleType = {
PinToastAction: "Lihat",
Delete: "Hapus",
Edit: "Edit",
RefreshTitle: "Segarkan Judul",
RefreshToast: "Permintaan penyegaran judul telah dikirim",
},
Commands: {
new: "Obrolan Baru",

View File

@ -43,6 +43,8 @@ const it: PartialLocaleType = {
PinToastAction: "Visualizza",
Delete: "Elimina",
Edit: "Modifica",
RefreshTitle: "Aggiorna titolo",
RefreshToast: "Richiesta di aggiornamento del titolo inviata",
},
Commands: {
new: "Nuova chat",

View File

@ -43,6 +43,8 @@ const jp: PartialLocaleType = {
PinToastAction: "見る",
Delete: "削除",
Edit: "編集",
RefreshTitle: "タイトルを更新",
RefreshToast: "タイトル更新リクエストが送信されました",
},
Commands: {
new: "新しいチャット",

View File

@ -43,6 +43,8 @@ const ko: PartialLocaleType = {
PinToastAction: "보기",
Delete: "삭제",
Edit: "편집",
RefreshTitle: "제목 새로고침",
RefreshToast: "제목 새로고침 요청이 전송되었습니다",
},
Commands: {
new: "새 채팅",

View File

@ -44,6 +44,8 @@ const no: PartialLocaleType = {
PinToastAction: "Se",
Delete: "Slett",
Edit: "Rediger",
RefreshTitle: "Oppdater tittel",
RefreshToast: "Forespørsel om titteloppdatering sendt",
},
Commands: {
new: "Ny samtale",

View File

@ -43,6 +43,8 @@ const pt: PartialLocaleType = {
PinToastAction: "Visualizar",
Delete: "Deletar",
Edit: "Editar",
RefreshTitle: "Atualizar Título",
RefreshToast: "Solicitação de atualização de título enviada",
},
Commands: {
new: "Iniciar um novo chat",

View File

@ -43,6 +43,8 @@ const ru: PartialLocaleType = {
PinToastAction: "Просмотреть",
Delete: "Удалить",
Edit: "Редактировать",
RefreshTitle: "Обновить заголовок",
RefreshToast: "Запрос на обновление заголовка отправлен",
},
Commands: {
new: "Новый чат",

View File

@ -45,6 +45,8 @@ const sk: PartialLocaleType = {
PinToastAction: "Zobraziť",
Delete: "Vymazať",
Edit: "Upraviť",
RefreshTitle: "Obnoviť názov",
RefreshToast: "Požiadavka na obnovenie názvu bola odoslaná",
},
Commands: {
new: "Začať nový chat",

View File

@ -43,6 +43,8 @@ const tr: PartialLocaleType = {
PinToastAction: "Görünüm",
Delete: "Sil",
Edit: "Düzenle",
RefreshTitle: "Başlığı Yenile",
RefreshToast: "Başlık yenileme isteği gönderildi",
},
Commands: {
new: "Yeni sohbet",

View File

@ -43,6 +43,8 @@ const tw = {
PinToastAction: "檢視",
Delete: "刪除",
Edit: "編輯",
RefreshTitle: "刷新標題",
RefreshToast: "已發送刷新標題請求",
},
Commands: {
new: "新建聊天",

View File

@ -43,6 +43,8 @@ const vi: PartialLocaleType = {
PinToastAction: "Xem",
Delete: "Xóa",
Edit: "Chỉnh sửa",
RefreshTitle: "Làm mới tiêu đề",
RefreshToast: "Đã gửi yêu cầu làm mới tiêu đề",
},
Commands: {
new: "Tạo cuộc trò chuyện mới",

View File

@ -547,7 +547,7 @@ export const useChatStore = createPersistStore(
});
},
summarizeSession() {
summarizeSession(refreshTitle: boolean = false) {
const config = useAppConfig.getState();
const session = get().currentSession();
const modelConfig = session.mask.modelConfig;
@ -565,11 +565,21 @@ export const useChatStore = createPersistStore(
// should summarize topic after chating more than 50 words
const SUMMARIZE_MIN_LEN = 50;
if (
config.enableAutoGenerateTitle &&
(config.enableAutoGenerateTitle &&
session.topic === DEFAULT_TOPIC &&
countMessages(messages) >= SUMMARIZE_MIN_LEN
countMessages(messages) >= SUMMARIZE_MIN_LEN) ||
refreshTitle
) {
const topicMessages = messages.concat(
const startIndex = Math.max(
0,
messages.length - modelConfig.historyMessageCount,
);
const topicMessages = messages
.slice(
startIndex < messages.length ? startIndex : messages.length - 1,
messages.length,
)
.concat(
createMessage({
role: "user",
content: Locale.Store.Prompt.Topic,