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 StyleIcon from "../icons/palette.svg";
import PluginIcon from "../icons/plugin.svg"; import PluginIcon from "../icons/plugin.svg";
import ShortcutkeyIcon from "../icons/shortcutkey.svg"; import ShortcutkeyIcon from "../icons/shortcutkey.svg";
import ReloadIcon from "../icons/reload.svg";
import { import {
ChatMessage, ChatMessage,
@ -1541,6 +1542,17 @@ function _Chat() {
</div> </div>
</div> </div>
<div className="window-actions"> <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 && ( {!isMobileScreen && (
<div className="window-action-button"> <div className="window-action-button">
<IconButton <IconButton

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

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

View File

@ -43,6 +43,8 @@ const vi: PartialLocaleType = {
PinToastAction: "Xem", PinToastAction: "Xem",
Delete: "Xóa", Delete: "Xóa",
Edit: "Chỉnh sử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: { Commands: {
new: "Tạo cuộc trò chuyện mới", 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 config = useAppConfig.getState();
const session = get().currentSession(); const session = get().currentSession();
const modelConfig = session.mask.modelConfig; const modelConfig = session.mask.modelConfig;
@ -565,16 +565,26 @@ export const useChatStore = createPersistStore(
// should summarize topic after chating more than 50 words // should summarize topic after chating more than 50 words
const SUMMARIZE_MIN_LEN = 50; const SUMMARIZE_MIN_LEN = 50;
if ( if (
config.enableAutoGenerateTitle && (config.enableAutoGenerateTitle &&
session.topic === DEFAULT_TOPIC && session.topic === DEFAULT_TOPIC &&
countMessages(messages) >= SUMMARIZE_MIN_LEN countMessages(messages) >= SUMMARIZE_MIN_LEN) ||
refreshTitle
) { ) {
const topicMessages = messages.concat( const startIndex = Math.max(
createMessage({ 0,
role: "user", messages.length - modelConfig.historyMessageCount,
content: Locale.Store.Prompt.Topic,
}),
); );
const topicMessages = messages
.slice(
startIndex < messages.length ? startIndex : messages.length - 1,
messages.length,
)
.concat(
createMessage({
role: "user",
content: Locale.Store.Prompt.Topic,
}),
);
api.llm.chat({ api.llm.chat({
messages: topicMessages, messages: topicMessages,
config: { config: {