Skip to content

Commit c275152

Browse files
committed
feat: multi-mode for bing
1 parent c5b73b1 commit c275152

File tree

3 files changed

+39
-1
lines changed

3 files changed

+39
-1
lines changed

src/background/apis/bing-web.mjs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
import BingAIClient from '../clients/BingAIClient'
2+
import { getUserConfig } from '../../config/index.mjs'
23

34
/**
45
* @param {Runtime.Port} port
@@ -49,6 +50,7 @@ export async function generateAnswersWithBingWebApi(
4950
answer = answer.replaceAll(/\[\^\d+\^\]/g, '')
5051
port.postMessage({ answer: answer, done: false, session: null })
5152
},
53+
toneStyle: (await getUserConfig()).modelMode,
5254
})
5355
.catch((err) => {
5456
port.onMessage.removeListener(stopListener)

src/config/index.mjs

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,13 @@ export const ThemeMode = {
3939
auto: 'Auto',
4040
}
4141

42+
export const ModelMode = {
43+
balanced: 'Balanced',
44+
creative: 'Creative',
45+
precise: 'Precise',
46+
fast: 'Fast',
47+
}
48+
4249
export const maxResponseTokenLength = 1000
4350

4451
/**
@@ -54,6 +61,8 @@ export const defaultConfig = {
5461
/** @type {keyof Models}*/
5562
modelName: 'chatgptFree35',
5663
apiKey: '',
64+
/** @type {keyof ModelMode}*/
65+
modelMode: 'balanced',
5766
preferredLanguage: navigator.language.substring(0, 2),
5867
insertAtTop: isMobile(),
5968
lockWhenAnswer: false,
@@ -128,6 +137,10 @@ export function isUsingApiKey(config) {
128137
)
129138
}
130139

140+
export function isUsingMultiModeModel(config) {
141+
return bingWebModelKeys.includes(config.modelName)
142+
}
143+
131144
export function isUsingCustomModel(config) {
132145
return customApiModelKeys.includes(config.modelName)
133146
}

src/popup/Popup.jsx

Lines changed: 24 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ import {
55
getUserConfig,
66
isUsingApiKey,
77
isUsingCustomModel,
8+
isUsingMultiModeModel,
9+
ModelMode,
810
Models,
911
setUserConfig,
1012
ThemeMode,
@@ -78,7 +80,9 @@ function GeneralPart({ config, updateConfig }) {
7880
<legend>API Mode</legend>
7981
<span style="display: flex; gap: 15px;">
8082
<select
81-
style={isUsingApiKey(config) ? 'width: 50%;' : undefined}
83+
style={
84+
isUsingApiKey(config) || isUsingMultiModeModel(config) ? 'width: 50%;' : undefined
85+
}
8286
required
8387
onChange={(e) => {
8488
const modelName = e.target.value
@@ -93,6 +97,25 @@ function GeneralPart({ config, updateConfig }) {
9397
)
9498
})}
9599
</select>
100+
{isUsingMultiModeModel(config) && (
101+
<span style="width: 50%; display: flex; gap: 5px;">
102+
<select
103+
required
104+
onChange={(e) => {
105+
const modelMode = e.target.value
106+
updateConfig({ modelMode: modelMode })
107+
}}
108+
>
109+
{Object.entries(ModelMode).map(([key, desc]) => {
110+
return (
111+
<option value={key} key={key} selected={key === config.modelMode}>
112+
{desc}
113+
</option>
114+
)
115+
})}
116+
</select>
117+
</span>
118+
)}
96119
{isUsingApiKey(config) && (
97120
<span style="width: 50%; display: flex; gap: 5px;">
98121
<input

0 commit comments

Comments
 (0)