@lobehub/chat 1.91.1 → 1.91.2

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/CHANGELOG.md CHANGED
@@ -2,6 +2,31 @@
2
2
 
3
3
  # Changelog
4
4
 
5
+ ### [Version 1.91.2](https://github.com/lobehub/lobe-chat/compare/v1.91.1...v1.91.2)
6
+
7
+ <sup>Released on **2025-06-05**</sup>
8
+
9
+ #### 💄 Styles
10
+
11
+ - **misc**: Add Volcengine & OpenAI-like Provider (e.g. oneapi) model fetch support.
12
+
13
+ <br/>
14
+
15
+ <details>
16
+ <summary><kbd>Improvements and Fixes</kbd></summary>
17
+
18
+ #### Styles
19
+
20
+ - **misc**: Add Volcengine & OpenAI-like Provider (e.g. oneapi) model fetch support, closes [#8064](https://github.com/lobehub/lobe-chat/issues/8064) ([d3dafe1](https://github.com/lobehub/lobe-chat/commit/d3dafe1))
21
+
22
+ </details>
23
+
24
+ <div align="right">
25
+
26
+ [![](https://img.shields.io/badge/-BACK_TO_TOP-151515?style=flat-square)](#readme-top)
27
+
28
+ </div>
29
+
5
30
  ### [Version 1.91.1](https://github.com/lobehub/lobe-chat/compare/v1.91.0...v1.91.1)
6
31
 
7
32
  <sup>Released on **2025-06-04**</sup>
package/changelog/v1.json CHANGED
@@ -1,4 +1,13 @@
1
1
  [
2
+ {
3
+ "children": {
4
+ "improvements": [
5
+ "Add Volcengine & OpenAI-like Provider (e.g. oneapi) model fetch support."
6
+ ]
7
+ },
8
+ "date": "2025-06-05",
9
+ "version": "1.91.2"
10
+ },
2
11
  {
3
12
  "children": {
4
13
  "improvements": [
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lobehub/chat",
3
- "version": "1.91.1",
3
+ "version": "1.91.2",
4
4
  "description": "Lobe Chat - an open-source, high-performance chatbot framework that supports speech synthesis, multimodal, and extensible Function Call plugin system. Supports one-click free deployment of your private ChatGPT/LLM web application.",
5
5
  "keywords": [
6
6
  "framework",
@@ -130,7 +130,7 @@
130
130
  "@azure/core-auth": "^1.9.0",
131
131
  "@cfworker/json-schema": "^4.1.1",
132
132
  "@clerk/localizations": "^3.16.3",
133
- "@clerk/nextjs": "^6.20.2",
133
+ "@clerk/nextjs": "^6.21.0",
134
134
  "@clerk/themes": "^2.2.48",
135
135
  "@codesandbox/sandpack-react": "^2.20.0",
136
136
  "@cyntler/react-doc-viewer": "^1.17.0",
@@ -28,7 +28,8 @@ export const checkAuthMethod = ({
28
28
  // clerk auth handler
29
29
  if (enableClerk) {
30
30
  // if there is no userId, means the use is not login, just throw error
31
- if (!clerkAuth?.userId) throw AgentRuntimeError.createError(ChatErrorType.InvalidClerkUser);
31
+ if (!(clerkAuth as any)?.userId)
32
+ throw AgentRuntimeError.createError(ChatErrorType.InvalidClerkUser);
32
33
  // if the user is login, just return
33
34
  else return;
34
35
  }
@@ -10,7 +10,6 @@ import {
10
10
  SchemaType,
11
11
  } from '@google/generative-ai';
12
12
 
13
- import type { ChatModelCard } from '@/types/llm';
14
13
  import { imageUrlToBase64 } from '@/utils/imageToBase64';
15
14
  import { safeParseJSON } from '@/utils/safeParseJSON';
16
15
 
@@ -206,47 +205,38 @@ export class LobeGoogleAI implements LobeRuntimeAI {
206
205
  }
207
206
 
208
207
  async models() {
209
- const { LOBE_DEFAULT_MODEL_LIST } = await import('@/config/aiModels');
210
-
211
- const url = `${this.baseURL}/v1beta/models?key=${this.apiKey}`;
212
- const response = await fetch(url, {
213
- method: 'GET',
214
- });
215
- const json = await response.json();
216
-
217
- const modelList: GoogleModelCard[] = json['models'];
218
-
219
- return modelList
220
- .map((model) => {
221
- const modelName = model.name.replace(/^models\//, '');
222
-
223
- const knownModel = LOBE_DEFAULT_MODEL_LIST.find(
224
- (m) => modelName.toLowerCase() === m.id.toLowerCase(),
225
- );
226
-
208
+ try {
209
+ const url = `${this.baseURL}/v1beta/models?key=${this.apiKey}`;
210
+ const response = await fetch(url, {
211
+ method: 'GET',
212
+ });
213
+
214
+ if (!response.ok) {
215
+ throw new Error(`HTTP error! status: ${response.status}`);
216
+ }
217
+
218
+ const json = await response.json();
219
+
220
+ const modelList: GoogleModelCard[] = json.models;
221
+
222
+ const processedModels = modelList.map((model) => {
223
+ const id = model.name.replace(/^models\//, '');
224
+
227
225
  return {
228
- contextWindowTokens: model.inputTokenLimit + model.outputTokenLimit,
229
- displayName: model.displayName,
230
- enabled: knownModel?.enabled || false,
231
- functionCall:
232
- (modelName.toLowerCase().includes('gemini') &&
233
- !modelName.toLowerCase().includes('thinking')) ||
234
- knownModel?.abilities?.functionCall ||
235
- false,
236
- id: modelName,
237
- reasoning:
238
- modelName.toLowerCase().includes('thinking') ||
239
- knownModel?.abilities?.reasoning ||
240
- false,
241
- vision:
242
- modelName.toLowerCase().includes('vision') ||
243
- (modelName.toLowerCase().includes('gemini') &&
244
- !modelName.toLowerCase().includes('gemini-1.0')) ||
245
- knownModel?.abilities?.vision ||
246
- false,
226
+ contextWindowTokens: (model.inputTokenLimit || 0) + (model.outputTokenLimit || 0),
227
+ displayName: model.displayName || id,
228
+ id,
229
+ maxOutput: model.outputTokenLimit || undefined,
247
230
  };
248
- })
249
- .filter(Boolean) as ChatModelCard[];
231
+ });
232
+
233
+ const { MODEL_LIST_CONFIGS, processModelList } = await import('../utils/modelParse');
234
+
235
+ return processModelList(processedModels, MODEL_LIST_CONFIGS.google);
236
+ } catch (error) {
237
+ console.error('Failed to fetch Google models:', error);
238
+ throw error;
239
+ }
250
240
  }
251
241
 
252
242
  private buildPayload(payload: ChatStreamPayload) {
@@ -9,6 +9,7 @@ exports[`NovitaAI > models > should get models 1`] = `
9
9
  "enabled": false,
10
10
  "functionCall": false,
11
11
  "id": "meta-llama/llama-3-8b-instruct",
12
+ "maxOutput": undefined,
12
13
  "reasoning": false,
13
14
  "vision": false,
14
15
  },
@@ -19,6 +20,7 @@ exports[`NovitaAI > models > should get models 1`] = `
19
20
  "enabled": false,
20
21
  "functionCall": false,
21
22
  "id": "meta-llama/llama-3-70b-instruct",
23
+ "maxOutput": undefined,
22
24
  "reasoning": false,
23
25
  "vision": false,
24
26
  },
@@ -29,6 +31,7 @@ exports[`NovitaAI > models > should get models 1`] = `
29
31
  "enabled": false,
30
32
  "functionCall": false,
31
33
  "id": "meta-llama/llama-3.1-8b-instruct",
34
+ "maxOutput": undefined,
32
35
  "reasoning": false,
33
36
  "vision": false,
34
37
  },
@@ -39,6 +42,7 @@ exports[`NovitaAI > models > should get models 1`] = `
39
42
  "enabled": true,
40
43
  "functionCall": false,
41
44
  "id": "meta-llama/llama-3.1-70b-instruct",
45
+ "maxOutput": undefined,
42
46
  "reasoning": false,
43
47
  "vision": false,
44
48
  },
@@ -49,6 +53,7 @@ exports[`NovitaAI > models > should get models 1`] = `
49
53
  "enabled": false,
50
54
  "functionCall": false,
51
55
  "id": "meta-llama/llama-3.1-405b-instruct",
56
+ "maxOutput": undefined,
52
57
  "reasoning": false,
53
58
  "vision": false,
54
59
  },
@@ -60,6 +65,7 @@ Designed for a wide variety of tasks, it empowers developers and researchers to
60
65
  "enabled": false,
61
66
  "functionCall": false,
62
67
  "id": "google/gemma-2-9b-it",
68
+ "maxOutput": undefined,
63
69
  "reasoning": false,
64
70
  "vision": false,
65
71
  },
@@ -70,6 +76,7 @@ Designed for a wide variety of tasks, it empowers developers and researchers to
70
76
  "enabled": false,
71
77
  "functionCall": false,
72
78
  "id": "jondurbin/airoboros-l2-70b",
79
+ "maxOutput": undefined,
73
80
  "reasoning": false,
74
81
  "vision": false,
75
82
  },
@@ -80,6 +87,7 @@ Designed for a wide variety of tasks, it empowers developers and researchers to
80
87
  "enabled": false,
81
88
  "functionCall": true,
82
89
  "id": "nousresearch/hermes-2-pro-llama-3-8b",
90
+ "maxOutput": undefined,
83
91
  "reasoning": false,
84
92
  "vision": false,
85
93
  },
@@ -90,6 +98,7 @@ Designed for a wide variety of tasks, it empowers developers and researchers to
90
98
  "enabled": false,
91
99
  "functionCall": false,
92
100
  "id": "mistralai/mistral-7b-instruct",
101
+ "maxOutput": undefined,
93
102
  "reasoning": false,
94
103
  "vision": false,
95
104
  },
@@ -100,6 +109,7 @@ Designed for a wide variety of tasks, it empowers developers and researchers to
100
109
  "enabled": false,
101
110
  "functionCall": false,
102
111
  "id": "cognitivecomputations/dolphin-mixtral-8x22b",
112
+ "maxOutput": undefined,
103
113
  "reasoning": false,
104
114
  "vision": false,
105
115
  },
@@ -110,7 +120,8 @@ Designed for a wide variety of tasks, it empowers developers and researchers to
110
120
  "enabled": false,
111
121
  "functionCall": false,
112
122
  "id": "sao10k/l3-70b-euryale-v2.1",
113
- "reasoning": false,
123
+ "maxOutput": undefined,
124
+ "reasoning": true,
114
125
  "vision": false,
115
126
  },
116
127
  {
@@ -120,6 +131,7 @@ Designed for a wide variety of tasks, it empowers developers and researchers to
120
131
  "enabled": false,
121
132
  "functionCall": false,
122
133
  "id": "sophosympatheia/midnight-rose-70b",
134
+ "maxOutput": undefined,
123
135
  "reasoning": false,
124
136
  "vision": false,
125
137
  },
@@ -130,6 +142,7 @@ Designed for a wide variety of tasks, it empowers developers and researchers to
130
142
  "enabled": false,
131
143
  "functionCall": false,
132
144
  "id": "gryphe/mythomax-l2-13b",
145
+ "maxOutput": undefined,
133
146
  "reasoning": false,
134
147
  "vision": false,
135
148
  },
@@ -140,6 +153,7 @@ Designed for a wide variety of tasks, it empowers developers and researchers to
140
153
  "enabled": false,
141
154
  "functionCall": false,
142
155
  "id": "nousresearch/nous-hermes-llama2-13b",
156
+ "maxOutput": undefined,
143
157
  "reasoning": false,
144
158
  "vision": false,
145
159
  },
@@ -150,6 +164,7 @@ Designed for a wide variety of tasks, it empowers developers and researchers to
150
164
  "enabled": false,
151
165
  "functionCall": false,
152
166
  "id": "Nous-Hermes-2-Mixtral-8x7B-DPO",
167
+ "maxOutput": undefined,
153
168
  "reasoning": false,
154
169
  "vision": false,
155
170
  },
@@ -160,6 +175,7 @@ Designed for a wide variety of tasks, it empowers developers and researchers to
160
175
  "enabled": false,
161
176
  "functionCall": false,
162
177
  "id": "lzlv_70b",
178
+ "maxOutput": undefined,
163
179
  "reasoning": false,
164
180
  "vision": false,
165
181
  },
@@ -170,6 +186,7 @@ Designed for a wide variety of tasks, it empowers developers and researchers to
170
186
  "enabled": false,
171
187
  "functionCall": false,
172
188
  "id": "teknium/openhermes-2.5-mistral-7b",
189
+ "maxOutput": undefined,
173
190
  "reasoning": false,
174
191
  "vision": false,
175
192
  },
@@ -180,6 +197,7 @@ Designed for a wide variety of tasks, it empowers developers and researchers to
180
197
  "enabled": false,
181
198
  "functionCall": false,
182
199
  "id": "microsoft/wizardlm-2-8x22b",
200
+ "maxOutput": undefined,
183
201
  "reasoning": false,
184
202
  "vision": false,
185
203
  },
@@ -1,6 +1,7 @@
1
1
  import type { ChatModelCard } from '@/types/llm';
2
2
 
3
3
  import { ModelProvider } from '../types';
4
+ import { processMultiProviderModelList } from '../utils/modelParse';
4
5
  import { createOpenAICompatibleRuntime } from '../utils/openaiCompatibleFactory';
5
6
  import { NovitaModelCard } from './type';
6
7
 
@@ -15,38 +16,36 @@ export const LobeNovitaAI = createOpenAICompatibleRuntime({
15
16
  chatCompletion: () => process.env.DEBUG_NOVITA_CHAT_COMPLETION === '1',
16
17
  },
17
18
  models: async ({ client }) => {
18
- const { LOBE_DEFAULT_MODEL_LIST } = await import('@/config/aiModels');
19
-
20
19
  const reasoningKeywords = ['deepseek-r1'];
21
20
 
22
21
  const modelsPage = (await client.models.list()) as any;
23
22
  const modelList: NovitaModelCard[] = modelsPage.data;
24
23
 
25
- return modelList
26
- .map((model) => {
27
- const knownModel = LOBE_DEFAULT_MODEL_LIST.find(
28
- (m) => model.id.toLowerCase() === m.id.toLowerCase(),
29
- );
24
+ // 解析模型能力
25
+ const baseModels = await processMultiProviderModelList(modelList);
26
+
27
+ // 合并 Novita 获取的模型信息
28
+ return baseModels
29
+ .map((baseModel) => {
30
+ const model = modelList.find((m) => m.id === baseModel.id);
31
+
32
+ if (!model) return baseModel;
30
33
 
31
34
  return {
35
+ ...baseModel,
32
36
  contextWindowTokens: model.context_size,
33
37
  description: model.description,
34
38
  displayName: model.title,
35
- enabled: knownModel?.enabled || false,
36
39
  functionCall:
40
+ baseModel.functionCall ||
37
41
  model.description.toLowerCase().includes('function calling') ||
38
- knownModel?.abilities?.functionCall ||
39
42
  false,
40
- id: model.id,
41
43
  reasoning:
44
+ baseModel.reasoning ||
42
45
  model.description.toLowerCase().includes('reasoning task') ||
43
46
  reasoningKeywords.some((keyword) => model.id.toLowerCase().includes(keyword)) ||
44
- knownModel?.abilities?.reasoning ||
45
- false,
46
- vision:
47
- model.description.toLowerCase().includes('vision') ||
48
- knownModel?.abilities?.vision ||
49
47
  false,
48
+ vision: baseModel.vision || model.description.toLowerCase().includes('vision') || false,
50
49
  };
51
50
  })
52
51
  .filter(Boolean) as ChatModelCard[];
@@ -1,6 +1,5 @@
1
- import type { ChatModelCard } from '@/types/llm';
2
-
3
1
  import { ModelProvider } from '../types';
2
+ import { processMultiProviderModelList } from '../utils/modelParse';
4
3
  import { createOpenAICompatibleRuntime } from '../utils/openaiCompatibleFactory';
5
4
 
6
5
  export interface NvidiaModelCard {
@@ -13,28 +12,10 @@ export const LobeNvidiaAI = createOpenAICompatibleRuntime({
13
12
  chatCompletion: () => process.env.DEBUG_NVIDIA_CHAT_COMPLETION === '1',
14
13
  },
15
14
  models: async ({ client }) => {
16
- const { LOBE_DEFAULT_MODEL_LIST } = await import('@/config/aiModels');
17
-
18
15
  const modelsPage = (await client.models.list()) as any;
19
16
  const modelList: NvidiaModelCard[] = modelsPage.data;
20
17
 
21
- return modelList
22
- .map((model) => {
23
- const knownModel = LOBE_DEFAULT_MODEL_LIST.find(
24
- (m) => model.id.toLowerCase() === m.id.toLowerCase(),
25
- );
26
-
27
- return {
28
- contextWindowTokens: knownModel?.contextWindowTokens ?? undefined,
29
- displayName: knownModel?.displayName ?? undefined,
30
- enabled: knownModel?.enabled || false,
31
- functionCall: knownModel?.abilities?.functionCall || false,
32
- id: model.id,
33
- reasoning: knownModel?.abilities?.reasoning || false,
34
- vision: knownModel?.abilities?.vision || false,
35
- };
36
- })
37
- .filter(Boolean) as ChatModelCard[];
18
+ return processMultiProviderModelList(modelList);
38
19
  },
39
20
  provider: ModelProvider.Nvidia,
40
21
  });
@@ -8,15 +8,17 @@ exports[`LobeOpenAI > models > should get models 1`] = `
8
8
  "enabled": false,
9
9
  "functionCall": false,
10
10
  "id": "whisper-1",
11
+ "maxOutput": undefined,
11
12
  "reasoning": false,
12
13
  "vision": false,
13
14
  },
14
15
  {
15
16
  "contextWindowTokens": undefined,
16
- "displayName": undefined,
17
+ "displayName": "davinci-002",
17
18
  "enabled": false,
18
19
  "functionCall": false,
19
20
  "id": "davinci-002",
21
+ "maxOutput": undefined,
20
22
  "reasoning": false,
21
23
  "vision": false,
22
24
  },
@@ -26,6 +28,7 @@ exports[`LobeOpenAI > models > should get models 1`] = `
26
28
  "enabled": false,
27
29
  "functionCall": true,
28
30
  "id": "gpt-3.5-turbo",
31
+ "maxOutput": undefined,
29
32
  "reasoning": false,
30
33
  "vision": false,
31
34
  },
@@ -35,24 +38,27 @@ exports[`LobeOpenAI > models > should get models 1`] = `
35
38
  "enabled": false,
36
39
  "functionCall": false,
37
40
  "id": "dall-e-2",
41
+ "maxOutput": undefined,
38
42
  "reasoning": false,
39
43
  "vision": false,
40
44
  },
41
45
  {
42
46
  "contextWindowTokens": undefined,
43
- "displayName": undefined,
47
+ "displayName": "gpt-3.5-turbo-16k",
44
48
  "enabled": false,
45
49
  "functionCall": false,
46
50
  "id": "gpt-3.5-turbo-16k",
51
+ "maxOutput": undefined,
47
52
  "reasoning": false,
48
53
  "vision": false,
49
54
  },
50
55
  {
51
56
  "contextWindowTokens": undefined,
52
- "displayName": undefined,
57
+ "displayName": "tts-1-hd-1106",
53
58
  "enabled": false,
54
59
  "functionCall": false,
55
60
  "id": "tts-1-hd-1106",
61
+ "maxOutput": undefined,
56
62
  "reasoning": false,
57
63
  "vision": false,
58
64
  },
@@ -62,15 +68,17 @@ exports[`LobeOpenAI > models > should get models 1`] = `
62
68
  "enabled": false,
63
69
  "functionCall": false,
64
70
  "id": "tts-1-hd",
71
+ "maxOutput": undefined,
65
72
  "reasoning": false,
66
73
  "vision": false,
67
74
  },
68
75
  {
69
76
  "contextWindowTokens": undefined,
70
- "displayName": undefined,
77
+ "displayName": "gpt-3.5-turbo-16k-0613",
71
78
  "enabled": false,
72
79
  "functionCall": false,
73
80
  "id": "gpt-3.5-turbo-16k-0613",
81
+ "maxOutput": undefined,
74
82
  "reasoning": false,
75
83
  "vision": false,
76
84
  },
@@ -80,24 +88,27 @@ exports[`LobeOpenAI > models > should get models 1`] = `
80
88
  "enabled": false,
81
89
  "functionCall": false,
82
90
  "id": "text-embedding-3-large",
91
+ "maxOutput": undefined,
83
92
  "reasoning": false,
84
93
  "vision": false,
85
94
  },
86
95
  {
87
96
  "contextWindowTokens": undefined,
88
- "displayName": undefined,
97
+ "displayName": "gpt-4-1106-vision-preview",
89
98
  "enabled": false,
90
99
  "functionCall": false,
91
100
  "id": "gpt-4-1106-vision-preview",
101
+ "maxOutput": undefined,
92
102
  "reasoning": false,
93
103
  "vision": false,
94
104
  },
95
105
  {
96
106
  "contextWindowTokens": undefined,
97
- "displayName": undefined,
107
+ "displayName": "gpt-3.5-turbo-instruct-0914",
98
108
  "enabled": false,
99
109
  "functionCall": false,
100
110
  "id": "gpt-3.5-turbo-instruct-0914",
111
+ "maxOutput": undefined,
101
112
  "reasoning": false,
102
113
  "vision": false,
103
114
  },
@@ -107,6 +118,7 @@ exports[`LobeOpenAI > models > should get models 1`] = `
107
118
  "enabled": false,
108
119
  "functionCall": true,
109
120
  "id": "gpt-4-0125-preview",
121
+ "maxOutput": undefined,
110
122
  "reasoning": false,
111
123
  "vision": false,
112
124
  },
@@ -116,6 +128,7 @@ exports[`LobeOpenAI > models > should get models 1`] = `
116
128
  "enabled": false,
117
129
  "functionCall": true,
118
130
  "id": "gpt-4-turbo-preview",
131
+ "maxOutput": undefined,
119
132
  "reasoning": false,
120
133
  "vision": false,
121
134
  },
@@ -125,24 +138,27 @@ exports[`LobeOpenAI > models > should get models 1`] = `
125
138
  "enabled": false,
126
139
  "functionCall": false,
127
140
  "id": "gpt-3.5-turbo-instruct",
141
+ "maxOutput": undefined,
128
142
  "reasoning": false,
129
143
  "vision": false,
130
144
  },
131
145
  {
132
146
  "contextWindowTokens": undefined,
133
- "displayName": undefined,
147
+ "displayName": "gpt-3.5-turbo-0301",
134
148
  "enabled": false,
135
149
  "functionCall": false,
136
150
  "id": "gpt-3.5-turbo-0301",
151
+ "maxOutput": undefined,
137
152
  "reasoning": false,
138
153
  "vision": false,
139
154
  },
140
155
  {
141
156
  "contextWindowTokens": undefined,
142
- "displayName": undefined,
157
+ "displayName": "gpt-3.5-turbo-0613",
143
158
  "enabled": false,
144
159
  "functionCall": false,
145
160
  "id": "gpt-3.5-turbo-0613",
161
+ "maxOutput": undefined,
146
162
  "reasoning": false,
147
163
  "vision": false,
148
164
  },
@@ -152,6 +168,7 @@ exports[`LobeOpenAI > models > should get models 1`] = `
152
168
  "enabled": false,
153
169
  "functionCall": false,
154
170
  "id": "tts-1",
171
+ "maxOutput": undefined,
155
172
  "reasoning": false,
156
173
  "vision": false,
157
174
  },
@@ -161,6 +178,7 @@ exports[`LobeOpenAI > models > should get models 1`] = `
161
178
  "enabled": false,
162
179
  "functionCall": false,
163
180
  "id": "dall-e-3",
181
+ "maxOutput": undefined,
164
182
  "reasoning": false,
165
183
  "vision": false,
166
184
  },
@@ -170,6 +188,7 @@ exports[`LobeOpenAI > models > should get models 1`] = `
170
188
  "enabled": false,
171
189
  "functionCall": true,
172
190
  "id": "gpt-3.5-turbo-1106",
191
+ "maxOutput": undefined,
173
192
  "reasoning": false,
174
193
  "vision": false,
175
194
  },
@@ -179,24 +198,27 @@ exports[`LobeOpenAI > models > should get models 1`] = `
179
198
  "enabled": false,
180
199
  "functionCall": true,
181
200
  "id": "gpt-4-1106-preview",
201
+ "maxOutput": undefined,
182
202
  "reasoning": false,
183
203
  "vision": false,
184
204
  },
185
205
  {
186
206
  "contextWindowTokens": undefined,
187
- "displayName": undefined,
207
+ "displayName": "babbage-002",
188
208
  "enabled": false,
189
209
  "functionCall": false,
190
210
  "id": "babbage-002",
211
+ "maxOutput": undefined,
191
212
  "reasoning": false,
192
213
  "vision": false,
193
214
  },
194
215
  {
195
216
  "contextWindowTokens": undefined,
196
- "displayName": undefined,
217
+ "displayName": "tts-1-1106",
197
218
  "enabled": false,
198
219
  "functionCall": false,
199
220
  "id": "tts-1-1106",
221
+ "maxOutput": undefined,
200
222
  "reasoning": false,
201
223
  "vision": false,
202
224
  },
@@ -206,6 +228,7 @@ exports[`LobeOpenAI > models > should get models 1`] = `
206
228
  "enabled": false,
207
229
  "functionCall": false,
208
230
  "id": "gpt-4-vision-preview",
231
+ "maxOutput": undefined,
209
232
  "reasoning": false,
210
233
  "vision": true,
211
234
  },
@@ -215,6 +238,7 @@ exports[`LobeOpenAI > models > should get models 1`] = `
215
238
  "enabled": false,
216
239
  "functionCall": false,
217
240
  "id": "text-embedding-3-small",
241
+ "maxOutput": undefined,
218
242
  "reasoning": false,
219
243
  "vision": false,
220
244
  },
@@ -224,15 +248,17 @@ exports[`LobeOpenAI > models > should get models 1`] = `
224
248
  "enabled": false,
225
249
  "functionCall": true,
226
250
  "id": "gpt-4",
251
+ "maxOutput": 4096,
227
252
  "reasoning": false,
228
253
  "vision": true,
229
254
  },
230
255
  {
231
256
  "contextWindowTokens": undefined,
232
- "displayName": undefined,
257
+ "displayName": "text-embedding-ada-002",
233
258
  "enabled": false,
234
259
  "functionCall": false,
235
260
  "id": "text-embedding-ada-002",
261
+ "maxOutput": undefined,
236
262
  "reasoning": false,
237
263
  "vision": false,
238
264
  },
@@ -242,6 +268,7 @@ exports[`LobeOpenAI > models > should get models 1`] = `
242
268
  "enabled": false,
243
269
  "functionCall": true,
244
270
  "id": "gpt-3.5-turbo-0125",
271
+ "maxOutput": undefined,
245
272
  "reasoning": false,
246
273
  "vision": false,
247
274
  },
@@ -251,6 +278,7 @@ exports[`LobeOpenAI > models > should get models 1`] = `
251
278
  "enabled": false,
252
279
  "functionCall": true,
253
280
  "id": "gpt-4-0613",
281
+ "maxOutput": undefined,
254
282
  "reasoning": false,
255
283
  "vision": false,
256
284
  },