@opensumi/ide-ai-native 3.8.1-next-1741061006.0 → 3.8.1-next-1741074512.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.
Files changed (56) hide show
  1. package/lib/browser/ai-core.contribution.d.ts +3 -0
  2. package/lib/browser/ai-core.contribution.d.ts.map +1 -1
  3. package/lib/browser/ai-core.contribution.js +45 -1
  4. package/lib/browser/ai-core.contribution.js.map +1 -1
  5. package/lib/browser/chat/chat-proxy.service.d.ts.map +1 -1
  6. package/lib/browser/chat/chat-proxy.service.js +8 -2
  7. package/lib/browser/chat/chat-proxy.service.js.map +1 -1
  8. package/lib/browser/contrib/intelligent-completions/intelligent-completions.controller.js +1 -1
  9. package/lib/browser/contrib/intelligent-completions/intelligent-completions.controller.js.map +1 -1
  10. package/lib/browser/contrib/intelligent-completions/view/default.d.ts.map +1 -1
  11. package/lib/browser/contrib/intelligent-completions/view/default.js +0 -6
  12. package/lib/browser/contrib/intelligent-completions/view/default.js.map +1 -1
  13. package/lib/browser/preferences/schema.d.ts.map +1 -1
  14. package/lib/browser/preferences/schema.js +6 -1
  15. package/lib/browser/preferences/schema.js.map +1 -1
  16. package/lib/common/index.d.ts +1 -0
  17. package/lib/common/index.d.ts.map +1 -1
  18. package/lib/common/index.js +2 -0
  19. package/lib/common/index.js.map +1 -1
  20. package/lib/common/model.d.ts +12 -0
  21. package/lib/common/model.d.ts.map +1 -0
  22. package/lib/common/model.js +83 -0
  23. package/lib/common/model.js.map +1 -0
  24. package/lib/node/anthropic/anthropic-language-model.d.ts +3 -1
  25. package/lib/node/anthropic/anthropic-language-model.d.ts.map +1 -1
  26. package/lib/node/anthropic/anthropic-language-model.js +6 -2
  27. package/lib/node/anthropic/anthropic-language-model.js.map +1 -1
  28. package/lib/node/base-language-model.d.ts +4 -1
  29. package/lib/node/base-language-model.d.ts.map +1 -1
  30. package/lib/node/base-language-model.js +6 -5
  31. package/lib/node/base-language-model.js.map +1 -1
  32. package/lib/node/deepseek/deepseek-language-model.d.ts +3 -1
  33. package/lib/node/deepseek/deepseek-language-model.d.ts.map +1 -1
  34. package/lib/node/deepseek/deepseek-language-model.js +6 -2
  35. package/lib/node/deepseek/deepseek-language-model.js.map +1 -1
  36. package/lib/node/openai/openai-language-model.d.ts +5 -4
  37. package/lib/node/openai/openai-language-model.d.ts.map +1 -1
  38. package/lib/node/openai/openai-language-model.js +8 -7
  39. package/lib/node/openai/openai-language-model.js.map +1 -1
  40. package/lib/node/openai-compatible/openai-compatible-language-model.d.ts +10 -0
  41. package/lib/node/openai-compatible/openai-compatible-language-model.d.ts.map +1 -0
  42. package/lib/node/openai-compatible/openai-compatible-language-model.js +32 -0
  43. package/lib/node/openai-compatible/openai-compatible-language-model.js.map +1 -0
  44. package/package.json +24 -23
  45. package/src/browser/ai-core.contribution.ts +57 -1
  46. package/src/browser/chat/chat-proxy.service.ts +7 -2
  47. package/src/browser/contrib/intelligent-completions/intelligent-completions.controller.ts +1 -1
  48. package/src/browser/contrib/intelligent-completions/view/default.ts +0 -7
  49. package/src/browser/preferences/schema.ts +6 -1
  50. package/src/common/index.ts +2 -0
  51. package/src/common/model.ts +90 -0
  52. package/src/node/anthropic/anthropic-language-model.ts +7 -2
  53. package/src/node/base-language-model.ts +9 -9
  54. package/src/node/deepseek/deepseek-language-model.ts +7 -2
  55. package/src/node/openai/openai-language-model.ts +10 -9
  56. package/src/node/openai-compatible/openai-compatible-language-model.ts +30 -0
@@ -4,6 +4,7 @@ import { Injectable } from '@opensumi/di';
4
4
  import { IAIBackServiceOption } from '@opensumi/ide-core-common';
5
5
  import { AINativeSettingSectionsId } from '@opensumi/ide-core-common/lib/settings/ai-native';
6
6
 
7
+ import { ModelInfo, anthropicModels } from '../../common/model';
7
8
  import { BaseLanguageModel } from '../base-language-model';
8
9
 
9
10
  export const AnthropicModelIdentifier = Symbol('AnthropicModelIdentifier');
@@ -19,7 +20,11 @@ export class AnthropicModel extends BaseLanguageModel {
19
20
  return createAnthropic({ apiKey });
20
21
  }
21
22
 
22
- protected getModelIdentifier(provider: AnthropicProvider) {
23
- return provider('claude-3-5-sonnet-20241022');
23
+ protected getModelIdentifier(provider: AnthropicProvider, modelId = 'claude-3-5-sonnet-20241022') {
24
+ return provider(modelId);
25
+ }
26
+
27
+ protected getModelInfo(modelId: string): ModelInfo | undefined {
28
+ return anthropicModels[modelId];
24
29
  }
25
30
  }
@@ -5,6 +5,7 @@ import { ChatMessageRole, IAIBackServiceOption, IChatMessage } from '@opensumi/i
5
5
  import { ChatReadableStream } from '@opensumi/ide-core-node';
6
6
  import { CancellationToken } from '@opensumi/ide-utils';
7
7
 
8
+ import { ModelInfo } from '../common';
8
9
  import {
9
10
  IToolInvocationRegistryManager,
10
11
  ToolInvocationRegistryManager,
@@ -13,6 +14,8 @@ import {
13
14
 
14
15
  @Injectable()
15
16
  export abstract class BaseLanguageModel {
17
+ static ModelOptions: Record<string, ModelInfo>;
18
+
16
19
  @Autowired(ToolInvocationRegistryManager)
17
20
  protected readonly toolInvocationRegistryManager: IToolInvocationRegistryManager;
18
21
 
@@ -56,9 +59,6 @@ export abstract class BaseLanguageModel {
56
59
  chatReadableStream,
57
60
  options.history || [],
58
61
  options.modelId,
59
- options.temperature,
60
- options.topP,
61
- options.topK,
62
62
  options.providerOptions,
63
63
  options.trimTexts,
64
64
  cancellationToken,
@@ -77,6 +77,8 @@ export abstract class BaseLanguageModel {
77
77
 
78
78
  protected abstract getModelIdentifier(provider: any, modelId?: string): any;
79
79
 
80
+ protected abstract getModelInfo(modelId: string): ModelInfo | undefined;
81
+
80
82
  protected async handleStreamingRequest(
81
83
  provider: any,
82
84
  request: string,
@@ -84,9 +86,6 @@ export abstract class BaseLanguageModel {
84
86
  chatReadableStream: ChatReadableStream,
85
87
  history: IChatMessage[] = [],
86
88
  modelId?: string,
87
- temperature?: number,
88
- topP?: number,
89
- topK?: number,
90
89
  providerOptions?: Record<string, any>,
91
90
  trimTexts?: [string, string],
92
91
  cancellationToken?: CancellationToken,
@@ -108,6 +107,7 @@ export abstract class BaseLanguageModel {
108
107
  })),
109
108
  { role: 'user', content: request },
110
109
  ];
110
+ const modelInfo = modelId ? this.getModelInfo(modelId) : undefined;
111
111
  const stream = streamText({
112
112
  model: this.getModelIdentifier(provider, modelId),
113
113
  maxTokens: 4096,
@@ -116,9 +116,9 @@ export abstract class BaseLanguageModel {
116
116
  abortSignal: abortController.signal,
117
117
  experimental_toolCallStreaming: true,
118
118
  maxSteps: 12,
119
- temperature,
120
- topP: topP || 0.8,
121
- topK: topK || 1,
119
+ temperature: modelInfo?.temperature || 0,
120
+ topP: modelInfo?.topP || 0.8,
121
+ topK: modelInfo?.topK || 1,
122
122
  providerOptions,
123
123
  });
124
124
 
@@ -4,6 +4,7 @@ import { Injectable } from '@opensumi/di';
4
4
  import { IAIBackServiceOption } from '@opensumi/ide-core-common';
5
5
  import { AINativeSettingSectionsId } from '@opensumi/ide-core-common/lib/settings/ai-native';
6
6
 
7
+ import { ModelInfo, deepSeekModels } from '../../common';
7
8
  import { BaseLanguageModel } from '../base-language-model';
8
9
 
9
10
  export const DeepSeekModelIdentifier = Symbol('DeepSeekModelIdentifier');
@@ -19,7 +20,11 @@ export class DeepSeekModel extends BaseLanguageModel {
19
20
  return createDeepSeek({ apiKey });
20
21
  }
21
22
 
22
- protected getModelIdentifier(provider: DeepSeekProvider) {
23
- return provider('deepseek-chat');
23
+ protected getModelIdentifier(provider: DeepSeekProvider, modelId = 'deepseek-chat') {
24
+ return provider(modelId);
25
+ }
26
+
27
+ protected getModelInfo(modelId: string): ModelInfo | undefined {
28
+ return deepSeekModels[modelId];
24
29
  }
25
30
  }
@@ -1,28 +1,29 @@
1
- import { OpenAICompatibleProvider, createOpenAICompatible } from '@ai-sdk/openai-compatible';
1
+ import { OpenAIProvider, createOpenAI } from '@ai-sdk/openai';
2
2
  import { LanguageModelV1 } from 'ai';
3
3
 
4
4
  import { Injectable } from '@opensumi/di';
5
5
  import { AINativeSettingSectionsId, IAIBackServiceOption } from '@opensumi/ide-core-common';
6
6
 
7
+ import { ModelInfo, openAiNativeModels } from '../../common/model';
7
8
  import { BaseLanguageModel } from '../base-language-model';
8
9
 
9
- export const DeepSeekModelIdentifier = Symbol('DeepSeekModelIdentifier');
10
-
11
10
  @Injectable()
12
11
  export class OpenAIModel extends BaseLanguageModel {
13
- protected initializeProvider(options: IAIBackServiceOption): OpenAICompatibleProvider {
12
+ protected initializeProvider(options: IAIBackServiceOption): OpenAIProvider {
14
13
  const apiKey = options.apiKey;
15
14
  if (!apiKey) {
16
15
  throw new Error(`Please provide OpenAI API Key in preferences (${AINativeSettingSectionsId.OpenaiApiKey})`);
17
16
  }
18
- return createOpenAICompatible({
17
+ return createOpenAI({
19
18
  apiKey,
20
- baseURL: options.baseURL || 'https://dashscope.aliyuncs.com/compatible-mode/v1',
21
- name: 'openai',
22
19
  });
23
20
  }
24
21
 
25
- protected getModelIdentifier(provider: OpenAICompatibleProvider, modelId?: string): LanguageModelV1 {
26
- return provider(modelId || 'qwen-max');
22
+ protected getModelIdentifier(provider: OpenAIProvider, modelId: string) {
23
+ return provider(modelId) as LanguageModelV1;
24
+ }
25
+
26
+ protected getModelInfo(modelId: string): ModelInfo | undefined {
27
+ return openAiNativeModels[modelId];
27
28
  }
28
29
  }
@@ -0,0 +1,30 @@
1
+ import { OpenAICompatibleProvider, createOpenAICompatible } from '@ai-sdk/openai-compatible';
2
+ import { LanguageModelV1 } from 'ai';
3
+
4
+ import { Injectable } from '@opensumi/di';
5
+ import { AINativeSettingSectionsId, IAIBackServiceOption } from '@opensumi/ide-core-common';
6
+
7
+ import { BaseLanguageModel } from '../base-language-model';
8
+
9
+ @Injectable()
10
+ export class OpenAICompatibleModel extends BaseLanguageModel {
11
+ protected initializeProvider(options: IAIBackServiceOption): OpenAICompatibleProvider {
12
+ const apiKey = options.apiKey;
13
+ if (!apiKey) {
14
+ throw new Error(`Please provide OpenAI API Key in preferences (${AINativeSettingSectionsId.OpenaiApiKey})`);
15
+ }
16
+ return createOpenAICompatible({
17
+ apiKey,
18
+ baseURL: options.baseURL || 'https://dashscope.aliyuncs.com/compatible-mode/v1',
19
+ name: 'openai',
20
+ });
21
+ }
22
+
23
+ protected getModelIdentifier(provider: OpenAICompatibleProvider, modelId = 'qwen-max'): LanguageModelV1 {
24
+ return provider(modelId);
25
+ }
26
+
27
+ protected getModelInfo() {
28
+ return undefined;
29
+ }
30
+ }