From 544bab0fe29fa9c62d6d8fd5026c97d2efda3d96 Mon Sep 17 00:00:00 2001 From: H0llyW00dzZ Date: Thu, 9 Nov 2023 20:56:45 +0700 Subject: [PATCH 01/10] Refactor Summarize Logic [+] chore(chat.ts): remove unnecessary comment and refactor variable name [+] feat(chat.ts): add stream: false to config object --- app/store/chat.ts | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/app/store/chat.ts b/app/store/chat.ts index ff7eb51b5..6eb4e934f 100644 --- a/app/store/chat.ts +++ b/app/store/chat.ts @@ -494,6 +494,7 @@ export const useChatStore = createPersistStore( messages: topicMessages, config: { model: getSummarizeModel(session.mask.modelConfig.model), + stream: false, }, onFinish(message) { get().updateCurrentSession( @@ -539,6 +540,10 @@ export const useChatStore = createPersistStore( historyMsgLength > modelConfig.compressMessageLengthThreshold && modelConfig.sendMemory ) { + /** Destruct max_tokens while summarizing + * this param is just shit + **/ + const { max_tokens, ...modelcfg } = modelConfig; api.llm.chat({ messages: toBeSummarizedMsgs.concat( createMessage({ @@ -548,7 +553,7 @@ export const useChatStore = createPersistStore( }), ), config: { - ...modelConfig, + ...modelcfg, stream: true, model: getSummarizeModel(session.mask.modelConfig.model), }, From 39f3afd52c86c175f16c08b5b22cbcd9e05de9b4 Mon Sep 17 00:00:00 2001 From: SurKaa <98200894+surkaa@users.noreply.github.com> Date: Thu, 16 Nov 2023 09:22:56 +0800 Subject: [PATCH 02/10] =?UTF-8?q?Update=20.env.template=20=E6=9B=B4?= =?UTF-8?q?=E6=AD=A3=E5=8D=95=E8=AF=8D?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .env.template | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.env.template b/.env.template index 3e3290369..ba7224dea 100644 --- a/.env.template +++ b/.env.template @@ -2,7 +2,7 @@ # Your openai api key. (required) OPENAI_API_KEY=sk-xxxx -# Access passsword, separated by comma. (optional) +# Access password, separated by comma. (optional) CODE=your-password # You can start service behind a proxy From fe0f078353c1f6ee621ceca793747fda84cd1b81 Mon Sep 17 00:00:00 2001 From: H0llyW00dzZ Date: Sun, 19 Nov 2023 19:49:52 +0700 Subject: [PATCH 03/10] Feat ChatGPT LLM Api [Console Log] [Text Moderation] [Azure] [+] fix(openai.ts): fix parsing error in ChatGPTApi's message handler [+] feat(openai.ts): add logging for flagged categories in text moderation --- app/client/platforms/openai.ts | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/app/client/platforms/openai.ts b/app/client/platforms/openai.ts index 8ea864692..5ca7d43b5 100644 --- a/app/client/platforms/openai.ts +++ b/app/client/platforms/openai.ts @@ -197,19 +197,21 @@ export class ChatGPTApi implements LLMApi { } const text = msg.data; try { - const json = JSON.parse(text) as { - choices: Array<{ - delta: { - content: string; - }; - }>; - }; - const delta = json.choices[0]?.delta?.content; + const json = JSON.parse(text); + const choices = json.choices as Array<{ delta: { content: string } }>; + const delta = choices[0]?.delta?.content; + const textmoderation = json?.prompt_filter_results; + if (delta) { remainText += delta; } + + if (textmoderation && textmoderation.length > 0 && ServiceProvider.Azure) { + const contentFilterResults = textmoderation[0]?.content_filter_results; + console.log(`[${ServiceProvider.Azure}] [Text Moderation] flagged categories result:`, contentFilterResults); + } } catch (e) { - console.error("[Request] parse error", text); + console.error("[Request] parse error", text, msg); } }, onclose() { From 10ea9bf1e39d982fce208da2925200ec88371409 Mon Sep 17 00:00:00 2001 From: frankylli Date: Wed, 29 Nov 2023 16:25:15 +0800 Subject: [PATCH 04/10] fix: MessageSelectorWarning --- app/components/message-selector.tsx | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/app/components/message-selector.tsx b/app/components/message-selector.tsx index c20153401..4f46ebb81 100644 --- a/app/components/message-selector.tsx +++ b/app/components/message-selector.tsx @@ -224,7 +224,7 @@ export function MessageSelector(props: {
- +
); From 36e9c6ac4dc7d7279bfd9e4c79b10185b1ceb14d Mon Sep 17 00:00:00 2001 From: H0llyW00dzZ Date: Fri, 1 Dec 2023 19:48:10 +0700 Subject: [PATCH 05/10] Refactor Api Common [Server Side] [Console Log] - [+] refactor(common.ts): remove unnecessary console.log for [Org ID] in requestOpenai function - [+] refactor(common.ts): conditionally delete OpenAI-Organization header from response if [Org ID] is not set up in ENV --- app/api/common.ts | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/app/api/common.ts b/app/api/common.ts index 6b0d619df..da5163f4e 100644 --- a/app/api/common.ts +++ b/app/api/common.ts @@ -30,10 +30,6 @@ export async function requestOpenai(req: NextRequest) { console.log("[Proxy] ", path); console.log("[Base Url]", baseUrl); - // this fix [Org ID] undefined in server side if not using custom point - if (serverConfig.openaiOrgId !== undefined) { - console.log("[Org ID]", serverConfig.openaiOrgId); - } const timeoutId = setTimeout( () => { @@ -103,12 +99,29 @@ export async function requestOpenai(req: NextRequest) { try { const res = await fetch(fetchUrl, fetchOptions); + // Extract the OpenAI-Organization header from the response + const openaiOrganizationHeader = res.headers.get("OpenAI-Organization"); + + // Check if serverConfig.openaiOrgId is defined + if (serverConfig.openaiOrgId !== undefined) { + // If openaiOrganizationHeader is present, log it; otherwise, log that the header is not present + console.log("[Org ID]", openaiOrganizationHeader); + } else { + console.log("[Org ID] is not set up."); + } + // to prevent browser prompt for credentials const newHeaders = new Headers(res.headers); newHeaders.delete("www-authenticate"); // to disable nginx buffering newHeaders.set("X-Accel-Buffering", "no"); + // Conditionally delete the OpenAI-Organization header from the response if [Org ID] is undefined (not setup in ENV) + // Also This one is to prevent the header from being sent to the client + if (!serverConfig.openaiOrgId) { + newHeaders.delete("OpenAI-Organization"); + } + return new Response(res.body, { status: res.status, statusText: res.statusText, From 8dc868207855da0de077aca739a2d5b186127326 Mon Sep 17 00:00:00 2001 From: H0llyW00dzZ Date: Mon, 4 Dec 2023 13:32:11 +0700 Subject: [PATCH 06/10] Fix Api Common [Server Side] - [+] fix(common.ts): improve handling of OpenAI-Organization header - Check if serverConfig.openaiOrgId is defined and not an empty string - Log the value of openaiOrganizationHeader if present, otherwise log that the header is not present - Conditionally delete the OpenAI-Organization header from the response if [Org ID] is undefined or empty (not setup in ENV) --- app/api/common.ts | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/app/api/common.ts b/app/api/common.ts index da5163f4e..48ddfb5f0 100644 --- a/app/api/common.ts +++ b/app/api/common.ts @@ -102,8 +102,8 @@ export async function requestOpenai(req: NextRequest) { // Extract the OpenAI-Organization header from the response const openaiOrganizationHeader = res.headers.get("OpenAI-Organization"); - // Check if serverConfig.openaiOrgId is defined - if (serverConfig.openaiOrgId !== undefined) { + // Check if serverConfig.openaiOrgId is defined and not an empty string + if (serverConfig.openaiOrgId && serverConfig.openaiOrgId.trim() !== "") { // If openaiOrganizationHeader is present, log it; otherwise, log that the header is not present console.log("[Org ID]", openaiOrganizationHeader); } else { @@ -116,9 +116,9 @@ export async function requestOpenai(req: NextRequest) { // to disable nginx buffering newHeaders.set("X-Accel-Buffering", "no"); - // Conditionally delete the OpenAI-Organization header from the response if [Org ID] is undefined (not setup in ENV) - // Also This one is to prevent the header from being sent to the client - if (!serverConfig.openaiOrgId) { + // Conditionally delete the OpenAI-Organization header from the response if [Org ID] is undefined or empty (not setup in ENV) + // Also, this is to prevent the header from being sent to the client + if (!serverConfig.openaiOrgId || serverConfig.openaiOrgId.trim() === "") { newHeaders.delete("OpenAI-Organization"); } From 1442337e3cd9176c593a7e0b76db0b74beb2394c Mon Sep 17 00:00:00 2001 From: reece00 <37351410+reece00@users.noreply.github.com> Date: Tue, 12 Dec 2023 02:22:22 +0800 Subject: [PATCH 07/10] The language filtering option of the mask is stored --- app/components/mask.tsx | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/app/components/mask.tsx b/app/components/mask.tsx index 3f616c3ac..479b226ed 100644 --- a/app/components/mask.tsx +++ b/app/components/mask.tsx @@ -387,7 +387,16 @@ export function MaskPage() { const maskStore = useMaskStore(); const chatStore = useChatStore(); - const [filterLang, setFilterLang] = useState(); + const [filterLang, setFilterLang] = useState( + localStorage.getItem("Mask-language") as Lang | undefined, + ); + useEffect(() => { + if (filterLang) { + localStorage.setItem("Mask-language", filterLang); + } else { + localStorage.removeItem("Mask-language"); + } + }, [filterLang]); const allMasks = maskStore .getAll() From 943a2707d2976bfab8ecd2258bc629396de18775 Mon Sep 17 00:00:00 2001 From: Eric Huang Date: Fri, 15 Dec 2023 09:37:37 +0800 Subject: [PATCH 08/10] fix(chat-item): selected chat-item showing border in other pages --- app/components/chat-list.tsx | 8 ++++++-- 1 file changed, 6 insertions(+), 2 deletions(-) diff --git a/app/components/chat-list.tsx b/app/components/chat-list.tsx index 33967717d..7ef6e7b83 100644 --- a/app/components/chat-list.tsx +++ b/app/components/chat-list.tsx @@ -12,7 +12,7 @@ import { import { useChatStore } from "../store"; import Locale from "../locales"; -import { Link, useNavigate } from "react-router-dom"; +import { Link, useLocation, useNavigate } from "react-router-dom"; import { Path } from "../constant"; import { MaskAvatar } from "./mask"; import { Mask } from "../store/mask"; @@ -40,12 +40,16 @@ export function ChatItem(props: { }); } }, [props.selected]); + + const { pathname: currentPath } = useLocation(); return ( {(provided) => (
{ From 86f42d56f28b725006e60dbf2ae875917feb3a3f Mon Sep 17 00:00:00 2001 From: Dup4 Date: Thu, 18 Jan 2024 09:11:13 +0800 Subject: [PATCH 09/10] fix: webdav check httpcode list Signed-off-by: Dup4 --- app/utils/cloud/webdav.ts | 11 +++++++++-- 1 file changed, 9 insertions(+), 2 deletions(-) diff --git a/app/utils/cloud/webdav.ts b/app/utils/cloud/webdav.ts index 3a1553c10..51159ca1a 100644 --- a/app/utils/cloud/webdav.ts +++ b/app/utils/cloud/webdav.ts @@ -20,8 +20,15 @@ export function createWebDavClient(store: SyncStore) { headers: this.headers(), proxyUrl, }); - console.log("[WebDav] check", res.status, res.statusText); - return [201, 200, 404, 301, 302, 307, 308].includes(res.status); + const success = [201, 200, 404, 405, 301, 302, 307, 308].includes( + res.status, + ); + console.log( + `[WebDav] check ${success ? "success" : "failed"}, ${res.status} ${ + res.statusText + }`, + ); + return success; } catch (e) { console.error("[WebDav] failed to check", e); } From 53fb52c6c029493589facd13949362da062bab3b Mon Sep 17 00:00:00 2001 From: hmhuming <461669486@qq.com> Date: Wed, 27 Mar 2024 17:58:55 +0800 Subject: [PATCH 10/10] fix docker --- .dockerignore | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.dockerignore b/.dockerignore index a88c7d616..95ed9e268 100644 --- a/.dockerignore +++ b/.dockerignore @@ -63,7 +63,7 @@ dist # Gatsby files .cache/ -public + # Vuepress build output .vuepress/dist