From bda56b3ae88808d4a1f4f2443e95c380ed2347b8 Mon Sep 17 00:00:00 2001 From: josc146 Date: Mon, 10 Apr 2023 22:33:48 +0800 Subject: [PATCH] feat: make maxResponseTokenLength configurable (#170, #171) --- src/_locales/en/main.json | 3 ++- src/_locales/zh-hans/main.json | 3 ++- src/_locales/zh-hant/main.json | 3 ++- src/background/apis/azure-openai-api.mjs | 4 ++-- src/background/apis/custom-api.mjs | 7 ++++--- src/background/apis/openai-api.mjs | 12 +++++++----- src/config/index.mjs | 3 +-- src/popup/Popup.jsx | 14 ++++++++++++++ src/utils/crop-text.mjs | 3 +-- 9 files changed, 35 insertions(+), 17 deletions(-) diff --git a/src/_locales/en/main.json b/src/_locales/en/main.json index 1971957..8097bdc 100644 --- a/src/_locales/en/main.json +++ b/src/_locales/en/main.json @@ -98,5 +98,6 @@ "Open Conversation Page": "Open Conversation Page", "Open Conversation Window": "Open Conversation Window", "Store to Independent Conversation Page": "Store to Independent Conversation Page", - "Keep Conversation Window in Background": "Keep conversation window in background, so that you can use shortcut keys to call it up in any program" + "Keep Conversation Window in Background": "Keep conversation window in background, so that you can use shortcut keys to call it up in any program", + "Max Response Token Length": "Max Response Token Length" } diff --git a/src/_locales/zh-hans/main.json b/src/_locales/zh-hans/main.json index 76adf50..7281966 100644 --- a/src/_locales/zh-hans/main.json +++ b/src/_locales/zh-hans/main.json @@ -98,5 +98,6 @@ "Open Conversation Page": "打开独立对话页", "Open Conversation Window": "打开独立对话窗口", "Store to Independent Conversation Page": "收纳到独立对话页", - "Keep Conversation Window in Background": "保持对话窗口在后台, 以便在任何程序中使用快捷键呼出" + "Keep Conversation Window in Background": "保持对话窗口在后台, 以便在任何程序中使用快捷键呼出", + "Max Response Token Length": "响应的最大token长度" } diff --git a/src/_locales/zh-hant/main.json b/src/_locales/zh-hant/main.json index 7da4ad1..1dc39fc 100644 --- a/src/_locales/zh-hant/main.json +++ b/src/_locales/zh-hant/main.json @@ -98,5 +98,6 @@ "Open Conversation Page": "開啟獨立對話頁", "Open Conversation Window": "開啟獨立對話視窗", "Store to Independent Conversation Page": "收納到獨立對話頁", - "Keep Conversation Window in Background": "保持對話窗口在後臺, 以便在任何程序中使用快捷鍵呼出" + "Keep Conversation Window in Background": "保持對話窗口在後臺, 以便在任何程序中使用快捷鍵呼出", + "Max Response Token Length": "響應的最大token長度" } diff --git a/src/background/apis/azure-openai-api.mjs b/src/background/apis/azure-openai-api.mjs index 702e48f..a26aa1b 100644 --- a/src/background/apis/azure-openai-api.mjs +++ b/src/background/apis/azure-openai-api.mjs @@ -1,4 +1,4 @@ -import { getUserConfig, maxResponseTokenLength } from '../../config/index.mjs' +import { getUserConfig } from '../../config/index.mjs' import { getChatSystemPromptBase, pushRecord, setAbortController } from './shared.mjs' import { getConversationPairs } from '../../utils/get-conversation-pairs' import { fetchSSE } from '../../utils/fetch-sse' @@ -32,7 +32,7 @@ export async function generateAnswersWithAzureOpenaiApi(port, question, session) body: JSON.stringify({ messages: prompt, stream: true, - max_tokens: maxResponseTokenLength, + max_tokens: config.maxResponseTokenLength, }), onMessage(message) { console.debug('sse message', message) diff --git a/src/background/apis/custom-api.mjs b/src/background/apis/custom-api.mjs index 1f18344..157f32b 100644 --- a/src/background/apis/custom-api.mjs +++ b/src/background/apis/custom-api.mjs @@ -5,7 +5,7 @@ // and it has not yet had a negative impact on maintenance. // If necessary, I will refactor. -import { getUserConfig, maxResponseTokenLength } from '../../config/index.mjs' +import { getUserConfig } from '../../config/index.mjs' import { fetchSSE } from '../../utils/fetch-sse' import { getConversationPairs } from '../../utils/get-conversation-pairs' import { isEmpty } from 'lodash-es' @@ -24,7 +24,8 @@ export async function generateAnswersWithCustomApi(port, question, session, apiK const prompt = getConversationPairs(session.conversationRecords, false) prompt.unshift({ role: 'system', content: await getCustomApiPromptBase() }) prompt.push({ role: 'user', content: question }) - const apiUrl = (await getUserConfig()).customModelApiUrl + const config = await getUserConfig() + const apiUrl = config.customModelApiUrl let answer = '' await fetchSSE(apiUrl, { @@ -38,7 +39,7 @@ export async function generateAnswersWithCustomApi(port, question, session, apiK messages: prompt, model: modelName, stream: true, - max_tokens: maxResponseTokenLength, + max_tokens: config.maxResponseTokenLength, }), onMessage(message) { console.debug('sse message', message) diff --git a/src/background/apis/openai-api.mjs b/src/background/apis/openai-api.mjs index f1489ee..32d9fac 100644 --- a/src/background/apis/openai-api.mjs +++ b/src/background/apis/openai-api.mjs @@ -1,6 +1,6 @@ // api version -import { maxResponseTokenLength, Models, getUserConfig } from '../../config/index.mjs' +import { Models, getUserConfig } from '../../config/index.mjs' import { fetchSSE } from '../../utils/fetch-sse' import { getConversationPairs } from '../../utils/get-conversation-pairs' import { isEmpty } from 'lodash-es' @@ -31,7 +31,8 @@ export async function generateAnswersWithGptCompletionApi( (await getCompletionPromptBase()) + getConversationPairs(session.conversationRecords, true) + `Human: ${question}\nAI: ` - const apiUrl = (await getUserConfig()).customOpenAiApiUrl + const config = await getUserConfig() + const apiUrl = config.customOpenAiApiUrl let answer = '' await fetchSSE(`${apiUrl}/v1/completions`, { @@ -45,7 +46,7 @@ export async function generateAnswersWithGptCompletionApi( prompt: prompt, model: Models[modelName].value, stream: true, - max_tokens: maxResponseTokenLength, + max_tokens: config.maxResponseTokenLength, }), onMessage(message) { console.debug('sse message', message) @@ -94,7 +95,8 @@ export async function generateAnswersWithChatgptApi(port, question, session, api const prompt = getConversationPairs(session.conversationRecords, false) prompt.unshift({ role: 'system', content: await getChatSystemPromptBase() }) prompt.push({ role: 'user', content: question }) - const apiUrl = (await getUserConfig()).customOpenAiApiUrl + const config = await getUserConfig() + const apiUrl = config.customOpenAiApiUrl let answer = '' await fetchSSE(`${apiUrl}/v1/chat/completions`, { @@ -108,7 +110,7 @@ export async function generateAnswersWithChatgptApi(port, question, session, api messages: prompt, model: Models[modelName].value, stream: true, - max_tokens: maxResponseTokenLength, + max_tokens: config.maxResponseTokenLength, }), onMessage(message) { console.debug('sse message', message) diff --git a/src/config/index.mjs b/src/config/index.mjs index f0d50b0..8b358e3 100644 --- a/src/config/index.mjs +++ b/src/config/index.mjs @@ -48,8 +48,6 @@ export const ModelMode = { fast: 'Fast', } -export const maxResponseTokenLength = 1000 - /** * @typedef {typeof defaultConfig} UserConfig */ @@ -82,6 +80,7 @@ export const defaultConfig = { // advanced + maxResponseTokenLength: 1000, customChatGptWebApiUrl: 'https://chat.openai.com', customChatGptWebApiPath: '/backend-api/conversation', customOpenAiApiUrl: 'https://api.openai.com', diff --git a/src/popup/Popup.jsx b/src/popup/Popup.jsx index 899ed64..0c561f6 100644 --- a/src/popup/Popup.jsx +++ b/src/popup/Popup.jsx @@ -367,6 +367,20 @@ function AdvancedPart({ config, updateConfig }) { return ( <> +