mirror of
https://github.com/ChatGPTNextWeb/ChatGPT-Next-Web.git
synced 2026-04-24 20:14:25 +08:00
add summarize model setting
This commit is contained in:
@@ -81,6 +81,8 @@ import { nanoid } from "nanoid";
|
|||||||
import { useMaskStore } from "../store/mask";
|
import { useMaskStore } from "../store/mask";
|
||||||
import { ProviderType } from "../utils/cloud";
|
import { ProviderType } from "../utils/cloud";
|
||||||
|
|
||||||
|
import { useAllModels } from "../utils/hooks";
|
||||||
|
|
||||||
function EditPromptModal(props: { id: string; onClose: () => void }) {
|
function EditPromptModal(props: { id: string; onClose: () => void }) {
|
||||||
const promptStore = usePromptStore();
|
const promptStore = usePromptStore();
|
||||||
const prompt = promptStore.get(props.id);
|
const prompt = promptStore.get(props.id);
|
||||||
@@ -578,6 +580,8 @@ export function Settings() {
|
|||||||
const config = useAppConfig();
|
const config = useAppConfig();
|
||||||
const updateConfig = config.update;
|
const updateConfig = config.update;
|
||||||
|
|
||||||
|
const allModels = useAllModels();
|
||||||
|
|
||||||
const updateStore = useUpdateStore();
|
const updateStore = useUpdateStore();
|
||||||
const [checkingUpdate, setCheckingUpdate] = useState(false);
|
const [checkingUpdate, setCheckingUpdate] = useState(false);
|
||||||
const currentVersion = updateStore.formatVersion(updateStore.version);
|
const currentVersion = updateStore.formatVersion(updateStore.version);
|
||||||
@@ -1448,6 +1452,31 @@ export function Settings() {
|
|||||||
></input>
|
></input>
|
||||||
</ListItem>
|
</ListItem>
|
||||||
|
|
||||||
|
{config.enableAutoGenerateTitle && (
|
||||||
|
<ListItem title={Locale.Settings.SummarizeModel}>
|
||||||
|
<Select
|
||||||
|
aria-label={Locale.Settings.SummarizeModel}
|
||||||
|
value={config.summarizeModel}
|
||||||
|
onChange={(e) => {
|
||||||
|
const [model, _providerName] =
|
||||||
|
e.currentTarget.value.split("@");
|
||||||
|
updateConfig((config) => {
|
||||||
|
console.log("config", config);
|
||||||
|
config.summarizeModel = model;
|
||||||
|
});
|
||||||
|
}}
|
||||||
|
>
|
||||||
|
{allModels
|
||||||
|
.filter((v) => v.available)
|
||||||
|
.map((v, i) => (
|
||||||
|
<option value={v.name} key={i}>
|
||||||
|
{v.displayName}({v.provider?.providerName})
|
||||||
|
</option>
|
||||||
|
))}
|
||||||
|
</Select>
|
||||||
|
</ListItem>
|
||||||
|
)}
|
||||||
|
|
||||||
<ListItem
|
<ListItem
|
||||||
title={Locale.Settings.SendPreviewBubble.Title}
|
title={Locale.Settings.SendPreviewBubble.Title}
|
||||||
subTitle={Locale.Settings.SendPreviewBubble.SubTitle}
|
subTitle={Locale.Settings.SendPreviewBubble.SubTitle}
|
||||||
|
|||||||
@@ -187,6 +187,7 @@ const ar: PartialLocaleType = {
|
|||||||
Title: "توليد العنوان تلقائيًا",
|
Title: "توليد العنوان تلقائيًا",
|
||||||
SubTitle: "توليد عنوان مناسب بناءً على محتوى الدردشة",
|
SubTitle: "توليد عنوان مناسب بناءً على محتوى الدردشة",
|
||||||
},
|
},
|
||||||
|
SummarizeModel: "النموذج لتوليد العنوان تلقائيًا",
|
||||||
Sync: {
|
Sync: {
|
||||||
CloudState: "بيانات السحابة",
|
CloudState: "بيانات السحابة",
|
||||||
NotSyncYet: "لم يتم التزامن بعد",
|
NotSyncYet: "لم يتم التزامن بعد",
|
||||||
|
|||||||
@@ -188,6 +188,7 @@ const bn: PartialLocaleType = {
|
|||||||
Title: "স্বয়ংক্রিয় শিরোনাম জেনারেশন",
|
Title: "স্বয়ংক্রিয় শিরোনাম জেনারেশন",
|
||||||
SubTitle: "চ্যাট কনটেন্টের ভিত্তিতে উপযুক্ত শিরোনাম তৈরি করুন",
|
SubTitle: "চ্যাট কনটেন্টের ভিত্তিতে উপযুক্ত শিরোনাম তৈরি করুন",
|
||||||
},
|
},
|
||||||
|
SummarizeModel: "শিরোনাম স্বয়ংক্রিয় জেনারেশনের জন্য নির্দেশনা",
|
||||||
Sync: {
|
Sync: {
|
||||||
CloudState: "ক্লাউড ডেটা",
|
CloudState: "ক্লাউড ডেটা",
|
||||||
NotSyncYet: "এখনো সিঙ্ক করা হয়নি",
|
NotSyncYet: "এখনো সিঙ্ক করা হয়নি",
|
||||||
|
|||||||
@@ -191,6 +191,7 @@ const cn = {
|
|||||||
Title: "自动生成标题",
|
Title: "自动生成标题",
|
||||||
SubTitle: "根据对话内容生成合适的标题",
|
SubTitle: "根据对话内容生成合适的标题",
|
||||||
},
|
},
|
||||||
|
SummarizeModel: "自动生成标题使用模型",
|
||||||
Sync: {
|
Sync: {
|
||||||
CloudState: "云端数据",
|
CloudState: "云端数据",
|
||||||
NotSyncYet: "还没有进行过同步",
|
NotSyncYet: "还没有进行过同步",
|
||||||
|
|||||||
@@ -188,6 +188,7 @@ const cs: PartialLocaleType = {
|
|||||||
Title: "Automatické generování názvu",
|
Title: "Automatické generování názvu",
|
||||||
SubTitle: "Generovat vhodný název na základě obsahu konverzace",
|
SubTitle: "Generovat vhodný název na základě obsahu konverzace",
|
||||||
},
|
},
|
||||||
|
SummarizeModel: "Model pro automatické generování názvu",
|
||||||
Sync: {
|
Sync: {
|
||||||
CloudState: "Data na cloudu",
|
CloudState: "Data na cloudu",
|
||||||
NotSyncYet: "Ještě nebylo synchronizováno",
|
NotSyncYet: "Ještě nebylo synchronizováno",
|
||||||
|
|||||||
@@ -192,6 +192,7 @@ const de: PartialLocaleType = {
|
|||||||
SubTitle:
|
SubTitle:
|
||||||
"Basierend auf dem Chat-Inhalt einen passenden Titel generieren",
|
"Basierend auf dem Chat-Inhalt einen passenden Titel generieren",
|
||||||
},
|
},
|
||||||
|
SummarizeModel: "Model für automatische Titelgenerierung",
|
||||||
Sync: {
|
Sync: {
|
||||||
CloudState: "Cloud-Daten",
|
CloudState: "Cloud-Daten",
|
||||||
NotSyncYet: "Noch nicht synchronisiert",
|
NotSyncYet: "Noch nicht synchronisiert",
|
||||||
|
|||||||
@@ -194,6 +194,7 @@ const en: LocaleType = {
|
|||||||
Title: "Auto Generate Title",
|
Title: "Auto Generate Title",
|
||||||
SubTitle: "Generate a suitable title based on the conversation content",
|
SubTitle: "Generate a suitable title based on the conversation content",
|
||||||
},
|
},
|
||||||
|
SummarizeModel: "Model For Auto Generate Title",
|
||||||
Sync: {
|
Sync: {
|
||||||
CloudState: "Last Update",
|
CloudState: "Last Update",
|
||||||
NotSyncYet: "Not sync yet",
|
NotSyncYet: "Not sync yet",
|
||||||
|
|||||||
@@ -195,6 +195,7 @@ const es: PartialLocaleType = {
|
|||||||
Title: "Generar título automáticamente",
|
Title: "Generar título automáticamente",
|
||||||
SubTitle: "Generar un título adecuado basado en el contenido del chat",
|
SubTitle: "Generar un título adecuado basado en el contenido del chat",
|
||||||
},
|
},
|
||||||
|
SummarizeModel: "Modelo para generar título automáticamente",
|
||||||
Sync: {
|
Sync: {
|
||||||
CloudState: "Datos en la nube",
|
CloudState: "Datos en la nube",
|
||||||
NotSyncYet: "Aún no se ha sincronizado",
|
NotSyncYet: "Aún no se ha sincronizado",
|
||||||
|
|||||||
@@ -194,6 +194,7 @@ const fr: PartialLocaleType = {
|
|||||||
SubTitle:
|
SubTitle:
|
||||||
"Générer un titre approprié en fonction du contenu de la discussion",
|
"Générer un titre approprié en fonction du contenu de la discussion",
|
||||||
},
|
},
|
||||||
|
SummarizeModel: "Modèle pour générer automatiquement le titre",
|
||||||
Sync: {
|
Sync: {
|
||||||
CloudState: "Données cloud",
|
CloudState: "Données cloud",
|
||||||
NotSyncYet: "Pas encore synchronisé",
|
NotSyncYet: "Pas encore synchronisé",
|
||||||
|
|||||||
@@ -189,6 +189,7 @@ const id: PartialLocaleType = {
|
|||||||
Title: "Otomatis Membuat Judul",
|
Title: "Otomatis Membuat Judul",
|
||||||
SubTitle: "Membuat judul yang sesuai berdasarkan konten obrolan",
|
SubTitle: "Membuat judul yang sesuai berdasarkan konten obrolan",
|
||||||
},
|
},
|
||||||
|
SummarizeModel: "Model untuk otomatis membuat judul",
|
||||||
Sync: {
|
Sync: {
|
||||||
CloudState: "Data Cloud",
|
CloudState: "Data Cloud",
|
||||||
NotSyncYet: "Belum disinkronkan",
|
NotSyncYet: "Belum disinkronkan",
|
||||||
|
|||||||
@@ -196,6 +196,7 @@ const it: PartialLocaleType = {
|
|||||||
SubTitle:
|
SubTitle:
|
||||||
"Genera un titolo appropriato in base al contenuto della conversazione",
|
"Genera un titolo appropriato in base al contenuto della conversazione",
|
||||||
},
|
},
|
||||||
|
SummarizeModel: "Modello per generare automaticamente il titolo",
|
||||||
Sync: {
|
Sync: {
|
||||||
CloudState: "Dati cloud",
|
CloudState: "Dati cloud",
|
||||||
NotSyncYet: "Non è ancora avvenuta alcuna sincronizzazione",
|
NotSyncYet: "Non è ancora avvenuta alcuna sincronizzazione",
|
||||||
|
|||||||
@@ -188,6 +188,7 @@ const jp: PartialLocaleType = {
|
|||||||
Title: "自動タイトル生成",
|
Title: "自動タイトル生成",
|
||||||
SubTitle: "チャット内容に基づいて適切なタイトルを生成",
|
SubTitle: "チャット内容に基づいて適切なタイトルを生成",
|
||||||
},
|
},
|
||||||
|
SummarizeModel: "自動タイトル生成モデル",
|
||||||
Sync: {
|
Sync: {
|
||||||
CloudState: "クラウドデータ",
|
CloudState: "クラウドデータ",
|
||||||
NotSyncYet: "まだ同期されていません",
|
NotSyncYet: "まだ同期されていません",
|
||||||
|
|||||||
@@ -187,6 +187,7 @@ const ko: PartialLocaleType = {
|
|||||||
Title: "제목 자동 생성",
|
Title: "제목 자동 생성",
|
||||||
SubTitle: "대화 내용에 따라 적절한 제목 생성",
|
SubTitle: "대화 내용에 따라 적절한 제목 생성",
|
||||||
},
|
},
|
||||||
|
SummarizeModel: "제목 자동 생성 모델",
|
||||||
Sync: {
|
Sync: {
|
||||||
CloudState: "클라우드 데이터",
|
CloudState: "클라우드 데이터",
|
||||||
NotSyncYet: "아직 동기화되지 않았습니다.",
|
NotSyncYet: "아직 동기화되지 않았습니다.",
|
||||||
|
|||||||
@@ -193,6 +193,7 @@ const no: PartialLocaleType = {
|
|||||||
Title: "Automatisk generere tittel",
|
Title: "Automatisk generere tittel",
|
||||||
SubTitle: "Generer en passende tittel basert på samtaleinnholdet",
|
SubTitle: "Generer en passende tittel basert på samtaleinnholdet",
|
||||||
},
|
},
|
||||||
|
SummarizeModel: "Modell for automatisk generering av tittel",
|
||||||
Sync: {
|
Sync: {
|
||||||
CloudState: "Skydatasynkronisering",
|
CloudState: "Skydatasynkronisering",
|
||||||
NotSyncYet: "Har ikke blitt synkronisert ennå",
|
NotSyncYet: "Har ikke blitt synkronisert ennå",
|
||||||
|
|||||||
@@ -187,6 +187,7 @@ const pt: PartialLocaleType = {
|
|||||||
Title: "Gerar Título Automaticamente",
|
Title: "Gerar Título Automaticamente",
|
||||||
SubTitle: "Gerar um título adequado baseado no conteúdo da conversa",
|
SubTitle: "Gerar um título adequado baseado no conteúdo da conversa",
|
||||||
},
|
},
|
||||||
|
SummarizeModel: "Modelo para gerar automaticamente o título",
|
||||||
Sync: {
|
Sync: {
|
||||||
CloudState: "Última Atualização",
|
CloudState: "Última Atualização",
|
||||||
NotSyncYet: "Ainda não sincronizado",
|
NotSyncYet: "Ainda não sincronizado",
|
||||||
|
|||||||
@@ -189,6 +189,7 @@ const sk: PartialLocaleType = {
|
|||||||
Title: "Automaticky generovať názov",
|
Title: "Automaticky generovať názov",
|
||||||
SubTitle: "Generovať vhodný názov na základe obsahu konverzácie",
|
SubTitle: "Generovať vhodný názov na základe obsahu konverzácie",
|
||||||
},
|
},
|
||||||
|
SummarizeModel: "Model na automatické generovanie názvu",
|
||||||
Sync: {
|
Sync: {
|
||||||
CloudState: "Posledná aktualizácia",
|
CloudState: "Posledná aktualizácia",
|
||||||
NotSyncYet: "Zatiaľ nesynchronizované",
|
NotSyncYet: "Zatiaľ nesynchronizované",
|
||||||
|
|||||||
@@ -188,6 +188,7 @@ const tr: PartialLocaleType = {
|
|||||||
Title: "Başlığı Otomatik Oluştur",
|
Title: "Başlığı Otomatik Oluştur",
|
||||||
SubTitle: "Sohbet içeriğine göre uygun başlık oluştur",
|
SubTitle: "Sohbet içeriğine göre uygun başlık oluştur",
|
||||||
},
|
},
|
||||||
|
SummarizeModel: "Başlık Otomatik Oluşturma Modeli",
|
||||||
Sync: {
|
Sync: {
|
||||||
CloudState: "Bulut Verisi",
|
CloudState: "Bulut Verisi",
|
||||||
NotSyncYet: "Henüz senkronize edilmedi",
|
NotSyncYet: "Henüz senkronize edilmedi",
|
||||||
|
|||||||
@@ -186,6 +186,7 @@ const tw = {
|
|||||||
Title: "自動產生標題",
|
Title: "自動產生標題",
|
||||||
SubTitle: "根據對話內容產生合適的標題",
|
SubTitle: "根據對話內容產生合適的標題",
|
||||||
},
|
},
|
||||||
|
SummarizeModel: "自動產生標題模型",
|
||||||
Sync: {
|
Sync: {
|
||||||
CloudState: "雲端資料",
|
CloudState: "雲端資料",
|
||||||
NotSyncYet: "還沒有進行過同步",
|
NotSyncYet: "還沒有進行過同步",
|
||||||
|
|||||||
@@ -188,6 +188,7 @@ const vi: PartialLocaleType = {
|
|||||||
Title: "Tự động tạo tiêu đề",
|
Title: "Tự động tạo tiêu đề",
|
||||||
SubTitle: "Tạo tiêu đề phù hợp dựa trên nội dung cuộc trò chuyện",
|
SubTitle: "Tạo tiêu đề phù hợp dựa trên nội dung cuộc trò chuyện",
|
||||||
},
|
},
|
||||||
|
SummarizeModel: "Mô hình tự động tạo tiêu đề",
|
||||||
Sync: {
|
Sync: {
|
||||||
CloudState: "Dữ liệu đám mây",
|
CloudState: "Dữ liệu đám mây",
|
||||||
NotSyncYet: "Chưa thực hiện đồng bộ",
|
NotSyncYet: "Chưa thực hiện đồng bộ",
|
||||||
|
|||||||
@@ -92,6 +92,11 @@ function createEmptySession(): ChatSession {
|
|||||||
}
|
}
|
||||||
|
|
||||||
function getSummarizeModel(currentModel: string) {
|
function getSummarizeModel(currentModel: string) {
|
||||||
|
const config = useAppConfig.getState();
|
||||||
|
if (config.summarizeModel) {
|
||||||
|
return config.summarizeModel;
|
||||||
|
}
|
||||||
|
|
||||||
// if it is using gpt-* models, force to use 4o-mini to summarize
|
// if it is using gpt-* models, force to use 4o-mini to summarize
|
||||||
if (currentModel.startsWith("gpt")) {
|
if (currentModel.startsWith("gpt")) {
|
||||||
const configStore = useAppConfig.getState();
|
const configStore = useAppConfig.getState();
|
||||||
|
|||||||
@@ -39,6 +39,7 @@ export const DEFAULT_CONFIG = {
|
|||||||
tightBorder: !!config?.isApp,
|
tightBorder: !!config?.isApp,
|
||||||
sendPreviewBubble: true,
|
sendPreviewBubble: true,
|
||||||
enableAutoGenerateTitle: true,
|
enableAutoGenerateTitle: true,
|
||||||
|
summarizeModel: "gpt-3.5-turbo" as ModelType,
|
||||||
sidebarWidth: DEFAULT_SIDEBAR_WIDTH,
|
sidebarWidth: DEFAULT_SIDEBAR_WIDTH,
|
||||||
|
|
||||||
disablePromptHint: false,
|
disablePromptHint: false,
|
||||||
|
|||||||
Reference in New Issue
Block a user