optimize mask

This commit is contained in:
sijinhui 2024-04-13 10:44:29 +08:00
parent 1ac9325f31
commit e2f78ede72
5 changed files with 80 additions and 81 deletions

View File

@ -92,8 +92,8 @@ import {
UNFINISHED_INPUT,
} from "../constant";
import { Avatar } from "./emoji";
import { ContextPrompts, MaskAvatar, MaskConfig } from "./mask";
import { useMaskStore } from "../store/mask";
// import { ContextPrompts, MaskAvatar, MaskConfig } from "./mask";
// import { useMaskStore } from "../store/mask";
import { ChatCommandPrefix, useChatCommand, useCommand } from "../command";
import { prettyObject } from "../utils/format";
import { ExportMessageModal } from "./exporter";
@ -114,7 +114,7 @@ const Markdown = dynamic(async () => (await import("./markdown")).Markdown, {
export function SessionConfigModel(props: { onClose: () => void }) {
const chatStore = useChatStore();
const session = chatStore.currentSession();
const maskStore = useMaskStore();
// const maskStore = useMaskStore();
const navigate = useNavigate();
return (
@ -136,40 +136,40 @@ export function SessionConfigModel(props: { onClose: () => void }) {
}
}}
/>,
<IconButton
key="copy"
icon={<CopyIcon />}
bordered
text={Locale.Chat.Config.SaveAs}
onClick={() => {
navigate(Path.Masks);
setTimeout(() => {
maskStore.create(session.mask);
}, 500);
}}
/>,
// <IconButton
// key="copy"
// icon={<CopyIcon />}
// bordered
// text={Locale.Chat.Config.SaveAs}
// onClick={() => {
// navigate(Path.Masks);
// setTimeout(() => {
// maskStore.create(session.mask);
// }, 500);
// }}
// />,
]}
>
<MaskConfig
mask={session.mask}
updateMask={(updater) => {
const mask = { ...session.mask };
updater(mask);
chatStore.updateCurrentSession((session) => (session.mask = mask));
}}
shouldSyncFromGlobal
extraListItems={
session.mask.modelConfig.sendMemory ? (
<ListItem
className="copyable"
title={`${Locale.Memory.Title} (${session.lastSummarizeIndex} of ${session.messages.length})`}
subTitle={session.memoryPrompt || Locale.Memory.EmptyContent}
></ListItem>
) : (
<></>
)
}
></MaskConfig>
{/*<MaskConfig*/}
{/* mask={session.mask}*/}
{/* updateMask={(updater) => {*/}
{/* const mask = { ...session.mask };*/}
{/* updater(mask);*/}
{/* chatStore.updateCurrentSession((session) => (session.mask = mask));*/}
{/* }}*/}
{/* shouldSyncFromGlobal*/}
{/* extraListItems={*/}
{/* session.mask.modelConfig.sendMemory ? (*/}
{/* <ListItem*/}
{/* className="copyable"*/}
{/* title={`${Locale.Memory.Title} (${session.lastSummarizeIndex} of ${session.messages.length})`}*/}
{/* subTitle={session.memoryPrompt || Locale.Memory.EmptyContent}*/}
{/* ></ListItem>*/}
{/* ) : (*/}
{/* <></>*/}
{/* )*/}
{/* }*/}
{/*></MaskConfig>*/}
</Modal>
</div>
);
@ -680,14 +680,14 @@ export function EditMessageModal(props: { onClose: () => void }) {
></input>
</ListItem>
</List>
<ContextPrompts
context={messages}
updateContext={(updater) => {
const newMessages = messages.slice();
updater(newMessages);
setMessages(newMessages);
}}
/>
{/*<ContextPrompts*/}
{/* context={messages}*/}
{/* updateContext={(updater) => {*/}
{/* const newMessages = messages.slice();*/}
{/* updater(newMessages);*/}
{/* setMessages(newMessages);*/}
{/* }}*/}
{/*/>*/}
</Modal>
</div>
);
@ -867,10 +867,10 @@ function _Chat() {
});
// auto sync mask config from global config
if (session.mask.syncGlobalConfig) {
console.log("[Mask] syncing from global, name = ", session.mask.name);
session.mask.modelConfig = { ...config.modelConfig };
}
// if (session.mask.syncGlobalConfig) {
// console.log("[Mask] syncing from global, name = ", session.mask.name);
// session.mask.modelConfig = { ...config.modelConfig };
// }
});
// eslint-disable-next-line react-hooks/exhaustive-deps
}, []);
@ -1411,16 +1411,16 @@ function _Chat() {
<Avatar avatar={config.avatar} />
) : (
<>
{["system"].includes(message.role) ? (
<Avatar avatar="2699-fe0f" />
) : (
<MaskAvatar
avatar={session.mask.avatar}
model={
message.model || session.mask.modelConfig.model
}
/>
)}
{/*{["system"].includes(message.role) ? (*/}
{/* <Avatar avatar="2699-fe0f" />*/}
{/*) : (*/}
{/* <MaskAvatar*/}
{/* avatar={session.mask.avatar}*/}
{/* model={*/}
{/* message.model || session.mask.modelConfig.model*/}
{/* }*/}
{/* />*/}
{/*)}*/}
</>
)}
</div>

View File

@ -159,7 +159,7 @@ function Screen() {
<Routes>
<Route path={Path.Home} element={<Chat />} />
<Route path={Path.NewChat} element={<NewChat />} />
<Route path={Path.Masks} element={<MaskPage />} />
{/*<Route path={Path.Masks} element={<MaskPage />} />*/}
<Route path={Path.Chat} element={<Chat />} />
<Route path={Path.Settings} element={<Settings />} />
<Route path={Path.Reward} element={<Reward />} />

View File

@ -148,13 +148,13 @@ export function NewChat() {
<div className={styles["sub-title"]}>{Locale.NewChat.SubTitle}</div>
<div className={styles["actions"]}>
<IconButton
text={Locale.NewChat.More}
onClick={() => navigate(Path.Masks)}
icon={<EyeIcon />}
bordered
shadow
/>
{/*<IconButton*/}
{/* text={Locale.NewChat.More}*/}
{/* onClick={() => navigate(Path.Masks)}*/}
{/* icon={<EyeIcon />}*/}
{/* bordered*/}
{/* shadow*/}
{/*/>*/}
<IconButton
text={Locale.NewChat.Skip}

View File

@ -8,7 +8,7 @@ import ChatGptIcon from "../icons/chatgpt.svg";
import AddIcon from "../icons/add.svg";
import CloseIcon from "../icons/close.svg";
import DeleteIcon from "../icons/clear.svg";
import MaskIcon from "../icons/mask.svg";
// import MaskIcon from "../icons/mask.svg";
import CoffeeIcon from "../icons/coffee.svg";
import DragIcon from "../icons/drag.svg";
@ -171,19 +171,19 @@ export function SideBar(props: { className?: string }) {
</div>
<div className={styles["sidebar-header-bar"]}>
<IconButton
icon={<MaskIcon />}
text={shouldNarrow ? undefined : Locale.Mask.Name}
className={styles["sidebar-bar-button"]}
onClick={() => {
if (config.dontShowMaskSplashScreen !== true) {
navigate(Path.NewChat, { state: { fromHome: true } });
} else {
navigate(Path.Masks, { state: { fromHome: true } });
}
}}
shadow
/>
{/*<IconButton*/}
{/* icon={<MaskIcon />}*/}
{/* text={shouldNarrow ? undefined : Locale.Mask.Name}*/}
{/* className={styles["sidebar-bar-button"]}*/}
{/* onClick={() => {*/}
{/* if (config.dontShowMaskSplashScreen !== true) {*/}
{/* navigate(Path.NewChat, { state: { fromHome: true } });*/}
{/* } else {*/}
{/* navigate(Path.Masks, { state: { fromHome: true } });*/}
{/* }*/}
{/* }}*/}
{/* shadow*/}
{/*/>*/}
<IconButton
icon={<CoffeeIcon />}
text={shouldNarrow ? undefined : "赏杯咖啡️"}

View File

@ -1,10 +1,9 @@
import bcrypt from "bcryptjs";
import {get_encoding} from "tiktoken";
import { get_encoding } from "tiktoken";
export function getTokenLength(input: string): number {
const encoding = get_encoding("cl100k_base");
// console.log('tokens: ', input, encoding.countTokens())
return encoding.encode(input).length;
}