@theia/ai-openai 1.71.0-next.64 → 1.71.0-next.72
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/lib/browser/openai-frontend-application-contribution.d.ts.map +1 -1
- package/lib/browser/openai-frontend-application-contribution.js +53 -3
- package/lib/browser/openai-frontend-application-contribution.js.map +1 -1
- package/lib/common/openai-language-models-manager.d.ts +3 -0
- package/lib/common/openai-language-models-manager.d.ts.map +1 -1
- package/lib/common/openai-language-models-manager.js +0 -15
- package/lib/common/openai-language-models-manager.js.map +1 -1
- package/lib/common/openai-preferences.d.ts.map +1 -1
- package/lib/common/openai-preferences.js +25 -2
- package/lib/common/openai-preferences.js.map +1 -1
- package/lib/node/openai-language-model.d.ts +4 -19
- package/lib/node/openai-language-model.d.ts.map +1 -1
- package/lib/node/openai-language-model.js +8 -61
- package/lib/node/openai-language-model.js.map +1 -1
- package/lib/node/openai-language-model.spec.d.ts +2 -0
- package/lib/node/openai-language-model.spec.d.ts.map +1 -0
- package/lib/node/openai-language-model.spec.js +91 -0
- package/lib/node/openai-language-model.spec.js.map +1 -0
- package/lib/node/openai-language-models-manager-impl.d.ts.map +1 -1
- package/lib/node/openai-language-models-manager-impl.js +3 -2
- package/lib/node/openai-language-models-manager-impl.js.map +1 -1
- package/lib/node/openai-reasoning.d.ts +12 -0
- package/lib/node/openai-reasoning.d.ts.map +1 -0
- package/lib/node/openai-reasoning.js +47 -0
- package/lib/node/openai-reasoning.js.map +1 -0
- package/package.json +6 -6
- package/src/browser/openai-frontend-application-contribution.ts +60 -3
- package/src/common/openai-language-models-manager.ts +4 -0
- package/src/common/openai-preferences.ts +26 -2
- package/src/node/openai-language-model.spec.ts +104 -0
- package/src/node/openai-language-model.ts +10 -64
- package/src/node/openai-language-models-manager-impl.ts +4 -2
- package/src/node/openai-reasoning.ts +52 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai-frontend-application-contribution.d.ts","sourceRoot":"","sources":["../../src/browser/openai-frontend-application-contribution.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,+BAA+B,EAAE,MAAM,yBAAyB,CAAC;
|
|
1
|
+
{"version":3,"file":"openai-frontend-application-contribution.d.ts","sourceRoot":"","sources":["../../src/browser/openai-frontend-application-contribution.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,+BAA+B,EAAE,MAAM,yBAAyB,CAAC;AAG1E,OAAO,EAAE,2BAA2B,EAAE,sBAAsB,EAAsB,MAAM,WAAW,CAAC;AAEpG,OAAO,EAAE,iBAAiB,EAA+B,MAAM,+CAA+C,CAAC;AAC/G,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,qBACa,qCAAsC,YAAW,+BAA+B;IAGzF,SAAS,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;IAG/C,SAAS,CAAC,OAAO,EAAE,2BAA2B,CAAC;IAG/C,SAAS,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;IAE/C,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,CAAM;IACpC,SAAS,CAAC,gBAAgB,EAAE,OAAO,CAAC,sBAAsB,CAAC,EAAE,CAAM;IAEnE,OAAO,IAAI,IAAI;IAwCf,SAAS,CAAC,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,IAAI;IAYvD,SAAS,CAAC,wBAAwB,CAAC,eAAe,EAAE,OAAO,CAAC,sBAAsB,CAAC,EAAE,GAAG,IAAI;IAwB5F,SAAS,CAAC,eAAe,IAAI,IAAI;IAQjC,SAAS,CAAC,4BAA4B,CAAC,OAAO,EAAE,MAAM,GAAG,sBAAsB;IAkB/E,SAAS,CAAC,4CAA4C,CAClD,WAAW,EAAE,OAAO,CAAC,sBAAsB,CAAC,EAAE,GAC/C,sBAAsB,EAAE;CAgC9B"}
|
|
@@ -87,7 +87,8 @@ let OpenAiFrontendApplicationContribution = class OpenAiFrontendApplicationContr
|
|
|
87
87
|
model.developerMessageSettings === newModel.developerMessageSettings &&
|
|
88
88
|
model.supportsStructuredOutput === newModel.supportsStructuredOutput &&
|
|
89
89
|
model.enableStreaming === newModel.enableStreaming &&
|
|
90
|
-
model.useResponseApi === newModel.useResponseApi
|
|
90
|
+
model.useResponseApi === newModel.useResponseApi &&
|
|
91
|
+
reasoningSupportEquals(model.reasoningSupport, newModel.reasoningSupport)));
|
|
91
92
|
this.manager.removeLanguageModels(...modelsToRemove.map(model => model.id));
|
|
92
93
|
this.manager.createOrUpdateLanguageModels(...modelsToAddOrUpdate);
|
|
93
94
|
this.prevCustomModels = [...newCustomModels];
|
|
@@ -111,7 +112,8 @@ let OpenAiFrontendApplicationContribution = class OpenAiFrontendApplicationContr
|
|
|
111
112
|
enableStreaming: !openAIModelsWithDisabledStreaming.includes(modelId),
|
|
112
113
|
supportsStructuredOutput: !openAIModelsWithoutStructuredOutput.includes(modelId),
|
|
113
114
|
maxRetries: maxRetries,
|
|
114
|
-
useResponseApi: useResponseApi
|
|
115
|
+
useResponseApi: useResponseApi,
|
|
116
|
+
reasoningSupport: reasoningSupportFor(modelId)
|
|
115
117
|
};
|
|
116
118
|
}
|
|
117
119
|
createCustomModelDescriptionsFromPreferences(preferences) {
|
|
@@ -120,6 +122,12 @@ let OpenAiFrontendApplicationContribution = class OpenAiFrontendApplicationContr
|
|
|
120
122
|
if (!pref.model || !pref.url || typeof pref.model !== 'string' || typeof pref.url !== 'string') {
|
|
121
123
|
return acc;
|
|
122
124
|
}
|
|
125
|
+
// Default to the model-name heuristic so reasoning-capable GPT-5 / o-series models exposed via
|
|
126
|
+
// a custom endpoint still get the selector. Users can override via `reasoningSupport`
|
|
127
|
+
// (set to `null` to disable, or to a full `ReasoningSupport` object to customize).
|
|
128
|
+
const reasoningSupport = 'reasoningSupport' in pref
|
|
129
|
+
? (isReasoningSupport(pref.reasoningSupport) ? pref.reasoningSupport : undefined)
|
|
130
|
+
: reasoningSupportFor(pref.model);
|
|
123
131
|
return [
|
|
124
132
|
...acc,
|
|
125
133
|
{
|
|
@@ -133,7 +141,8 @@ let OpenAiFrontendApplicationContribution = class OpenAiFrontendApplicationContr
|
|
|
133
141
|
supportsStructuredOutput: pref.supportsStructuredOutput ?? true,
|
|
134
142
|
enableStreaming: pref.enableStreaming ?? true,
|
|
135
143
|
maxRetries: pref.maxRetries ?? maxRetries,
|
|
136
|
-
useResponseApi: pref.useResponseApi ?? false
|
|
144
|
+
useResponseApi: pref.useResponseApi ?? false,
|
|
145
|
+
reasoningSupport
|
|
137
146
|
}
|
|
138
147
|
];
|
|
139
148
|
}, []);
|
|
@@ -155,7 +164,48 @@ tslib_1.__decorate([
|
|
|
155
164
|
exports.OpenAiFrontendApplicationContribution = OpenAiFrontendApplicationContribution = tslib_1.__decorate([
|
|
156
165
|
(0, inversify_1.injectable)()
|
|
157
166
|
], OpenAiFrontendApplicationContribution);
|
|
167
|
+
function isReasoningSupport(value) {
|
|
168
|
+
return !!value && typeof value === 'object' && Array.isArray(value.supportedLevels);
|
|
169
|
+
}
|
|
170
|
+
/**
|
|
171
|
+
* Structural equality for {@link ReasoningSupport}. Used by {@link handleCustomModelChanges} to avoid
|
|
172
|
+
* needless model re-creation when the user supplies an explicit `reasoningSupport` object via
|
|
173
|
+
* preferences — each JSON deserialization yields a fresh object reference, so a `===` check would
|
|
174
|
+
* always report a change even when the contents are identical.
|
|
175
|
+
*/
|
|
176
|
+
function reasoningSupportEquals(a, b) {
|
|
177
|
+
if (a === b) {
|
|
178
|
+
return true;
|
|
179
|
+
}
|
|
180
|
+
if (!a || !b) {
|
|
181
|
+
return false;
|
|
182
|
+
}
|
|
183
|
+
return a.defaultLevel === b.defaultLevel
|
|
184
|
+
&& a.supportedLevels.length === b.supportedLevels.length
|
|
185
|
+
&& a.supportedLevels.every((level, index) => level === b.supportedLevels[index]);
|
|
186
|
+
}
|
|
158
187
|
const openAIModelsWithDisabledStreaming = [];
|
|
159
188
|
const openAIModelsNotSupportingDeveloperMessages = ['o1-preview', 'o1-mini'];
|
|
160
189
|
const openAIModelsWithoutStructuredOutput = ['o1-preview', 'gpt-4-turbo', 'gpt-4', 'gpt-3.5-turbo', 'o1-mini', 'gpt-4o-2024-05-13'];
|
|
190
|
+
/** GPT-5 family: supports `minimal` in addition to `low | medium | high`. */
|
|
191
|
+
const GPT5_REASONING = /^gpt-5(?:\.|-|$)/i;
|
|
192
|
+
/** o-series reasoning models (o1, o3, o4): `low | medium | high`. */
|
|
193
|
+
const O_SERIES_REASONING = /^o[134](?:-|$)/i;
|
|
194
|
+
const GPT5_REASONING_SUPPORT = {
|
|
195
|
+
supportedLevels: ['off', 'minimal', 'low', 'medium', 'high', 'auto'],
|
|
196
|
+
defaultLevel: 'auto'
|
|
197
|
+
};
|
|
198
|
+
const O_SERIES_REASONING_SUPPORT = {
|
|
199
|
+
supportedLevels: ['off', 'low', 'medium', 'high', 'auto'],
|
|
200
|
+
defaultLevel: 'auto'
|
|
201
|
+
};
|
|
202
|
+
function reasoningSupportFor(modelId) {
|
|
203
|
+
if (GPT5_REASONING.test(modelId)) {
|
|
204
|
+
return GPT5_REASONING_SUPPORT;
|
|
205
|
+
}
|
|
206
|
+
if (O_SERIES_REASONING.test(modelId)) {
|
|
207
|
+
return O_SERIES_REASONING_SUPPORT;
|
|
208
|
+
}
|
|
209
|
+
return undefined;
|
|
210
|
+
}
|
|
161
211
|
//# sourceMappingURL=openai-frontend-application-contribution.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai-frontend-application-contribution.js","sourceRoot":"","sources":["../../src/browser/openai-frontend-application-contribution.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;;AAGhF,4DAAkE;
|
|
1
|
+
{"version":3,"file":"openai-frontend-application-contribution.js","sourceRoot":"","sources":["../../src/browser/openai-frontend-application-contribution.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
import { ReasoningSupport } from '@theia/ai-core';
|
|
1
2
|
export declare const OPENAI_LANGUAGE_MODELS_MANAGER_PATH = "/services/open-ai/language-model-manager";
|
|
2
3
|
export declare const OpenAiLanguageModelsManager: unique symbol;
|
|
3
4
|
export declare const OPENAI_PROVIDER_ID = "openai";
|
|
@@ -51,6 +52,8 @@ export interface OpenAiModelDescription {
|
|
|
51
52
|
* Default is `false` for custom models.
|
|
52
53
|
*/
|
|
53
54
|
useResponseApi?: boolean;
|
|
55
|
+
/** When set, the UI exposes a reasoning selector and the level is translated to the OpenAI reasoning parameter. */
|
|
56
|
+
reasoningSupport?: ReasoningSupport;
|
|
54
57
|
}
|
|
55
58
|
export interface OpenAiLanguageModelsManager {
|
|
56
59
|
apiKey: string | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai-language-models-manager.d.ts","sourceRoot":"","sources":["../../src/common/openai-language-models-manager.ts"],"names":[],"mappings":"AAeA,eAAO,MAAM,mCAAmC,6CAA6C,CAAC;AAC9F,eAAO,MAAM,2BAA2B,eAAwC,CAAC;AAEjF,eAAO,MAAM,kBAAkB,WAAW,CAAC;AAE3C,MAAM,WAAW,sBAAsB;IACnC;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IACX;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAClC;;OAEG;IACH,UAAU,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACtC;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,eAAe,EAAE,OAAO,CAAC;IACzB;;;;;OAKG;IACH,wBAAwB,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,WAAW,GAAG,+BAA+B,GAAG,MAAM,CAAC;IACtG;;OAEG;IACH,wBAAwB,EAAE,OAAO,CAAC;IAClC;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"openai-language-models-manager.d.ts","sourceRoot":"","sources":["../../src/common/openai-language-models-manager.ts"],"names":[],"mappings":"AAeA,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAElD,eAAO,MAAM,mCAAmC,6CAA6C,CAAC;AAC9F,eAAO,MAAM,2BAA2B,eAAwC,CAAC;AAEjF,eAAO,MAAM,kBAAkB,WAAW,CAAC;AAE3C,MAAM,WAAW,sBAAsB;IACnC;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IACX;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,GAAG,CAAC,EAAE,MAAM,CAAC;IACb;;OAEG;IACH,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAClC;;OAEG;IACH,UAAU,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IACtC;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB;;OAEG;IACH,eAAe,EAAE,OAAO,CAAC;IACzB;;;;;OAKG;IACH,wBAAwB,CAAC,EAAE,MAAM,GAAG,QAAQ,GAAG,WAAW,GAAG,+BAA+B,GAAG,MAAM,CAAC;IACtG;;OAEG;IACH,wBAAwB,EAAE,OAAO,CAAC;IAClC;;OAEG;IACH,UAAU,EAAE,MAAM,CAAC;IACnB;;;;OAIG;IACH,cAAc,CAAC,EAAE,OAAO,CAAC;IACzB,mHAAmH;IACnH,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;CACvC;AACD,MAAM,WAAW,2BAA2B;IACxC,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;IACzC,aAAa,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;IACjD,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;IAChD,4BAA4B,CAAC,GAAG,MAAM,EAAE,sBAAsB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACjF,oBAAoB,CAAC,GAAG,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI,CAAA;CACpD"}
|
|
@@ -1,21 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.OPENAI_PROVIDER_ID = exports.OpenAiLanguageModelsManager = exports.OPENAI_LANGUAGE_MODELS_MANAGER_PATH = void 0;
|
|
4
|
-
// *****************************************************************************
|
|
5
|
-
// Copyright (C) 2024 EclipseSource GmbH.
|
|
6
|
-
//
|
|
7
|
-
// This program and the accompanying materials are made available under the
|
|
8
|
-
// terms of the Eclipse Public License v. 2.0 which is available at
|
|
9
|
-
// http://www.eclipse.org/legal/epl-2.0.
|
|
10
|
-
//
|
|
11
|
-
// This Source Code may also be made available under the following Secondary
|
|
12
|
-
// Licenses when the conditions for such availability set forth in the Eclipse
|
|
13
|
-
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
14
|
-
// with the GNU Classpath Exception which is available at
|
|
15
|
-
// https://www.gnu.org/software/classpath/license.html.
|
|
16
|
-
//
|
|
17
|
-
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
18
|
-
// *****************************************************************************
|
|
19
4
|
exports.OPENAI_LANGUAGE_MODELS_MANAGER_PATH = '/services/open-ai/language-model-manager';
|
|
20
5
|
exports.OpenAiLanguageModelsManager = Symbol('OpenAiLanguageModelsManager');
|
|
21
6
|
exports.OPENAI_PROVIDER_ID = 'openai';
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai-language-models-manager.js","sourceRoot":"","sources":["../../src/common/openai-language-models-manager.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"openai-language-models-manager.js","sourceRoot":"","sources":["../../src/common/openai-language-models-manager.ts"],"names":[],"mappings":";;;AAiBa,QAAA,mCAAmC,GAAG,0CAA0C,CAAC;AACjF,QAAA,2BAA2B,GAAG,MAAM,CAAC,6BAA6B,CAAC,CAAC;AAEpE,QAAA,kBAAkB,GAAG,QAAQ,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai-preferences.d.ts","sourceRoot":"","sources":["../../src/common/openai-preferences.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAuB,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpE,eAAO,MAAM,YAAY,4CAA4C,CAAC;AACtE,eAAO,MAAM,WAAW,oDAAoD,CAAC;AAC7E,eAAO,MAAM,qBAAqB,8CAA8C,CAAC;AACjF,eAAO,MAAM,qBAAqB,gDAAgD,CAAC;AAEnF,eAAO,MAAM,uBAAuB,EAAE,
|
|
1
|
+
{"version":3,"file":"openai-preferences.d.ts","sourceRoot":"","sources":["../../src/common/openai-preferences.ts"],"names":[],"mappings":"AAiBA,OAAO,EAAuB,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAEpE,eAAO,MAAM,YAAY,4CAA4C,CAAC;AACtE,eAAO,MAAM,WAAW,oDAAoD,CAAC;AAC7E,eAAO,MAAM,qBAAqB,8CAA8C,CAAC;AACjF,eAAO,MAAM,qBAAqB,gDAAgD,CAAC;AAEnF,eAAO,MAAM,uBAAuB,EAAE,gBAoJrC,CAAC"}
|
|
@@ -35,11 +35,12 @@ on the machine running Theia. Use the environment variable `OPENAI_API_KEY` to s
|
|
|
35
35
|
description: core_1.nls.localize('theia/ai/openai/models/description', 'Official OpenAI models to use'),
|
|
36
36
|
title: ai_core_preferences_1.AI_CORE_PREFERENCES_TITLE,
|
|
37
37
|
default: [
|
|
38
|
+
'gpt-5.5',
|
|
39
|
+
'gpt-5.5-pro',
|
|
38
40
|
'gpt-5.4',
|
|
39
41
|
'gpt-5.4-pro',
|
|
40
42
|
'gpt-5.4-mini',
|
|
41
|
-
'gpt-4
|
|
42
|
-
'gpt-4o'
|
|
43
|
+
'gpt-5.4-nano'
|
|
43
44
|
],
|
|
44
45
|
items: {
|
|
45
46
|
type: 'string'
|
|
@@ -82,6 +83,10 @@ Best effort is made to convert non-conformant schemas, but errors are still poss
|
|
|
82
83
|
\n\
|
|
83
84
|
- specify `useResponseApi: true` to use the newer OpenAI Response API instead of the Chat Completion API (requires compatible endpoint).\
|
|
84
85
|
\n\
|
|
86
|
+
- specify `reasoningSupport` to opt in to the chat reasoning selector. By default this is inferred from the\
|
|
87
|
+
`model` name (GPT-5 / o-series). Set to `null` to disable, or to an object with `supportedLevels` (e.g.\
|
|
88
|
+
`["off", "low", "medium", "high", "auto"]`) and an optional `defaultLevel` to customize.\
|
|
89
|
+
\n\
|
|
85
90
|
Refer to [our documentation](https://theia-ide.org/docs/user_ai/#openai-compatible-models-eg-via-vllm) for more information.'),
|
|
86
91
|
default: [],
|
|
87
92
|
items: {
|
|
@@ -131,6 +136,24 @@ Best effort is made to convert non-conformant schemas, but errors are still poss
|
|
|
131
136
|
type: 'boolean',
|
|
132
137
|
title: core_1.nls.localize('theia/ai/openai/customEndpoints/useResponseApi/title', 'Use the newer OpenAI Response API instead of the Chat Completion API. `false` by default for custom providers.'
|
|
133
138
|
+ 'Note: Will automatically fall back to Chat Completions API when tools are used.'),
|
|
139
|
+
},
|
|
140
|
+
reasoningSupport: {
|
|
141
|
+
type: ['object', 'null'],
|
|
142
|
+
title: core_1.nls.localize('theia/ai/openai/customEndpoints/reasoningSupport/title', 'Declares the model\'s reasoning capabilities. When set the chat shows a reasoning selector'
|
|
143
|
+
+ ' for this model. Set to `null` to disable. Inferred from the model name by default.'),
|
|
144
|
+
properties: {
|
|
145
|
+
supportedLevels: {
|
|
146
|
+
type: 'array',
|
|
147
|
+
items: {
|
|
148
|
+
type: 'string',
|
|
149
|
+
enum: ['off', 'minimal', 'low', 'medium', 'high', 'auto']
|
|
150
|
+
}
|
|
151
|
+
},
|
|
152
|
+
defaultLevel: {
|
|
153
|
+
type: 'string',
|
|
154
|
+
enum: ['off', 'minimal', 'low', 'medium', 'high', 'auto']
|
|
155
|
+
}
|
|
156
|
+
}
|
|
134
157
|
}
|
|
135
158
|
}
|
|
136
159
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai-preferences.js","sourceRoot":"","sources":["../../src/common/openai-preferences.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;;AAEhF,uFAA0F;AAC1F,sCAAoE;AAEvD,QAAA,YAAY,GAAG,yCAAyC,CAAC;AACzD,QAAA,WAAW,GAAG,iDAAiD,CAAC;AAChE,QAAA,qBAAqB,GAAG,2CAA2C,CAAC;AACpE,QAAA,qBAAqB,GAAG,6CAA6C,CAAC;AAEtE,QAAA,uBAAuB,GAAqB;IACrD,UAAU,EAAE;QACR,CAAC,oBAAY,CAAC,EAAE;YACZ,IAAI,EAAE,QAAQ;YACd,mBAAmB,EAAE,UAAG,CAAC,QAAQ,CAAC,sCAAsC,EACpE;qGACqF,CAAC,GAAG,qBAAc;YAC3G,KAAK,EAAE,+CAAyB;SACnC;QACD,CAAC,mBAAW,CAAC,EAAE;YACX,IAAI,EAAE,OAAO;YACb,WAAW,EAAE,UAAG,CAAC,QAAQ,CAAC,oCAAoC,EAAE,+BAA+B,CAAC;YAChG,KAAK,EAAE,+CAAyB;YAChC,OAAO,EAAE;gBACL,SAAS;gBACT,aAAa;gBACb,cAAc;gBACd,
|
|
1
|
+
{"version":3,"file":"openai-preferences.js","sourceRoot":"","sources":["../../src/common/openai-preferences.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { LanguageModel, LanguageModelParsedResponse, LanguageModelRequest, LanguageModelMessage, LanguageModelResponse, LanguageModelTextResponse, UserRequest, LanguageModelStatus } from '@theia/ai-core';
|
|
1
|
+
import { LanguageModel, LanguageModelParsedResponse, LanguageModelRequest, LanguageModelMessage, LanguageModelResponse, LanguageModelTextResponse, UserRequest, LanguageModelStatus, ReasoningSupport } from '@theia/ai-core';
|
|
2
2
|
import { CancellationToken } from '@theia/core';
|
|
3
3
|
import { OpenAI } from 'openai';
|
|
4
4
|
import { RunnableToolFunctionWithoutParse } from 'openai/lib/RunnableFunction';
|
|
@@ -27,6 +27,7 @@ export declare class OpenAiModel implements LanguageModel {
|
|
|
27
27
|
maxRetries: number;
|
|
28
28
|
useResponseApi: boolean;
|
|
29
29
|
proxy?: string | undefined;
|
|
30
|
+
reasoningSupport?: ReasoningSupport | undefined;
|
|
30
31
|
/**
|
|
31
32
|
* The options for the OpenAI runner.
|
|
32
33
|
*/
|
|
@@ -42,24 +43,8 @@ export declare class OpenAiModel implements LanguageModel {
|
|
|
42
43
|
* @param maxRetries the maximum number of retry attempts when a request fails
|
|
43
44
|
* @param useResponseApi whether to use the newer OpenAI Response API instead of the Chat Completion API
|
|
44
45
|
*/
|
|
45
|
-
constructor(id: string, model: string, status: LanguageModelStatus, enableStreaming: boolean, apiKey: () => string | undefined, apiVersion: () => string | undefined, supportsStructuredOutput: boolean, url: string | undefined, deployment: string | undefined, openAiModelUtils: OpenAiModelUtils, responseApiUtils: OpenAiResponseApiUtils, developerMessageSettings?: DeveloperMessageSettings, maxRetries?: number, useResponseApi?: boolean, proxy?: string | undefined);
|
|
46
|
-
/**
|
|
47
|
-
* Checks if the model is an o-series model that supports reasoning.
|
|
48
|
-
* Models like o1, o1-mini, o1-preview, o3, o3-mini, o4-mini support the reasoning_effort parameter.
|
|
49
|
-
* These models use: reasoning_effort: 'low' | 'medium' | 'high'
|
|
50
|
-
*/
|
|
51
|
-
protected supportsReasoning(): boolean;
|
|
52
|
-
/**
|
|
53
|
-
* Checks if the model is a GPT-5 series model (gpt-5, gpt-5.1, gpt-5.2).
|
|
54
|
-
* These models use a different reasoning parameter format: reasoning: { effort: 'none' | 'low' | 'medium' | 'high' }
|
|
55
|
-
*/
|
|
56
|
-
protected supportsGPT5Reasoning(): boolean;
|
|
57
|
-
/**
|
|
58
|
-
* Gets the settings for a request, optionally including reasoning parameters.
|
|
59
|
-
* @param request The language model request
|
|
60
|
-
* @param forResponseApi Whether the settings are for the Response API (true) or Chat Completions API (false).
|
|
61
|
-
* GPT-5 reasoning parameters are only supported with the Response API.
|
|
62
|
-
*/
|
|
46
|
+
constructor(id: string, model: string, status: LanguageModelStatus, enableStreaming: boolean, apiKey: () => string | undefined, apiVersion: () => string | undefined, supportsStructuredOutput: boolean, url: string | undefined, deployment: string | undefined, openAiModelUtils: OpenAiModelUtils, responseApiUtils: OpenAiResponseApiUtils, developerMessageSettings?: DeveloperMessageSettings, maxRetries?: number, useResponseApi?: boolean, proxy?: string | undefined, reasoningSupport?: ReasoningSupport | undefined);
|
|
47
|
+
/** Reasoning-level translation lives in {@link openAiReasoningFor}. */
|
|
63
48
|
protected getSettings(request: LanguageModelRequest, forResponseApi?: boolean): Record<string, unknown>;
|
|
64
49
|
request(request: UserRequest, cancellationToken?: CancellationToken): Promise<LanguageModelResponse>;
|
|
65
50
|
protected handleChatCompletionsRequest(openai: OpenAI, request: UserRequest, cancellationToken?: CancellationToken): Promise<LanguageModelResponse>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai-language-model.d.ts","sourceRoot":"","sources":["../../src/node/openai-language-model.ts"],"names":[],"mappings":"AAgBA,OAAO,EACH,aAAa,EACb,2BAA2B,EAC3B,oBAAoB,EACpB,oBAAoB,EACpB,qBAAqB,EACrB,yBAAyB,EACzB,WAAW,EAEX,mBAAmB,
|
|
1
|
+
{"version":3,"file":"openai-language-model.d.ts","sourceRoot":"","sources":["../../src/node/openai-language-model.ts"],"names":[],"mappings":"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"}
|
|
@@ -23,6 +23,7 @@ const openai_1 = require("openai");
|
|
|
23
23
|
const openai_streaming_iterator_1 = require("./openai-streaming-iterator");
|
|
24
24
|
const common_1 = require("../common");
|
|
25
25
|
const openai_response_api_utils_1 = require("./openai-response-api-utils");
|
|
26
|
+
const openai_reasoning_1 = require("./openai-reasoning");
|
|
26
27
|
const node_1 = require("@theia/ai-core/lib/node");
|
|
27
28
|
class MistralFixedOpenAI extends openai_1.OpenAI {
|
|
28
29
|
async prepareOptions(options) {
|
|
@@ -61,7 +62,7 @@ class OpenAiModel {
|
|
|
61
62
|
* @param maxRetries the maximum number of retry attempts when a request fails
|
|
62
63
|
* @param useResponseApi whether to use the newer OpenAI Response API instead of the Chat Completion API
|
|
63
64
|
*/
|
|
64
|
-
constructor(id, model, status, enableStreaming, apiKey, apiVersion, supportsStructuredOutput, url, deployment, openAiModelUtils, responseApiUtils, developerMessageSettings = 'developer', maxRetries = 3, useResponseApi = false, proxy) {
|
|
65
|
+
constructor(id, model, status, enableStreaming, apiKey, apiVersion, supportsStructuredOutput, url, deployment, openAiModelUtils, responseApiUtils, developerMessageSettings = 'developer', maxRetries = 3, useResponseApi = false, proxy, reasoningSupport) {
|
|
65
66
|
this.id = id;
|
|
66
67
|
this.model = model;
|
|
67
68
|
this.status = status;
|
|
@@ -77,6 +78,7 @@ class OpenAiModel {
|
|
|
77
78
|
this.maxRetries = maxRetries;
|
|
78
79
|
this.useResponseApi = useResponseApi;
|
|
79
80
|
this.proxy = proxy;
|
|
81
|
+
this.reasoningSupport = reasoningSupport;
|
|
80
82
|
/**
|
|
81
83
|
* The options for the OpenAI runner.
|
|
82
84
|
*/
|
|
@@ -87,67 +89,12 @@ class OpenAiModel {
|
|
|
87
89
|
maxChatCompletions: 100,
|
|
88
90
|
};
|
|
89
91
|
}
|
|
90
|
-
/**
|
|
91
|
-
* Checks if the model is an o-series model that supports reasoning.
|
|
92
|
-
* Models like o1, o1-mini, o1-preview, o3, o3-mini, o4-mini support the reasoning_effort parameter.
|
|
93
|
-
* These models use: reasoning_effort: 'low' | 'medium' | 'high'
|
|
94
|
-
*/
|
|
95
|
-
supportsReasoning() {
|
|
96
|
-
return /^o[134](-|$)/i.test(this.model);
|
|
97
|
-
}
|
|
98
|
-
/**
|
|
99
|
-
* Checks if the model is a GPT-5 series model (gpt-5, gpt-5.1, gpt-5.2).
|
|
100
|
-
* These models use a different reasoning parameter format: reasoning: { effort: 'none' | 'low' | 'medium' | 'high' }
|
|
101
|
-
*/
|
|
102
|
-
supportsGPT5Reasoning() {
|
|
103
|
-
return /^gpt-5(\.?[012])?(-|$)/i.test(this.model);
|
|
104
|
-
}
|
|
105
|
-
/**
|
|
106
|
-
* Gets the settings for a request, optionally including reasoning parameters.
|
|
107
|
-
* @param request The language model request
|
|
108
|
-
* @param forResponseApi Whether the settings are for the Response API (true) or Chat Completions API (false).
|
|
109
|
-
* GPT-5 reasoning parameters are only supported with the Response API.
|
|
110
|
-
*/
|
|
92
|
+
/** Reasoning-level translation lives in {@link openAiReasoningFor}. */
|
|
111
93
|
getSettings(request, forResponseApi = false) {
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
if (budgetTokens <= 0) {
|
|
117
|
-
effort = 'none';
|
|
118
|
-
}
|
|
119
|
-
else if (budgetTokens <= 2000) {
|
|
120
|
-
effort = 'low';
|
|
121
|
-
}
|
|
122
|
-
else if (budgetTokens <= 20000) {
|
|
123
|
-
effort = 'medium';
|
|
124
|
-
}
|
|
125
|
-
else {
|
|
126
|
-
effort = 'high';
|
|
127
|
-
}
|
|
128
|
-
return {
|
|
129
|
-
...baseSettings,
|
|
130
|
-
reasoning: { effort }
|
|
131
|
-
};
|
|
132
|
-
}
|
|
133
|
-
if (request.thinkingMode?.enabled && this.supportsReasoning()) {
|
|
134
|
-
const budgetTokens = request.thinkingMode.budgetTokens ?? 10000;
|
|
135
|
-
let reasoningEffort;
|
|
136
|
-
if (budgetTokens <= 2000) {
|
|
137
|
-
reasoningEffort = 'low';
|
|
138
|
-
}
|
|
139
|
-
else if (budgetTokens <= 20000) {
|
|
140
|
-
reasoningEffort = 'medium';
|
|
141
|
-
}
|
|
142
|
-
else {
|
|
143
|
-
reasoningEffort = 'high';
|
|
144
|
-
}
|
|
145
|
-
return {
|
|
146
|
-
...baseSettings,
|
|
147
|
-
reasoning_effort: reasoningEffort
|
|
148
|
-
};
|
|
149
|
-
}
|
|
150
|
-
return baseSettings;
|
|
94
|
+
return {
|
|
95
|
+
...request.settings,
|
|
96
|
+
...(0, openai_reasoning_1.openAiReasoningFor)(request.reasoning?.level, forResponseApi, !!this.reasoningSupport)
|
|
97
|
+
};
|
|
151
98
|
}
|
|
152
99
|
async request(request, cancellationToken) {
|
|
153
100
|
const openai = this.initializeOpenAi();
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai-language-model.js","sourceRoot":"","sources":["../../src/node/openai-language-model.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"openai-language-model.js","sourceRoot":"","sources":["../../src/node/openai-language-model.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openai-language-model.spec.d.ts","sourceRoot":"","sources":["../../src/node/openai-language-model.spec.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,91 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// *****************************************************************************
|
|
3
|
+
// Copyright (C) 2026 EclipseSource GmbH.
|
|
4
|
+
//
|
|
5
|
+
// This program and the accompanying materials are made available under the
|
|
6
|
+
// terms of the Eclipse Public License v. 2.0 which is available at
|
|
7
|
+
// http://www.eclipse.org/legal/epl-2.0.
|
|
8
|
+
//
|
|
9
|
+
// This Source Code may also be made available under the following Secondary
|
|
10
|
+
// Licenses when the conditions for such availability set forth in the Eclipse
|
|
11
|
+
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
12
|
+
// with the GNU Classpath Exception which is available at
|
|
13
|
+
// https://www.gnu.org/software/classpath/license.html.
|
|
14
|
+
//
|
|
15
|
+
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
16
|
+
// *****************************************************************************
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
const chai_1 = require("chai");
|
|
19
|
+
const openai_language_model_1 = require("./openai-language-model");
|
|
20
|
+
const openai_response_api_utils_1 = require("./openai-response-api-utils");
|
|
21
|
+
const GPT5_REASONING_SUPPORT = {
|
|
22
|
+
supportedLevels: ['off', 'minimal', 'low', 'medium', 'high', 'auto'],
|
|
23
|
+
defaultLevel: 'auto'
|
|
24
|
+
};
|
|
25
|
+
const O_SERIES_REASONING_SUPPORT = {
|
|
26
|
+
supportedLevels: ['off', 'low', 'medium', 'high', 'auto'],
|
|
27
|
+
defaultLevel: 'auto'
|
|
28
|
+
};
|
|
29
|
+
class TestableOpenAiModel extends openai_language_model_1.OpenAiModel {
|
|
30
|
+
callGetSettings(request, forResponseApi = false) {
|
|
31
|
+
return this.getSettings(request, forResponseApi);
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
function createModel(modelId, reasoningSupport) {
|
|
35
|
+
return new TestableOpenAiModel('test-id', modelId, { status: 'ready' }, true, () => 'test-key', () => undefined, false, undefined, undefined, new openai_language_model_1.OpenAiModelUtils(), new openai_response_api_utils_1.OpenAiResponseApiUtils(), 'developer', 3, false, undefined, reasoningSupport);
|
|
36
|
+
}
|
|
37
|
+
describe('OpenAiModel reasoning translation', () => {
|
|
38
|
+
describe('Responses API (GPT-5)', () => {
|
|
39
|
+
it('maps level=minimal to reasoning.effort=minimal', () => {
|
|
40
|
+
const model = createModel('gpt-5', GPT5_REASONING_SUPPORT);
|
|
41
|
+
const result = model.callGetSettings({ messages: [], reasoning: { level: 'minimal' } }, true);
|
|
42
|
+
(0, chai_1.expect)(result.reasoning).to.deep.equal({ effort: 'minimal' });
|
|
43
|
+
});
|
|
44
|
+
it('maps level=high to reasoning.effort=high', () => {
|
|
45
|
+
const model = createModel('gpt-5', GPT5_REASONING_SUPPORT);
|
|
46
|
+
const result = model.callGetSettings({ messages: [], reasoning: { level: 'high' } }, true);
|
|
47
|
+
(0, chai_1.expect)(result.reasoning).to.deep.equal({ effort: 'high' });
|
|
48
|
+
});
|
|
49
|
+
it('omits reasoning entirely when level=off', () => {
|
|
50
|
+
const model = createModel('gpt-5', GPT5_REASONING_SUPPORT);
|
|
51
|
+
const result = model.callGetSettings({ messages: [], reasoning: { level: 'off' } }, true);
|
|
52
|
+
(0, chai_1.expect)(result.reasoning).to.equal(undefined);
|
|
53
|
+
});
|
|
54
|
+
it('omits reasoning when level=auto (provider default applies)', () => {
|
|
55
|
+
const model = createModel('gpt-5', GPT5_REASONING_SUPPORT);
|
|
56
|
+
const result = model.callGetSettings({ messages: [], reasoning: { level: 'auto' } }, true);
|
|
57
|
+
(0, chai_1.expect)(result.reasoning).to.equal(undefined);
|
|
58
|
+
});
|
|
59
|
+
});
|
|
60
|
+
describe('Chat Completions API (o-series)', () => {
|
|
61
|
+
it('maps level=medium to reasoning_effort=medium', () => {
|
|
62
|
+
const model = createModel('o3-mini', O_SERIES_REASONING_SUPPORT);
|
|
63
|
+
const result = model.callGetSettings({ messages: [], reasoning: { level: 'medium' } }, false);
|
|
64
|
+
(0, chai_1.expect)(result.reasoning_effort).to.equal('medium');
|
|
65
|
+
});
|
|
66
|
+
it('buckets minimal to low (o-series does not accept minimal)', () => {
|
|
67
|
+
const model = createModel('o3-mini', O_SERIES_REASONING_SUPPORT);
|
|
68
|
+
const result = model.callGetSettings({ messages: [], reasoning: { level: 'minimal' } }, false);
|
|
69
|
+
(0, chai_1.expect)(result.reasoning_effort).to.equal('low');
|
|
70
|
+
});
|
|
71
|
+
it('omits reasoning_effort for level=off', () => {
|
|
72
|
+
const model = createModel('o3-mini', O_SERIES_REASONING_SUPPORT);
|
|
73
|
+
const result = model.callGetSettings({ messages: [], reasoning: { level: 'off' } }, false);
|
|
74
|
+
(0, chai_1.expect)(result.reasoning_effort).to.equal(undefined);
|
|
75
|
+
});
|
|
76
|
+
it('omits reasoning_effort for level=auto', () => {
|
|
77
|
+
const model = createModel('o3-mini', O_SERIES_REASONING_SUPPORT);
|
|
78
|
+
const result = model.callGetSettings({ messages: [], reasoning: { level: 'auto' } }, false);
|
|
79
|
+
(0, chai_1.expect)(result.reasoning_effort).to.equal(undefined);
|
|
80
|
+
});
|
|
81
|
+
});
|
|
82
|
+
describe('non-reasoning models', () => {
|
|
83
|
+
it('ignores reasoning settings when the model has no reasoningSupport', () => {
|
|
84
|
+
const model = createModel('gpt-4o', undefined);
|
|
85
|
+
const result = model.callGetSettings({ messages: [], reasoning: { level: 'high' } }, true);
|
|
86
|
+
(0, chai_1.expect)(result.reasoning).to.equal(undefined);
|
|
87
|
+
(0, chai_1.expect)(result.reasoning_effort).to.equal(undefined);
|
|
88
|
+
});
|
|
89
|
+
});
|
|
90
|
+
});
|
|
91
|
+
//# sourceMappingURL=openai-language-model.spec.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openai-language-model.spec.js","sourceRoot":"","sources":["../../src/node/openai-language-model.spec.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai-language-models-manager-impl.d.ts","sourceRoot":"","sources":["../../src/node/openai-language-models-manager-impl.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAG5E,OAAO,EAAe,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,2BAA2B,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AAEhF,qBACa,+BAAgC,YAAW,2BAA2B;IAG/E,SAAS,CAAC,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IAGtD,SAAS,CAAC,QAAQ,CAAC,gBAAgB,EAAE,sBAAsB,CAAC;IAE5D,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1C,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAGxC,SAAS,CAAC,QAAQ,CAAC,qBAAqB,EAAE,qBAAqB,CAAC;IAEhE,IAAI,MAAM,IAAI,MAAM,GAAG,SAAS,CAE/B;IAED,IAAI,UAAU,IAAI,MAAM,GAAG,SAAS,CAEnC;IAED,SAAS,CAAC,eAAe,CAAC,gBAAgB,EAAE,sBAAsB,EAAE,eAAe,EAAE,MAAM,GAAG,SAAS,GAAG,mBAAmB;IAYvH,4BAA4B,CAAC,GAAG,iBAAiB,EAAE,sBAAsB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"openai-language-models-manager-impl.d.ts","sourceRoot":"","sources":["../../src/node/openai-language-models-manager-impl.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAG5E,OAAO,EAAe,gBAAgB,EAAE,MAAM,yBAAyB,CAAC;AACxE,OAAO,EAAE,sBAAsB,EAAE,MAAM,6BAA6B,CAAC;AACrE,OAAO,EAAE,2BAA2B,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AAEhF,qBACa,+BAAgC,YAAW,2BAA2B;IAG/E,SAAS,CAAC,QAAQ,CAAC,gBAAgB,EAAE,gBAAgB,CAAC;IAGtD,SAAS,CAAC,QAAQ,CAAC,gBAAgB,EAAE,sBAAsB,CAAC;IAE5D,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IACtC,SAAS,CAAC,WAAW,EAAE,MAAM,GAAG,SAAS,CAAC;IAC1C,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAGxC,SAAS,CAAC,QAAQ,CAAC,qBAAqB,EAAE,qBAAqB,CAAC;IAEhE,IAAI,MAAM,IAAI,MAAM,GAAG,SAAS,CAE/B;IAED,IAAI,UAAU,IAAI,MAAM,GAAG,SAAS,CAEnC;IAED,SAAS,CAAC,eAAe,CAAC,gBAAgB,EAAE,sBAAsB,EAAE,eAAe,EAAE,MAAM,GAAG,SAAS,GAAG,mBAAmB;IAYvH,4BAA4B,CAAC,GAAG,iBAAiB,EAAE,sBAAsB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAuEjG,oBAAoB,CAAC,GAAG,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI;IAIjD,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAQ3C,aAAa,CAAC,UAAU,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAQnD,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;CAOlD"}
|
|
@@ -81,12 +81,13 @@ let OpenAiLanguageModelsManagerImpl = class OpenAiLanguageModelsManagerImpl {
|
|
|
81
81
|
status,
|
|
82
82
|
maxRetries: modelDescription.maxRetries,
|
|
83
83
|
useResponseApi: modelDescription.useResponseApi ?? false,
|
|
84
|
-
proxy: proxyUrl
|
|
84
|
+
proxy: proxyUrl,
|
|
85
|
+
reasoningSupport: modelDescription.reasoningSupport
|
|
85
86
|
});
|
|
86
87
|
}
|
|
87
88
|
else {
|
|
88
89
|
this.languageModelRegistry.addLanguageModels([
|
|
89
|
-
new openai_language_model_1.OpenAiModel(modelDescription.id, modelDescription.model, status, modelDescription.enableStreaming, apiKeyProvider, apiVersionProvider, modelDescription.supportsStructuredOutput, modelDescription.url, modelDescription.deployment, this.openAiModelUtils, this.responseApiUtils, modelDescription.developerMessageSettings, modelDescription.maxRetries, modelDescription.useResponseApi ?? false, proxyUrl)
|
|
90
|
+
new openai_language_model_1.OpenAiModel(modelDescription.id, modelDescription.model, status, modelDescription.enableStreaming, apiKeyProvider, apiVersionProvider, modelDescription.supportsStructuredOutput, modelDescription.url, modelDescription.deployment, this.openAiModelUtils, this.responseApiUtils, modelDescription.developerMessageSettings, modelDescription.maxRetries, modelDescription.useResponseApi ?? false, proxyUrl, modelDescription.reasoningSupport)
|
|
90
91
|
]);
|
|
91
92
|
}
|
|
92
93
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai-language-models-manager-impl.js","sourceRoot":"","sources":["../../src/node/openai-language-models-manager-impl.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"openai-language-models-manager-impl.js","sourceRoot":"","sources":["../../src/node/openai-language-models-manager-impl.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,12 @@
|
|
|
1
|
+
import { ReasoningLevel } from '@theia/ai-core';
|
|
2
|
+
/**
|
|
3
|
+
* Translates a reasoning level to the OpenAI request fragment to merge into `settings`.
|
|
4
|
+
* Returns `{}` when reasoning is not requested, unsupported, or disabled — so the caller
|
|
5
|
+
* can spread it unconditionally.
|
|
6
|
+
*
|
|
7
|
+
* @param forResponseApi `true` for the Responses API (`reasoning: { effort }`, supports `minimal`);
|
|
8
|
+
* `false` for Chat Completions (`reasoning_effort`, `low`|`medium`|`high` only).
|
|
9
|
+
* @param supportsReasoning `false` for models without reasoning support — returns `{}`.
|
|
10
|
+
*/
|
|
11
|
+
export declare function openAiReasoningFor(level: ReasoningLevel | undefined, forResponseApi: boolean, supportsReasoning: boolean): Record<string, unknown>;
|
|
12
|
+
//# sourceMappingURL=openai-reasoning.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openai-reasoning.d.ts","sourceRoot":"","sources":["../../src/node/openai-reasoning.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEhD;;;;;;;;GAQG;AACH,wBAAgB,kBAAkB,CAC9B,KAAK,EAAE,cAAc,GAAG,SAAS,EACjC,cAAc,EAAE,OAAO,EACvB,iBAAiB,EAAE,OAAO,GAC3B,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAoBzB"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
// *****************************************************************************
|
|
3
|
+
// Copyright (C) 2026 EclipseSource GmbH.
|
|
4
|
+
//
|
|
5
|
+
// This program and the accompanying materials are made available under the
|
|
6
|
+
// terms of the Eclipse Public License v. 2.0 which is available at
|
|
7
|
+
// http://www.eclipse.org/legal/epl-2.0.
|
|
8
|
+
//
|
|
9
|
+
// This Source Code may also be made available under the following Secondary
|
|
10
|
+
// Licenses when the conditions for such availability set forth in the Eclipse
|
|
11
|
+
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
12
|
+
// with the GNU Classpath Exception which is available at
|
|
13
|
+
// https://www.gnu.org/software/classpath/license.html.
|
|
14
|
+
//
|
|
15
|
+
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
16
|
+
// *****************************************************************************
|
|
17
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
+
exports.openAiReasoningFor = openAiReasoningFor;
|
|
19
|
+
/**
|
|
20
|
+
* Translates a reasoning level to the OpenAI request fragment to merge into `settings`.
|
|
21
|
+
* Returns `{}` when reasoning is not requested, unsupported, or disabled — so the caller
|
|
22
|
+
* can spread it unconditionally.
|
|
23
|
+
*
|
|
24
|
+
* @param forResponseApi `true` for the Responses API (`reasoning: { effort }`, supports `minimal`);
|
|
25
|
+
* `false` for Chat Completions (`reasoning_effort`, `low`|`medium`|`high` only).
|
|
26
|
+
* @param supportsReasoning `false` for models without reasoning support — returns `{}`.
|
|
27
|
+
*/
|
|
28
|
+
function openAiReasoningFor(level, forResponseApi, supportsReasoning) {
|
|
29
|
+
if (!level || !supportsReasoning || level === 'off') {
|
|
30
|
+
return {};
|
|
31
|
+
}
|
|
32
|
+
if (forResponseApi) {
|
|
33
|
+
const responsesEffort = level === 'minimal' ? 'minimal' :
|
|
34
|
+
level === 'low' ? 'low' :
|
|
35
|
+
level === 'medium' ? 'medium' :
|
|
36
|
+
level === 'high' ? 'high' :
|
|
37
|
+
undefined;
|
|
38
|
+
return responsesEffort ? { reasoning: { effort: responsesEffort } } : {};
|
|
39
|
+
}
|
|
40
|
+
// Chat Completions has no 'minimal' — map it down to 'low'.
|
|
41
|
+
const chatEffort = level === 'minimal' || level === 'low' ? 'low' :
|
|
42
|
+
level === 'medium' ? 'medium' :
|
|
43
|
+
level === 'high' ? 'high' :
|
|
44
|
+
undefined;
|
|
45
|
+
return chatEffort ? { reasoning_effort: chatEffort } : {};
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=openai-reasoning.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openai-reasoning.js","sourceRoot":"","sources":["../../src/node/openai-reasoning.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,yCAAyC;AACzC,EAAE;AACF,2EAA2E;AAC3E,mEAAmE;AACnE,wCAAwC;AACxC,EAAE;AACF,4EAA4E;AAC5E,8EAA8E;AAC9E,6EAA6E;AAC7E,yDAAyD;AACzD,uDAAuD;AACvD,EAAE;AACF,gFAAgF;AAChF,gFAAgF;;AAahF,gDAwBC;AAjCD;;;;;;;;GAQG;AACH,SAAgB,kBAAkB,CAC9B,KAAiC,EACjC,cAAuB,EACvB,iBAA0B;IAE1B,IAAI,CAAC,KAAK,IAAI,CAAC,iBAAiB,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC;QAClD,OAAO,EAAE,CAAC;IACd,CAAC;IACD,IAAI,cAAc,EAAE,CAAC;QACjB,MAAM,eAAe,GACjB,KAAK,KAAK,SAAS,CAAC,CAAC,CAAC,SAAS,CAAC,CAAC;YAC7B,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;gBACrB,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;oBAC3B,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;wBACvB,SAAS,CAAC;QAC9B,OAAO,eAAe,CAAC,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,MAAM,EAAE,eAAe,EAAE,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;IAC7E,CAAC;IACD,4DAA4D;IAC5D,MAAM,UAAU,GACZ,KAAK,KAAK,SAAS,IAAI,KAAK,KAAK,KAAK,CAAC,CAAC,CAAC,KAAK,CAAC,CAAC;QAC5C,KAAK,KAAK,QAAQ,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC;YAC3B,KAAK,KAAK,MAAM,CAAC,CAAC,CAAC,MAAM,CAAC,CAAC;gBACvB,SAAS,CAAC;IAC1B,OAAO,UAAU,CAAC,CAAC,CAAC,EAAE,gBAAgB,EAAE,UAAU,EAAE,CAAC,CAAC,CAAC,EAAE,CAAC;AAC9D,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@theia/ai-openai",
|
|
3
|
-
"version": "1.71.0-next.
|
|
3
|
+
"version": "1.71.0-next.72+95c8dba0e",
|
|
4
4
|
"description": "Theia - OpenAI Integration",
|
|
5
5
|
"dependencies": {
|
|
6
|
-
"@theia/ai-core": "1.71.0-next.
|
|
7
|
-
"@theia/core": "1.71.0-next.
|
|
8
|
-
"@theia/filesystem": "1.71.0-next.
|
|
9
|
-
"@theia/workspace": "1.71.0-next.
|
|
6
|
+
"@theia/ai-core": "1.71.0-next.72+95c8dba0e",
|
|
7
|
+
"@theia/core": "1.71.0-next.72+95c8dba0e",
|
|
8
|
+
"@theia/filesystem": "1.71.0-next.72+95c8dba0e",
|
|
9
|
+
"@theia/workspace": "1.71.0-next.72+95c8dba0e",
|
|
10
10
|
"openai": "^6.33.0",
|
|
11
11
|
"tslib": "^2.6.2"
|
|
12
12
|
},
|
|
@@ -49,5 +49,5 @@
|
|
|
49
49
|
"nyc": {
|
|
50
50
|
"extends": "../../configs/nyc.json"
|
|
51
51
|
},
|
|
52
|
-
"gitHead": "
|
|
52
|
+
"gitHead": "95c8dba0ee6349c6be262ac2cf383909a3b62761"
|
|
53
53
|
}
|
|
@@ -16,6 +16,7 @@
|
|
|
16
16
|
|
|
17
17
|
import { FrontendApplicationContribution } from '@theia/core/lib/browser';
|
|
18
18
|
import { inject, injectable } from '@theia/core/shared/inversify';
|
|
19
|
+
import { ReasoningSupport } from '@theia/ai-core';
|
|
19
20
|
import { OpenAiLanguageModelsManager, OpenAiModelDescription, OPENAI_PROVIDER_ID } from '../common';
|
|
20
21
|
import { API_KEY_PREF, CUSTOM_ENDPOINTS_PREF, MODELS_PREF, USE_RESPONSE_API_PREF } from '../common/openai-preferences';
|
|
21
22
|
import { AICorePreferences, PREFERENCE_NAME_MAX_RETRIES } from '@theia/ai-core/lib/common/ai-core-preferences';
|
|
@@ -104,7 +105,8 @@ export class OpenAiFrontendApplicationContribution implements FrontendApplicatio
|
|
|
104
105
|
model.developerMessageSettings === newModel.developerMessageSettings &&
|
|
105
106
|
model.supportsStructuredOutput === newModel.supportsStructuredOutput &&
|
|
106
107
|
model.enableStreaming === newModel.enableStreaming &&
|
|
107
|
-
model.useResponseApi === newModel.useResponseApi
|
|
108
|
+
model.useResponseApi === newModel.useResponseApi &&
|
|
109
|
+
reasoningSupportEquals(model.reasoningSupport, newModel.reasoningSupport)));
|
|
108
110
|
|
|
109
111
|
this.manager.removeLanguageModels(...modelsToRemove.map(model => model.id));
|
|
110
112
|
this.manager.createOrUpdateLanguageModels(...modelsToAddOrUpdate);
|
|
@@ -132,7 +134,8 @@ export class OpenAiFrontendApplicationContribution implements FrontendApplicatio
|
|
|
132
134
|
enableStreaming: !openAIModelsWithDisabledStreaming.includes(modelId),
|
|
133
135
|
supportsStructuredOutput: !openAIModelsWithoutStructuredOutput.includes(modelId),
|
|
134
136
|
maxRetries: maxRetries,
|
|
135
|
-
useResponseApi: useResponseApi
|
|
137
|
+
useResponseApi: useResponseApi,
|
|
138
|
+
reasoningSupport: reasoningSupportFor(modelId)
|
|
136
139
|
};
|
|
137
140
|
}
|
|
138
141
|
|
|
@@ -144,6 +147,12 @@ export class OpenAiFrontendApplicationContribution implements FrontendApplicatio
|
|
|
144
147
|
if (!pref.model || !pref.url || typeof pref.model !== 'string' || typeof pref.url !== 'string') {
|
|
145
148
|
return acc;
|
|
146
149
|
}
|
|
150
|
+
// Default to the model-name heuristic so reasoning-capable GPT-5 / o-series models exposed via
|
|
151
|
+
// a custom endpoint still get the selector. Users can override via `reasoningSupport`
|
|
152
|
+
// (set to `null` to disable, or to a full `ReasoningSupport` object to customize).
|
|
153
|
+
const reasoningSupport: ReasoningSupport | undefined = 'reasoningSupport' in pref
|
|
154
|
+
? (isReasoningSupport(pref.reasoningSupport) ? pref.reasoningSupport : undefined)
|
|
155
|
+
: reasoningSupportFor(pref.model);
|
|
147
156
|
|
|
148
157
|
return [
|
|
149
158
|
...acc,
|
|
@@ -158,13 +167,61 @@ export class OpenAiFrontendApplicationContribution implements FrontendApplicatio
|
|
|
158
167
|
supportsStructuredOutput: pref.supportsStructuredOutput ?? true,
|
|
159
168
|
enableStreaming: pref.enableStreaming ?? true,
|
|
160
169
|
maxRetries: pref.maxRetries ?? maxRetries,
|
|
161
|
-
useResponseApi: pref.useResponseApi ?? false
|
|
170
|
+
useResponseApi: pref.useResponseApi ?? false,
|
|
171
|
+
reasoningSupport
|
|
162
172
|
}
|
|
163
173
|
];
|
|
164
174
|
}, []);
|
|
165
175
|
}
|
|
166
176
|
}
|
|
167
177
|
|
|
178
|
+
function isReasoningSupport(value: unknown): value is ReasoningSupport {
|
|
179
|
+
return !!value && typeof value === 'object' && Array.isArray((value as ReasoningSupport).supportedLevels);
|
|
180
|
+
}
|
|
181
|
+
|
|
182
|
+
/**
|
|
183
|
+
* Structural equality for {@link ReasoningSupport}. Used by {@link handleCustomModelChanges} to avoid
|
|
184
|
+
* needless model re-creation when the user supplies an explicit `reasoningSupport` object via
|
|
185
|
+
* preferences — each JSON deserialization yields a fresh object reference, so a `===` check would
|
|
186
|
+
* always report a change even when the contents are identical.
|
|
187
|
+
*/
|
|
188
|
+
function reasoningSupportEquals(a: ReasoningSupport | undefined, b: ReasoningSupport | undefined): boolean {
|
|
189
|
+
if (a === b) {
|
|
190
|
+
return true;
|
|
191
|
+
}
|
|
192
|
+
if (!a || !b) {
|
|
193
|
+
return false;
|
|
194
|
+
}
|
|
195
|
+
return a.defaultLevel === b.defaultLevel
|
|
196
|
+
&& a.supportedLevels.length === b.supportedLevels.length
|
|
197
|
+
&& a.supportedLevels.every((level, index) => level === b.supportedLevels[index]);
|
|
198
|
+
}
|
|
199
|
+
|
|
168
200
|
const openAIModelsWithDisabledStreaming: string[] = [];
|
|
169
201
|
const openAIModelsNotSupportingDeveloperMessages = ['o1-preview', 'o1-mini'];
|
|
170
202
|
const openAIModelsWithoutStructuredOutput = ['o1-preview', 'gpt-4-turbo', 'gpt-4', 'gpt-3.5-turbo', 'o1-mini', 'gpt-4o-2024-05-13'];
|
|
203
|
+
|
|
204
|
+
/** GPT-5 family: supports `minimal` in addition to `low | medium | high`. */
|
|
205
|
+
const GPT5_REASONING = /^gpt-5(?:\.|-|$)/i;
|
|
206
|
+
/** o-series reasoning models (o1, o3, o4): `low | medium | high`. */
|
|
207
|
+
const O_SERIES_REASONING = /^o[134](?:-|$)/i;
|
|
208
|
+
|
|
209
|
+
const GPT5_REASONING_SUPPORT: ReasoningSupport = {
|
|
210
|
+
supportedLevels: ['off', 'minimal', 'low', 'medium', 'high', 'auto'],
|
|
211
|
+
defaultLevel: 'auto'
|
|
212
|
+
};
|
|
213
|
+
|
|
214
|
+
const O_SERIES_REASONING_SUPPORT: ReasoningSupport = {
|
|
215
|
+
supportedLevels: ['off', 'low', 'medium', 'high', 'auto'],
|
|
216
|
+
defaultLevel: 'auto'
|
|
217
|
+
};
|
|
218
|
+
|
|
219
|
+
function reasoningSupportFor(modelId: string): ReasoningSupport | undefined {
|
|
220
|
+
if (GPT5_REASONING.test(modelId)) {
|
|
221
|
+
return GPT5_REASONING_SUPPORT;
|
|
222
|
+
}
|
|
223
|
+
if (O_SERIES_REASONING.test(modelId)) {
|
|
224
|
+
return O_SERIES_REASONING_SUPPORT;
|
|
225
|
+
}
|
|
226
|
+
return undefined;
|
|
227
|
+
}
|
|
@@ -13,6 +13,8 @@
|
|
|
13
13
|
//
|
|
14
14
|
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
15
15
|
// *****************************************************************************
|
|
16
|
+
import { ReasoningSupport } from '@theia/ai-core';
|
|
17
|
+
|
|
16
18
|
export const OPENAI_LANGUAGE_MODELS_MANAGER_PATH = '/services/open-ai/language-model-manager';
|
|
17
19
|
export const OpenAiLanguageModelsManager = Symbol('OpenAiLanguageModelsManager');
|
|
18
20
|
|
|
@@ -68,6 +70,8 @@ export interface OpenAiModelDescription {
|
|
|
68
70
|
* Default is `false` for custom models.
|
|
69
71
|
*/
|
|
70
72
|
useResponseApi?: boolean;
|
|
73
|
+
/** When set, the UI exposes a reasoning selector and the level is translated to the OpenAI reasoning parameter. */
|
|
74
|
+
reasoningSupport?: ReasoningSupport;
|
|
71
75
|
}
|
|
72
76
|
export interface OpenAiLanguageModelsManager {
|
|
73
77
|
apiKey: string | undefined;
|
|
@@ -36,11 +36,12 @@ on the machine running Theia. Use the environment variable `OPENAI_API_KEY` to s
|
|
|
36
36
|
description: nls.localize('theia/ai/openai/models/description', 'Official OpenAI models to use'),
|
|
37
37
|
title: AI_CORE_PREFERENCES_TITLE,
|
|
38
38
|
default: [
|
|
39
|
+
'gpt-5.5',
|
|
40
|
+
'gpt-5.5-pro',
|
|
39
41
|
'gpt-5.4',
|
|
40
42
|
'gpt-5.4-pro',
|
|
41
43
|
'gpt-5.4-mini',
|
|
42
|
-
'gpt-4
|
|
43
|
-
'gpt-4o'
|
|
44
|
+
'gpt-5.4-nano'
|
|
44
45
|
],
|
|
45
46
|
items: {
|
|
46
47
|
type: 'string'
|
|
@@ -85,6 +86,10 @@ Best effort is made to convert non-conformant schemas, but errors are still poss
|
|
|
85
86
|
\n\
|
|
86
87
|
- specify `useResponseApi: true` to use the newer OpenAI Response API instead of the Chat Completion API (requires compatible endpoint).\
|
|
87
88
|
\n\
|
|
89
|
+
- specify `reasoningSupport` to opt in to the chat reasoning selector. By default this is inferred from the\
|
|
90
|
+
`model` name (GPT-5 / o-series). Set to `null` to disable, or to an object with `supportedLevels` (e.g.\
|
|
91
|
+
`["off", "low", "medium", "high", "auto"]`) and an optional `defaultLevel` to customize.\
|
|
92
|
+
\n\
|
|
88
93
|
Refer to [our documentation](https://theia-ide.org/docs/user_ai/#openai-compatible-models-eg-via-vllm) for more information.'),
|
|
89
94
|
default: [],
|
|
90
95
|
items: {
|
|
@@ -141,6 +146,25 @@ Best effort is made to convert non-conformant schemas, but errors are still poss
|
|
|
141
146
|
title: nls.localize('theia/ai/openai/customEndpoints/useResponseApi/title',
|
|
142
147
|
'Use the newer OpenAI Response API instead of the Chat Completion API. `false` by default for custom providers.'
|
|
143
148
|
+ 'Note: Will automatically fall back to Chat Completions API when tools are used.'),
|
|
149
|
+
},
|
|
150
|
+
reasoningSupport: {
|
|
151
|
+
type: ['object', 'null'],
|
|
152
|
+
title: nls.localize('theia/ai/openai/customEndpoints/reasoningSupport/title',
|
|
153
|
+
'Declares the model\'s reasoning capabilities. When set the chat shows a reasoning selector'
|
|
154
|
+
+ ' for this model. Set to `null` to disable. Inferred from the model name by default.'),
|
|
155
|
+
properties: {
|
|
156
|
+
supportedLevels: {
|
|
157
|
+
type: 'array',
|
|
158
|
+
items: {
|
|
159
|
+
type: 'string',
|
|
160
|
+
enum: ['off', 'minimal', 'low', 'medium', 'high', 'auto']
|
|
161
|
+
}
|
|
162
|
+
},
|
|
163
|
+
defaultLevel: {
|
|
164
|
+
type: 'string',
|
|
165
|
+
enum: ['off', 'minimal', 'low', 'medium', 'high', 'auto']
|
|
166
|
+
}
|
|
167
|
+
}
|
|
144
168
|
}
|
|
145
169
|
}
|
|
146
170
|
}
|
|
@@ -0,0 +1,104 @@
|
|
|
1
|
+
// *****************************************************************************
|
|
2
|
+
// Copyright (C) 2026 EclipseSource GmbH.
|
|
3
|
+
//
|
|
4
|
+
// This program and the accompanying materials are made available under the
|
|
5
|
+
// terms of the Eclipse Public License v. 2.0 which is available at
|
|
6
|
+
// http://www.eclipse.org/legal/epl-2.0.
|
|
7
|
+
//
|
|
8
|
+
// This Source Code may also be made available under the following Secondary
|
|
9
|
+
// Licenses when the conditions for such availability set forth in the Eclipse
|
|
10
|
+
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
11
|
+
// with the GNU Classpath Exception which is available at
|
|
12
|
+
// https://www.gnu.org/software/classpath/license.html.
|
|
13
|
+
//
|
|
14
|
+
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
15
|
+
// *****************************************************************************
|
|
16
|
+
|
|
17
|
+
import { expect } from 'chai';
|
|
18
|
+
import { LanguageModelRequest, ReasoningSupport } from '@theia/ai-core';
|
|
19
|
+
import { OpenAiModel, OpenAiModelUtils } from './openai-language-model';
|
|
20
|
+
import { OpenAiResponseApiUtils } from './openai-response-api-utils';
|
|
21
|
+
|
|
22
|
+
const GPT5_REASONING_SUPPORT: ReasoningSupport = {
|
|
23
|
+
supportedLevels: ['off', 'minimal', 'low', 'medium', 'high', 'auto'],
|
|
24
|
+
defaultLevel: 'auto'
|
|
25
|
+
};
|
|
26
|
+
|
|
27
|
+
const O_SERIES_REASONING_SUPPORT: ReasoningSupport = {
|
|
28
|
+
supportedLevels: ['off', 'low', 'medium', 'high', 'auto'],
|
|
29
|
+
defaultLevel: 'auto'
|
|
30
|
+
};
|
|
31
|
+
|
|
32
|
+
class TestableOpenAiModel extends OpenAiModel {
|
|
33
|
+
public callGetSettings(request: LanguageModelRequest, forResponseApi: boolean = false): Record<string, unknown> {
|
|
34
|
+
return this.getSettings(request, forResponseApi);
|
|
35
|
+
}
|
|
36
|
+
}
|
|
37
|
+
|
|
38
|
+
function createModel(modelId: string, reasoningSupport?: ReasoningSupport): TestableOpenAiModel {
|
|
39
|
+
return new TestableOpenAiModel(
|
|
40
|
+
'test-id', modelId, { status: 'ready' }, true,
|
|
41
|
+
() => 'test-key', () => undefined,
|
|
42
|
+
false, undefined, undefined,
|
|
43
|
+
new OpenAiModelUtils(), new OpenAiResponseApiUtils(),
|
|
44
|
+
'developer', 3, false, undefined, reasoningSupport
|
|
45
|
+
);
|
|
46
|
+
}
|
|
47
|
+
|
|
48
|
+
describe('OpenAiModel reasoning translation', () => {
|
|
49
|
+
|
|
50
|
+
describe('Responses API (GPT-5)', () => {
|
|
51
|
+
it('maps level=minimal to reasoning.effort=minimal', () => {
|
|
52
|
+
const model = createModel('gpt-5', GPT5_REASONING_SUPPORT);
|
|
53
|
+
const result = model.callGetSettings({ messages: [], reasoning: { level: 'minimal' } }, true);
|
|
54
|
+
expect(result.reasoning).to.deep.equal({ effort: 'minimal' });
|
|
55
|
+
});
|
|
56
|
+
it('maps level=high to reasoning.effort=high', () => {
|
|
57
|
+
const model = createModel('gpt-5', GPT5_REASONING_SUPPORT);
|
|
58
|
+
const result = model.callGetSettings({ messages: [], reasoning: { level: 'high' } }, true);
|
|
59
|
+
expect(result.reasoning).to.deep.equal({ effort: 'high' });
|
|
60
|
+
});
|
|
61
|
+
it('omits reasoning entirely when level=off', () => {
|
|
62
|
+
const model = createModel('gpt-5', GPT5_REASONING_SUPPORT);
|
|
63
|
+
const result = model.callGetSettings({ messages: [], reasoning: { level: 'off' } }, true);
|
|
64
|
+
expect(result.reasoning).to.equal(undefined);
|
|
65
|
+
});
|
|
66
|
+
it('omits reasoning when level=auto (provider default applies)', () => {
|
|
67
|
+
const model = createModel('gpt-5', GPT5_REASONING_SUPPORT);
|
|
68
|
+
const result = model.callGetSettings({ messages: [], reasoning: { level: 'auto' } }, true);
|
|
69
|
+
expect(result.reasoning).to.equal(undefined);
|
|
70
|
+
});
|
|
71
|
+
});
|
|
72
|
+
|
|
73
|
+
describe('Chat Completions API (o-series)', () => {
|
|
74
|
+
it('maps level=medium to reasoning_effort=medium', () => {
|
|
75
|
+
const model = createModel('o3-mini', O_SERIES_REASONING_SUPPORT);
|
|
76
|
+
const result = model.callGetSettings({ messages: [], reasoning: { level: 'medium' } }, false);
|
|
77
|
+
expect(result.reasoning_effort).to.equal('medium');
|
|
78
|
+
});
|
|
79
|
+
it('buckets minimal to low (o-series does not accept minimal)', () => {
|
|
80
|
+
const model = createModel('o3-mini', O_SERIES_REASONING_SUPPORT);
|
|
81
|
+
const result = model.callGetSettings({ messages: [], reasoning: { level: 'minimal' } }, false);
|
|
82
|
+
expect(result.reasoning_effort).to.equal('low');
|
|
83
|
+
});
|
|
84
|
+
it('omits reasoning_effort for level=off', () => {
|
|
85
|
+
const model = createModel('o3-mini', O_SERIES_REASONING_SUPPORT);
|
|
86
|
+
const result = model.callGetSettings({ messages: [], reasoning: { level: 'off' } }, false);
|
|
87
|
+
expect(result.reasoning_effort).to.equal(undefined);
|
|
88
|
+
});
|
|
89
|
+
it('omits reasoning_effort for level=auto', () => {
|
|
90
|
+
const model = createModel('o3-mini', O_SERIES_REASONING_SUPPORT);
|
|
91
|
+
const result = model.callGetSettings({ messages: [], reasoning: { level: 'auto' } }, false);
|
|
92
|
+
expect(result.reasoning_effort).to.equal(undefined);
|
|
93
|
+
});
|
|
94
|
+
});
|
|
95
|
+
|
|
96
|
+
describe('non-reasoning models', () => {
|
|
97
|
+
it('ignores reasoning settings when the model has no reasoningSupport', () => {
|
|
98
|
+
const model = createModel('gpt-4o', undefined);
|
|
99
|
+
const result = model.callGetSettings({ messages: [], reasoning: { level: 'high' } }, true);
|
|
100
|
+
expect(result.reasoning).to.equal(undefined);
|
|
101
|
+
expect(result.reasoning_effort).to.equal(undefined);
|
|
102
|
+
});
|
|
103
|
+
});
|
|
104
|
+
});
|
|
@@ -23,7 +23,8 @@ import {
|
|
|
23
23
|
LanguageModelTextResponse,
|
|
24
24
|
UserRequest,
|
|
25
25
|
ImageContent,
|
|
26
|
-
LanguageModelStatus
|
|
26
|
+
LanguageModelStatus,
|
|
27
|
+
ReasoningSupport
|
|
27
28
|
} from '@theia/ai-core';
|
|
28
29
|
import { CancellationToken } from '@theia/core';
|
|
29
30
|
import { injectable } from '@theia/core/shared/inversify';
|
|
@@ -36,6 +37,7 @@ import { OPENAI_PROVIDER_ID } from '../common';
|
|
|
36
37
|
import type { FinalRequestOptions } from 'openai/internal/request-options';
|
|
37
38
|
import type { RunnerOptions } from 'openai/lib/AbstractChatCompletionRunner';
|
|
38
39
|
import { OpenAiResponseApiUtils, processSystemMessages } from './openai-response-api-utils';
|
|
40
|
+
import { openAiReasoningFor } from './openai-reasoning';
|
|
39
41
|
import { createProxyFetch } from '@theia/ai-core/lib/node';
|
|
40
42
|
|
|
41
43
|
export class MistralFixedOpenAI extends OpenAI {
|
|
@@ -103,72 +105,16 @@ export class OpenAiModel implements LanguageModel {
|
|
|
103
105
|
public developerMessageSettings: DeveloperMessageSettings = 'developer',
|
|
104
106
|
public maxRetries: number = 3,
|
|
105
107
|
public useResponseApi: boolean = false,
|
|
106
|
-
public proxy?: string
|
|
108
|
+
public proxy?: string,
|
|
109
|
+
public reasoningSupport?: ReasoningSupport
|
|
107
110
|
) { }
|
|
108
111
|
|
|
109
|
-
/**
|
|
110
|
-
* Checks if the model is an o-series model that supports reasoning.
|
|
111
|
-
* Models like o1, o1-mini, o1-preview, o3, o3-mini, o4-mini support the reasoning_effort parameter.
|
|
112
|
-
* These models use: reasoning_effort: 'low' | 'medium' | 'high'
|
|
113
|
-
*/
|
|
114
|
-
protected supportsReasoning(): boolean {
|
|
115
|
-
return /^o[134](-|$)/i.test(this.model);
|
|
116
|
-
}
|
|
117
|
-
|
|
118
|
-
/**
|
|
119
|
-
* Checks if the model is a GPT-5 series model (gpt-5, gpt-5.1, gpt-5.2).
|
|
120
|
-
* These models use a different reasoning parameter format: reasoning: { effort: 'none' | 'low' | 'medium' | 'high' }
|
|
121
|
-
*/
|
|
122
|
-
protected supportsGPT5Reasoning(): boolean {
|
|
123
|
-
return /^gpt-5(\.?[012])?(-|$)/i.test(this.model);
|
|
124
|
-
}
|
|
125
|
-
|
|
126
|
-
/**
|
|
127
|
-
* Gets the settings for a request, optionally including reasoning parameters.
|
|
128
|
-
* @param request The language model request
|
|
129
|
-
* @param forResponseApi Whether the settings are for the Response API (true) or Chat Completions API (false).
|
|
130
|
-
* GPT-5 reasoning parameters are only supported with the Response API.
|
|
131
|
-
*/
|
|
112
|
+
/** Reasoning-level translation lives in {@link openAiReasoningFor}. */
|
|
132
113
|
protected getSettings(request: LanguageModelRequest, forResponseApi: boolean = false): Record<string, unknown> {
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
let effort: 'none' | 'low' | 'medium' | 'high';
|
|
138
|
-
if (budgetTokens <= 0) {
|
|
139
|
-
effort = 'none';
|
|
140
|
-
} else if (budgetTokens <= 2000) {
|
|
141
|
-
effort = 'low';
|
|
142
|
-
} else if (budgetTokens <= 20000) {
|
|
143
|
-
effort = 'medium';
|
|
144
|
-
} else {
|
|
145
|
-
effort = 'high';
|
|
146
|
-
}
|
|
147
|
-
|
|
148
|
-
return {
|
|
149
|
-
...baseSettings,
|
|
150
|
-
reasoning: { effort }
|
|
151
|
-
};
|
|
152
|
-
}
|
|
153
|
-
|
|
154
|
-
if (request.thinkingMode?.enabled && this.supportsReasoning()) {
|
|
155
|
-
const budgetTokens = request.thinkingMode.budgetTokens ?? 10000;
|
|
156
|
-
let reasoningEffort: 'low' | 'medium' | 'high';
|
|
157
|
-
if (budgetTokens <= 2000) {
|
|
158
|
-
reasoningEffort = 'low';
|
|
159
|
-
} else if (budgetTokens <= 20000) {
|
|
160
|
-
reasoningEffort = 'medium';
|
|
161
|
-
} else {
|
|
162
|
-
reasoningEffort = 'high';
|
|
163
|
-
}
|
|
164
|
-
|
|
165
|
-
return {
|
|
166
|
-
...baseSettings,
|
|
167
|
-
reasoning_effort: reasoningEffort
|
|
168
|
-
};
|
|
169
|
-
}
|
|
170
|
-
|
|
171
|
-
return baseSettings;
|
|
114
|
+
return {
|
|
115
|
+
...request.settings,
|
|
116
|
+
...openAiReasoningFor(request.reasoning?.level, forResponseApi, !!this.reasoningSupport)
|
|
117
|
+
};
|
|
172
118
|
}
|
|
173
119
|
|
|
174
120
|
async request(request: UserRequest, cancellationToken?: CancellationToken): Promise<LanguageModelResponse> {
|
|
@@ -100,7 +100,8 @@ export class OpenAiLanguageModelsManagerImpl implements OpenAiLanguageModelsMana
|
|
|
100
100
|
status,
|
|
101
101
|
maxRetries: modelDescription.maxRetries,
|
|
102
102
|
useResponseApi: modelDescription.useResponseApi ?? false,
|
|
103
|
-
proxy: proxyUrl
|
|
103
|
+
proxy: proxyUrl,
|
|
104
|
+
reasoningSupport: modelDescription.reasoningSupport
|
|
104
105
|
});
|
|
105
106
|
} else {
|
|
106
107
|
this.languageModelRegistry.addLanguageModels([
|
|
@@ -119,7 +120,8 @@ export class OpenAiLanguageModelsManagerImpl implements OpenAiLanguageModelsMana
|
|
|
119
120
|
modelDescription.developerMessageSettings,
|
|
120
121
|
modelDescription.maxRetries,
|
|
121
122
|
modelDescription.useResponseApi ?? false,
|
|
122
|
-
proxyUrl
|
|
123
|
+
proxyUrl,
|
|
124
|
+
modelDescription.reasoningSupport
|
|
123
125
|
)
|
|
124
126
|
]);
|
|
125
127
|
}
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
// *****************************************************************************
|
|
2
|
+
// Copyright (C) 2026 EclipseSource GmbH.
|
|
3
|
+
//
|
|
4
|
+
// This program and the accompanying materials are made available under the
|
|
5
|
+
// terms of the Eclipse Public License v. 2.0 which is available at
|
|
6
|
+
// http://www.eclipse.org/legal/epl-2.0.
|
|
7
|
+
//
|
|
8
|
+
// This Source Code may also be made available under the following Secondary
|
|
9
|
+
// Licenses when the conditions for such availability set forth in the Eclipse
|
|
10
|
+
// Public License v. 2.0 are satisfied: GNU General Public License, version 2
|
|
11
|
+
// with the GNU Classpath Exception which is available at
|
|
12
|
+
// https://www.gnu.org/software/classpath/license.html.
|
|
13
|
+
//
|
|
14
|
+
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
15
|
+
// *****************************************************************************
|
|
16
|
+
|
|
17
|
+
import { ReasoningLevel } from '@theia/ai-core';
|
|
18
|
+
|
|
19
|
+
/**
|
|
20
|
+
* Translates a reasoning level to the OpenAI request fragment to merge into `settings`.
|
|
21
|
+
* Returns `{}` when reasoning is not requested, unsupported, or disabled — so the caller
|
|
22
|
+
* can spread it unconditionally.
|
|
23
|
+
*
|
|
24
|
+
* @param forResponseApi `true` for the Responses API (`reasoning: { effort }`, supports `minimal`);
|
|
25
|
+
* `false` for Chat Completions (`reasoning_effort`, `low`|`medium`|`high` only).
|
|
26
|
+
* @param supportsReasoning `false` for models without reasoning support — returns `{}`.
|
|
27
|
+
*/
|
|
28
|
+
export function openAiReasoningFor(
|
|
29
|
+
level: ReasoningLevel | undefined,
|
|
30
|
+
forResponseApi: boolean,
|
|
31
|
+
supportsReasoning: boolean
|
|
32
|
+
): Record<string, unknown> {
|
|
33
|
+
if (!level || !supportsReasoning || level === 'off') {
|
|
34
|
+
return {};
|
|
35
|
+
}
|
|
36
|
+
if (forResponseApi) {
|
|
37
|
+
const responsesEffort =
|
|
38
|
+
level === 'minimal' ? 'minimal' :
|
|
39
|
+
level === 'low' ? 'low' :
|
|
40
|
+
level === 'medium' ? 'medium' :
|
|
41
|
+
level === 'high' ? 'high' :
|
|
42
|
+
undefined;
|
|
43
|
+
return responsesEffort ? { reasoning: { effort: responsesEffort } } : {};
|
|
44
|
+
}
|
|
45
|
+
// Chat Completions has no 'minimal' — map it down to 'low'.
|
|
46
|
+
const chatEffort =
|
|
47
|
+
level === 'minimal' || level === 'low' ? 'low' :
|
|
48
|
+
level === 'medium' ? 'medium' :
|
|
49
|
+
level === 'high' ? 'high' :
|
|
50
|
+
undefined;
|
|
51
|
+
return chatEffort ? { reasoning_effort: chatEffort } : {};
|
|
52
|
+
}
|