@theia/ai-anthropic 1.60.0-next.47 → 1.60.1
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/anthropic-frontend-application-contribution.d.ts +1 -5
- package/lib/browser/anthropic-frontend-application-contribution.d.ts.map +1 -1
- package/lib/browser/anthropic-frontend-application-contribution.js +4 -26
- package/lib/browser/anthropic-frontend-application-contribution.js.map +1 -1
- package/lib/common/anthropic-language-models-manager.d.ts +0 -6
- package/lib/common/anthropic-language-models-manager.d.ts.map +1 -1
- package/lib/node/anthropic-language-model.d.ts +1 -2
- package/lib/node/anthropic-language-model.d.ts.map +1 -1
- package/lib/node/anthropic-language-model.js +49 -29
- package/lib/node/anthropic-language-model.js.map +1 -1
- package/lib/node/anthropic-language-models-manager-impl.d.ts.map +1 -1
- package/lib/node/anthropic-language-models-manager-impl.js +1 -2
- package/lib/node/anthropic-language-models-manager-impl.js.map +1 -1
- package/package.json +6 -6
- package/src/browser/anthropic-frontend-application-contribution.ts +4 -36
- package/src/common/anthropic-language-models-manager.ts +1 -4
- package/src/node/anthropic-language-model.ts +46 -28
- package/src/node/anthropic-language-models-manager-impl.ts +0 -2
|
@@ -1,15 +1,11 @@
|
|
|
1
1
|
import { FrontendApplicationContribution, PreferenceService } from '@theia/core/lib/browser';
|
|
2
2
|
import { AnthropicLanguageModelsManager, AnthropicModelDescription } from '../common';
|
|
3
|
-
import { RequestSetting } from '@theia/ai-core/lib/browser/ai-core-preferences';
|
|
4
3
|
export declare class AnthropicFrontendApplicationContribution implements FrontendApplicationContribution {
|
|
5
4
|
protected preferenceService: PreferenceService;
|
|
6
5
|
protected manager: AnthropicLanguageModelsManager;
|
|
7
6
|
protected prevModels: string[];
|
|
8
7
|
onStart(): void;
|
|
9
8
|
protected handleModelChanges(newModels: string[]): void;
|
|
10
|
-
|
|
11
|
-
protected handleRequestSettingsChanges(newSettings: RequestSetting[]): void;
|
|
12
|
-
protected createAnthropicModelDescription(modelId: string, requestSettings: RequestSetting[]): AnthropicModelDescription;
|
|
13
|
-
protected getMatchingRequestSetting(modelId: string, providerId: string, requestSettings: RequestSetting[]): RequestSetting | undefined;
|
|
9
|
+
protected createAnthropicModelDescription(modelId: string): AnthropicModelDescription;
|
|
14
10
|
}
|
|
15
11
|
//# sourceMappingURL=anthropic-frontend-application-contribution.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"anthropic-frontend-application-contribution.d.ts","sourceRoot":"","sources":["../../src/browser/anthropic-frontend-application-contribution.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,+BAA+B,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAE7F,OAAO,EAAE,8BAA8B,EAAE,yBAAyB,EAAE,MAAM,WAAW,CAAC;
|
|
1
|
+
{"version":3,"file":"anthropic-frontend-application-contribution.d.ts","sourceRoot":"","sources":["../../src/browser/anthropic-frontend-application-contribution.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,+BAA+B,EAAE,iBAAiB,EAAE,MAAM,yBAAyB,CAAC;AAE7F,OAAO,EAAE,8BAA8B,EAAE,yBAAyB,EAAE,MAAM,WAAW,CAAC;AAatF,qBACa,wCAAyC,YAAW,+BAA+B;IAG5F,SAAS,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;IAG/C,SAAS,CAAC,OAAO,EAAE,8BAA8B,CAAC;IAElD,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,CAAM;IAEpC,OAAO,IAAI,IAAI;IAmBf,SAAS,CAAC,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,IAAI;IAYvD,SAAS,CAAC,+BAA+B,CAAC,OAAO,EAAE,MAAM,GAAG,yBAAyB;CAiBxF"}
|
|
@@ -21,7 +21,6 @@ const browser_1 = require("@theia/core/lib/browser");
|
|
|
21
21
|
const inversify_1 = require("@theia/core/shared/inversify");
|
|
22
22
|
const common_1 = require("../common");
|
|
23
23
|
const anthropic_preferences_1 = require("./anthropic-preferences");
|
|
24
|
-
const ai_core_preferences_1 = require("@theia/ai-core/lib/browser/ai-core-preferences");
|
|
25
24
|
const ANTHROPIC_PROVIDER_ID = 'anthropic';
|
|
26
25
|
// Model-specific maxTokens values
|
|
27
26
|
const DEFAULT_MODEL_MAX_TOKENS = {
|
|
@@ -39,8 +38,7 @@ let AnthropicFrontendApplicationContribution = class AnthropicFrontendApplicatio
|
|
|
39
38
|
const apiKey = this.preferenceService.get(anthropic_preferences_1.API_KEY_PREF, undefined);
|
|
40
39
|
this.manager.setApiKey(apiKey);
|
|
41
40
|
const models = this.preferenceService.get(anthropic_preferences_1.MODELS_PREF, []);
|
|
42
|
-
|
|
43
|
-
this.manager.createOrUpdateLanguageModels(...models.map(modelId => this.createAnthropicModelDescription(modelId, requestSettings)));
|
|
41
|
+
this.manager.createOrUpdateLanguageModels(...models.map(modelId => this.createAnthropicModelDescription(modelId)));
|
|
44
42
|
this.prevModels = [...models];
|
|
45
43
|
this.preferenceService.onPreferenceChanged(event => {
|
|
46
44
|
if (event.preferenceName === anthropic_preferences_1.API_KEY_PREF) {
|
|
@@ -49,9 +47,6 @@ let AnthropicFrontendApplicationContribution = class AnthropicFrontendApplicatio
|
|
|
49
47
|
else if (event.preferenceName === anthropic_preferences_1.MODELS_PREF) {
|
|
50
48
|
this.handleModelChanges(event.newValue);
|
|
51
49
|
}
|
|
52
|
-
else if (event.preferenceName === ai_core_preferences_1.PREFERENCE_NAME_REQUEST_SETTINGS) {
|
|
53
|
-
this.handleRequestSettingsChanges(event.newValue);
|
|
54
|
-
}
|
|
55
50
|
});
|
|
56
51
|
});
|
|
57
52
|
}
|
|
@@ -61,40 +56,23 @@ let AnthropicFrontendApplicationContribution = class AnthropicFrontendApplicatio
|
|
|
61
56
|
const modelsToRemove = [...oldModels].filter(model => !updatedModels.has(model));
|
|
62
57
|
const modelsToAdd = [...updatedModels].filter(model => !oldModels.has(model));
|
|
63
58
|
this.manager.removeLanguageModels(...modelsToRemove.map(model => `${ANTHROPIC_PROVIDER_ID}/${model}`));
|
|
64
|
-
|
|
65
|
-
this.manager.createOrUpdateLanguageModels(...modelsToAdd.map(modelId => this.createAnthropicModelDescription(modelId, requestSettings)));
|
|
59
|
+
this.manager.createOrUpdateLanguageModels(...modelsToAdd.map(modelId => this.createAnthropicModelDescription(modelId)));
|
|
66
60
|
this.prevModels = newModels;
|
|
67
61
|
}
|
|
68
|
-
|
|
69
|
-
return this.preferenceService.get(ai_core_preferences_1.PREFERENCE_NAME_REQUEST_SETTINGS, []);
|
|
70
|
-
}
|
|
71
|
-
handleRequestSettingsChanges(newSettings) {
|
|
72
|
-
const models = this.preferenceService.get(anthropic_preferences_1.MODELS_PREF, []);
|
|
73
|
-
this.manager.createOrUpdateLanguageModels(...models.map(modelId => this.createAnthropicModelDescription(modelId, newSettings)));
|
|
74
|
-
}
|
|
75
|
-
createAnthropicModelDescription(modelId, requestSettings) {
|
|
62
|
+
createAnthropicModelDescription(modelId) {
|
|
76
63
|
const id = `${ANTHROPIC_PROVIDER_ID}/${modelId}`;
|
|
77
|
-
const modelRequestSetting = this.getMatchingRequestSetting(modelId, ANTHROPIC_PROVIDER_ID, requestSettings);
|
|
78
64
|
const maxTokens = DEFAULT_MODEL_MAX_TOKENS[modelId];
|
|
79
65
|
const description = {
|
|
80
66
|
id: id,
|
|
81
67
|
model: modelId,
|
|
82
68
|
apiKey: true,
|
|
83
|
-
enableStreaming: true
|
|
84
|
-
defaultRequestSettings: modelRequestSetting === null || modelRequestSetting === void 0 ? void 0 : modelRequestSetting.requestSettings
|
|
69
|
+
enableStreaming: true
|
|
85
70
|
};
|
|
86
71
|
if (maxTokens !== undefined) {
|
|
87
72
|
description.maxTokens = maxTokens;
|
|
88
73
|
}
|
|
89
74
|
return description;
|
|
90
75
|
}
|
|
91
|
-
getMatchingRequestSetting(modelId, providerId, requestSettings) {
|
|
92
|
-
const matchingSettings = requestSettings.filter(setting => (!setting.providerId || setting.providerId === providerId) && setting.modelId === modelId);
|
|
93
|
-
if (matchingSettings.length > 1) {
|
|
94
|
-
console.warn(`Multiple entries found for provider "${providerId}" and model "${modelId}". Using the first match.`);
|
|
95
|
-
}
|
|
96
|
-
return matchingSettings[0];
|
|
97
|
-
}
|
|
98
76
|
};
|
|
99
77
|
exports.AnthropicFrontendApplicationContribution = AnthropicFrontendApplicationContribution;
|
|
100
78
|
tslib_1.__decorate([
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"anthropic-frontend-application-contribution.js","sourceRoot":"","sources":["../../src/browser/anthropic-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;;;;AAEhF,qDAA6F;AAC7F,4DAAkE;AAClE,sCAAsF;AACtF,mEAAoE;
|
|
1
|
+
{"version":3,"file":"anthropic-frontend-application-contribution.js","sourceRoot":"","sources":["../../src/browser/anthropic-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;;;;AAEhF,qDAA6F;AAC7F,4DAAkE;AAClE,sCAAsF;AACtF,mEAAoE;AAEpE,MAAM,qBAAqB,GAAG,WAAW,CAAC;AAE1C,kCAAkC;AAClC,MAAM,wBAAwB,GAA2B;IACrD,sBAAsB,EAAE,IAAI;IAC5B,yBAAyB,EAAE,IAAI;IAC/B,0BAA0B,EAAE,IAAI;IAChC,0BAA0B,EAAE,KAAK;CACpC,CAAC;AAGK,IAAM,wCAAwC,GAA9C,MAAM,wCAAwC;IAA9C;QAQO,eAAU,GAAa,EAAE,CAAC;IAkDxC,CAAC;IAhDG,OAAO;QACH,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE;YACnC,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAS,oCAAY,EAAE,SAAS,CAAC,CAAC;YAC3E,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;YAE/B,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAW,mCAAW,EAAE,EAAE,CAAC,CAAC;YACrE,IAAI,CAAC,OAAO,CAAC,4BAA4B,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,+BAA+B,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YACnH,IAAI,CAAC,UAAU,GAAG,CAAC,GAAG,MAAM,CAAC,CAAC;YAE9B,IAAI,CAAC,iBAAiB,CAAC,mBAAmB,CAAC,KAAK,CAAC,EAAE;gBAC/C,IAAI,KAAK,CAAC,cAAc,KAAK,oCAAY,EAAE,CAAC;oBACxC,IAAI,CAAC,OAAO,CAAC,SAAS,CAAC,KAAK,CAAC,QAAQ,CAAC,CAAC;gBAC3C,CAAC;qBAAM,IAAI,KAAK,CAAC,cAAc,KAAK,mCAAW,EAAE,CAAC;oBAC9C,IAAI,CAAC,kBAAkB,CAAC,KAAK,CAAC,QAAoB,CAAC,CAAC;gBACxD,CAAC;YACL,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC;IAES,kBAAkB,CAAC,SAAmB;QAC5C,MAAM,SAAS,GAAG,IAAI,GAAG,CAAC,IAAI,CAAC,UAAU,CAAC,CAAC;QAC3C,MAAM,aAAa,GAAG,IAAI,GAAG,CAAC,SAAS,CAAC,CAAC;QAEzC,MAAM,cAAc,GAAG,CAAC,GAAG,SAAS,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,aAAa,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;QACjF,MAAM,WAAW,GAAG,CAAC,GAAG,aAAa,CAAC,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,SAAS,CAAC,GAAG,CAAC,KAAK,CAAC,CAAC,CAAC;QAE9E,IAAI,CAAC,OAAO,CAAC,oBAAoB,CAAC,GAAG,cAAc,CAAC,GAAG,CAAC,KAAK,CAAC,EAAE,CAAC,GAAG,qBAAqB,IAAI,KAAK,EAAE,CAAC,CAAC,CAAC;QACvG,IAAI,CAAC,OAAO,CAAC,4BAA4B,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,+BAA+B,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACxH,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;IAChC,CAAC;IAES,+BAA+B,CAAC,OAAe;QACrD,MAAM,EAAE,GAAG,GAAG,qBAAqB,IAAI,OAAO,EAAE,CAAC;QACjD,MAAM,SAAS,GAAG,wBAAwB,CAAC,OAAO,CAAC,CAAC;QAEpD,MAAM,WAAW,GAA8B;YAC3C,EAAE,EAAE,EAAE;YACN,KAAK,EAAE,OAAO;YACd,MAAM,EAAE,IAAI;YACZ,eAAe,EAAE,IAAI;SACxB,CAAC;QAEF,IAAI,SAAS,KAAK,SAAS,EAAE,CAAC;YAC1B,WAAW,CAAC,SAAS,GAAG,SAAS,CAAC;QACtC,CAAC;QAED,OAAO,WAAW,CAAC;IACvB,CAAC;CACJ,CAAA;AA1DY,4FAAwC;AAGvC;IADT,IAAA,kBAAM,EAAC,2BAAiB,CAAC;;mFACqB;AAGrC;IADT,IAAA,kBAAM,EAAC,uCAA8B,CAAC;;yEACW;mDANzC,wCAAwC;IADpD,IAAA,sBAAU,GAAE;GACA,wCAAwC,CA0DpD"}
|
|
@@ -21,12 +21,6 @@ export interface AnthropicModelDescription {
|
|
|
21
21
|
* Maximum number of tokens to generate. Default is 4096.
|
|
22
22
|
*/
|
|
23
23
|
maxTokens?: number;
|
|
24
|
-
/**
|
|
25
|
-
* Default request settings for the Anthropic model.
|
|
26
|
-
*/
|
|
27
|
-
defaultRequestSettings?: {
|
|
28
|
-
[key: string]: unknown;
|
|
29
|
-
};
|
|
30
24
|
}
|
|
31
25
|
export interface AnthropicLanguageModelsManager {
|
|
32
26
|
apiKey: string | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"anthropic-language-models-manager.d.ts","sourceRoot":"","sources":["../../src/common/anthropic-language-models-manager.ts"],"names":[],"mappings":"AAeA,eAAO,MAAM,sCAAsC,+CAA+C,CAAC;AACnG,eAAO,MAAM,8BAA8B,eAA2C,CAAC;AACvF,MAAM,WAAW,yBAAyB;IACtC;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IACX;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAClC;;OAEG;IACH,eAAe,EAAE,OAAO,CAAC;IACzB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"anthropic-language-models-manager.d.ts","sourceRoot":"","sources":["../../src/common/anthropic-language-models-manager.ts"],"names":[],"mappings":"AAeA,eAAO,MAAM,sCAAsC,+CAA+C,CAAC;AACnG,eAAO,MAAM,8BAA8B,eAA2C,CAAC;AACvF,MAAM,WAAW,yBAAyB;IACtC;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IACX;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;OAEG;IACH,MAAM,EAAE,MAAM,GAAG,IAAI,GAAG,SAAS,CAAC;IAClC;;OAEG;IACH,eAAe,EAAE,OAAO,CAAC;IACzB;;OAEG;IACH,SAAS,CAAC,EAAE,MAAM,CAAC;CAEtB;AACD,MAAM,WAAW,8BAA8B;IAC3C,MAAM,EAAE,MAAM,GAAG,SAAS,CAAC;IAC3B,SAAS,CAAC,GAAG,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI,CAAC;IACzC,4BAA4B,CAAC,GAAG,MAAM,EAAE,yBAAyB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC,CAAC;IACpF,oBAAoB,CAAC,GAAG,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI,CAAA;CACpD"}
|
|
@@ -11,9 +11,8 @@ export declare class AnthropicModel implements LanguageModel {
|
|
|
11
11
|
model: string;
|
|
12
12
|
enableStreaming: boolean;
|
|
13
13
|
apiKey: () => string | undefined;
|
|
14
|
-
defaultRequestSettings?: Readonly<Record<string, unknown>> | undefined;
|
|
15
14
|
maxTokens: number;
|
|
16
|
-
constructor(id: string, model: string, enableStreaming: boolean, apiKey: () => string | undefined,
|
|
15
|
+
constructor(id: string, model: string, enableStreaming: boolean, apiKey: () => string | undefined, maxTokens?: number);
|
|
17
16
|
protected getSettings(request: LanguageModelRequest): Readonly<Record<string, unknown>>;
|
|
18
17
|
request(request: LanguageModelRequest, cancellationToken?: CancellationToken): Promise<LanguageModelResponse>;
|
|
19
18
|
protected formatToolCallResult(result: unknown): string | Array<{
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"anthropic-language-model.d.ts","sourceRoot":"","sources":["../../src/node/anthropic-language-model.ts"],"names":[],"mappings":"AAgBA,OAAO,EACH,aAAa,EACb,oBAAoB,EAEpB,qBAAqB,EACrB,2BAA2B,EAE3B,yBAAyB,EAC5B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAW,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAG9C,eAAO,MAAM,kBAAkB,OAAO,CAAC;
|
|
1
|
+
{"version":3,"file":"anthropic-language-model.d.ts","sourceRoot":"","sources":["../../src/node/anthropic-language-model.ts"],"names":[],"mappings":"AAgBA,OAAO,EACH,aAAa,EACb,oBAAoB,EAEpB,qBAAqB,EACrB,2BAA2B,EAE3B,yBAAyB,EAC5B,MAAM,gBAAgB,CAAC;AACxB,OAAO,EAAE,iBAAiB,EAAW,MAAM,aAAa,CAAC;AACzD,OAAO,EAAE,SAAS,EAAE,MAAM,mBAAmB,CAAC;AAG9C,eAAO,MAAM,kBAAkB,OAAO,CAAC;AA+CvC,eAAO,MAAM,wBAAwB,eAAqC,CAAC;AAgB3E;;GAEG;AACH,qBAAa,cAAe,YAAW,aAAa;aAG5B,EAAE,EAAE,MAAM;IACnB,KAAK,EAAE,MAAM;IACb,eAAe,EAAE,OAAO;IACxB,MAAM,EAAE,MAAM,MAAM,GAAG,SAAS;IAChC,SAAS,EAAE,MAAM;gBAJR,EAAE,EAAE,MAAM,EACnB,KAAK,EAAE,MAAM,EACb,eAAe,EAAE,OAAO,EACxB,MAAM,EAAE,MAAM,MAAM,GAAG,SAAS,EAChC,SAAS,GAAE,MAA2B;IAGjD,SAAS,CAAC,WAAW,CAAC,OAAO,EAAE,oBAAoB,GAAG,QAAQ,CAAC,MAAM,CAAC,MAAM,EAAE,OAAO,CAAC,CAAC;IAIjF,OAAO,CAAC,OAAO,EAAE,oBAAoB,EAAE,iBAAiB,CAAC,EAAE,iBAAiB,GAAG,OAAO,CAAC,qBAAqB,CAAC;IAkBnH,SAAS,CAAC,oBAAoB,CAAC,MAAM,EAAE,OAAO,GAAG,MAAM,GAAG,KAAK,CAAC;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,IAAI,EAAE,MAAM,CAAA;KAAE,CAAC;cAiB/E,sBAAsB,CAClC,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,oBAAoB,EAC7B,iBAAiB,CAAC,EAAE,iBAAiB,EACrC,YAAY,CAAC,EAAE,SAAS,SAAS,CAAC,QAAQ,CAAC,YAAY,EAAE,GAC1D,OAAO,CAAC,2BAA2B,CAAC;IAsHvC,OAAO,CAAC,WAAW;cAWH,yBAAyB,CACrC,SAAS,EAAE,SAAS,EACpB,OAAO,EAAE,oBAAoB,GAC9B,OAAO,CAAC,yBAAyB,CAAC;IA2BrC,SAAS,CAAC,mBAAmB,IAAI,SAAS;CAQ7C"}
|
|
@@ -16,13 +16,24 @@
|
|
|
16
16
|
// *****************************************************************************
|
|
17
17
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
18
18
|
exports.AnthropicModel = exports.AnthropicModelIdentifier = exports.DEFAULT_MAX_TOKENS = void 0;
|
|
19
|
+
const ai_core_1 = require("@theia/ai-core");
|
|
19
20
|
const core_1 = require("@theia/core");
|
|
20
21
|
const sdk_1 = require("@anthropic-ai/sdk");
|
|
21
22
|
exports.DEFAULT_MAX_TOKENS = 4096;
|
|
22
|
-
const
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
23
|
+
const createMessageContent = (message) => {
|
|
24
|
+
if (ai_core_1.LanguageModelMessage.isTextMessage(message)) {
|
|
25
|
+
return message.text;
|
|
26
|
+
}
|
|
27
|
+
else if (ai_core_1.LanguageModelMessage.isThinkingMessage(message)) {
|
|
28
|
+
return [{ signature: message.signature, thinking: message.thinking, type: 'thinking' }];
|
|
29
|
+
}
|
|
30
|
+
else if (ai_core_1.LanguageModelMessage.isToolUseMessage(message)) {
|
|
31
|
+
return [{ id: message.id, input: message.input, name: message.name, type: 'tool_use' }];
|
|
32
|
+
}
|
|
33
|
+
else if (ai_core_1.LanguageModelMessage.isToolResultMessage(message)) {
|
|
34
|
+
return [{ type: 'tool_result', tool_use_id: message.tool_use_id }];
|
|
35
|
+
}
|
|
36
|
+
throw new Error(`Unknown message type:'${JSON.stringify(message)}'`);
|
|
26
37
|
};
|
|
27
38
|
/**
|
|
28
39
|
* Transforms Theia language model messages to Anthropic API format
|
|
@@ -32,12 +43,12 @@ const EMPTY_INPUT_SCHEMA = {
|
|
|
32
43
|
function transformToAnthropicParams(messages) {
|
|
33
44
|
// Extract the system message (if any), as it is a separate parameter in the Anthropic API.
|
|
34
45
|
const systemMessageObj = messages.find(message => message.actor === 'system');
|
|
35
|
-
const systemMessage = systemMessageObj
|
|
46
|
+
const systemMessage = systemMessageObj && ai_core_1.LanguageModelMessage.isTextMessage(systemMessageObj) && systemMessageObj.text || undefined;
|
|
36
47
|
const convertedMessages = messages
|
|
37
48
|
.filter(message => message.actor !== 'system')
|
|
38
49
|
.map(message => ({
|
|
39
50
|
role: toAnthropicRole(message),
|
|
40
|
-
content: message
|
|
51
|
+
content: createMessageContent(message)
|
|
41
52
|
}));
|
|
42
53
|
return {
|
|
43
54
|
messages: convertedMessages,
|
|
@@ -62,17 +73,16 @@ function toAnthropicRole(message) {
|
|
|
62
73
|
* Implements the Anthropic language model integration for Theia
|
|
63
74
|
*/
|
|
64
75
|
class AnthropicModel {
|
|
65
|
-
constructor(id, model, enableStreaming, apiKey,
|
|
76
|
+
constructor(id, model, enableStreaming, apiKey, maxTokens = exports.DEFAULT_MAX_TOKENS) {
|
|
66
77
|
this.id = id;
|
|
67
78
|
this.model = model;
|
|
68
79
|
this.enableStreaming = enableStreaming;
|
|
69
80
|
this.apiKey = apiKey;
|
|
70
|
-
this.defaultRequestSettings = defaultRequestSettings;
|
|
71
81
|
this.maxTokens = maxTokens;
|
|
72
82
|
}
|
|
73
83
|
getSettings(request) {
|
|
74
|
-
var _a
|
|
75
|
-
return (
|
|
84
|
+
var _a;
|
|
85
|
+
return (_a = request.settings) !== null && _a !== void 0 ? _a : {};
|
|
76
86
|
}
|
|
77
87
|
async request(request, cancellationToken) {
|
|
78
88
|
var _a;
|
|
@@ -112,6 +122,7 @@ class AnthropicModel {
|
|
|
112
122
|
max_tokens: this.maxTokens,
|
|
113
123
|
messages: [...messages, ...(toolMessages !== null && toolMessages !== void 0 ? toolMessages : [])],
|
|
114
124
|
tools,
|
|
125
|
+
tool_choice: tools ? { type: 'auto' } : undefined,
|
|
115
126
|
model: this.model,
|
|
116
127
|
...(systemMessage && { system: systemMessage }),
|
|
117
128
|
...settings
|
|
@@ -123,11 +134,16 @@ class AnthropicModel {
|
|
|
123
134
|
const that = this;
|
|
124
135
|
const asyncIterator = {
|
|
125
136
|
async *[Symbol.asyncIterator]() {
|
|
137
|
+
var _a;
|
|
126
138
|
const toolCalls = [];
|
|
127
139
|
let toolCall;
|
|
140
|
+
const currentMessages = [];
|
|
128
141
|
for await (const event of stream) {
|
|
129
142
|
if (event.type === 'content_block_start') {
|
|
130
143
|
const contentBlock = event.content_block;
|
|
144
|
+
if (contentBlock.type === 'thinking') {
|
|
145
|
+
yield { thought: contentBlock.thinking, signature: (_a = contentBlock.signature) !== null && _a !== void 0 ? _a : '' };
|
|
146
|
+
}
|
|
131
147
|
if (contentBlock.type === 'text') {
|
|
132
148
|
yield { content: contentBlock.text };
|
|
133
149
|
}
|
|
@@ -138,6 +154,12 @@ class AnthropicModel {
|
|
|
138
154
|
}
|
|
139
155
|
else if (event.type === 'content_block_delta') {
|
|
140
156
|
const delta = event.delta;
|
|
157
|
+
if (delta.type === 'thinking_delta') {
|
|
158
|
+
yield { thought: delta.thinking, signature: '' };
|
|
159
|
+
}
|
|
160
|
+
if (delta.type === 'signature_delta') {
|
|
161
|
+
yield { thought: '', signature: delta.signature };
|
|
162
|
+
}
|
|
141
163
|
if (delta.type === 'text_delta') {
|
|
142
164
|
yield { content: delta.text };
|
|
143
165
|
}
|
|
@@ -160,6 +182,9 @@ class AnthropicModel {
|
|
|
160
182
|
throw new Error(`The response was stopped because it exceeded the max token limit of ${event.usage.output_tokens}.`);
|
|
161
183
|
}
|
|
162
184
|
}
|
|
185
|
+
else if (event.type === 'message_start') {
|
|
186
|
+
currentMessages.push(event.message);
|
|
187
|
+
}
|
|
163
188
|
}
|
|
164
189
|
if (toolCalls.length > 0) {
|
|
165
190
|
const toolResult = await Promise.all(toolCalls.map(async (tc) => {
|
|
@@ -173,15 +198,6 @@ class AnthropicModel {
|
|
|
173
198
|
return { finished: true, id: tr.id, result: resultAsString, function: { name: tr.name, arguments: tr.arguments } };
|
|
174
199
|
});
|
|
175
200
|
yield { tool_calls: calls };
|
|
176
|
-
const toolRequestMessage = {
|
|
177
|
-
role: 'assistant',
|
|
178
|
-
content: toolResult.map(call => ({
|
|
179
|
-
type: 'tool_use',
|
|
180
|
-
id: call.id,
|
|
181
|
-
name: call.name,
|
|
182
|
-
input: JSON.parse(call.arguments)
|
|
183
|
-
}))
|
|
184
|
-
};
|
|
185
201
|
const toolResponseMessage = {
|
|
186
202
|
role: 'user',
|
|
187
203
|
content: toolResult.map(call => ({
|
|
@@ -190,7 +206,11 @@ class AnthropicModel {
|
|
|
190
206
|
content: that.formatToolCallResult(call.result)
|
|
191
207
|
}))
|
|
192
208
|
};
|
|
193
|
-
const result = await that.handleStreamingRequest(anthropic, request, cancellationToken, [
|
|
209
|
+
const result = await that.handleStreamingRequest(anthropic, request, cancellationToken, [
|
|
210
|
+
...(toolMessages !== null && toolMessages !== void 0 ? toolMessages : []),
|
|
211
|
+
...currentMessages.map(m => ({ role: m.role, content: m.content })),
|
|
212
|
+
toolResponseMessage
|
|
213
|
+
]);
|
|
194
214
|
for await (const nestedEvent of result.stream) {
|
|
195
215
|
yield nestedEvent;
|
|
196
216
|
}
|
|
@@ -203,15 +223,15 @@ class AnthropicModel {
|
|
|
203
223
|
return { stream: asyncIterator };
|
|
204
224
|
}
|
|
205
225
|
createTools(request) {
|
|
206
|
-
var _a;
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
});
|
|
226
|
+
var _a, _b;
|
|
227
|
+
if (((_a = request.tools) === null || _a === void 0 ? void 0 : _a.length) === 0) {
|
|
228
|
+
return undefined;
|
|
229
|
+
}
|
|
230
|
+
return (_b = request.tools) === null || _b === void 0 ? void 0 : _b.map(tool => ({
|
|
231
|
+
name: tool.name,
|
|
232
|
+
description: tool.description,
|
|
233
|
+
input_schema: tool.parameters
|
|
234
|
+
}));
|
|
215
235
|
}
|
|
216
236
|
async handleNonStreamingRequest(anthropic, request) {
|
|
217
237
|
const settings = this.getSettings(request);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"anthropic-language-model.js","sourceRoot":"","sources":["../../src/node/anthropic-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":"anthropic-language-model.js","sourceRoot":"","sources":["../../src/node/anthropic-language-model.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"anthropic-language-models-manager-impl.d.ts","sourceRoot":"","sources":["../../src/node/anthropic-language-models-manager-impl.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAGvD,OAAO,EAAE,8BAA8B,EAAE,yBAAyB,EAAE,MAAM,WAAW,CAAC;AAEtF,qBACa,kCAAmC,YAAW,8BAA8B;IAErF,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAGtC,SAAS,CAAC,QAAQ,CAAC,qBAAqB,EAAE,qBAAqB,CAAC;IAEhE,IAAI,MAAM,IAAI,MAAM,GAAG,SAAS,CAE/B;IAEK,4BAA4B,CAAC,GAAG,iBAAiB,EAAE,yBAAyB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;
|
|
1
|
+
{"version":3,"file":"anthropic-language-models-manager-impl.d.ts","sourceRoot":"","sources":["../../src/node/anthropic-language-models-manager-impl.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,qBAAqB,EAAE,MAAM,gBAAgB,CAAC;AAGvD,OAAO,EAAE,8BAA8B,EAAE,yBAAyB,EAAE,MAAM,WAAW,CAAC;AAEtF,qBACa,kCAAmC,YAAW,8BAA8B;IAErF,SAAS,CAAC,OAAO,EAAE,MAAM,GAAG,SAAS,CAAC;IAGtC,SAAS,CAAC,QAAQ,CAAC,qBAAqB,EAAE,qBAAqB,CAAC;IAEhE,IAAI,MAAM,IAAI,MAAM,GAAG,SAAS,CAE/B;IAEK,4BAA4B,CAAC,GAAG,iBAAiB,EAAE,yBAAyB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAwCpG,oBAAoB,CAAC,GAAG,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI;IAIjD,SAAS,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;CAO9C"}
|
|
@@ -45,7 +45,6 @@ let AnthropicLanguageModelsManagerImpl = class AnthropicLanguageModelsManagerImp
|
|
|
45
45
|
model.model = modelDescription.model;
|
|
46
46
|
model.enableStreaming = modelDescription.enableStreaming;
|
|
47
47
|
model.apiKey = apiKeyProvider;
|
|
48
|
-
model.defaultRequestSettings = modelDescription.defaultRequestSettings;
|
|
49
48
|
if (modelDescription.maxTokens !== undefined) {
|
|
50
49
|
model.maxTokens = modelDescription.maxTokens;
|
|
51
50
|
}
|
|
@@ -55,7 +54,7 @@ let AnthropicLanguageModelsManagerImpl = class AnthropicLanguageModelsManagerImp
|
|
|
55
54
|
}
|
|
56
55
|
else {
|
|
57
56
|
this.languageModelRegistry.addLanguageModels([
|
|
58
|
-
new anthropic_language_model_1.AnthropicModel(modelDescription.id, modelDescription.model, modelDescription.enableStreaming, apiKeyProvider, modelDescription.
|
|
57
|
+
new anthropic_language_model_1.AnthropicModel(modelDescription.id, modelDescription.model, modelDescription.enableStreaming, apiKeyProvider, modelDescription.maxTokens)
|
|
59
58
|
]);
|
|
60
59
|
}
|
|
61
60
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"anthropic-language-models-manager-impl.js","sourceRoot":"","sources":["../../src/node/anthropic-language-models-manager-impl.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,4CAAuD;AACvD,4DAAkE;AAClE,yEAAgF;AAIzE,IAAM,kCAAkC,GAAxC,MAAM,kCAAkC;IAO3C,IAAI,MAAM;;QACN,OAAO,MAAA,IAAI,CAAC,OAAO,mCAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;IACzD,CAAC;IAED,KAAK,CAAC,4BAA4B,CAAC,GAAG,iBAA8C;QAChF,KAAK,MAAM,gBAAgB,IAAI,iBAAiB,EAAE,CAAC;YAC/C,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;YACrF,MAAM,cAAc,GAAG,GAAG,EAAE;gBACxB,IAAI,gBAAgB,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;oBACnC,OAAO,IAAI,CAAC,MAAM,CAAC;gBACvB,CAAC;gBACD,IAAI,gBAAgB,CAAC,MAAM,EAAE,CAAC;oBAC1B,OAAO,gBAAgB,CAAC,MAAM,CAAC;gBACnC,CAAC;gBACD,OAAO,SAAS,CAAC;YACrB,CAAC,CAAC;YAEF,IAAI,KAAK,EAAE,CAAC;gBACR,IAAI,CAAC,CAAC,KAAK,YAAY,yCAAc,CAAC,EAAE,CAAC;oBACrC,OAAO,CAAC,IAAI,CAAC,oBAAoB,gBAAgB,CAAC,EAAE,4BAA4B,CAAC,CAAC;oBAClF,SAAS;gBACb,CAAC;gBACD,KAAK,CAAC,KAAK,GAAG,gBAAgB,CAAC,KAAK,CAAC;gBACrC,KAAK,CAAC,eAAe,GAAG,gBAAgB,CAAC,eAAe,CAAC;gBACzD,KAAK,CAAC,MAAM,GAAG,cAAc,CAAC;gBAC9B,
|
|
1
|
+
{"version":3,"file":"anthropic-language-models-manager-impl.js","sourceRoot":"","sources":["../../src/node/anthropic-language-models-manager-impl.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,4CAAuD;AACvD,4DAAkE;AAClE,yEAAgF;AAIzE,IAAM,kCAAkC,GAAxC,MAAM,kCAAkC;IAO3C,IAAI,MAAM;;QACN,OAAO,MAAA,IAAI,CAAC,OAAO,mCAAI,OAAO,CAAC,GAAG,CAAC,iBAAiB,CAAC;IACzD,CAAC;IAED,KAAK,CAAC,4BAA4B,CAAC,GAAG,iBAA8C;QAChF,KAAK,MAAM,gBAAgB,IAAI,iBAAiB,EAAE,CAAC;YAC/C,MAAM,KAAK,GAAG,MAAM,IAAI,CAAC,qBAAqB,CAAC,gBAAgB,CAAC,gBAAgB,CAAC,EAAE,CAAC,CAAC;YACrF,MAAM,cAAc,GAAG,GAAG,EAAE;gBACxB,IAAI,gBAAgB,CAAC,MAAM,KAAK,IAAI,EAAE,CAAC;oBACnC,OAAO,IAAI,CAAC,MAAM,CAAC;gBACvB,CAAC;gBACD,IAAI,gBAAgB,CAAC,MAAM,EAAE,CAAC;oBAC1B,OAAO,gBAAgB,CAAC,MAAM,CAAC;gBACnC,CAAC;gBACD,OAAO,SAAS,CAAC;YACrB,CAAC,CAAC;YAEF,IAAI,KAAK,EAAE,CAAC;gBACR,IAAI,CAAC,CAAC,KAAK,YAAY,yCAAc,CAAC,EAAE,CAAC;oBACrC,OAAO,CAAC,IAAI,CAAC,oBAAoB,gBAAgB,CAAC,EAAE,4BAA4B,CAAC,CAAC;oBAClF,SAAS;gBACb,CAAC;gBACD,KAAK,CAAC,KAAK,GAAG,gBAAgB,CAAC,KAAK,CAAC;gBACrC,KAAK,CAAC,eAAe,GAAG,gBAAgB,CAAC,eAAe,CAAC;gBACzD,KAAK,CAAC,MAAM,GAAG,cAAc,CAAC;gBAC9B,IAAI,gBAAgB,CAAC,SAAS,KAAK,SAAS,EAAE,CAAC;oBAC3C,KAAK,CAAC,SAAS,GAAG,gBAAgB,CAAC,SAAS,CAAC;gBACjD,CAAC;qBAAM,CAAC;oBACJ,KAAK,CAAC,SAAS,GAAG,6CAAkB,CAAC;gBACzC,CAAC;YACL,CAAC;iBAAM,CAAC;gBACJ,IAAI,CAAC,qBAAqB,CAAC,iBAAiB,CAAC;oBACzC,IAAI,yCAAc,CACd,gBAAgB,CAAC,EAAE,EACnB,gBAAgB,CAAC,KAAK,EACtB,gBAAgB,CAAC,eAAe,EAChC,cAAc,EACd,gBAAgB,CAAC,SAAS,CAC7B;iBACJ,CAAC,CAAC;YACP,CAAC;QACL,CAAC;IACL,CAAC;IAED,oBAAoB,CAAC,GAAG,QAAkB;QACtC,IAAI,CAAC,qBAAqB,CAAC,oBAAoB,CAAC,QAAQ,CAAC,CAAC;IAC9D,CAAC;IAED,SAAS,CAAC,MAA0B;QAChC,IAAI,MAAM,EAAE,CAAC;YACT,IAAI,CAAC,OAAO,GAAG,MAAM,CAAC;QAC1B,CAAC;aAAM,CAAC;YACJ,IAAI,CAAC,OAAO,GAAG,SAAS,CAAC;QAC7B,CAAC;IACL,CAAC;CACJ,CAAA;AA9DY,gFAAkC;AAKxB;IADlB,IAAA,kBAAM,EAAC,+BAAqB,CAAC;;iFACkC;6CALvD,kCAAkC;IAD9C,IAAA,sBAAU,GAAE;GACA,kCAAkC,CA8D9C"}
|
package/package.json
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@theia/ai-anthropic",
|
|
3
|
-
"version": "1.60.
|
|
3
|
+
"version": "1.60.1",
|
|
4
4
|
"description": "Theia - Anthropic Integration",
|
|
5
5
|
"dependencies": {
|
|
6
|
-
"@anthropic-ai/sdk": "^0.
|
|
7
|
-
"@theia/ai-core": "1.60.
|
|
8
|
-
"@theia/core": "1.60.
|
|
6
|
+
"@anthropic-ai/sdk": "^0.39.0",
|
|
7
|
+
"@theia/ai-core": "1.60.1",
|
|
8
|
+
"@theia/core": "1.60.1"
|
|
9
9
|
},
|
|
10
10
|
"publishConfig": {
|
|
11
11
|
"access": "public"
|
|
@@ -41,10 +41,10 @@
|
|
|
41
41
|
"watch": "theiaext watch"
|
|
42
42
|
},
|
|
43
43
|
"devDependencies": {
|
|
44
|
-
"@theia/ext-scripts": "1.
|
|
44
|
+
"@theia/ext-scripts": "1.60.1"
|
|
45
45
|
},
|
|
46
46
|
"nyc": {
|
|
47
47
|
"extends": "../../configs/nyc.json"
|
|
48
48
|
},
|
|
49
|
-
"gitHead": "
|
|
49
|
+
"gitHead": "23230a4ff18bb6b4c09e08c1a40ae1ebdb20ff69"
|
|
50
50
|
}
|
|
@@ -18,7 +18,6 @@ import { FrontendApplicationContribution, PreferenceService } from '@theia/core/
|
|
|
18
18
|
import { inject, injectable } from '@theia/core/shared/inversify';
|
|
19
19
|
import { AnthropicLanguageModelsManager, AnthropicModelDescription } from '../common';
|
|
20
20
|
import { API_KEY_PREF, MODELS_PREF } from './anthropic-preferences';
|
|
21
|
-
import { PREFERENCE_NAME_REQUEST_SETTINGS, RequestSetting } from '@theia/ai-core/lib/browser/ai-core-preferences';
|
|
22
21
|
|
|
23
22
|
const ANTHROPIC_PROVIDER_ID = 'anthropic';
|
|
24
23
|
|
|
@@ -47,8 +46,7 @@ export class AnthropicFrontendApplicationContribution implements FrontendApplica
|
|
|
47
46
|
this.manager.setApiKey(apiKey);
|
|
48
47
|
|
|
49
48
|
const models = this.preferenceService.get<string[]>(MODELS_PREF, []);
|
|
50
|
-
|
|
51
|
-
this.manager.createOrUpdateLanguageModels(...models.map(modelId => this.createAnthropicModelDescription(modelId, requestSettings)));
|
|
49
|
+
this.manager.createOrUpdateLanguageModels(...models.map(modelId => this.createAnthropicModelDescription(modelId)));
|
|
52
50
|
this.prevModels = [...models];
|
|
53
51
|
|
|
54
52
|
this.preferenceService.onPreferenceChanged(event => {
|
|
@@ -56,8 +54,6 @@ export class AnthropicFrontendApplicationContribution implements FrontendApplica
|
|
|
56
54
|
this.manager.setApiKey(event.newValue);
|
|
57
55
|
} else if (event.preferenceName === MODELS_PREF) {
|
|
58
56
|
this.handleModelChanges(event.newValue as string[]);
|
|
59
|
-
} else if (event.preferenceName === PREFERENCE_NAME_REQUEST_SETTINGS) {
|
|
60
|
-
this.handleRequestSettingsChanges(event.newValue as RequestSetting[]);
|
|
61
57
|
}
|
|
62
58
|
});
|
|
63
59
|
});
|
|
@@ -71,31 +67,19 @@ export class AnthropicFrontendApplicationContribution implements FrontendApplica
|
|
|
71
67
|
const modelsToAdd = [...updatedModels].filter(model => !oldModels.has(model));
|
|
72
68
|
|
|
73
69
|
this.manager.removeLanguageModels(...modelsToRemove.map(model => `${ANTHROPIC_PROVIDER_ID}/${model}`));
|
|
74
|
-
|
|
75
|
-
this.manager.createOrUpdateLanguageModels(...modelsToAdd.map(modelId => this.createAnthropicModelDescription(modelId, requestSettings)));
|
|
70
|
+
this.manager.createOrUpdateLanguageModels(...modelsToAdd.map(modelId => this.createAnthropicModelDescription(modelId)));
|
|
76
71
|
this.prevModels = newModels;
|
|
77
72
|
}
|
|
78
73
|
|
|
79
|
-
|
|
80
|
-
return this.preferenceService.get<RequestSetting[]>(PREFERENCE_NAME_REQUEST_SETTINGS, []);
|
|
81
|
-
}
|
|
82
|
-
|
|
83
|
-
protected handleRequestSettingsChanges(newSettings: RequestSetting[]): void {
|
|
84
|
-
const models = this.preferenceService.get<string[]>(MODELS_PREF, []);
|
|
85
|
-
this.manager.createOrUpdateLanguageModels(...models.map(modelId => this.createAnthropicModelDescription(modelId, newSettings)));
|
|
86
|
-
}
|
|
87
|
-
|
|
88
|
-
protected createAnthropicModelDescription(modelId: string, requestSettings: RequestSetting[]): AnthropicModelDescription {
|
|
74
|
+
protected createAnthropicModelDescription(modelId: string): AnthropicModelDescription {
|
|
89
75
|
const id = `${ANTHROPIC_PROVIDER_ID}/${modelId}`;
|
|
90
|
-
const modelRequestSetting = this.getMatchingRequestSetting(modelId, ANTHROPIC_PROVIDER_ID, requestSettings);
|
|
91
76
|
const maxTokens = DEFAULT_MODEL_MAX_TOKENS[modelId];
|
|
92
77
|
|
|
93
78
|
const description: AnthropicModelDescription = {
|
|
94
79
|
id: id,
|
|
95
80
|
model: modelId,
|
|
96
81
|
apiKey: true,
|
|
97
|
-
enableStreaming: true
|
|
98
|
-
defaultRequestSettings: modelRequestSetting?.requestSettings
|
|
82
|
+
enableStreaming: true
|
|
99
83
|
};
|
|
100
84
|
|
|
101
85
|
if (maxTokens !== undefined) {
|
|
@@ -104,20 +88,4 @@ export class AnthropicFrontendApplicationContribution implements FrontendApplica
|
|
|
104
88
|
|
|
105
89
|
return description;
|
|
106
90
|
}
|
|
107
|
-
|
|
108
|
-
protected getMatchingRequestSetting(
|
|
109
|
-
modelId: string,
|
|
110
|
-
providerId: string,
|
|
111
|
-
requestSettings: RequestSetting[]
|
|
112
|
-
): RequestSetting | undefined {
|
|
113
|
-
const matchingSettings = requestSettings.filter(
|
|
114
|
-
setting => (!setting.providerId || setting.providerId === providerId) && setting.modelId === modelId
|
|
115
|
-
);
|
|
116
|
-
if (matchingSettings.length > 1) {
|
|
117
|
-
console.warn(
|
|
118
|
-
`Multiple entries found for provider "${providerId}" and model "${modelId}". Using the first match.`
|
|
119
|
-
);
|
|
120
|
-
}
|
|
121
|
-
return matchingSettings[0];
|
|
122
|
-
}
|
|
123
91
|
}
|
|
@@ -36,10 +36,7 @@ export interface AnthropicModelDescription {
|
|
|
36
36
|
* Maximum number of tokens to generate. Default is 4096.
|
|
37
37
|
*/
|
|
38
38
|
maxTokens?: number;
|
|
39
|
-
|
|
40
|
-
* Default request settings for the Anthropic model.
|
|
41
|
-
*/
|
|
42
|
-
defaultRequestSettings?: { [key: string]: unknown };
|
|
39
|
+
|
|
43
40
|
}
|
|
44
41
|
export interface AnthropicLanguageModelsManager {
|
|
45
42
|
apiKey: string | undefined;
|
|
@@ -17,7 +17,7 @@
|
|
|
17
17
|
import {
|
|
18
18
|
LanguageModel,
|
|
19
19
|
LanguageModelRequest,
|
|
20
|
-
|
|
20
|
+
LanguageModelMessage,
|
|
21
21
|
LanguageModelResponse,
|
|
22
22
|
LanguageModelStreamResponse,
|
|
23
23
|
LanguageModelStreamResponsePart,
|
|
@@ -25,14 +25,9 @@ import {
|
|
|
25
25
|
} from '@theia/ai-core';
|
|
26
26
|
import { CancellationToken, isArray } from '@theia/core';
|
|
27
27
|
import { Anthropic } from '@anthropic-ai/sdk';
|
|
28
|
-
import { MessageParam } from '@anthropic-ai/sdk/resources';
|
|
28
|
+
import { Message, MessageParam } from '@anthropic-ai/sdk/resources';
|
|
29
29
|
|
|
30
30
|
export const DEFAULT_MAX_TOKENS = 4096;
|
|
31
|
-
const EMPTY_INPUT_SCHEMA = {
|
|
32
|
-
type: 'object',
|
|
33
|
-
properties: {},
|
|
34
|
-
required: []
|
|
35
|
-
} as const;
|
|
36
31
|
|
|
37
32
|
interface ToolCallback {
|
|
38
33
|
readonly name: string;
|
|
@@ -41,23 +36,36 @@ interface ToolCallback {
|
|
|
41
36
|
args: string;
|
|
42
37
|
}
|
|
43
38
|
|
|
39
|
+
const createMessageContent = (message: LanguageModelMessage): MessageParam['content'] => {
|
|
40
|
+
if (LanguageModelMessage.isTextMessage(message)) {
|
|
41
|
+
return message.text;
|
|
42
|
+
} else if (LanguageModelMessage.isThinkingMessage(message)) {
|
|
43
|
+
return [{ signature: message.signature, thinking: message.thinking, type: 'thinking' }];
|
|
44
|
+
} else if (LanguageModelMessage.isToolUseMessage(message)) {
|
|
45
|
+
return [{ id: message.id, input: message.input, name: message.name, type: 'tool_use' }];
|
|
46
|
+
} else if (LanguageModelMessage.isToolResultMessage(message)) {
|
|
47
|
+
return [{ type: 'tool_result', tool_use_id: message.tool_use_id }];
|
|
48
|
+
}
|
|
49
|
+
throw new Error(`Unknown message type:'${JSON.stringify(message)}'`);
|
|
50
|
+
};
|
|
51
|
+
|
|
44
52
|
/**
|
|
45
53
|
* Transforms Theia language model messages to Anthropic API format
|
|
46
54
|
* @param messages Array of LanguageModelRequestMessage to transform
|
|
47
55
|
* @returns Object containing transformed messages and optional system message
|
|
48
56
|
*/
|
|
49
57
|
function transformToAnthropicParams(
|
|
50
|
-
messages: readonly
|
|
58
|
+
messages: readonly LanguageModelMessage[]
|
|
51
59
|
): { messages: MessageParam[]; systemMessage?: string } {
|
|
52
60
|
// Extract the system message (if any), as it is a separate parameter in the Anthropic API.
|
|
53
61
|
const systemMessageObj = messages.find(message => message.actor === 'system');
|
|
54
|
-
const systemMessage = systemMessageObj
|
|
62
|
+
const systemMessage = systemMessageObj && LanguageModelMessage.isTextMessage(systemMessageObj) && systemMessageObj.text || undefined;
|
|
55
63
|
|
|
56
64
|
const convertedMessages = messages
|
|
57
65
|
.filter(message => message.actor !== 'system')
|
|
58
66
|
.map(message => ({
|
|
59
67
|
role: toAnthropicRole(message),
|
|
60
|
-
content: message
|
|
68
|
+
content: createMessageContent(message)
|
|
61
69
|
}));
|
|
62
70
|
|
|
63
71
|
return {
|
|
@@ -73,7 +81,7 @@ export const AnthropicModelIdentifier = Symbol('AnthropicModelIdentifier');
|
|
|
73
81
|
* @param message The message to convert
|
|
74
82
|
* @returns Anthropic role ('user' or 'assistant')
|
|
75
83
|
*/
|
|
76
|
-
function toAnthropicRole(message:
|
|
84
|
+
function toAnthropicRole(message: LanguageModelMessage): 'user' | 'assistant' {
|
|
77
85
|
switch (message.actor) {
|
|
78
86
|
case 'ai':
|
|
79
87
|
return 'assistant';
|
|
@@ -92,12 +100,11 @@ export class AnthropicModel implements LanguageModel {
|
|
|
92
100
|
public model: string,
|
|
93
101
|
public enableStreaming: boolean,
|
|
94
102
|
public apiKey: () => string | undefined,
|
|
95
|
-
public defaultRequestSettings?: Readonly<Record<string, unknown>>,
|
|
96
103
|
public maxTokens: number = DEFAULT_MAX_TOKENS
|
|
97
104
|
) { }
|
|
98
105
|
|
|
99
106
|
protected getSettings(request: LanguageModelRequest): Readonly<Record<string, unknown>> {
|
|
100
|
-
return request.settings ??
|
|
107
|
+
return request.settings ?? {};
|
|
101
108
|
}
|
|
102
109
|
|
|
103
110
|
async request(request: LanguageModelRequest, cancellationToken?: CancellationToken): Promise<LanguageModelResponse> {
|
|
@@ -148,11 +155,11 @@ export class AnthropicModel implements LanguageModel {
|
|
|
148
155
|
max_tokens: this.maxTokens,
|
|
149
156
|
messages: [...messages, ...(toolMessages ?? [])],
|
|
150
157
|
tools,
|
|
158
|
+
tool_choice: tools ? { type: 'auto' } : undefined,
|
|
151
159
|
model: this.model,
|
|
152
160
|
...(systemMessage && { system: systemMessage }),
|
|
153
161
|
...settings
|
|
154
162
|
};
|
|
155
|
-
|
|
156
163
|
const stream = anthropic.messages.stream(params);
|
|
157
164
|
|
|
158
165
|
cancellationToken?.onCancellationRequested(() => {
|
|
@@ -165,11 +172,15 @@ export class AnthropicModel implements LanguageModel {
|
|
|
165
172
|
|
|
166
173
|
const toolCalls: ToolCallback[] = [];
|
|
167
174
|
let toolCall: ToolCallback | undefined;
|
|
175
|
+
const currentMessages: Message[] = [];
|
|
168
176
|
|
|
169
177
|
for await (const event of stream) {
|
|
170
178
|
if (event.type === 'content_block_start') {
|
|
171
179
|
const contentBlock = event.content_block;
|
|
172
180
|
|
|
181
|
+
if (contentBlock.type === 'thinking') {
|
|
182
|
+
yield { thought: contentBlock.thinking, signature: contentBlock.signature ?? '' };
|
|
183
|
+
}
|
|
173
184
|
if (contentBlock.type === 'text') {
|
|
174
185
|
yield { content: contentBlock.text };
|
|
175
186
|
}
|
|
@@ -179,7 +190,12 @@ export class AnthropicModel implements LanguageModel {
|
|
|
179
190
|
}
|
|
180
191
|
} else if (event.type === 'content_block_delta') {
|
|
181
192
|
const delta = event.delta;
|
|
182
|
-
|
|
193
|
+
if (delta.type === 'thinking_delta') {
|
|
194
|
+
yield { thought: delta.thinking, signature: '' };
|
|
195
|
+
}
|
|
196
|
+
if (delta.type === 'signature_delta') {
|
|
197
|
+
yield { thought: '', signature: delta.signature };
|
|
198
|
+
}
|
|
183
199
|
if (delta.type === 'text_delta') {
|
|
184
200
|
yield { content: delta.text };
|
|
185
201
|
}
|
|
@@ -199,6 +215,8 @@ export class AnthropicModel implements LanguageModel {
|
|
|
199
215
|
}
|
|
200
216
|
throw new Error(`The response was stopped because it exceeded the max token limit of ${event.usage.output_tokens}.`);
|
|
201
217
|
}
|
|
218
|
+
} else if (event.type === 'message_start') {
|
|
219
|
+
currentMessages.push(event.message);
|
|
202
220
|
}
|
|
203
221
|
}
|
|
204
222
|
if (toolCalls.length > 0) {
|
|
@@ -216,17 +234,6 @@ export class AnthropicModel implements LanguageModel {
|
|
|
216
234
|
});
|
|
217
235
|
yield { tool_calls: calls };
|
|
218
236
|
|
|
219
|
-
const toolRequestMessage: Anthropic.Messages.MessageParam = {
|
|
220
|
-
role: 'assistant',
|
|
221
|
-
content: toolResult.map(call => ({
|
|
222
|
-
|
|
223
|
-
type: 'tool_use',
|
|
224
|
-
id: call.id,
|
|
225
|
-
name: call.name,
|
|
226
|
-
input: JSON.parse(call.arguments)
|
|
227
|
-
}))
|
|
228
|
-
};
|
|
229
|
-
|
|
230
237
|
const toolResponseMessage: Anthropic.Messages.MessageParam = {
|
|
231
238
|
role: 'user',
|
|
232
239
|
content: toolResult.map(call => ({
|
|
@@ -235,7 +242,15 @@ export class AnthropicModel implements LanguageModel {
|
|
|
235
242
|
content: that.formatToolCallResult(call.result)
|
|
236
243
|
}))
|
|
237
244
|
};
|
|
238
|
-
const result = await that.handleStreamingRequest(
|
|
245
|
+
const result = await that.handleStreamingRequest(
|
|
246
|
+
anthropic,
|
|
247
|
+
request,
|
|
248
|
+
cancellationToken,
|
|
249
|
+
[
|
|
250
|
+
...(toolMessages ?? []),
|
|
251
|
+
...currentMessages.map(m => ({ role: m.role, content: m.content })),
|
|
252
|
+
toolResponseMessage
|
|
253
|
+
]);
|
|
239
254
|
for await (const nestedEvent of result.stream) {
|
|
240
255
|
yield nestedEvent;
|
|
241
256
|
}
|
|
@@ -251,10 +266,13 @@ export class AnthropicModel implements LanguageModel {
|
|
|
251
266
|
}
|
|
252
267
|
|
|
253
268
|
private createTools(request: LanguageModelRequest): Anthropic.Messages.Tool[] | undefined {
|
|
269
|
+
if (request.tools?.length === 0) {
|
|
270
|
+
return undefined;
|
|
271
|
+
}
|
|
254
272
|
return request.tools?.map(tool => ({
|
|
255
273
|
name: tool.name,
|
|
256
274
|
description: tool.description,
|
|
257
|
-
input_schema: tool.parameters
|
|
275
|
+
input_schema: tool.parameters
|
|
258
276
|
} as Anthropic.Messages.Tool));
|
|
259
277
|
}
|
|
260
278
|
|
|
@@ -52,7 +52,6 @@ export class AnthropicLanguageModelsManagerImpl implements AnthropicLanguageMode
|
|
|
52
52
|
model.model = modelDescription.model;
|
|
53
53
|
model.enableStreaming = modelDescription.enableStreaming;
|
|
54
54
|
model.apiKey = apiKeyProvider;
|
|
55
|
-
model.defaultRequestSettings = modelDescription.defaultRequestSettings;
|
|
56
55
|
if (modelDescription.maxTokens !== undefined) {
|
|
57
56
|
model.maxTokens = modelDescription.maxTokens;
|
|
58
57
|
} else {
|
|
@@ -65,7 +64,6 @@ export class AnthropicLanguageModelsManagerImpl implements AnthropicLanguageMode
|
|
|
65
64
|
modelDescription.model,
|
|
66
65
|
modelDescription.enableStreaming,
|
|
67
66
|
apiKeyProvider,
|
|
68
|
-
modelDescription.defaultRequestSettings,
|
|
69
67
|
modelDescription.maxTokens
|
|
70
68
|
)
|
|
71
69
|
]);
|