From 3d89ddd5bf7b9166be0497bf52479e89d8aa599b Mon Sep 17 00:00:00 2001 From: josc146 Date: Wed, 7 Aug 2024 17:13:27 +0800 Subject: [PATCH] WIP, custom API Modes --- src/components/ConversationCard/index.jsx | 17 +++++++----- src/components/ConversationItem/index.jsx | 25 +++++------------ src/config/index.mjs | 8 ++++-- src/content-script/index.jsx | 27 +++++++++++++++---- src/services/apis/bing-web.mjs | 7 +++-- src/services/apis/chatgpt-web.mjs | 4 +-- src/services/apis/claude-api.mjs | 6 ++--- src/services/apis/claude-web.mjs | 14 +++------- src/services/apis/moonshot-web.mjs | 14 +++------- src/services/apis/openai-api.mjs | 17 +++++------- src/services/init-session.mjs | 8 +++++- src/services/local-session.mjs | 1 + src/services/wrappers.mjs | 12 ++++----- src/utils/crop-text.mjs | 1 + src/utils/model-name-convert.mjs | 33 +++++++++++++++++++++-- 15 files changed, 112 insertions(+), 82 deletions(-) diff --git a/src/components/ConversationCard/index.jsx b/src/components/ConversationCard/index.jsx index 138824f..440bfff 100644 --- a/src/components/ConversationCard/index.jsx +++ b/src/components/ConversationCard/index.jsx @@ -11,6 +11,7 @@ import { isFirefox, isMobile, isSafari, + isUsingModelName, modelNameToDesc, } from '../../utils' import { @@ -25,7 +26,7 @@ import FileSaver from 'file-saver' import { render } from 'preact' import FloatingToolbar from '../FloatingToolbar' import { useClampWindowSize } from '../../hooks/use-clamp-window-size' -import { bingWebModelKeys, getUserConfig, Models } from '../../config/index.mjs' +import { getUserConfig, isUsingBingWebModel, Models } from '../../config/index.mjs' import { useTranslation } from 'react-i18next' import DeleteButton from '../DeleteButton' import { useConfig } from '../../hooks/use-config.mjs' @@ -61,8 +62,7 @@ function ConversationCard(props) { const windowSize = useClampWindowSize([750, 1500], [250, 1100]) const bodyRef = useRef(null) const [completeDraggable, setCompleteDraggable] = useState(false) - // `.some` for multi mode models. e.g. bingFree4-balanced - const useForegroundFetch = bingWebModelKeys.some((n) => session.modelName.includes(n)) + const useForegroundFetch = isUsingBingWebModel(session) const [apiModes, setApiModes] = useState([]) /** @@ -247,7 +247,7 @@ function ConversationCard(props) { } try { const bingToken = (await getUserConfig()).bingAccessToken - if (session.modelName.includes('bingFreeSydney')) + if (isUsingModelName('bingFreeSydney', session)) await generateAnswersWithBingWebApi( fakePort, session.question, @@ -390,7 +390,11 @@ function ConversationCard(props) { ...session, modelName, apiMode, - aiName: modelNameToDesc(apiMode ? apiModeToModelName(apiMode) : modelName, t), + aiName: modelNameToDesc( + apiMode ? apiModeToModelName(apiMode) : modelName, + t, + config.customModelName, + ), } if (config.autoRegenAfterSwitchModel && conversationItemData.length > 0) getRetryFn(newSession)() @@ -399,7 +403,7 @@ function ConversationCard(props) { > {apiModes.map((apiMode, index) => { const modelName = apiModeToModelName(apiMode) - const desc = modelNameToDesc(modelName, t) + const desc = modelNameToDesc(modelName, t, config.customModelName) if (desc) { return (