@theia/ai-openai 1.62.0 → 1.62.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.
|
@@ -3,6 +3,11 @@ import { CancellationToken } from '@theia/core';
|
|
|
3
3
|
import { OpenAI } from 'openai';
|
|
4
4
|
import { RunnableToolFunctionWithoutParse } from 'openai/lib/RunnableFunction';
|
|
5
5
|
import { ChatCompletionMessageParam } from 'openai/resources';
|
|
6
|
+
import type { FinalRequestOptions } from 'openai/internal/request-options';
|
|
7
|
+
import type { RunnerOptions } from 'openai/lib/AbstractChatCompletionRunner';
|
|
8
|
+
export declare class MistralFixedOpenAI extends OpenAI {
|
|
9
|
+
protected prepareOptions(options: FinalRequestOptions): Promise<void>;
|
|
10
|
+
}
|
|
6
11
|
export declare const OpenAiModelIdentifier: unique symbol;
|
|
7
12
|
export type DeveloperMessageSettings = 'user' | 'system' | 'developer' | 'mergeWithFollowingUserMessage' | 'skip';
|
|
8
13
|
export declare class OpenAiModel implements LanguageModel {
|
|
@@ -16,6 +21,10 @@ export declare class OpenAiModel implements LanguageModel {
|
|
|
16
21
|
openAiModelUtils: OpenAiModelUtils;
|
|
17
22
|
developerMessageSettings: DeveloperMessageSettings;
|
|
18
23
|
protected readonly tokenUsageService?: TokenUsageService | undefined;
|
|
24
|
+
/**
|
|
25
|
+
* The options for the OpenAI runner.
|
|
26
|
+
*/
|
|
27
|
+
protected runnerOptions: RunnerOptions;
|
|
19
28
|
/**
|
|
20
29
|
* @param id the unique id for this language model. It will be used to identify the model in the UI.
|
|
21
30
|
* @param model the model id as it is used by the OpenAI API
|
|
@@ -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,EAEzB,iBAAiB,EACjB,WAAW,EACd,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAEhD,OAAO,EAAE,MAAM,EAAe,MAAM,QAAQ,CAAC;AAE7C,OAAO,EAAE,gCAAgC,EAAE,MAAM,6BAA6B,CAAC;AAC/E,OAAO,EAAE,0BAA0B,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"openai-language-model.d.ts","sourceRoot":"","sources":["../../src/node/openai-language-model.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,7 +15,7 @@
|
|
|
15
15
|
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
16
16
|
// *****************************************************************************
|
|
17
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
|
-
exports.OpenAiModelUtils = exports.OpenAiModel = exports.OpenAiModelIdentifier = void 0;
|
|
18
|
+
exports.OpenAiModelUtils = exports.OpenAiModel = exports.OpenAiModelIdentifier = exports.MistralFixedOpenAI = void 0;
|
|
19
19
|
const tslib_1 = require("tslib");
|
|
20
20
|
const ai_core_1 = require("@theia/ai-core");
|
|
21
21
|
const inversify_1 = require("@theia/core/shared/inversify");
|
|
@@ -42,6 +42,7 @@ class MistralFixedOpenAI extends openai_1.OpenAI {
|
|
|
42
42
|
}
|
|
43
43
|
;
|
|
44
44
|
}
|
|
45
|
+
exports.MistralFixedOpenAI = MistralFixedOpenAI;
|
|
45
46
|
exports.OpenAiModelIdentifier = Symbol('OpenAiModelIdentifier');
|
|
46
47
|
class OpenAiModel {
|
|
47
48
|
/**
|
|
@@ -64,6 +65,15 @@ class OpenAiModel {
|
|
|
64
65
|
this.openAiModelUtils = openAiModelUtils;
|
|
65
66
|
this.developerMessageSettings = developerMessageSettings;
|
|
66
67
|
this.tokenUsageService = tokenUsageService;
|
|
68
|
+
/**
|
|
69
|
+
* The options for the OpenAI runner.
|
|
70
|
+
*/
|
|
71
|
+
this.runnerOptions = {
|
|
72
|
+
// The maximum number of chat completions to return in a single request.
|
|
73
|
+
// Each function call counts as a chat completion.
|
|
74
|
+
// To support use cases with many function calls (e.g. @Coder), we set this to a high value.
|
|
75
|
+
maxChatCompletions: 100,
|
|
76
|
+
};
|
|
67
77
|
}
|
|
68
78
|
getSettings(request) {
|
|
69
79
|
var _a;
|
|
@@ -72,9 +82,6 @@ class OpenAiModel {
|
|
|
72
82
|
async request(request, cancellationToken) {
|
|
73
83
|
var _a;
|
|
74
84
|
const settings = this.getSettings(request);
|
|
75
|
-
if (this.id.startsWith(`${common_1.OPENAI_PROVIDER_ID}/`)) {
|
|
76
|
-
settings['stream_options'] = { include_usage: true };
|
|
77
|
-
}
|
|
78
85
|
const openai = this.initializeOpenAi();
|
|
79
86
|
if (((_a = request.response_format) === null || _a === void 0 ? void 0 : _a.type) === 'json_schema' && this.supportsStructuredOutput) {
|
|
80
87
|
return this.handleStructuredOutputRequest(openai, request);
|
|
@@ -82,23 +89,28 @@ class OpenAiModel {
|
|
|
82
89
|
if (this.isNonStreamingModel(this.model) || (typeof settings.stream === 'boolean' && !settings.stream)) {
|
|
83
90
|
return this.handleNonStreamingRequest(openai, request);
|
|
84
91
|
}
|
|
92
|
+
if (this.id.startsWith(`${common_1.OPENAI_PROVIDER_ID}/`)) {
|
|
93
|
+
settings['stream_options'] = { include_usage: true };
|
|
94
|
+
}
|
|
85
95
|
if (cancellationToken === null || cancellationToken === void 0 ? void 0 : cancellationToken.isCancellationRequested) {
|
|
86
96
|
return { text: '' };
|
|
87
97
|
}
|
|
88
98
|
let runner;
|
|
89
99
|
const tools = this.createTools(request);
|
|
90
100
|
if (tools) {
|
|
91
|
-
runner = openai.
|
|
101
|
+
runner = openai.chat.completions.runTools({
|
|
92
102
|
model: this.model,
|
|
93
103
|
messages: this.processMessages(request.messages),
|
|
94
104
|
stream: true,
|
|
95
105
|
tools: tools,
|
|
96
106
|
tool_choice: 'auto',
|
|
97
107
|
...settings
|
|
108
|
+
}, {
|
|
109
|
+
...this.runnerOptions,
|
|
98
110
|
});
|
|
99
111
|
}
|
|
100
112
|
else {
|
|
101
|
-
runner = openai.
|
|
113
|
+
runner = openai.chat.completions.stream({
|
|
102
114
|
model: this.model,
|
|
103
115
|
messages: this.processMessages(request.messages),
|
|
104
116
|
stream: true,
|
|
@@ -135,7 +147,7 @@ class OpenAiModel {
|
|
|
135
147
|
var _a;
|
|
136
148
|
const settings = this.getSettings(request);
|
|
137
149
|
// TODO implement tool support for structured output (parse() seems to require different tool format)
|
|
138
|
-
const result = await openai.
|
|
150
|
+
const result = await openai.chat.completions.parse({
|
|
139
151
|
model: this.model,
|
|
140
152
|
messages: this.processMessages(request.messages),
|
|
141
153
|
response_format: request.response_format,
|
|
@@ -176,13 +188,13 @@ class OpenAiModel {
|
|
|
176
188
|
throw new Error('Please provide OPENAI_API_KEY in preferences or via environment variable');
|
|
177
189
|
}
|
|
178
190
|
const apiVersion = this.apiVersion();
|
|
191
|
+
// We need to hand over "some" key, even if a custom url is not key protected as otherwise the OpenAI client will throw an error
|
|
192
|
+
const key = apiKey !== null && apiKey !== void 0 ? apiKey : 'no-key';
|
|
179
193
|
if (apiVersion) {
|
|
180
|
-
|
|
181
|
-
return new openai_1.AzureOpenAI({ apiKey: apiKey !== null && apiKey !== void 0 ? apiKey : 'no-key', baseURL: this.url, apiVersion: apiVersion });
|
|
194
|
+
return new openai_1.AzureOpenAI({ apiKey: key, baseURL: this.url, apiVersion: apiVersion });
|
|
182
195
|
}
|
|
183
196
|
else {
|
|
184
|
-
|
|
185
|
-
return new MistralFixedOpenAI({ apiKey: apiKey !== null && apiKey !== void 0 ? apiKey : 'no-key', baseURL: this.url });
|
|
197
|
+
return new MistralFixedOpenAI({ apiKey: key, baseURL: this.url });
|
|
186
198
|
}
|
|
187
199
|
}
|
|
188
200
|
processMessages(messages) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai-language-model.js","sourceRoot":"","sources":["../../src/node/openai-language-model.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,4CAUwB;AAExB,4DAA0D;AAC1D,mCAA6C;AAI7C,2EAAqE;AACrE,sCAA+C;
|
|
1
|
+
{"version":3,"file":"openai-language-model.js","sourceRoot":"","sources":["../../src/node/openai-language-model.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@theia/ai-openai",
|
|
3
|
-
"version": "1.62.
|
|
3
|
+
"version": "1.62.2",
|
|
4
4
|
"description": "Theia - OpenAI Integration",
|
|
5
5
|
"dependencies": {
|
|
6
|
-
"@theia/ai-core": "1.62.
|
|
7
|
-
"@theia/core": "1.62.
|
|
8
|
-
"@theia/filesystem": "1.62.
|
|
9
|
-
"@theia/workspace": "1.62.
|
|
6
|
+
"@theia/ai-core": "1.62.2",
|
|
7
|
+
"@theia/core": "1.62.2",
|
|
8
|
+
"@theia/filesystem": "1.62.2",
|
|
9
|
+
"@theia/workspace": "1.62.2",
|
|
10
10
|
"minimatch": "^5.1.0",
|
|
11
|
-
"openai": "^
|
|
11
|
+
"openai": "^5.0.1",
|
|
12
12
|
"tslib": "^2.6.2"
|
|
13
13
|
},
|
|
14
14
|
"publishConfig": {
|
|
@@ -45,10 +45,10 @@
|
|
|
45
45
|
"watch": "theiaext watch"
|
|
46
46
|
},
|
|
47
47
|
"devDependencies": {
|
|
48
|
-
"@theia/ext-scripts": "1.62.
|
|
48
|
+
"@theia/ext-scripts": "1.62.2"
|
|
49
49
|
},
|
|
50
50
|
"nyc": {
|
|
51
51
|
"extends": "../../configs/nyc.json"
|
|
52
52
|
},
|
|
53
|
-
"gitHead": "
|
|
53
|
+
"gitHead": "5752b424369bb2a1a41e4d5b223e71a688b54442"
|
|
54
54
|
}
|
|
@@ -33,9 +33,10 @@ import { RunnableToolFunctionWithoutParse } from 'openai/lib/RunnableFunction';
|
|
|
33
33
|
import { ChatCompletionMessageParam } from 'openai/resources';
|
|
34
34
|
import { StreamingAsyncIterator } from './openai-streaming-iterator';
|
|
35
35
|
import { OPENAI_PROVIDER_ID } from '../common';
|
|
36
|
-
import { FinalRequestOptions } from 'openai/
|
|
36
|
+
import type { FinalRequestOptions } from 'openai/internal/request-options';
|
|
37
|
+
import type { RunnerOptions } from 'openai/lib/AbstractChatCompletionRunner';
|
|
37
38
|
|
|
38
|
-
class MistralFixedOpenAI extends OpenAI {
|
|
39
|
+
export class MistralFixedOpenAI extends OpenAI {
|
|
39
40
|
protected override async prepareOptions(options: FinalRequestOptions): Promise<void> {
|
|
40
41
|
(options.body as { messages: Array<ChatCompletionMessageParam> }).messages.forEach(m => {
|
|
41
42
|
if (m.role === 'assistant' && m.tool_calls) {
|
|
@@ -61,6 +62,16 @@ export type DeveloperMessageSettings = 'user' | 'system' | 'developer' | 'mergeW
|
|
|
61
62
|
|
|
62
63
|
export class OpenAiModel implements LanguageModel {
|
|
63
64
|
|
|
65
|
+
/**
|
|
66
|
+
* The options for the OpenAI runner.
|
|
67
|
+
*/
|
|
68
|
+
protected runnerOptions: RunnerOptions = {
|
|
69
|
+
// The maximum number of chat completions to return in a single request.
|
|
70
|
+
// Each function call counts as a chat completion.
|
|
71
|
+
// To support use cases with many function calls (e.g. @Coder), we set this to a high value.
|
|
72
|
+
maxChatCompletions: 100,
|
|
73
|
+
};
|
|
74
|
+
|
|
64
75
|
/**
|
|
65
76
|
* @param id the unique id for this language model. It will be used to identify the model in the UI.
|
|
66
77
|
* @param model the model id as it is used by the OpenAI API
|
|
@@ -89,9 +100,6 @@ export class OpenAiModel implements LanguageModel {
|
|
|
89
100
|
|
|
90
101
|
async request(request: UserRequest, cancellationToken?: CancellationToken): Promise<LanguageModelResponse> {
|
|
91
102
|
const settings = this.getSettings(request);
|
|
92
|
-
if (this.id.startsWith(`${OPENAI_PROVIDER_ID}/`)) {
|
|
93
|
-
settings['stream_options'] = { include_usage: true };
|
|
94
|
-
}
|
|
95
103
|
const openai = this.initializeOpenAi();
|
|
96
104
|
|
|
97
105
|
if (request.response_format?.type === 'json_schema' && this.supportsStructuredOutput) {
|
|
@@ -102,22 +110,29 @@ export class OpenAiModel implements LanguageModel {
|
|
|
102
110
|
return this.handleNonStreamingRequest(openai, request);
|
|
103
111
|
}
|
|
104
112
|
|
|
113
|
+
if (this.id.startsWith(`${OPENAI_PROVIDER_ID}/`)) {
|
|
114
|
+
settings['stream_options'] = { include_usage: true };
|
|
115
|
+
}
|
|
116
|
+
|
|
105
117
|
if (cancellationToken?.isCancellationRequested) {
|
|
106
118
|
return { text: '' };
|
|
107
119
|
}
|
|
108
120
|
let runner: ChatCompletionStream;
|
|
109
121
|
const tools = this.createTools(request);
|
|
122
|
+
|
|
110
123
|
if (tools) {
|
|
111
|
-
runner = openai.
|
|
124
|
+
runner = openai.chat.completions.runTools({
|
|
112
125
|
model: this.model,
|
|
113
126
|
messages: this.processMessages(request.messages),
|
|
114
127
|
stream: true,
|
|
115
128
|
tools: tools,
|
|
116
129
|
tool_choice: 'auto',
|
|
117
130
|
...settings
|
|
131
|
+
}, {
|
|
132
|
+
...this.runnerOptions,
|
|
118
133
|
});
|
|
119
134
|
} else {
|
|
120
|
-
runner = openai.
|
|
135
|
+
runner = openai.chat.completions.stream({
|
|
121
136
|
model: this.model,
|
|
122
137
|
messages: this.processMessages(request.messages),
|
|
123
138
|
stream: true,
|
|
@@ -163,7 +178,7 @@ export class OpenAiModel implements LanguageModel {
|
|
|
163
178
|
protected async handleStructuredOutputRequest(openai: OpenAI, request: UserRequest): Promise<LanguageModelParsedResponse> {
|
|
164
179
|
const settings = this.getSettings(request);
|
|
165
180
|
// TODO implement tool support for structured output (parse() seems to require different tool format)
|
|
166
|
-
const result = await openai.
|
|
181
|
+
const result = await openai.chat.completions.parse({
|
|
167
182
|
model: this.model,
|
|
168
183
|
messages: this.processMessages(request.messages),
|
|
169
184
|
response_format: request.response_format,
|
|
@@ -211,12 +226,13 @@ export class OpenAiModel implements LanguageModel {
|
|
|
211
226
|
}
|
|
212
227
|
|
|
213
228
|
const apiVersion = this.apiVersion();
|
|
229
|
+
// We need to hand over "some" key, even if a custom url is not key protected as otherwise the OpenAI client will throw an error
|
|
230
|
+
const key = apiKey ?? 'no-key';
|
|
231
|
+
|
|
214
232
|
if (apiVersion) {
|
|
215
|
-
|
|
216
|
-
return new AzureOpenAI({ apiKey: apiKey ?? 'no-key', baseURL: this.url, apiVersion: apiVersion });
|
|
233
|
+
return new AzureOpenAI({ apiKey: key, baseURL: this.url, apiVersion: apiVersion });
|
|
217
234
|
} else {
|
|
218
|
-
|
|
219
|
-
return new MistralFixedOpenAI({ apiKey: apiKey ?? 'no-key', baseURL: this.url });
|
|
235
|
+
return new MistralFixedOpenAI({ apiKey: key, baseURL: this.url });
|
|
220
236
|
}
|
|
221
237
|
}
|
|
222
238
|
|