@theia/ai-openai 1.55.0-next.37 → 1.55.0
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-preferences.d.ts.map +1 -1
- package/lib/browser/openai-preferences.js +4 -2
- package/lib/browser/openai-preferences.js.map +1 -1
- package/lib/node/openai-language-model.d.ts +3 -1
- package/lib/node/openai-language-model.d.ts.map +1 -1
- package/lib/node/openai-language-model.js +18 -0
- package/lib/node/openai-language-model.js.map +1 -1
- package/package.json +7 -7
- package/src/browser/openai-preferences.ts +4 -2
- package/src/node/openai-language-model.ts +24 -1
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai-preferences.d.ts","sourceRoot":"","sources":["../../src/browser/openai-preferences.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,gBAAgB,EAAE,MAAM,6DAA6D,CAAC;AAG/F,eAAO,MAAM,YAAY,4CAA4C,CAAC;AACtE,eAAO,MAAM,WAAW,oDAAoD,CAAC;AAC7E,eAAO,MAAM,qBAAqB,gDAAgD,CAAC;AAEnF,eAAO,MAAM,uBAAuB,EAAE,
|
|
1
|
+
{"version":3,"file":"openai-preferences.d.ts","sourceRoot":"","sources":["../../src/browser/openai-preferences.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,gBAAgB,EAAE,MAAM,6DAA6D,CAAC;AAG/F,eAAO,MAAM,YAAY,4CAA4C,CAAC;AACtE,eAAO,MAAM,WAAW,oDAAoD,CAAC;AAC7E,eAAO,MAAM,qBAAqB,gDAAgD,CAAC;AAEnF,eAAO,MAAM,uBAAuB,EAAE,gBAsDrC,CAAC"}
|
|
@@ -33,7 +33,7 @@ exports.OpenAiPreferencesSchema = {
|
|
|
33
33
|
type: 'array',
|
|
34
34
|
description: 'Official OpenAI models to use',
|
|
35
35
|
title: ai_core_preferences_1.AI_CORE_PREFERENCES_TITLE,
|
|
36
|
-
default: ['gpt-4o', 'gpt-4o-2024-08-06', 'gpt-4o-2024-05-13', 'gpt-4o-mini', 'gpt-4-turbo', 'gpt-4', 'gpt-3.5-turbo'],
|
|
36
|
+
default: ['gpt-4o', 'gpt-4o-2024-08-06', 'gpt-4o-2024-05-13', 'gpt-4o-mini', 'gpt-4-turbo', 'gpt-4', 'gpt-3.5-turbo', 'o1-preview'],
|
|
37
37
|
items: {
|
|
38
38
|
type: 'string'
|
|
39
39
|
}
|
|
@@ -47,7 +47,9 @@ exports.OpenAiPreferencesSchema = {
|
|
|
47
47
|
\n\
|
|
48
48
|
- specify a unique `id` to identify the custom model in the UI. If none is given `model` will be used as `id`.\
|
|
49
49
|
\n\
|
|
50
|
-
- provide an `apiKey` to access the API served at the given url. Use `true` to indicate the use of the global OpenAI API key
|
|
50
|
+
- provide an `apiKey` to access the API served at the given url. Use `true` to indicate the use of the global OpenAI API key.\
|
|
51
|
+
\n\
|
|
52
|
+
Refer to [our documentation](https://theia-ide.org/docs/user_ai/#openai-compatible-models-eg-via-vllm) for more information.',
|
|
51
53
|
default: [],
|
|
52
54
|
items: {
|
|
53
55
|
type: 'object',
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai-preferences.js","sourceRoot":"","sources":["../../src/browser/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;;;AAGhF,wFAA2F;AAE9E,QAAA,YAAY,GAAG,yCAAyC,CAAC;AACzD,QAAA,WAAW,GAAG,iDAAiD,CAAC;AAChE,QAAA,qBAAqB,GAAG,6CAA6C,CAAC;AAEtE,QAAA,uBAAuB,GAAqB;IACrD,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE;QACR,CAAC,oBAAY,CAAC,EAAE;YACZ,IAAI,EAAE,QAAQ;YACd,mBAAmB,EAAE;iHACgF;YACrG,KAAK,EAAE,+CAAyB;SACnC;QACD,CAAC,mBAAW,CAAC,EAAE;YACX,IAAI,EAAE,OAAO;YACb,WAAW,EAAE,+BAA+B;YAC5C,KAAK,EAAE,+CAAyB;YAChC,OAAO,EAAE,CAAC,QAAQ,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,aAAa,EAAE,aAAa,EAAE,OAAO,EAAE,eAAe,CAAC;
|
|
1
|
+
{"version":3,"file":"openai-preferences.js","sourceRoot":"","sources":["../../src/browser/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;;;AAGhF,wFAA2F;AAE9E,QAAA,YAAY,GAAG,yCAAyC,CAAC;AACzD,QAAA,WAAW,GAAG,iDAAiD,CAAC;AAChE,QAAA,qBAAqB,GAAG,6CAA6C,CAAC;AAEtE,QAAA,uBAAuB,GAAqB;IACrD,IAAI,EAAE,QAAQ;IACd,UAAU,EAAE;QACR,CAAC,oBAAY,CAAC,EAAE;YACZ,IAAI,EAAE,QAAQ;YACd,mBAAmB,EAAE;iHACgF;YACrG,KAAK,EAAE,+CAAyB;SACnC;QACD,CAAC,mBAAW,CAAC,EAAE;YACX,IAAI,EAAE,OAAO;YACb,WAAW,EAAE,+BAA+B;YAC5C,KAAK,EAAE,+CAAyB;YAChC,OAAO,EAAE,CAAC,QAAQ,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,aAAa,EAAE,aAAa,EAAE,OAAO,EAAE,eAAe,EAAE,YAAY,CAAC;YACnI,KAAK,EAAE;gBACH,IAAI,EAAE,QAAQ;aACjB;SACJ;QACD,CAAC,6BAAqB,CAAC,EAAE;YACrB,IAAI,EAAE,OAAO;YACb,KAAK,EAAE,+CAAyB;YAChC,mBAAmB,EAAE;;;;;;;;yIAQwG;YAC7H,OAAO,EAAE,EAAE;YACX,KAAK,EAAE;gBACH,IAAI,EAAE,QAAQ;gBACd,UAAU,EAAE;oBACR,KAAK,EAAE;wBACH,IAAI,EAAE,QAAQ;wBACd,KAAK,EAAE,UAAU;qBACpB;oBACD,GAAG,EAAE;wBACD,IAAI,EAAE,QAAQ;wBACd,KAAK,EAAE,+DAA+D;qBACzE;oBACD,EAAE,EAAE;wBACA,IAAI,EAAE,QAAQ;wBACd,KAAK,EAAE,0EAA0E;qBACpF;oBACD,MAAM,EAAE;wBACJ,IAAI,EAAE,CAAC,QAAQ,EAAE,SAAS,CAAC;wBAC3B,KAAK,EAAE,qGAAqG;qBAC/G;iBACJ;aACJ;SACJ;KACJ;CACJ,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { LanguageModel, LanguageModelParsedResponse, LanguageModelRequest, LanguageModelResponse } from '@theia/ai-core';
|
|
1
|
+
import { LanguageModel, LanguageModelParsedResponse, LanguageModelRequest, LanguageModelResponse, LanguageModelTextResponse } 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';
|
|
@@ -15,6 +15,8 @@ export declare class OpenAiModel implements LanguageModel {
|
|
|
15
15
|
*/
|
|
16
16
|
constructor(id: string, model: string, apiKey: () => string | undefined, url: string | undefined);
|
|
17
17
|
request(request: LanguageModelRequest, cancellationToken?: CancellationToken): Promise<LanguageModelResponse>;
|
|
18
|
+
protected handleNonStreamingRequest(openai: OpenAI, request: LanguageModelRequest): Promise<LanguageModelTextResponse>;
|
|
19
|
+
protected isNonStreamingModel(model: string): boolean;
|
|
18
20
|
protected supportsStructuredOutput(): boolean;
|
|
19
21
|
protected handleStructuredOutputRequest(openai: OpenAI, request: LanguageModelRequest): Promise<LanguageModelParsedResponse>;
|
|
20
22
|
private getCompletionContent;
|
|
@@ -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,EAEpB,qBAAqB,
|
|
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,EAEpB,qBAAqB,EAErB,yBAAyB,EAC5B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAChD,OAAO,MAAM,MAAM,QAAQ,CAAC;AAE5B,OAAO,EAAE,gCAAgC,EAAE,MAAM,6BAA6B,CAAC;AAG/E,eAAO,MAAM,qBAAqB,eAAkC,CAAC;AAoBrE,qBAAa,WAAY,YAAW,aAAa;aAOjB,EAAE,EAAE,MAAM;IAAS,KAAK,EAAE,MAAM;IAAS,MAAM,EAAE,MAAM,MAAM,GAAG,SAAS;IAAS,GAAG,EAAE,MAAM,GAAG,SAAS;IALrI;;;;OAIG;gBACyB,EAAE,EAAE,MAAM,EAAS,KAAK,EAAE,MAAM,EAAS,MAAM,EAAE,MAAM,MAAM,GAAG,SAAS,EAAS,GAAG,EAAE,MAAM,GAAG,SAAS;IAE/H,OAAO,CAAC,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,qBAAqB,CAAC;cAgFnG,yBAAyB,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,yBAAyB,CAAC;IAc5H,SAAS,CAAC,mBAAmB,CAAC,KAAK,EAAE,MAAM,GAAG,OAAO;IAIrD,SAAS,CAAC,wBAAwB,IAAI,OAAO;cAS7B,6BAA6B,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,EAAE,oBAAoB,GAAG,OAAO,CAAC,2BAA2B,CAAC;IAkBlI,OAAO,CAAC,oBAAoB;IAO5B,SAAS,CAAC,WAAW,CAAC,OAAO,EAAE,oBAAoB,GAAG,gCAAgC,EAAE,GAAG,SAAS;IAYpG,SAAS,CAAC,gBAAgB,IAAI,MAAM;CAQvC"}
|
|
@@ -49,6 +49,9 @@ class OpenAiModel {
|
|
|
49
49
|
async request(request, cancellationToken) {
|
|
50
50
|
var _a;
|
|
51
51
|
const openai = this.initializeOpenAi();
|
|
52
|
+
if (this.isNonStreamingModel(this.model)) {
|
|
53
|
+
return this.handleNonStreamingRequest(openai, request);
|
|
54
|
+
}
|
|
52
55
|
if (((_a = request.response_format) === null || _a === void 0 ? void 0 : _a.type) === 'json_schema' && this.supportsStructuredOutput()) {
|
|
53
56
|
return this.handleStructuredOutputRequest(openai, request);
|
|
54
57
|
}
|
|
@@ -120,6 +123,21 @@ class OpenAiModel {
|
|
|
120
123
|
};
|
|
121
124
|
return { stream: asyncIterator };
|
|
122
125
|
}
|
|
126
|
+
async handleNonStreamingRequest(openai, request) {
|
|
127
|
+
var _a;
|
|
128
|
+
const response = await openai.chat.completions.create({
|
|
129
|
+
model: this.model,
|
|
130
|
+
messages: request.messages.map(toOpenAIMessage),
|
|
131
|
+
...request.settings
|
|
132
|
+
});
|
|
133
|
+
const message = response.choices[0].message;
|
|
134
|
+
return {
|
|
135
|
+
text: (_a = message.content) !== null && _a !== void 0 ? _a : ''
|
|
136
|
+
};
|
|
137
|
+
}
|
|
138
|
+
isNonStreamingModel(model) {
|
|
139
|
+
return ['o1-preview'].includes(model);
|
|
140
|
+
}
|
|
123
141
|
supportsStructuredOutput() {
|
|
124
142
|
// see https://platform.openai.com/docs/models/gpt-4o
|
|
125
143
|
return [
|
|
@@ -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;;;
|
|
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,12 +1,12 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@theia/ai-openai",
|
|
3
|
-
"version": "1.55.0
|
|
3
|
+
"version": "1.55.0",
|
|
4
4
|
"description": "Theia - OpenAI Integration",
|
|
5
5
|
"dependencies": {
|
|
6
|
-
"@theia/ai-core": "1.55.0
|
|
7
|
-
"@theia/core": "1.55.0
|
|
8
|
-
"@theia/filesystem": "1.55.0
|
|
9
|
-
"@theia/workspace": "1.55.0
|
|
6
|
+
"@theia/ai-core": "1.55.0",
|
|
7
|
+
"@theia/core": "1.55.0",
|
|
8
|
+
"@theia/filesystem": "1.55.0",
|
|
9
|
+
"@theia/workspace": "1.55.0",
|
|
10
10
|
"minimatch": "^5.1.0",
|
|
11
11
|
"openai": "^4.55.7",
|
|
12
12
|
"tslib": "^2.6.2"
|
|
@@ -45,10 +45,10 @@
|
|
|
45
45
|
"watch": "theiaext watch"
|
|
46
46
|
},
|
|
47
47
|
"devDependencies": {
|
|
48
|
-
"@theia/ext-scripts": "1.
|
|
48
|
+
"@theia/ext-scripts": "1.55.0"
|
|
49
49
|
},
|
|
50
50
|
"nyc": {
|
|
51
51
|
"extends": "../../configs/nyc.json"
|
|
52
52
|
},
|
|
53
|
-
"gitHead": "
|
|
53
|
+
"gitHead": "0e7a523b8e798679d2e098709c63bd7060e54c8a"
|
|
54
54
|
}
|
|
@@ -34,7 +34,7 @@ export const OpenAiPreferencesSchema: PreferenceSchema = {
|
|
|
34
34
|
type: 'array',
|
|
35
35
|
description: 'Official OpenAI models to use',
|
|
36
36
|
title: AI_CORE_PREFERENCES_TITLE,
|
|
37
|
-
default: ['gpt-4o', 'gpt-4o-2024-08-06', 'gpt-4o-2024-05-13', 'gpt-4o-mini', 'gpt-4-turbo', 'gpt-4', 'gpt-3.5-turbo'],
|
|
37
|
+
default: ['gpt-4o', 'gpt-4o-2024-08-06', 'gpt-4o-2024-05-13', 'gpt-4o-mini', 'gpt-4-turbo', 'gpt-4', 'gpt-3.5-turbo', 'o1-preview'],
|
|
38
38
|
items: {
|
|
39
39
|
type: 'string'
|
|
40
40
|
}
|
|
@@ -48,7 +48,9 @@ export const OpenAiPreferencesSchema: PreferenceSchema = {
|
|
|
48
48
|
\n\
|
|
49
49
|
- specify a unique `id` to identify the custom model in the UI. If none is given `model` will be used as `id`.\
|
|
50
50
|
\n\
|
|
51
|
-
- provide an `apiKey` to access the API served at the given url. Use `true` to indicate the use of the global OpenAI API key
|
|
51
|
+
- provide an `apiKey` to access the API served at the given url. Use `true` to indicate the use of the global OpenAI API key.\
|
|
52
|
+
\n\
|
|
53
|
+
Refer to [our documentation](https://theia-ide.org/docs/user_ai/#openai-compatible-models-eg-via-vllm) for more information.',
|
|
52
54
|
default: [],
|
|
53
55
|
items: {
|
|
54
56
|
type: 'object',
|
|
@@ -20,7 +20,8 @@ import {
|
|
|
20
20
|
LanguageModelRequest,
|
|
21
21
|
LanguageModelRequestMessage,
|
|
22
22
|
LanguageModelResponse,
|
|
23
|
-
LanguageModelStreamResponsePart
|
|
23
|
+
LanguageModelStreamResponsePart,
|
|
24
|
+
LanguageModelTextResponse
|
|
24
25
|
} from '@theia/ai-core';
|
|
25
26
|
import { CancellationToken } from '@theia/core';
|
|
26
27
|
import OpenAI from 'openai';
|
|
@@ -60,6 +61,10 @@ export class OpenAiModel implements LanguageModel {
|
|
|
60
61
|
async request(request: LanguageModelRequest, cancellationToken?: CancellationToken): Promise<LanguageModelResponse> {
|
|
61
62
|
const openai = this.initializeOpenAi();
|
|
62
63
|
|
|
64
|
+
if (this.isNonStreamingModel(this.model)) {
|
|
65
|
+
return this.handleNonStreamingRequest(openai, request);
|
|
66
|
+
}
|
|
67
|
+
|
|
63
68
|
if (request.response_format?.type === 'json_schema' && this.supportsStructuredOutput()) {
|
|
64
69
|
return this.handleStructuredOutputRequest(openai, request);
|
|
65
70
|
}
|
|
@@ -133,6 +138,24 @@ export class OpenAiModel implements LanguageModel {
|
|
|
133
138
|
return { stream: asyncIterator };
|
|
134
139
|
}
|
|
135
140
|
|
|
141
|
+
protected async handleNonStreamingRequest(openai: OpenAI, request: LanguageModelRequest): Promise<LanguageModelTextResponse> {
|
|
142
|
+
const response = await openai.chat.completions.create({
|
|
143
|
+
model: this.model,
|
|
144
|
+
messages: request.messages.map(toOpenAIMessage),
|
|
145
|
+
...request.settings
|
|
146
|
+
});
|
|
147
|
+
|
|
148
|
+
const message = response.choices[0].message;
|
|
149
|
+
|
|
150
|
+
return {
|
|
151
|
+
text: message.content ?? ''
|
|
152
|
+
};
|
|
153
|
+
}
|
|
154
|
+
|
|
155
|
+
protected isNonStreamingModel(model: string): boolean {
|
|
156
|
+
return ['o1-preview'].includes(model);
|
|
157
|
+
}
|
|
158
|
+
|
|
136
159
|
protected supportsStructuredOutput(): boolean {
|
|
137
160
|
// see https://platform.openai.com/docs/models/gpt-4o
|
|
138
161
|
return [
|