@midscene/shared 0.28.2 → 0.28.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/es/env/{model-config.mjs → decide-model-config.mjs} +52 -50
- package/dist/es/env/global-config-manager.mjs +91 -0
- package/dist/es/env/index.mjs +3 -2
- package/dist/es/env/model-config-manager.mjs +95 -0
- package/dist/es/env/parse.mjs +8 -23
- package/dist/es/env/types.mjs +16 -1
- package/dist/es/env/utils.mjs +7 -52
- package/dist/lib/env/{model-config.js → decide-model-config.js} +57 -52
- package/dist/lib/env/global-config-manager.js +125 -0
- package/dist/lib/env/index.js +17 -8
- package/dist/lib/env/model-config-manager.js +129 -0
- package/dist/lib/env/parse.js +9 -27
- package/dist/lib/env/types.js +23 -2
- package/dist/lib/env/utils.js +12 -69
- package/dist/types/env/decide-model-config.d.ts +14 -0
- package/dist/types/env/global-config-manager.d.ts +32 -0
- package/dist/types/env/helper.d.ts +1 -1
- package/dist/types/env/index.d.ts +2 -1
- package/dist/types/env/model-config-manager.d.ts +23 -0
- package/dist/types/env/parse.d.ts +2 -13
- package/dist/types/env/types.d.ts +52 -2
- package/dist/types/env/utils.d.ts +4 -8
- package/package.json +1 -1
- package/src/env/{model-config.ts → decide-model-config.ts} +91 -139
- package/src/env/global-config-manager.ts +174 -0
- package/src/env/helper.ts +1 -1
- package/src/env/index.ts +2 -1
- package/src/env/model-config-manager.ts +135 -0
- package/src/env/parse.ts +5 -24
- package/src/env/types.ts +61 -3
- package/src/env/utils.ts +7 -98
- package/dist/es/env/global-config.mjs +0 -192
- package/dist/lib/env/global-config.js +0 -229
- package/dist/types/env/global-config.d.ts +0 -52
- package/dist/types/env/model-config.d.ts +0 -70
- package/src/env/global-config.ts +0 -329
package/dist/lib/env/utils.js
CHANGED
|
@@ -24,57 +24,18 @@ var __webpack_require__ = {};
|
|
|
24
24
|
var __webpack_exports__ = {};
|
|
25
25
|
__webpack_require__.r(__webpack_exports__);
|
|
26
26
|
__webpack_require__.d(__webpack_exports__, {
|
|
27
|
-
getIsUseQwenVl: ()=>getIsUseQwenVl,
|
|
28
|
-
uiTarsModelVersion: ()=>uiTarsModelVersion,
|
|
29
|
-
overrideAIConfig: ()=>overrideAIConfig,
|
|
30
|
-
vlLocateMode: ()=>vlLocateMode,
|
|
31
|
-
getUploadTestServerUrl: ()=>getUploadTestServerUrl,
|
|
32
27
|
globalConfigManager: ()=>globalConfigManager,
|
|
28
|
+
globalModelConfigManager: ()=>globalModelConfigManager,
|
|
33
29
|
getPreferredLanguage: ()=>getPreferredLanguage,
|
|
34
|
-
|
|
30
|
+
overrideAIConfig: ()=>overrideAIConfig
|
|
35
31
|
});
|
|
36
|
-
const
|
|
32
|
+
const external_global_config_manager_js_namespaceObject = require("./global-config-manager.js");
|
|
33
|
+
const external_model_config_manager_js_namespaceObject = require("./model-config-manager.js");
|
|
37
34
|
const external_types_js_namespaceObject = require("./types.js");
|
|
38
|
-
const
|
|
39
|
-
const
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
return result.uiTarsVersion;
|
|
43
|
-
} catch (e) {
|
|
44
|
-
if (null == e ? void 0 : e[external_global_config_js_namespaceObject.GLOBAL_CONFIG_MANAGER_UNINITIALIZED_FLAG]) return void console.warn("Call uiTarsModelVersion before globalConfig init, will return undefined. This warning should only appear in midscene's own unit tests.");
|
|
45
|
-
throw e;
|
|
46
|
-
}
|
|
47
|
-
};
|
|
48
|
-
const vlLocateMode = (modelPreferences)=>{
|
|
49
|
-
try {
|
|
50
|
-
const result = globalConfigManager.getModelConfigByIntent(modelPreferences.intent);
|
|
51
|
-
return result.vlMode;
|
|
52
|
-
} catch (e) {
|
|
53
|
-
if (null == e ? void 0 : e[external_global_config_js_namespaceObject.GLOBAL_CONFIG_MANAGER_UNINITIALIZED_FLAG]) return void console.warn("Call vlLocateMode before globalConfig init, will return undefined. This warning should only appear in midscene's own unit tests.");
|
|
54
|
-
throw e;
|
|
55
|
-
}
|
|
56
|
-
};
|
|
57
|
-
const getIsUseQwenVl = (modelPreferences)=>{
|
|
58
|
-
try {
|
|
59
|
-
const result = globalConfigManager.getModelConfigByIntent(modelPreferences.intent);
|
|
60
|
-
return 'qwen-vl' === result.vlMode;
|
|
61
|
-
} catch (e) {
|
|
62
|
-
if (null == e ? void 0 : e[external_global_config_js_namespaceObject.GLOBAL_CONFIG_MANAGER_UNINITIALIZED_FLAG]) {
|
|
63
|
-
console.warn("Call getIsUseQwenVl before globalConfig init, will return false. This warning should only appear in midscene's own unit tests.");
|
|
64
|
-
return false;
|
|
65
|
-
}
|
|
66
|
-
throw e;
|
|
67
|
-
}
|
|
68
|
-
};
|
|
69
|
-
function getModelName(modelPreferences) {
|
|
70
|
-
try {
|
|
71
|
-
const result = globalConfigManager.getModelConfigByIntent(modelPreferences.intent);
|
|
72
|
-
return null == result ? void 0 : result.modelName;
|
|
73
|
-
} catch (e) {
|
|
74
|
-
if (null == e ? void 0 : e[external_global_config_js_namespaceObject.GLOBAL_CONFIG_MANAGER_UNINITIALIZED_FLAG]) return void console.warn("Call getModelName before globalConfig init, will return undefined. This warning should only appear in midscene's own unit tests.");
|
|
75
|
-
throw e;
|
|
76
|
-
}
|
|
77
|
-
}
|
|
35
|
+
const globalModelConfigManager = new external_model_config_manager_js_namespaceObject.ModelConfigManager();
|
|
36
|
+
const globalConfigManager = new external_global_config_manager_js_namespaceObject.GlobalConfigManager();
|
|
37
|
+
globalConfigManager.registerModelConfigManager(globalModelConfigManager);
|
|
38
|
+
globalModelConfigManager.registerGlobalConfigManager(globalConfigManager);
|
|
78
39
|
const getPreferredLanguage = ()=>{
|
|
79
40
|
const prefer = globalConfigManager.getEnvConfigValue(external_types_js_namespaceObject.MIDSCENE_PREFERRED_LANGUAGE);
|
|
80
41
|
if (prefer) return prefer;
|
|
@@ -82,36 +43,18 @@ const getPreferredLanguage = ()=>{
|
|
|
82
43
|
const isChina = 'Asia/Shanghai' === timeZone;
|
|
83
44
|
return isChina ? 'Chinese' : 'English';
|
|
84
45
|
};
|
|
85
|
-
const getUploadTestServerUrl = ()=>{
|
|
86
|
-
try {
|
|
87
|
-
const { openaiExtraConfig } = globalConfigManager.getModelConfigByIntent('default');
|
|
88
|
-
const serverUrl = null == openaiExtraConfig ? void 0 : openaiExtraConfig.REPORT_SERVER_URL;
|
|
89
|
-
return serverUrl;
|
|
90
|
-
} catch (e) {
|
|
91
|
-
if (null == e ? void 0 : e[external_global_config_js_namespaceObject.GLOBAL_CONFIG_MANAGER_UNINITIALIZED_FLAG]) return void console.warn("Call getUploadTestServerUrl before globalConfig init, will return undefined. This warning should only appear in midscene's own unit tests.");
|
|
92
|
-
throw e;
|
|
93
|
-
}
|
|
94
|
-
};
|
|
95
46
|
const overrideAIConfig = (newConfig, extendMode = false)=>{
|
|
96
|
-
globalConfigManager.
|
|
47
|
+
globalConfigManager.overrideAIConfig(newConfig, extendMode);
|
|
97
48
|
};
|
|
98
|
-
exports.getIsUseQwenVl = __webpack_exports__.getIsUseQwenVl;
|
|
99
|
-
exports.getModelName = __webpack_exports__.getModelName;
|
|
100
49
|
exports.getPreferredLanguage = __webpack_exports__.getPreferredLanguage;
|
|
101
|
-
exports.getUploadTestServerUrl = __webpack_exports__.getUploadTestServerUrl;
|
|
102
50
|
exports.globalConfigManager = __webpack_exports__.globalConfigManager;
|
|
51
|
+
exports.globalModelConfigManager = __webpack_exports__.globalModelConfigManager;
|
|
103
52
|
exports.overrideAIConfig = __webpack_exports__.overrideAIConfig;
|
|
104
|
-
exports.uiTarsModelVersion = __webpack_exports__.uiTarsModelVersion;
|
|
105
|
-
exports.vlLocateMode = __webpack_exports__.vlLocateMode;
|
|
106
53
|
for(var __webpack_i__ in __webpack_exports__)if (-1 === [
|
|
107
|
-
"getIsUseQwenVl",
|
|
108
|
-
"getModelName",
|
|
109
54
|
"getPreferredLanguage",
|
|
110
|
-
"getUploadTestServerUrl",
|
|
111
55
|
"globalConfigManager",
|
|
112
|
-
"
|
|
113
|
-
"
|
|
114
|
-
"vlLocateMode"
|
|
56
|
+
"globalModelConfigManager",
|
|
57
|
+
"overrideAIConfig"
|
|
115
58
|
].indexOf(__webpack_i__)) exports[__webpack_i__] = __webpack_exports__[__webpack_i__];
|
|
116
59
|
Object.defineProperty(exports, '__esModule', {
|
|
117
60
|
value: true
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import type { IModelConfig, TIntent } from './types';
|
|
2
|
+
import { DEFAULT_MODEL_CONFIG_KEYS, DEFAULT_MODEL_CONFIG_KEYS_LEGACY, GROUNDING_MODEL_CONFIG_KEYS, PLANNING_MODEL_CONFIG_KEYS, VQA_MODEL_CONFIG_KEYS } from './constants';
|
|
3
|
+
type TModelConfigKeys = typeof VQA_MODEL_CONFIG_KEYS | typeof GROUNDING_MODEL_CONFIG_KEYS | typeof PLANNING_MODEL_CONFIG_KEYS | typeof DEFAULT_MODEL_CONFIG_KEYS | typeof DEFAULT_MODEL_CONFIG_KEYS_LEGACY;
|
|
4
|
+
/**
|
|
5
|
+
* Choose OpenAI SDK config, such as OpenAI, AzureOpenAI, AnthropicSDK, etc.
|
|
6
|
+
*/
|
|
7
|
+
export declare const decideOpenaiSdkConfig: ({ keys, provider, valueAssert, }: {
|
|
8
|
+
keys: TModelConfigKeys;
|
|
9
|
+
provider: Record<string, string | undefined>;
|
|
10
|
+
valueAssert: (value: string | undefined, key: string, modelVendorFlag?: string) => void;
|
|
11
|
+
}) => Omit<IModelConfig, "modelName" | "from" | "vlMode" | "uiTarsVersion" | "modelDescription" | "intent">;
|
|
12
|
+
export declare const decideModelConfigFromIntentConfig: (intent: TIntent, intentConfig: Record<string, string | undefined>) => IModelConfig;
|
|
13
|
+
export declare const decideModelConfigFromEnv: (intent: TIntent, allEnvConfig: Record<string, string | undefined>) => IModelConfig;
|
|
14
|
+
export {};
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
import type { ModelConfigManager } from './model-config-manager';
|
|
2
|
+
import { BOOLEAN_ENV_KEYS, GLOBAL_ENV_KEYS, NUMBER_ENV_KEYS, STRING_ENV_KEYS } from './types';
|
|
3
|
+
import { MODEL_ENV_KEYS } from './types';
|
|
4
|
+
/**
|
|
5
|
+
* Collect global configs from process.env, overrideAIConfig, etc.
|
|
6
|
+
* And provider methods to get merged config value
|
|
7
|
+
*/
|
|
8
|
+
export declare class GlobalConfigManager {
|
|
9
|
+
private override;
|
|
10
|
+
private keysHaveBeenRead;
|
|
11
|
+
private globalModelConfigManager;
|
|
12
|
+
constructor();
|
|
13
|
+
/**
|
|
14
|
+
* recalculate allEnvConfig every time because process.env can be updated any time
|
|
15
|
+
*/
|
|
16
|
+
getAllEnvConfig(): Record<string, string | undefined>;
|
|
17
|
+
getEnvConfigValue(key: (typeof STRING_ENV_KEYS)[number]): string | undefined;
|
|
18
|
+
/**
|
|
19
|
+
* read number only from process.env
|
|
20
|
+
*/
|
|
21
|
+
getEnvConfigInNumber(key: (typeof NUMBER_ENV_KEYS)[number]): number;
|
|
22
|
+
/**
|
|
23
|
+
* read boolean only from process.env
|
|
24
|
+
*/
|
|
25
|
+
getEnvConfigInBoolean(key: (typeof BOOLEAN_ENV_KEYS)[number]): boolean;
|
|
26
|
+
registerModelConfigManager(globalModelConfigManager: ModelConfigManager): void;
|
|
27
|
+
/**
|
|
28
|
+
* for overrideAIConfig
|
|
29
|
+
* can only override keys in MODEL_ENV_KEYS
|
|
30
|
+
*/
|
|
31
|
+
overrideAIConfig(newConfig: Partial<Record<(typeof GLOBAL_ENV_KEYS)[number] | (typeof MODEL_ENV_KEYS)[number], string>>, extendMode?: boolean): void;
|
|
32
|
+
}
|
|
@@ -0,0 +1,23 @@
|
|
|
1
|
+
import type { GlobalConfigManager } from './global-config-manager';
|
|
2
|
+
import type { IModelConfig, TIntent, TModelConfigFn } from './types';
|
|
3
|
+
export type TIntentConfigMap = Record<TIntent, ReturnType<TModelConfigFn> | undefined>;
|
|
4
|
+
export declare class ModelConfigManager {
|
|
5
|
+
private modelConfigMap;
|
|
6
|
+
private isolatedMode;
|
|
7
|
+
private globalConfigManager;
|
|
8
|
+
constructor(modelConfigFn?: TModelConfigFn);
|
|
9
|
+
private calcIntentConfigMap;
|
|
10
|
+
private calcModelConfigMapBaseOnIntent;
|
|
11
|
+
private calcModelConfigMapBaseOnEnv;
|
|
12
|
+
/**
|
|
13
|
+
* should only be called by GlobalConfigManager
|
|
14
|
+
*/
|
|
15
|
+
clearModelConfigMap(): void;
|
|
16
|
+
/**
|
|
17
|
+
* if isolatedMode is true, modelConfigMap was initialized in constructor and can't be changed
|
|
18
|
+
* if isolatedMode is false, modelConfigMap can be changed by process.env so we need to recalculate it when it's undefined
|
|
19
|
+
*/
|
|
20
|
+
getModelConfig(intent: TIntent): IModelConfig;
|
|
21
|
+
getUploadTestServerUrl(): string | undefined;
|
|
22
|
+
registerGlobalConfigManager(globalConfigManager: GlobalConfigManager): void;
|
|
23
|
+
}
|
|
@@ -1,16 +1,5 @@
|
|
|
1
|
-
import { type TVlModeTypes } from './types';
|
|
2
|
-
export declare
|
|
3
|
-
V1_0 = "1.0",
|
|
4
|
-
V1_5 = "1.5",
|
|
5
|
-
DOUBAO_1_5_15B = "doubao-1.5-15B",
|
|
6
|
-
DOUBAO_1_5_20B = "doubao-1.5-20B"
|
|
7
|
-
}
|
|
8
|
-
/**
|
|
9
|
-
*
|
|
10
|
-
* @param vlModeRaw
|
|
11
|
-
* @returns
|
|
12
|
-
*/
|
|
13
|
-
export declare const parseVlModeAndUiTarsFromRaw: (vlModeRaw?: string) => {
|
|
1
|
+
import { type TVlModeTypes, UITarsModelVersion } from './types';
|
|
2
|
+
export declare const parseVlModeAndUiTarsModelVersionFromRawValue: (vlModeRaw?: string) => {
|
|
14
3
|
vlMode?: TVlModeTypes;
|
|
15
4
|
uiTarsVersion?: UITarsModelVersion;
|
|
16
5
|
};
|
|
@@ -235,7 +235,57 @@ export interface IModelConfigForDefaultLegacy {
|
|
|
235
235
|
export type TIntent = 'VQA' | 'planning' | 'grounding' | 'default';
|
|
236
236
|
export type TModelConfigFn = (options: {
|
|
237
237
|
intent: TIntent;
|
|
238
|
-
}) => IModelConfigForVQA | IModelConfigForPlanning | IModeConfigForGrounding | IModelConfigForDefault
|
|
239
|
-
export
|
|
238
|
+
}) => IModelConfigForVQA | IModelConfigForPlanning | IModeConfigForGrounding | IModelConfigForDefault;
|
|
239
|
+
export declare enum UITarsModelVersion {
|
|
240
|
+
V1_0 = "1.0",
|
|
241
|
+
V1_5 = "1.5",
|
|
242
|
+
DOUBAO_1_5_15B = "doubao-1.5-15B",
|
|
243
|
+
DOUBAO_1_5_20B = "doubao-1.5-20B"
|
|
244
|
+
}
|
|
245
|
+
export declare const VL_MODE_RAW_VALID_VALUES: TVlModeValues[];
|
|
246
|
+
export interface IModelConfig {
|
|
247
|
+
/**
|
|
248
|
+
* proxy
|
|
249
|
+
*/
|
|
250
|
+
socksProxy?: string;
|
|
251
|
+
httpProxy?: string;
|
|
252
|
+
/**
|
|
253
|
+
* model
|
|
254
|
+
*/
|
|
255
|
+
modelName: string;
|
|
256
|
+
/**
|
|
257
|
+
* OpenAI
|
|
258
|
+
*/
|
|
259
|
+
openaiBaseURL?: string;
|
|
260
|
+
openaiApiKey?: string;
|
|
261
|
+
openaiExtraConfig?: Record<string, unknown>;
|
|
262
|
+
/**
|
|
263
|
+
* Azure
|
|
264
|
+
*/
|
|
265
|
+
openaiUseAzureDeprecated?: boolean;
|
|
266
|
+
useAzureOpenai?: boolean;
|
|
267
|
+
azureOpenaiScope?: string;
|
|
268
|
+
azureOpenaiKey?: string;
|
|
269
|
+
azureOpenaiEndpoint?: string;
|
|
270
|
+
azureOpenaiApiVersion?: string;
|
|
271
|
+
azureOpenaiDeployment?: string;
|
|
272
|
+
azureExtraConfig?: Record<string, unknown>;
|
|
273
|
+
/**
|
|
274
|
+
* Anthropic
|
|
275
|
+
*/
|
|
276
|
+
useAnthropicSdk?: boolean;
|
|
277
|
+
anthropicApiKey?: string;
|
|
278
|
+
/**
|
|
279
|
+
* - vlModeRaw: exists only in non-legacy logic. value can be 'doubao-vision', 'gemini', 'qwen-vl', 'vlm-ui-tars', 'vlm-ui-tars-doubao', 'vlm-ui-tars-doubao-1.5'
|
|
280
|
+
* - vlMode: based on the results of the vlModoRaw classification,value can be 'doubao-vision', 'gemini', 'qwen-vl', 'vlm-ui-tars'
|
|
281
|
+
*/
|
|
282
|
+
vlModeRaw?: string;
|
|
283
|
+
vlMode?: TVlModeTypes;
|
|
284
|
+
uiTarsModelVersion?: UITarsModelVersion;
|
|
285
|
+
modelDescription: string;
|
|
286
|
+
/**
|
|
287
|
+
* for debug
|
|
288
|
+
*/
|
|
240
289
|
intent: TIntent;
|
|
290
|
+
from: 'modelConfig' | 'env' | 'legacy-env';
|
|
241
291
|
}
|
|
@@ -1,11 +1,7 @@
|
|
|
1
|
-
import { GlobalConfigManager } from './global-config';
|
|
2
|
-
import
|
|
3
|
-
import { type GLOBAL_ENV_KEYS, type
|
|
1
|
+
import { GlobalConfigManager } from './global-config-manager';
|
|
2
|
+
import { ModelConfigManager } from './model-config-manager';
|
|
3
|
+
import { type GLOBAL_ENV_KEYS, type MODEL_ENV_KEYS } from './types';
|
|
4
|
+
export declare const globalModelConfigManager: ModelConfigManager;
|
|
4
5
|
export declare const globalConfigManager: GlobalConfigManager;
|
|
5
|
-
export declare const uiTarsModelVersion: (modelPreferences: IModelPreferences) => UITarsModelVersion | undefined;
|
|
6
|
-
export declare const vlLocateMode: (modelPreferences: IModelPreferences) => TVlModeTypes | undefined;
|
|
7
|
-
export declare const getIsUseQwenVl: (modelPreferences: IModelPreferences) => boolean;
|
|
8
|
-
export declare function getModelName(modelPreferences: IModelPreferences): string | undefined;
|
|
9
6
|
export declare const getPreferredLanguage: () => string;
|
|
10
|
-
export declare const getUploadTestServerUrl: () => string | undefined;
|
|
11
7
|
export declare const overrideAIConfig: (newConfig: Partial<Record<(typeof GLOBAL_ENV_KEYS)[number] | (typeof MODEL_ENV_KEYS)[number], string>>, extendMode?: boolean) => void;
|
package/package.json
CHANGED
|
@@ -1,4 +1,9 @@
|
|
|
1
|
-
import type {
|
|
1
|
+
import type {
|
|
2
|
+
IModelConfig,
|
|
3
|
+
TIntent,
|
|
4
|
+
TVlModeTypes,
|
|
5
|
+
UITarsModelVersion,
|
|
6
|
+
} from './types';
|
|
2
7
|
|
|
3
8
|
import {
|
|
4
9
|
DEFAULT_MODEL_CONFIG_KEYS,
|
|
@@ -13,57 +18,10 @@ import { assert } from '../utils';
|
|
|
13
18
|
import { createAssert, maskConfig, parseJson } from './helper';
|
|
14
19
|
import { initDebugConfig } from './init-debug';
|
|
15
20
|
import {
|
|
16
|
-
type UITarsModelVersion,
|
|
17
21
|
parseVlModeAndUiTarsFromGlobalConfig,
|
|
18
|
-
|
|
22
|
+
parseVlModeAndUiTarsModelVersionFromRawValue,
|
|
19
23
|
} from './parse';
|
|
20
24
|
|
|
21
|
-
export interface IModelConfig {
|
|
22
|
-
/**
|
|
23
|
-
* proxy
|
|
24
|
-
*/
|
|
25
|
-
socksProxy?: string;
|
|
26
|
-
httpProxy?: string;
|
|
27
|
-
/**
|
|
28
|
-
* model
|
|
29
|
-
*/
|
|
30
|
-
modelName: string;
|
|
31
|
-
/**
|
|
32
|
-
* OpenAI
|
|
33
|
-
*/
|
|
34
|
-
openaiBaseURL?: string;
|
|
35
|
-
openaiApiKey?: string;
|
|
36
|
-
openaiExtraConfig?: Record<string, unknown>;
|
|
37
|
-
/**
|
|
38
|
-
* Azure
|
|
39
|
-
*/
|
|
40
|
-
openaiUseAzureDeprecated?: boolean;
|
|
41
|
-
useAzureOpenai?: boolean;
|
|
42
|
-
azureOpenaiScope?: string;
|
|
43
|
-
azureOpenaiKey?: string;
|
|
44
|
-
azureOpenaiEndpoint?: string;
|
|
45
|
-
azureOpenaiApiVersion?: string;
|
|
46
|
-
azureOpenaiDeployment?: string;
|
|
47
|
-
azureExtraConfig?: Record<string, unknown>;
|
|
48
|
-
/**
|
|
49
|
-
* Anthropic
|
|
50
|
-
*/
|
|
51
|
-
useAnthropicSdk?: boolean;
|
|
52
|
-
anthropicApiKey?: string;
|
|
53
|
-
/**
|
|
54
|
-
* - vlModeRaw: exists only in non-legacy logic. value can be 'doubao-vision', 'gemini', 'qwen-vl', 'vlm-ui-tars', 'vlm-ui-tars-doubao', 'vlm-ui-tars-doubao-1.5'
|
|
55
|
-
* - vlMode: based on the results of the vlModoRaw classification,value can be 'doubao-vision', 'gemini', 'qwen-vl', 'vlm-ui-tars'
|
|
56
|
-
*/
|
|
57
|
-
vlModeRaw?: string;
|
|
58
|
-
vlMode?: string;
|
|
59
|
-
uiTarsVersion?: UITarsModelVersion;
|
|
60
|
-
modelDescription: string;
|
|
61
|
-
/**
|
|
62
|
-
* for debug
|
|
63
|
-
*/
|
|
64
|
-
from: 'modelConfig' | 'env' | 'legacy-env';
|
|
65
|
-
}
|
|
66
|
-
|
|
67
25
|
type TModelConfigKeys =
|
|
68
26
|
| typeof VQA_MODEL_CONFIG_KEYS
|
|
69
27
|
| typeof GROUNDING_MODEL_CONFIG_KEYS
|
|
@@ -95,10 +53,15 @@ export const decideOpenaiSdkConfig = ({
|
|
|
95
53
|
) => void;
|
|
96
54
|
}): Omit<
|
|
97
55
|
IModelConfig,
|
|
98
|
-
|
|
56
|
+
| 'modelName'
|
|
57
|
+
| 'from'
|
|
58
|
+
| 'vlMode'
|
|
59
|
+
| 'uiTarsVersion'
|
|
60
|
+
| 'modelDescription'
|
|
61
|
+
| 'intent'
|
|
99
62
|
> => {
|
|
100
63
|
initDebugConfig();
|
|
101
|
-
const debugLog = getDebug('ai:
|
|
64
|
+
const debugLog = getDebug('ai:config');
|
|
102
65
|
|
|
103
66
|
const socksProxy = provider[keys.socksProxy];
|
|
104
67
|
const httpProxy = provider[keys.httpProxy];
|
|
@@ -211,95 +174,82 @@ const getModelDescription = (
|
|
|
211
174
|
return '';
|
|
212
175
|
};
|
|
213
176
|
|
|
214
|
-
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
|
|
218
|
-
|
|
219
|
-
* - PROCESS.ENV.MIDSCENE_MODEL_NAME
|
|
220
|
-
*/
|
|
221
|
-
export const decideModelConfig = ({
|
|
222
|
-
intent,
|
|
223
|
-
modelConfigFromFn,
|
|
224
|
-
allConfig,
|
|
225
|
-
}: {
|
|
226
|
-
intent: TIntent;
|
|
227
|
-
modelConfigFromFn: Record<string, string | undefined> | undefined;
|
|
228
|
-
allConfig: Record<string, string | undefined>;
|
|
229
|
-
}): IModelConfig => {
|
|
230
|
-
initDebugConfig();
|
|
231
|
-
const debugLog = getDebug('ai:globalConfig');
|
|
232
|
-
|
|
233
|
-
if (modelConfigFromFn) {
|
|
234
|
-
debugLog('decideModelConfig base on agent.modelConfig()');
|
|
235
|
-
|
|
236
|
-
const keysForFn = KEYS_MAP[intent];
|
|
237
|
-
|
|
238
|
-
const candidateModelNameFromConfig = modelConfigFromFn[keysForFn.modelName];
|
|
239
|
-
|
|
240
|
-
debugLog('Got modelName from modelConfigFn', candidateModelNameFromConfig);
|
|
241
|
-
|
|
242
|
-
const chosenKeys = (() => {
|
|
243
|
-
if (candidateModelNameFromConfig) {
|
|
244
|
-
debugLog(
|
|
245
|
-
'query modelConfig from fn by intent got corresponding modelName, will get other corresponding keys',
|
|
246
|
-
);
|
|
247
|
-
return keysForFn;
|
|
248
|
-
} else {
|
|
249
|
-
debugLog(
|
|
250
|
-
'query modelConfig from fn by intent got no corresponding modelName, will get other keys by default',
|
|
251
|
-
);
|
|
252
|
-
assert(
|
|
253
|
-
modelConfigFromFn[DEFAULT_MODEL_CONFIG_KEYS.modelName],
|
|
254
|
-
`The return value of agent.modelConfig do not have a valid value with key ${DEFAULT_MODEL_CONFIG_KEYS.modelName}.`,
|
|
255
|
-
);
|
|
256
|
-
return DEFAULT_MODEL_CONFIG_KEYS;
|
|
257
|
-
}
|
|
258
|
-
})();
|
|
177
|
+
export const decideModelConfigFromIntentConfig = (
|
|
178
|
+
intent: TIntent,
|
|
179
|
+
intentConfig: Record<string, string | undefined>,
|
|
180
|
+
): IModelConfig => {
|
|
181
|
+
const debugLog = getDebug('ai:config');
|
|
259
182
|
|
|
260
|
-
|
|
261
|
-
keys: chosenKeys,
|
|
262
|
-
provider: modelConfigFromFn,
|
|
263
|
-
valueAssert: createAssert(
|
|
264
|
-
chosenKeys.modelName,
|
|
265
|
-
'modelConfig',
|
|
266
|
-
candidateModelNameFromConfig,
|
|
267
|
-
),
|
|
268
|
-
});
|
|
183
|
+
debugLog('decideModelConfig base on agent.modelConfig()');
|
|
269
184
|
|
|
270
|
-
|
|
271
|
-
result.vlModeRaw,
|
|
272
|
-
);
|
|
273
|
-
const modelDescription = getModelDescription(vlMode, uiTarsVersion);
|
|
185
|
+
const keysForFn = KEYS_MAP[intent];
|
|
274
186
|
|
|
275
|
-
|
|
276
|
-
...result,
|
|
277
|
-
modelName: modelConfigFromFn[chosenKeys.modelName]!,
|
|
278
|
-
vlMode,
|
|
279
|
-
uiTarsVersion,
|
|
280
|
-
modelDescription,
|
|
281
|
-
from: 'modelConfig',
|
|
282
|
-
};
|
|
187
|
+
const candidateModelNameFromConfig = intentConfig[keysForFn.modelName];
|
|
283
188
|
|
|
284
|
-
|
|
285
|
-
`decideModelConfig result by agent.modelConfig() with intent ${intent}:`,
|
|
286
|
-
maskConfig(finalResult),
|
|
287
|
-
);
|
|
288
|
-
return finalResult;
|
|
289
|
-
}
|
|
189
|
+
debugLog('Got modelName from modelConfigFn', candidateModelNameFromConfig);
|
|
290
190
|
|
|
291
|
-
const
|
|
292
|
-
|
|
191
|
+
const chosenKeys = (() => {
|
|
192
|
+
if (candidateModelNameFromConfig) {
|
|
193
|
+
debugLog(
|
|
194
|
+
'query modelConfig from fn by intent got corresponding modelName, will get other corresponding keys',
|
|
195
|
+
);
|
|
196
|
+
return keysForFn;
|
|
197
|
+
} else {
|
|
198
|
+
debugLog(
|
|
199
|
+
'query modelConfig from fn by intent got no corresponding modelName, will get other keys by default',
|
|
200
|
+
);
|
|
201
|
+
assert(
|
|
202
|
+
intentConfig[DEFAULT_MODEL_CONFIG_KEYS.modelName],
|
|
203
|
+
`The return value of agent.modelConfig do not have a valid value with key ${DEFAULT_MODEL_CONFIG_KEYS.modelName}.`,
|
|
204
|
+
);
|
|
205
|
+
return DEFAULT_MODEL_CONFIG_KEYS;
|
|
206
|
+
}
|
|
207
|
+
})();
|
|
293
208
|
|
|
294
|
-
const
|
|
209
|
+
const result = decideOpenaiSdkConfig({
|
|
210
|
+
keys: chosenKeys,
|
|
211
|
+
provider: intentConfig,
|
|
212
|
+
valueAssert: createAssert(
|
|
213
|
+
chosenKeys.modelName,
|
|
214
|
+
'modelConfig',
|
|
215
|
+
candidateModelNameFromConfig,
|
|
216
|
+
),
|
|
217
|
+
});
|
|
218
|
+
|
|
219
|
+
const { vlMode, uiTarsVersion } =
|
|
220
|
+
parseVlModeAndUiTarsModelVersionFromRawValue(result.vlModeRaw);
|
|
221
|
+
|
|
222
|
+
const modelDescription = getModelDescription(vlMode, uiTarsVersion);
|
|
223
|
+
|
|
224
|
+
const finalResult: IModelConfig = {
|
|
225
|
+
...result,
|
|
226
|
+
modelName: intentConfig[chosenKeys.modelName]!,
|
|
227
|
+
vlMode,
|
|
228
|
+
uiTarsModelVersion: uiTarsVersion,
|
|
229
|
+
modelDescription,
|
|
230
|
+
from: 'modelConfig',
|
|
231
|
+
intent,
|
|
232
|
+
};
|
|
295
233
|
|
|
296
234
|
debugLog(
|
|
297
|
-
`
|
|
298
|
-
|
|
235
|
+
`decideModelConfig result by agent.modelConfig() with intent ${intent}:`,
|
|
236
|
+
maskConfig(finalResult),
|
|
299
237
|
);
|
|
238
|
+
return finalResult;
|
|
239
|
+
};
|
|
300
240
|
|
|
301
|
-
|
|
302
|
-
|
|
241
|
+
export const decideModelConfigFromEnv = (
|
|
242
|
+
intent: TIntent,
|
|
243
|
+
allEnvConfig: Record<string, string | undefined>,
|
|
244
|
+
): IModelConfig => {
|
|
245
|
+
initDebugConfig();
|
|
246
|
+
const debugLog = getDebug('ai:config');
|
|
247
|
+
|
|
248
|
+
const keysForEnv =
|
|
249
|
+
intent === 'default' ? DEFAULT_MODEL_CONFIG_KEYS_LEGACY : KEYS_MAP[intent];
|
|
250
|
+
|
|
251
|
+
if (intent !== 'default' && allEnvConfig[keysForEnv.modelName]) {
|
|
252
|
+
const modelName = allEnvConfig[keysForEnv.modelName]!;
|
|
303
253
|
|
|
304
254
|
debugLog(
|
|
305
255
|
`Got intent ${intent} corresponding modelName ${modelName} by key ${keysForEnv.modelName} from globalConfig, will get other config by intent.`,
|
|
@@ -307,22 +257,22 @@ export const decideModelConfig = ({
|
|
|
307
257
|
|
|
308
258
|
const result = decideOpenaiSdkConfig({
|
|
309
259
|
keys: keysForEnv,
|
|
310
|
-
provider:
|
|
260
|
+
provider: allEnvConfig,
|
|
311
261
|
valueAssert: createAssert(keysForEnv.modelName, 'process.env', modelName),
|
|
312
262
|
});
|
|
313
263
|
|
|
314
|
-
const { vlMode, uiTarsVersion } =
|
|
315
|
-
result.vlModeRaw
|
|
316
|
-
);
|
|
264
|
+
const { vlMode, uiTarsVersion } =
|
|
265
|
+
parseVlModeAndUiTarsModelVersionFromRawValue(result.vlModeRaw);
|
|
317
266
|
const modelDescription = getModelDescription(vlMode, uiTarsVersion);
|
|
318
267
|
|
|
319
268
|
const finalResult: IModelConfig = {
|
|
320
269
|
...result,
|
|
321
270
|
modelName,
|
|
322
271
|
vlMode,
|
|
323
|
-
uiTarsVersion,
|
|
272
|
+
uiTarsModelVersion: uiTarsVersion,
|
|
324
273
|
modelDescription,
|
|
325
274
|
from: 'env',
|
|
275
|
+
intent,
|
|
326
276
|
};
|
|
327
277
|
|
|
328
278
|
debugLog(
|
|
@@ -334,9 +284,10 @@ export const decideModelConfig = ({
|
|
|
334
284
|
|
|
335
285
|
debugLog(`decideModelConfig as legacy logic with intent ${intent}.`);
|
|
336
286
|
|
|
287
|
+
// TODO: when fallback to legacy logic, prefer to read MIDSCENE_OPENAI_API_KEY rather than OPENAI_API_KEY
|
|
337
288
|
const result = decideOpenaiSdkConfig({
|
|
338
289
|
keys: DEFAULT_MODEL_CONFIG_KEYS_LEGACY,
|
|
339
|
-
provider:
|
|
290
|
+
provider: allEnvConfig,
|
|
340
291
|
valueAssert: createAssert(
|
|
341
292
|
DEFAULT_MODEL_CONFIG_KEYS_LEGACY.modelName,
|
|
342
293
|
'process.env',
|
|
@@ -344,7 +295,7 @@ export const decideModelConfig = ({
|
|
|
344
295
|
});
|
|
345
296
|
|
|
346
297
|
const { vlMode, uiTarsVersion } =
|
|
347
|
-
parseVlModeAndUiTarsFromGlobalConfig(
|
|
298
|
+
parseVlModeAndUiTarsFromGlobalConfig(allEnvConfig);
|
|
348
299
|
|
|
349
300
|
const modelDescription = getModelDescription(vlMode, uiTarsVersion);
|
|
350
301
|
|
|
@@ -352,11 +303,12 @@ export const decideModelConfig = ({
|
|
|
352
303
|
...result,
|
|
353
304
|
// In the legacy logic, GPT-4o is the default model.
|
|
354
305
|
modelName:
|
|
355
|
-
|
|
306
|
+
allEnvConfig[DEFAULT_MODEL_CONFIG_KEYS_LEGACY.modelName] || 'gpt-4o',
|
|
356
307
|
vlMode,
|
|
357
|
-
uiTarsVersion,
|
|
308
|
+
uiTarsModelVersion: uiTarsVersion,
|
|
358
309
|
modelDescription,
|
|
359
310
|
from: 'legacy-env',
|
|
311
|
+
intent,
|
|
360
312
|
};
|
|
361
313
|
|
|
362
314
|
debugLog(
|