@theia/ai-ollama 1.71.0-next.8 → 1.71.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/ollama-frontend-application-contribution.d.ts.map +1 -1
- package/lib/browser/ollama-frontend-application-contribution.js +5 -1
- package/lib/browser/ollama-frontend-application-contribution.js.map +1 -1
- package/lib/common/ollama-language-models-manager.d.ts +12 -0
- package/lib/common/ollama-language-models-manager.d.ts.map +1 -1
- package/lib/common/ollama-language-models-manager.js +10 -1
- package/lib/common/ollama-language-models-manager.js.map +1 -1
- package/lib/node/ollama-language-model.d.ts +9 -32
- package/lib/node/ollama-language-model.d.ts.map +1 -1
- package/lib/node/ollama-language-model.js +39 -71
- package/lib/node/ollama-language-model.js.map +1 -1
- package/lib/node/ollama-language-models-manager-impl.d.ts +1 -2
- package/lib/node/ollama-language-models-manager-impl.d.ts.map +1 -1
- package/lib/node/ollama-language-models-manager-impl.js +3 -6
- package/lib/node/ollama-language-models-manager-impl.js.map +1 -1
- package/lib/node/ollama-reasoning.d.ts +8 -0
- package/lib/node/ollama-reasoning.d.ts.map +1 -0
- package/lib/node/ollama-reasoning.js +38 -0
- package/lib/node/ollama-reasoning.js.map +1 -0
- package/package.json +8 -8
- package/src/browser/ollama-frontend-application-contribution.ts +6 -2
- package/src/common/ollama-language-models-manager.ts +17 -0
- package/src/node/ollama-language-model.ts +47 -81
- package/src/node/ollama-language-models-manager-impl.ts +5 -7
- package/src/node/ollama-reasoning.ts +40 -0
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ollama-frontend-application-contribution.d.ts","sourceRoot":"","sources":["../../src/browser/ollama-frontend-application-contribution.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,+BAA+B,EAAE,MAAM,yBAAyB,CAAC;AAE1E,OAAO,
|
|
1
|
+
{"version":3,"file":"ollama-frontend-application-contribution.d.ts","sourceRoot":"","sources":["../../src/browser/ollama-frontend-application-contribution.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,+BAA+B,EAAE,MAAM,yBAAyB,CAAC;AAE1E,OAAO,EAA4B,2BAA2B,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AAE1G,OAAO,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAC;AAGhD,qBACa,qCAAsC,YAAW,+BAA+B;IAGzF,SAAS,CAAC,iBAAiB,EAAE,iBAAiB,CAAC;IAG/C,SAAS,CAAC,OAAO,EAAE,2BAA2B,CAAC;IAE/C,SAAS,CAAC,UAAU,EAAE,MAAM,EAAE,CAAM;IAEpC,OAAO,IAAI,IAAI;IA0Bf,SAAS,CAAC,eAAe,IAAI,IAAI;IAKjC,SAAS,CAAC,kBAAkB,CAAC,SAAS,EAAE,MAAM,EAAE,GAAG,IAAI;IAYvD,SAAS,CAAC,4BAA4B,CAAC,OAAO,EAAE,MAAM,GAAG,sBAAsB;CAYlF"}
|
|
@@ -67,7 +67,11 @@ let OllamaFrontendApplicationContribution = class OllamaFrontendApplicationContr
|
|
|
67
67
|
const id = `${OLLAMA_PROVIDER_ID}/${modelId}`;
|
|
68
68
|
return {
|
|
69
69
|
id: id,
|
|
70
|
-
model: modelId
|
|
70
|
+
model: modelId,
|
|
71
|
+
// Whether the underlying model supports thinking is checked per-request via `ollama.show`;
|
|
72
|
+
// for non-thinking models the reasoning level is silently ignored, so it's safe to always
|
|
73
|
+
// advertise reasoning support and let the runtime decide.
|
|
74
|
+
reasoningSupport: common_1.OLLAMA_REASONING_SUPPORT
|
|
71
75
|
};
|
|
72
76
|
}
|
|
73
77
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ollama-frontend-application-contribution.js","sourceRoot":"","sources":["../../src/browser/ollama-frontend-application-contribution.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,mCAAmC;AACnC,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;AAClE,
|
|
1
|
+
{"version":3,"file":"ollama-frontend-application-contribution.js","sourceRoot":"","sources":["../../src/browser/ollama-frontend-application-contribution.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,mCAAmC;AACnC,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;AAClE,sCAA0G;AAC1G,qEAAsE;AACtE,sCAAgD;AAEhD,MAAM,kBAAkB,GAAG,QAAQ,CAAC;AAE7B,IAAM,qCAAqC,GAA3C,MAAM,qCAAqC;IAA3C;QAQO,eAAU,GAAa,EAAE,CAAC;IAyDxC,CAAC;IAvDG,OAAO;QACH,IAAI,CAAC,iBAAiB,CAAC,KAAK,CAAC,IAAI,CAAC,GAAG,EAAE;YACnC,MAAM,IAAI,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAS,8BAAS,CAAC,CAAC;YAC3D,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,IAAI,SAAS,CAAC,CAAC;YAExC,MAAM,QAAQ,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAS,YAAY,EAAE,SAAS,CAAC,CAAC;YAC7E,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,QAAQ,CAAC,CAAC;YAEnC,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAW,gCAAW,EAAE,EAAE,CAAC,CAAC;YACrE,IAAI,CAAC,OAAO,CAAC,4BAA4B,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,4BAA4B,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;YAChH,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,8BAAS,EAAE,CAAC;oBACrC,IAAI,CAAC,OAAO,CAAC,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAS,8BAAS,CAAC,CAAC,CAAC;oBACpE,IAAI,CAAC,eAAe,EAAE,CAAC;gBAC3B,CAAC;qBAAM,IAAI,KAAK,CAAC,cAAc,KAAK,gCAAW,EAAE,CAAC;oBAC9C,IAAI,CAAC,kBAAkB,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAW,gCAAW,EAAE,EAAE,CAAC,CAAC,CAAC;gBACnF,CAAC;qBAAM,IAAI,KAAK,CAAC,cAAc,KAAK,YAAY,EAAE,CAAC;oBAC/C,IAAI,CAAC,OAAO,CAAC,WAAW,CAAC,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAS,YAAY,EAAE,SAAS,CAAC,CAAC,CAAC;oBACtF,IAAI,CAAC,eAAe,EAAE,CAAC;gBAC3B,CAAC;YACL,CAAC,CAAC,CAAC;QACP,CAAC,CAAC,CAAC;IACP,CAAC;IAES,eAAe;QACrB,MAAM,MAAM,GAAG,IAAI,CAAC,iBAAiB,CAAC,GAAG,CAAW,gCAAW,EAAE,EAAE,CAAC,CAAC;QACrE,IAAI,CAAC,OAAO,CAAC,4BAA4B,CAAC,GAAG,MAAM,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,4BAA4B,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;IACpH,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,CAAC;QACrD,IAAI,CAAC,OAAO,CAAC,4BAA4B,CAAC,GAAG,WAAW,CAAC,GAAG,CAAC,OAAO,CAAC,EAAE,CAAC,IAAI,CAAC,4BAA4B,CAAC,OAAO,CAAC,CAAC,CAAC,CAAC;QACrH,IAAI,CAAC,UAAU,GAAG,SAAS,CAAC;IAChC,CAAC;IAES,4BAA4B,CAAC,OAAe;QAClD,MAAM,EAAE,GAAG,GAAG,kBAAkB,IAAI,OAAO,EAAE,CAAC;QAE9C,OAAO;YACH,EAAE,EAAE,EAAE;YACN,KAAK,EAAE,OAAO;YACd,2FAA2F;YAC3F,0FAA0F;YAC1F,0DAA0D;YAC1D,gBAAgB,EAAE,iCAAwB;SAC7C,CAAC;IACN,CAAC;CACJ,CAAA;AAjEY,sFAAqC;AAGpC;IADT,IAAA,kBAAM,EAAC,wBAAiB,CAAC;;gFACqB;AAGrC;IADT,IAAA,kBAAM,EAAC,oCAA2B,CAAC;;sEACW;gDANtC,qCAAqC;IADjD,IAAA,sBAAU,GAAE;GACA,qCAAqC,CAiEjD"}
|
|
@@ -1,5 +1,12 @@
|
|
|
1
|
+
import { ReasoningSupport } from '@theia/ai-core';
|
|
1
2
|
export declare const OLLAMA_LANGUAGE_MODELS_MANAGER_PATH = "/services/ollama/language-model-manager";
|
|
2
3
|
export declare const OllamaLanguageModelsManager: unique symbol;
|
|
4
|
+
/**
|
|
5
|
+
* Coarse Ollama reasoning support advertised at registration time. Whether a given Ollama model
|
|
6
|
+
* actually supports thinking is discovered per-request via `ollama.show`; for models without it
|
|
7
|
+
* the selector value is silently ignored.
|
|
8
|
+
*/
|
|
9
|
+
export declare const OLLAMA_REASONING_SUPPORT: ReasoningSupport;
|
|
3
10
|
export interface OllamaModelDescription {
|
|
4
11
|
/**
|
|
5
12
|
* The identifier of the model which will be shown in the UI.
|
|
@@ -9,6 +16,11 @@ export interface OllamaModelDescription {
|
|
|
9
16
|
* The name or ID of the model in the Ollama environment.
|
|
10
17
|
*/
|
|
11
18
|
model: string;
|
|
19
|
+
/**
|
|
20
|
+
* When set, the chat exposes a reasoning selector for this model. Defaults to {@link OLLAMA_REASONING_SUPPORT};
|
|
21
|
+
* Ollama checks at request time whether the model supports thinking, so this is safe to leave on for any model.
|
|
22
|
+
*/
|
|
23
|
+
reasoningSupport?: ReasoningSupport;
|
|
12
24
|
}
|
|
13
25
|
export interface OllamaLanguageModelsManager {
|
|
14
26
|
host: string | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ollama-language-models-manager.d.ts","sourceRoot":"","sources":["../../src/common/ollama-language-models-manager.ts"],"names":[],"mappings":"AAgBA,eAAO,MAAM,mCAAmC,4CAA4C,CAAC;AAC7F,eAAO,MAAM,2BAA2B,eAAwC,CAAC;AAEjF,MAAM,WAAW,sBAAsB;IACnC;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IACX;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;
|
|
1
|
+
{"version":3,"file":"ollama-language-models-manager.d.ts","sourceRoot":"","sources":["../../src/common/ollama-language-models-manager.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,gBAAgB,EAAE,MAAM,gBAAgB,CAAC;AAElD,eAAO,MAAM,mCAAmC,4CAA4C,CAAC;AAC7F,eAAO,MAAM,2BAA2B,eAAwC,CAAC;AAEjF;;;;GAIG;AACH,eAAO,MAAM,wBAAwB,EAAE,gBAGtC,CAAC;AAEF,MAAM,WAAW,sBAAsB;IACnC;;OAEG;IACH,EAAE,EAAE,MAAM,CAAC;IACX;;OAEG;IACH,KAAK,EAAE,MAAM,CAAC;IACd;;;OAGG;IACH,gBAAgB,CAAC,EAAE,gBAAgB,CAAC;CACvC;AAED,MAAM,WAAW,2BAA2B;IACxC,IAAI,EAAE,MAAM,GAAG,SAAS,CAAC;IACzB,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC,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,CAAC;CACrD"}
|
|
@@ -15,7 +15,16 @@
|
|
|
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.OllamaLanguageModelsManager = exports.OLLAMA_LANGUAGE_MODELS_MANAGER_PATH = void 0;
|
|
18
|
+
exports.OLLAMA_REASONING_SUPPORT = exports.OllamaLanguageModelsManager = exports.OLLAMA_LANGUAGE_MODELS_MANAGER_PATH = void 0;
|
|
19
19
|
exports.OLLAMA_LANGUAGE_MODELS_MANAGER_PATH = '/services/ollama/language-model-manager';
|
|
20
20
|
exports.OllamaLanguageModelsManager = Symbol('OllamaLanguageModelsManager');
|
|
21
|
+
/**
|
|
22
|
+
* Coarse Ollama reasoning support advertised at registration time. Whether a given Ollama model
|
|
23
|
+
* actually supports thinking is discovered per-request via `ollama.show`; for models without it
|
|
24
|
+
* the selector value is silently ignored.
|
|
25
|
+
*/
|
|
26
|
+
exports.OLLAMA_REASONING_SUPPORT = {
|
|
27
|
+
supportedLevels: ['off', 'minimal', 'low', 'medium', 'high', 'auto'],
|
|
28
|
+
defaultLevel: 'auto'
|
|
29
|
+
};
|
|
21
30
|
//# sourceMappingURL=ollama-language-models-manager.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ollama-language-models-manager.js","sourceRoot":"","sources":["../../src/common/ollama-language-models-manager.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,mCAAmC;AACnC,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":"ollama-language-models-manager.js","sourceRoot":"","sources":["../../src/common/ollama-language-models-manager.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,mCAAmC;AACnC,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;;;AAInE,QAAA,mCAAmC,GAAG,yCAAyC,CAAC;AAChF,QAAA,2BAA2B,GAAG,MAAM,CAAC,6BAA6B,CAAC,CAAC;AAEjF;;;;GAIG;AACU,QAAA,wBAAwB,GAAqB;IACtD,eAAe,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,CAAC;IACpE,YAAY,EAAE,MAAM;CACvB,CAAC"}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { LanguageModel, LanguageModelParsedResponse,
|
|
1
|
+
import { LanguageModel, LanguageModelParsedResponse, LanguageModelMessage, LanguageModelResponse, LanguageModelStreamResponse, ReasoningSettings, ReasoningSupport, ToolRequest, LanguageModelRequest, LanguageModelStatus, UserRequest } from '@theia/ai-core';
|
|
2
2
|
import { CancellationToken } from '@theia/core';
|
|
3
3
|
import { ChatRequest, Message, Ollama, Tool } from 'ollama';
|
|
4
4
|
export declare const OllamaModelIdentifier: unique symbol;
|
|
@@ -7,8 +7,8 @@ export declare class OllamaModel implements LanguageModel {
|
|
|
7
7
|
protected readonly model: string;
|
|
8
8
|
status: LanguageModelStatus;
|
|
9
9
|
protected host: () => string | undefined;
|
|
10
|
-
protected readonly tokenUsageService?: TokenUsageService | undefined;
|
|
11
10
|
proxy?: string | undefined;
|
|
11
|
+
reasoningSupport?: ReasoningSupport | undefined;
|
|
12
12
|
protected readonly DEFAULT_REQUEST_SETTINGS: Partial<Omit<ChatRequest, 'stream' | 'model'>>;
|
|
13
13
|
readonly providerId = "ollama";
|
|
14
14
|
readonly vendor: string;
|
|
@@ -17,16 +17,16 @@ export declare class OllamaModel implements LanguageModel {
|
|
|
17
17
|
* @param model the unique model name as used in the Ollama environment.
|
|
18
18
|
* @param hostProvider a function to provide the host URL for the Ollama server.
|
|
19
19
|
*/
|
|
20
|
-
constructor(id: string, model: string, status: LanguageModelStatus, host: () => string | undefined,
|
|
21
|
-
request(request:
|
|
20
|
+
constructor(id: string, model: string, status: LanguageModelStatus, host: () => string | undefined, proxy?: string | undefined, reasoningSupport?: ReasoningSupport | undefined);
|
|
21
|
+
request(request: UserRequest, cancellationToken?: CancellationToken): Promise<LanguageModelResponse>;
|
|
22
22
|
/**
|
|
23
23
|
* Retrieves the settings for the chat request, merging the request-specific settings with the default settings.
|
|
24
24
|
* @param request The language model request containing specific settings.
|
|
25
25
|
* @returns A partial ChatRequest object containing the merged settings.
|
|
26
26
|
*/
|
|
27
27
|
protected getSettings(request: LanguageModelRequest): Partial<ChatRequest>;
|
|
28
|
-
protected dispatchRequest(ollama: Ollama, ollamaRequest: ExtendedChatRequest, structured: boolean, cancellation?: CancellationToken,
|
|
29
|
-
protected handleStreamingRequest(ollama: Ollama, chatRequest: ExtendedChatRequest, cancellation?: CancellationToken,
|
|
28
|
+
protected dispatchRequest(ollama: Ollama, ollamaRequest: ExtendedChatRequest, structured: boolean, cancellation?: CancellationToken, reasoning?: ReasoningSettings): Promise<LanguageModelResponse>;
|
|
29
|
+
protected handleStreamingRequest(ollama: Ollama, chatRequest: ExtendedChatRequest, cancellation?: CancellationToken, reasoning?: ReasoningSettings): Promise<LanguageModelStreamResponse>;
|
|
30
30
|
/**
|
|
31
31
|
* Check if the Ollama server supports thinking.
|
|
32
32
|
*
|
|
@@ -37,36 +37,13 @@ export declare class OllamaModel implements LanguageModel {
|
|
|
37
37
|
* @returns A boolean indicating whether the Ollama model supports thinking.
|
|
38
38
|
*/
|
|
39
39
|
protected checkThinkingSupport(ollama: Ollama, model: string): Promise<boolean>;
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
*
|
|
43
|
-
* Note: Most models support boolean values for 'think', but some models (e.g., GPT-OSS) require
|
|
44
|
-
* effort levels ('low', 'medium', 'high') and ignore boolean values.
|
|
45
|
-
*
|
|
46
|
-
* @param thinkingMode The thinking mode settings from the request.
|
|
47
|
-
* @param model The model name to check for special handling.
|
|
48
|
-
* @returns The appropriate 'think' parameter value for the model.
|
|
49
|
-
*/
|
|
50
|
-
protected getThinkingParameter(thinkingMode: ThinkingModeSettings | undefined, model: string): boolean | 'low' | 'medium' | 'high';
|
|
51
|
-
/**
|
|
52
|
-
* Checks if the model requires effort levels instead of boolean for the 'think' parameter.
|
|
53
|
-
*
|
|
54
|
-
* @param model The model name to check.
|
|
55
|
-
* @returns true if the model requires effort levels.
|
|
56
|
-
*/
|
|
40
|
+
protected getThinkingParameter(reasoning: ReasoningSettings | undefined, model: string): boolean | 'low' | 'medium' | 'high';
|
|
41
|
+
/** Checks if the model requires effort levels instead of a boolean for `think`. */
|
|
57
42
|
protected requiresEffortLevel(model: string): boolean;
|
|
58
|
-
/**
|
|
59
|
-
* Maps budget tokens to Ollama effort levels.
|
|
60
|
-
*
|
|
61
|
-
* @param budgetTokens Optional budget tokens from thinking mode settings.
|
|
62
|
-
* @returns The effort level ('low', 'medium', or 'high').
|
|
63
|
-
*/
|
|
64
|
-
protected budgetTokensToEffortLevel(budgetTokens: number | undefined): 'low' | 'medium' | 'high';
|
|
65
43
|
protected handleStructuredOutputRequest(ollama: Ollama, chatRequest: ChatRequest): Promise<LanguageModelParsedResponse>;
|
|
66
|
-
protected handleNonStreamingRequest(ollama: Ollama, chatRequest: ExtendedNonStreamingChatRequest, cancellation?: CancellationToken,
|
|
44
|
+
protected handleNonStreamingRequest(ollama: Ollama, chatRequest: ExtendedNonStreamingChatRequest, cancellation?: CancellationToken, reasoning?: ReasoningSettings): Promise<LanguageModelResponse>;
|
|
67
45
|
private createToolCalls;
|
|
68
46
|
private processToolCalls;
|
|
69
|
-
private recordTokenUsage;
|
|
70
47
|
protected initializeOllama(): Ollama;
|
|
71
48
|
protected toOllamaTool(tool: ToolRequest): ToolWithHandler;
|
|
72
49
|
protected toOllamaMessage(message: LanguageModelMessage): Message | undefined;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ollama-language-model.d.ts","sourceRoot":"","sources":["../../src/node/ollama-language-model.ts"],"names":[],"mappings":"AAgBA,OAAO,EACH,aAAa,EACb,2BAA2B,EAC3B,oBAAoB,EACpB,
|
|
1
|
+
{"version":3,"file":"ollama-language-model.d.ts","sourceRoot":"","sources":["../../src/node/ollama-language-model.ts"],"names":[],"mappings":"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"}
|
|
@@ -19,6 +19,7 @@ exports.OllamaModel = exports.OllamaModelIdentifier = void 0;
|
|
|
19
19
|
const ai_core_1 = require("@theia/ai-core");
|
|
20
20
|
const ollama_1 = require("ollama");
|
|
21
21
|
const node_1 = require("@theia/ai-core/lib/node");
|
|
22
|
+
const ollama_reasoning_1 = require("./ollama-reasoning");
|
|
22
23
|
exports.OllamaModelIdentifier = Symbol('OllamaModelIdentifier');
|
|
23
24
|
class OllamaModel {
|
|
24
25
|
/**
|
|
@@ -26,13 +27,13 @@ class OllamaModel {
|
|
|
26
27
|
* @param model the unique model name as used in the Ollama environment.
|
|
27
28
|
* @param hostProvider a function to provide the host URL for the Ollama server.
|
|
28
29
|
*/
|
|
29
|
-
constructor(id, model, status, host,
|
|
30
|
+
constructor(id, model, status, host, proxy, reasoningSupport) {
|
|
30
31
|
this.id = id;
|
|
31
32
|
this.model = model;
|
|
32
33
|
this.status = status;
|
|
33
34
|
this.host = host;
|
|
34
|
-
this.tokenUsageService = tokenUsageService;
|
|
35
35
|
this.proxy = proxy;
|
|
36
|
+
this.reasoningSupport = reasoningSupport;
|
|
36
37
|
this.DEFAULT_REQUEST_SETTINGS = {
|
|
37
38
|
keep_alive: '15m',
|
|
38
39
|
// options see: https://github.com/ollama/ollama/blob/main/docs/modelfile.md#valid-parameters-and-values
|
|
@@ -54,7 +55,7 @@ class OllamaModel {
|
|
|
54
55
|
stream
|
|
55
56
|
};
|
|
56
57
|
const structured = request.response_format?.type === 'json_schema';
|
|
57
|
-
return this.dispatchRequest(ollama, ollamaRequest, structured, cancellationToken, request.
|
|
58
|
+
return this.dispatchRequest(ollama, ollamaRequest, structured, cancellationToken, request.reasoning);
|
|
58
59
|
}
|
|
59
60
|
/**
|
|
60
61
|
* Retrieves the settings for the chat request, merging the request-specific settings with the default settings.
|
|
@@ -67,21 +68,21 @@ class OllamaModel {
|
|
|
67
68
|
options: settings
|
|
68
69
|
};
|
|
69
70
|
}
|
|
70
|
-
async dispatchRequest(ollama, ollamaRequest, structured, cancellation,
|
|
71
|
+
async dispatchRequest(ollama, ollamaRequest, structured, cancellation, reasoning) {
|
|
71
72
|
// Handle structured output request
|
|
72
73
|
if (structured) {
|
|
73
74
|
return this.handleStructuredOutputRequest(ollama, ollamaRequest);
|
|
74
75
|
}
|
|
75
76
|
if (isNonStreaming(ollamaRequest)) {
|
|
76
77
|
// handle non-streaming request
|
|
77
|
-
return this.handleNonStreamingRequest(ollama, ollamaRequest, cancellation,
|
|
78
|
+
return this.handleNonStreamingRequest(ollama, ollamaRequest, cancellation, reasoning);
|
|
78
79
|
}
|
|
79
80
|
// handle streaming request
|
|
80
|
-
return this.handleStreamingRequest(ollama, ollamaRequest, cancellation,
|
|
81
|
+
return this.handleStreamingRequest(ollama, ollamaRequest, cancellation, reasoning);
|
|
81
82
|
}
|
|
82
|
-
async handleStreamingRequest(ollama, chatRequest, cancellation,
|
|
83
|
+
async handleStreamingRequest(ollama, chatRequest, cancellation, reasoning) {
|
|
83
84
|
const supportsThinking = await this.checkThinkingSupport(ollama, chatRequest.model);
|
|
84
|
-
const thinkParam = supportsThinking ? this.getThinkingParameter(
|
|
85
|
+
const thinkParam = supportsThinking ? this.getThinkingParameter(reasoning, chatRequest.model) : false;
|
|
85
86
|
const responseStream = await ollama.chat({
|
|
86
87
|
...chatRequest,
|
|
87
88
|
stream: true,
|
|
@@ -117,7 +118,9 @@ class OllamaModel {
|
|
|
117
118
|
toolCalls.push(...chunk.message.tool_calls);
|
|
118
119
|
}
|
|
119
120
|
if (chunk.done) {
|
|
120
|
-
|
|
121
|
+
if (chunk.prompt_eval_count !== undefined && chunk.eval_count !== undefined) {
|
|
122
|
+
yield { input_tokens: chunk.prompt_eval_count, output_tokens: chunk.eval_count };
|
|
123
|
+
}
|
|
121
124
|
if (chunk.done_reason && chunk.done_reason !== 'stop') {
|
|
122
125
|
throw new Error('Ollama stopped unexpectedly. Reason: ' + chunk.done_reason);
|
|
123
126
|
}
|
|
@@ -138,7 +141,7 @@ class OllamaModel {
|
|
|
138
141
|
const processedToolCallsForResponse = await that.processToolCalls(toolCallsForResponse, chatRequest);
|
|
139
142
|
yield { tool_calls: processedToolCallsForResponse };
|
|
140
143
|
// Continue the conversation with tool results
|
|
141
|
-
const continuedResponse = await that.handleStreamingRequest(ollama, chatRequest, cancellation,
|
|
144
|
+
const continuedResponse = await that.handleStreamingRequest(ollama, chatRequest, cancellation, reasoning);
|
|
142
145
|
// Stream the continued response
|
|
143
146
|
for await (const nestedEvent of continuedResponse.stream) {
|
|
144
147
|
yield nestedEvent;
|
|
@@ -166,54 +169,13 @@ class OllamaModel {
|
|
|
166
169
|
const result = await ollama.show({ model });
|
|
167
170
|
return result?.capabilities?.includes('thinking') || false;
|
|
168
171
|
}
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
*
|
|
172
|
-
* Note: Most models support boolean values for 'think', but some models (e.g., GPT-OSS) require
|
|
173
|
-
* effort levels ('low', 'medium', 'high') and ignore boolean values.
|
|
174
|
-
*
|
|
175
|
-
* @param thinkingMode The thinking mode settings from the request.
|
|
176
|
-
* @param model The model name to check for special handling.
|
|
177
|
-
* @returns The appropriate 'think' parameter value for the model.
|
|
178
|
-
*/
|
|
179
|
-
getThinkingParameter(thinkingMode, model) {
|
|
180
|
-
if (!thinkingMode?.enabled) {
|
|
181
|
-
return false;
|
|
182
|
-
}
|
|
183
|
-
if (this.requiresEffortLevel(model)) {
|
|
184
|
-
return this.budgetTokensToEffortLevel(thinkingMode.budgetTokens);
|
|
185
|
-
}
|
|
186
|
-
return true;
|
|
172
|
+
getThinkingParameter(reasoning, model) {
|
|
173
|
+
return (0, ollama_reasoning_1.ollamaThinkParamFor)(reasoning?.level, this.requiresEffortLevel(model));
|
|
187
174
|
}
|
|
188
|
-
/**
|
|
189
|
-
* Checks if the model requires effort levels instead of boolean for the 'think' parameter.
|
|
190
|
-
*
|
|
191
|
-
* @param model The model name to check.
|
|
192
|
-
* @returns true if the model requires effort levels.
|
|
193
|
-
*/
|
|
175
|
+
/** Checks if the model requires effort levels instead of a boolean for `think`. */
|
|
194
176
|
requiresEffortLevel(model) {
|
|
195
177
|
return model.toLowerCase().includes('gpt-oss');
|
|
196
178
|
}
|
|
197
|
-
/**
|
|
198
|
-
* Maps budget tokens to Ollama effort levels.
|
|
199
|
-
*
|
|
200
|
-
* @param budgetTokens Optional budget tokens from thinking mode settings.
|
|
201
|
-
* @returns The effort level ('low', 'medium', or 'high').
|
|
202
|
-
*/
|
|
203
|
-
budgetTokensToEffortLevel(budgetTokens) {
|
|
204
|
-
if (budgetTokens === undefined) {
|
|
205
|
-
return 'medium';
|
|
206
|
-
}
|
|
207
|
-
if (budgetTokens <= 2000) {
|
|
208
|
-
return 'low';
|
|
209
|
-
}
|
|
210
|
-
else if (budgetTokens <= 20000) {
|
|
211
|
-
return 'medium';
|
|
212
|
-
}
|
|
213
|
-
else {
|
|
214
|
-
return 'high';
|
|
215
|
-
}
|
|
216
|
-
}
|
|
217
179
|
async handleStructuredOutputRequest(ollama, chatRequest) {
|
|
218
180
|
const response = await ollama.chat({
|
|
219
181
|
...chatRequest,
|
|
@@ -221,27 +183,35 @@ class OllamaModel {
|
|
|
221
183
|
stream: false,
|
|
222
184
|
});
|
|
223
185
|
try {
|
|
224
|
-
|
|
186
|
+
const result = {
|
|
225
187
|
content: response.message.content,
|
|
226
188
|
parsed: JSON.parse(response.message.content)
|
|
227
189
|
};
|
|
190
|
+
if (response.prompt_eval_count !== undefined && response.eval_count !== undefined) {
|
|
191
|
+
result.usage = { input_tokens: response.prompt_eval_count, output_tokens: response.eval_count };
|
|
192
|
+
}
|
|
193
|
+
return result;
|
|
228
194
|
}
|
|
229
195
|
catch (error) {
|
|
230
196
|
// TODO use ILogger
|
|
231
197
|
console.log('Failed to parse structured response from the language model.', error);
|
|
232
|
-
|
|
198
|
+
const result = {
|
|
233
199
|
content: response.message.content,
|
|
234
200
|
parsed: {}
|
|
235
201
|
};
|
|
202
|
+
if (response.prompt_eval_count !== undefined && response.eval_count !== undefined) {
|
|
203
|
+
result.usage = { input_tokens: response.prompt_eval_count, output_tokens: response.eval_count };
|
|
204
|
+
}
|
|
205
|
+
return result;
|
|
236
206
|
}
|
|
237
207
|
}
|
|
238
|
-
async handleNonStreamingRequest(ollama, chatRequest, cancellation,
|
|
208
|
+
async handleNonStreamingRequest(ollama, chatRequest, cancellation, reasoning) {
|
|
239
209
|
try {
|
|
240
210
|
// even though we have a non-streaming request, we still use the streaming version for two reasons:
|
|
241
211
|
// 1. we can abort the stream if the request is cancelled instead of having to wait for the entire response
|
|
242
212
|
// 2. we can use think: true so the Ollama API separates thinking from content and we can filter out the thoughts in the response
|
|
243
213
|
const supportsThinking = await this.checkThinkingSupport(ollama, chatRequest.model);
|
|
244
|
-
const thinkParam = supportsThinking ? this.getThinkingParameter(
|
|
214
|
+
const thinkParam = supportsThinking ? this.getThinkingParameter(reasoning, chatRequest.model) : false;
|
|
245
215
|
const responseStream = await ollama.chat({ ...chatRequest, stream: true, think: thinkParam });
|
|
246
216
|
cancellation?.onCancellationRequested(() => {
|
|
247
217
|
responseStream.abort();
|
|
@@ -249,6 +219,8 @@ class OllamaModel {
|
|
|
249
219
|
const toolCalls = [];
|
|
250
220
|
let content = '';
|
|
251
221
|
let lastUpdated = new Date();
|
|
222
|
+
let inputTokenCount;
|
|
223
|
+
let outputTokenCount;
|
|
252
224
|
// process the response stream
|
|
253
225
|
for await (const chunk of responseStream) {
|
|
254
226
|
// if the response contains content, append it to the result
|
|
@@ -260,10 +232,11 @@ class OllamaModel {
|
|
|
260
232
|
if (chunk.message.tool_calls && chunk.message.tool_calls.length > 0) {
|
|
261
233
|
toolCalls.push(...chunk.message.tool_calls);
|
|
262
234
|
}
|
|
263
|
-
// if the response is done,
|
|
235
|
+
// if the response is done, capture token usage and check the done reason
|
|
264
236
|
if (chunk.done) {
|
|
265
|
-
this.recordTokenUsage(chunk);
|
|
266
237
|
lastUpdated = chunk.created_at;
|
|
238
|
+
inputTokenCount = chunk.prompt_eval_count;
|
|
239
|
+
outputTokenCount = chunk.eval_count;
|
|
267
240
|
if (chunk.done_reason && chunk.done_reason !== 'stop') {
|
|
268
241
|
throw new Error('Ollama stopped unexpectedly. Reason: ' + chunk.done_reason);
|
|
269
242
|
}
|
|
@@ -282,10 +255,14 @@ class OllamaModel {
|
|
|
282
255
|
return { text: '' };
|
|
283
256
|
}
|
|
284
257
|
// recurse to get the final response content (the intermediate content remains hidden, it is only part of the conversation)
|
|
285
|
-
return this.handleNonStreamingRequest(ollama, chatRequest, cancellation,
|
|
258
|
+
return this.handleNonStreamingRequest(ollama, chatRequest, cancellation, reasoning);
|
|
286
259
|
}
|
|
287
260
|
// if no tool calls are necessary, return the final response content
|
|
288
|
-
|
|
261
|
+
const result = { text: content };
|
|
262
|
+
if (inputTokenCount !== undefined && outputTokenCount !== undefined) {
|
|
263
|
+
result.usage = { input_tokens: inputTokenCount, output_tokens: outputTokenCount };
|
|
264
|
+
}
|
|
265
|
+
return result;
|
|
289
266
|
}
|
|
290
267
|
catch (error) {
|
|
291
268
|
console.error('Error in ollama call:', error.message);
|
|
@@ -333,15 +310,6 @@ class OllamaModel {
|
|
|
333
310
|
}
|
|
334
311
|
return toolCallsForResponse;
|
|
335
312
|
}
|
|
336
|
-
recordTokenUsage(response) {
|
|
337
|
-
if (this.tokenUsageService && response.prompt_eval_count && response.eval_count) {
|
|
338
|
-
this.tokenUsageService.recordTokenUsage(this.id, {
|
|
339
|
-
inputTokens: response.prompt_eval_count,
|
|
340
|
-
outputTokens: response.eval_count,
|
|
341
|
-
requestId: `ollama_${response.created_at}`
|
|
342
|
-
}).catch(error => console.error('Error recording token usage:', error));
|
|
343
|
-
}
|
|
344
|
-
}
|
|
345
313
|
initializeOllama() {
|
|
346
314
|
const host = this.host();
|
|
347
315
|
if (!host) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ollama-language-model.js","sourceRoot":"","sources":["../../src/node/ollama-language-model.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"ollama-language-model.js","sourceRoot":"","sources":["../../src/node/ollama-language-model.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,10 +1,9 @@
|
|
|
1
|
-
import { LanguageModelRegistry, LanguageModelStatus
|
|
1
|
+
import { LanguageModelRegistry, LanguageModelStatus } from '@theia/ai-core';
|
|
2
2
|
import { OllamaLanguageModelsManager, OllamaModelDescription } from '../common';
|
|
3
3
|
export declare class OllamaLanguageModelsManagerImpl implements OllamaLanguageModelsManager {
|
|
4
4
|
protected _host: string | undefined;
|
|
5
5
|
protected _proxyUrl: string | undefined;
|
|
6
6
|
protected readonly languageModelRegistry: LanguageModelRegistry;
|
|
7
|
-
protected readonly tokenUsageService: TokenUsageService;
|
|
8
7
|
get host(): string | undefined;
|
|
9
8
|
protected calculateStatus(host: string | undefined): LanguageModelStatus;
|
|
10
9
|
createOrUpdateLanguageModels(...models: OllamaModelDescription[]): Promise<void>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ollama-language-models-manager-impl.d.ts","sourceRoot":"","sources":["../../src/node/ollama-language-models-manager-impl.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,
|
|
1
|
+
{"version":3,"file":"ollama-language-models-manager-impl.d.ts","sourceRoot":"","sources":["../../src/node/ollama-language-models-manager-impl.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,qBAAqB,EAAE,mBAAmB,EAAE,MAAM,gBAAgB,CAAC;AAI5E,OAAO,EAAE,2BAA2B,EAAE,sBAAsB,EAAE,MAAM,WAAW,CAAC;AAEhF,qBACa,+BAAgC,YAAW,2BAA2B;IAE/E,SAAS,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,CAAC;IACpC,SAAS,CAAC,SAAS,EAAE,MAAM,GAAG,SAAS,CAAC;IAGxC,SAAS,CAAC,QAAQ,CAAC,qBAAqB,EAAE,qBAAqB,CAAC;IAEhE,IAAI,IAAI,IAAI,MAAM,GAAG,SAAS,CAE7B;IAID,SAAS,CAAC,eAAe,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,mBAAmB;IAIlE,4BAA4B,CAAC,GAAG,MAAM,EAAE,sBAAsB,EAAE,GAAG,OAAO,CAAC,IAAI,CAAC;IAoCtF,oBAAoB,CAAC,GAAG,QAAQ,EAAE,MAAM,EAAE,GAAG,IAAI;IAIjD,WAAW,CAAC,QAAQ,EAAE,MAAM,GAAG,SAAS,GAAG,IAAI;IAQzC,OAAO,CAAC,IAAI,EAAE,MAAM,GAAG,SAAS,GAAG,OAAO,CAAC,IAAI,CAAC;CASzD"}
|
|
@@ -45,13 +45,14 @@ let OllamaLanguageModelsManagerImpl = class OllamaLanguageModelsManagerImpl {
|
|
|
45
45
|
const status = this.calculateStatus(host);
|
|
46
46
|
await this.languageModelRegistry.patchLanguageModel(modelDescription.id, {
|
|
47
47
|
proxy: proxyUrl,
|
|
48
|
-
status
|
|
48
|
+
status,
|
|
49
|
+
reasoningSupport: modelDescription.reasoningSupport
|
|
49
50
|
});
|
|
50
51
|
}
|
|
51
52
|
else {
|
|
52
53
|
const status = this.calculateStatus(host);
|
|
53
54
|
this.languageModelRegistry.addLanguageModels([
|
|
54
|
-
new ollama_language_model_1.OllamaModel(modelDescription.id, modelDescription.model, status, hostProvider,
|
|
55
|
+
new ollama_language_model_1.OllamaModel(modelDescription.id, modelDescription.model, status, hostProvider, proxyUrl, modelDescription.reasoningSupport)
|
|
55
56
|
]);
|
|
56
57
|
}
|
|
57
58
|
}
|
|
@@ -82,10 +83,6 @@ tslib_1.__decorate([
|
|
|
82
83
|
(0, inversify_1.inject)(ai_core_1.LanguageModelRegistry),
|
|
83
84
|
tslib_1.__metadata("design:type", Object)
|
|
84
85
|
], OllamaLanguageModelsManagerImpl.prototype, "languageModelRegistry", void 0);
|
|
85
|
-
tslib_1.__decorate([
|
|
86
|
-
(0, inversify_1.inject)(ai_core_1.TokenUsageService),
|
|
87
|
-
tslib_1.__metadata("design:type", Object)
|
|
88
|
-
], OllamaLanguageModelsManagerImpl.prototype, "tokenUsageService", void 0);
|
|
89
86
|
exports.OllamaLanguageModelsManagerImpl = OllamaLanguageModelsManagerImpl = tslib_1.__decorate([
|
|
90
87
|
(0, inversify_1.injectable)()
|
|
91
88
|
], OllamaLanguageModelsManagerImpl);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ollama-language-models-manager-impl.js","sourceRoot":"","sources":["../../src/node/ollama-language-models-manager-impl.ts"],"names":[],"mappings":";AAAA,gFAAgF;AAChF,mCAAmC;AACnC,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,
|
|
1
|
+
{"version":3,"file":"ollama-language-models-manager-impl.js","sourceRoot":"","sources":["../../src/node/ollama-language-models-manager-impl.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
import { ReasoningLevel } from '@theia/ai-core';
|
|
2
|
+
/**
|
|
3
|
+
* Translates a reasoning level to Ollama's `think` parameter. Most models accept a boolean,
|
|
4
|
+
* but some (e.g. GPT-OSS) require an effort string — set {@link requiresEffortLevel} for those.
|
|
5
|
+
* Returns `false` when reasoning is not requested or disabled.
|
|
6
|
+
*/
|
|
7
|
+
export declare function ollamaThinkParamFor(level: ReasoningLevel | undefined, requiresEffortLevel: boolean): boolean | 'low' | 'medium' | 'high';
|
|
8
|
+
//# sourceMappingURL=ollama-reasoning.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ollama-reasoning.d.ts","sourceRoot":"","sources":["../../src/node/ollama-reasoning.ts"],"names":[],"mappings":"AAgBA,OAAO,EAAE,cAAc,EAAE,MAAM,gBAAgB,CAAC;AAEhD;;;;GAIG;AACH,wBAAgB,mBAAmB,CAC/B,KAAK,EAAE,cAAc,GAAG,SAAS,EACjC,mBAAmB,EAAE,OAAO,GAC7B,OAAO,GAAG,KAAK,GAAG,QAAQ,GAAG,MAAM,CAarC"}
|
|
@@ -0,0 +1,38 @@
|
|
|
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.ollamaThinkParamFor = ollamaThinkParamFor;
|
|
19
|
+
/**
|
|
20
|
+
* Translates a reasoning level to Ollama's `think` parameter. Most models accept a boolean,
|
|
21
|
+
* but some (e.g. GPT-OSS) require an effort string — set {@link requiresEffortLevel} for those.
|
|
22
|
+
* Returns `false` when reasoning is not requested or disabled.
|
|
23
|
+
*/
|
|
24
|
+
function ollamaThinkParamFor(level, requiresEffortLevel) {
|
|
25
|
+
if (!level || level === 'off') {
|
|
26
|
+
return false;
|
|
27
|
+
}
|
|
28
|
+
if (!requiresEffortLevel) {
|
|
29
|
+
return true;
|
|
30
|
+
}
|
|
31
|
+
switch (level) {
|
|
32
|
+
case 'minimal':
|
|
33
|
+
case 'low': return 'low';
|
|
34
|
+
case 'high': return 'high';
|
|
35
|
+
default: return 'medium'; // 'medium' and 'auto'
|
|
36
|
+
}
|
|
37
|
+
}
|
|
38
|
+
//# sourceMappingURL=ollama-reasoning.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ollama-reasoning.js","sourceRoot":"","sources":["../../src/node/ollama-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;;AAShF,kDAgBC;AArBD;;;;GAIG;AACH,SAAgB,mBAAmB,CAC/B,KAAiC,EACjC,mBAA4B;IAE5B,IAAI,CAAC,KAAK,IAAI,KAAK,KAAK,KAAK,EAAE,CAAC;QAC5B,OAAO,KAAK,CAAC;IACjB,CAAC;IACD,IAAI,CAAC,mBAAmB,EAAE,CAAC;QACvB,OAAO,IAAI,CAAC;IAChB,CAAC;IACD,QAAQ,KAAK,EAAE,CAAC;QACZ,KAAK,SAAS,CAAC;QACf,KAAK,KAAK,CAAC,CAAC,OAAO,KAAK,CAAC;QACzB,KAAK,MAAM,CAAC,CAAC,OAAO,MAAM,CAAC;QAC3B,OAAO,CAAC,CAAC,OAAO,QAAQ,CAAC,CAAC,sBAAsB;IACpD,CAAC;AACL,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@theia/ai-ollama",
|
|
3
|
-
"version": "1.71.0
|
|
3
|
+
"version": "1.71.0",
|
|
4
4
|
"description": "Theia - Ollama Integration",
|
|
5
5
|
"dependencies": {
|
|
6
|
-
"@theia/ai-core": "1.71.0
|
|
7
|
-
"@theia/core": "1.71.0
|
|
8
|
-
"@theia/filesystem": "1.71.0
|
|
9
|
-
"@theia/workspace": "1.71.0
|
|
10
|
-
"ollama": "^0.5.
|
|
6
|
+
"@theia/ai-core": "1.71.0",
|
|
7
|
+
"@theia/core": "1.71.0",
|
|
8
|
+
"@theia/filesystem": "1.71.0",
|
|
9
|
+
"@theia/workspace": "1.71.0",
|
|
10
|
+
"ollama": "^0.5.18",
|
|
11
11
|
"tslib": "^2.6.2"
|
|
12
12
|
},
|
|
13
13
|
"publishConfig": {
|
|
@@ -44,10 +44,10 @@
|
|
|
44
44
|
"watch": "theiaext watch"
|
|
45
45
|
},
|
|
46
46
|
"devDependencies": {
|
|
47
|
-
"@theia/ext-scripts": "1.
|
|
47
|
+
"@theia/ext-scripts": "1.71.0"
|
|
48
48
|
},
|
|
49
49
|
"nyc": {
|
|
50
50
|
"extends": "../../configs/nyc.json"
|
|
51
51
|
},
|
|
52
|
-
"gitHead": "
|
|
52
|
+
"gitHead": "d8a596fc99f0a8e68b466828ed162569d79e3a71"
|
|
53
53
|
}
|
|
@@ -16,7 +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 { OllamaLanguageModelsManager, OllamaModelDescription } from '../common';
|
|
19
|
+
import { OLLAMA_REASONING_SUPPORT, OllamaLanguageModelsManager, OllamaModelDescription } from '../common';
|
|
20
20
|
import { HOST_PREF, MODELS_PREF } from '../common/ollama-preferences';
|
|
21
21
|
import { PreferenceService } from '@theia/core';
|
|
22
22
|
|
|
@@ -80,7 +80,11 @@ export class OllamaFrontendApplicationContribution implements FrontendApplicatio
|
|
|
80
80
|
|
|
81
81
|
return {
|
|
82
82
|
id: id,
|
|
83
|
-
model: modelId
|
|
83
|
+
model: modelId,
|
|
84
|
+
// Whether the underlying model supports thinking is checked per-request via `ollama.show`;
|
|
85
|
+
// for non-thinking models the reasoning level is silently ignored, so it's safe to always
|
|
86
|
+
// advertise reasoning support and let the runtime decide.
|
|
87
|
+
reasoningSupport: OLLAMA_REASONING_SUPPORT
|
|
84
88
|
};
|
|
85
89
|
}
|
|
86
90
|
}
|
|
@@ -14,9 +14,21 @@
|
|
|
14
14
|
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
15
15
|
// *****************************************************************************
|
|
16
16
|
|
|
17
|
+
import { ReasoningSupport } from '@theia/ai-core';
|
|
18
|
+
|
|
17
19
|
export const OLLAMA_LANGUAGE_MODELS_MANAGER_PATH = '/services/ollama/language-model-manager';
|
|
18
20
|
export const OllamaLanguageModelsManager = Symbol('OllamaLanguageModelsManager');
|
|
19
21
|
|
|
22
|
+
/**
|
|
23
|
+
* Coarse Ollama reasoning support advertised at registration time. Whether a given Ollama model
|
|
24
|
+
* actually supports thinking is discovered per-request via `ollama.show`; for models without it
|
|
25
|
+
* the selector value is silently ignored.
|
|
26
|
+
*/
|
|
27
|
+
export const OLLAMA_REASONING_SUPPORT: ReasoningSupport = {
|
|
28
|
+
supportedLevels: ['off', 'minimal', 'low', 'medium', 'high', 'auto'],
|
|
29
|
+
defaultLevel: 'auto'
|
|
30
|
+
};
|
|
31
|
+
|
|
20
32
|
export interface OllamaModelDescription {
|
|
21
33
|
/**
|
|
22
34
|
* The identifier of the model which will be shown in the UI.
|
|
@@ -26,6 +38,11 @@ export interface OllamaModelDescription {
|
|
|
26
38
|
* The name or ID of the model in the Ollama environment.
|
|
27
39
|
*/
|
|
28
40
|
model: string;
|
|
41
|
+
/**
|
|
42
|
+
* When set, the chat exposes a reasoning selector for this model. Defaults to {@link OLLAMA_REASONING_SUPPORT};
|
|
43
|
+
* Ollama checks at request time whether the model supports thinking, so this is safe to leave on for any model.
|
|
44
|
+
*/
|
|
45
|
+
reasoningSupport?: ReasoningSupport;
|
|
29
46
|
}
|
|
30
47
|
|
|
31
48
|
export interface OllamaLanguageModelsManager {
|
|
@@ -17,22 +17,25 @@
|
|
|
17
17
|
import {
|
|
18
18
|
LanguageModel,
|
|
19
19
|
LanguageModelParsedResponse,
|
|
20
|
-
LanguageModelRequest,
|
|
21
20
|
LanguageModelMessage,
|
|
22
21
|
LanguageModelResponse,
|
|
23
22
|
LanguageModelStreamResponse,
|
|
24
23
|
LanguageModelStreamResponsePart,
|
|
25
|
-
|
|
24
|
+
ReasoningSettings,
|
|
25
|
+
ReasoningSupport,
|
|
26
26
|
ToolCall,
|
|
27
27
|
ToolRequest,
|
|
28
28
|
ToolRequestParametersProperties,
|
|
29
29
|
ImageContent,
|
|
30
|
-
|
|
31
|
-
LanguageModelStatus
|
|
30
|
+
LanguageModelRequest,
|
|
31
|
+
LanguageModelStatus,
|
|
32
|
+
LanguageModelTextResponse,
|
|
33
|
+
UserRequest
|
|
32
34
|
} from '@theia/ai-core';
|
|
33
35
|
import { CancellationToken } from '@theia/core';
|
|
34
|
-
import { ChatRequest, Message, Ollama, Options, Tool, ToolCall as OllamaToolCall
|
|
36
|
+
import { ChatRequest, Message, Ollama, Options, Tool, ToolCall as OllamaToolCall } from 'ollama';
|
|
35
37
|
import { createProxyFetch } from '@theia/ai-core/lib/node';
|
|
38
|
+
import { ollamaThinkParamFor } from './ollama-reasoning';
|
|
36
39
|
|
|
37
40
|
export const OllamaModelIdentifier = Symbol('OllamaModelIdentifier');
|
|
38
41
|
|
|
@@ -57,11 +60,11 @@ export class OllamaModel implements LanguageModel {
|
|
|
57
60
|
protected readonly model: string,
|
|
58
61
|
public status: LanguageModelStatus,
|
|
59
62
|
protected host: () => string | undefined,
|
|
60
|
-
|
|
61
|
-
public
|
|
63
|
+
public proxy?: string,
|
|
64
|
+
public reasoningSupport?: ReasoningSupport
|
|
62
65
|
) { }
|
|
63
66
|
|
|
64
|
-
async request(request:
|
|
67
|
+
async request(request: UserRequest, cancellationToken?: CancellationToken): Promise<LanguageModelResponse> {
|
|
65
68
|
const settings = this.getSettings(request);
|
|
66
69
|
const ollama = this.initializeOllama();
|
|
67
70
|
const stream = !(request.settings?.stream === false); // true by default, false only if explicitly specified
|
|
@@ -74,7 +77,7 @@ export class OllamaModel implements LanguageModel {
|
|
|
74
77
|
stream
|
|
75
78
|
};
|
|
76
79
|
const structured = request.response_format?.type === 'json_schema';
|
|
77
|
-
return this.dispatchRequest(ollama, ollamaRequest, structured, cancellationToken, request.
|
|
80
|
+
return this.dispatchRequest(ollama, ollamaRequest, structured, cancellationToken, request.reasoning);
|
|
78
81
|
}
|
|
79
82
|
|
|
80
83
|
/**
|
|
@@ -94,7 +97,7 @@ export class OllamaModel implements LanguageModel {
|
|
|
94
97
|
ollamaRequest: ExtendedChatRequest,
|
|
95
98
|
structured: boolean,
|
|
96
99
|
cancellation?: CancellationToken,
|
|
97
|
-
|
|
100
|
+
reasoning?: ReasoningSettings
|
|
98
101
|
): Promise<LanguageModelResponse> {
|
|
99
102
|
|
|
100
103
|
// Handle structured output request
|
|
@@ -104,21 +107,21 @@ export class OllamaModel implements LanguageModel {
|
|
|
104
107
|
|
|
105
108
|
if (isNonStreaming(ollamaRequest)) {
|
|
106
109
|
// handle non-streaming request
|
|
107
|
-
return this.handleNonStreamingRequest(ollama, ollamaRequest, cancellation,
|
|
110
|
+
return this.handleNonStreamingRequest(ollama, ollamaRequest, cancellation, reasoning);
|
|
108
111
|
}
|
|
109
112
|
|
|
110
113
|
// handle streaming request
|
|
111
|
-
return this.handleStreamingRequest(ollama, ollamaRequest, cancellation,
|
|
114
|
+
return this.handleStreamingRequest(ollama, ollamaRequest, cancellation, reasoning);
|
|
112
115
|
}
|
|
113
116
|
|
|
114
117
|
protected async handleStreamingRequest(
|
|
115
118
|
ollama: Ollama,
|
|
116
119
|
chatRequest: ExtendedChatRequest,
|
|
117
120
|
cancellation?: CancellationToken,
|
|
118
|
-
|
|
121
|
+
reasoning?: ReasoningSettings
|
|
119
122
|
): Promise<LanguageModelStreamResponse> {
|
|
120
123
|
const supportsThinking = await this.checkThinkingSupport(ollama, chatRequest.model);
|
|
121
|
-
const thinkParam = supportsThinking ? this.getThinkingParameter(
|
|
124
|
+
const thinkParam = supportsThinking ? this.getThinkingParameter(reasoning, chatRequest.model) : false;
|
|
122
125
|
const responseStream = await ollama.chat({
|
|
123
126
|
...chatRequest,
|
|
124
127
|
stream: true,
|
|
@@ -162,8 +165,9 @@ export class OllamaModel implements LanguageModel {
|
|
|
162
165
|
}
|
|
163
166
|
|
|
164
167
|
if (chunk.done) {
|
|
165
|
-
|
|
166
|
-
|
|
168
|
+
if (chunk.prompt_eval_count !== undefined && chunk.eval_count !== undefined) {
|
|
169
|
+
yield { input_tokens: chunk.prompt_eval_count, output_tokens: chunk.eval_count };
|
|
170
|
+
}
|
|
167
171
|
if (chunk.done_reason && chunk.done_reason !== 'stop') {
|
|
168
172
|
throw new Error('Ollama stopped unexpectedly. Reason: ' + chunk.done_reason);
|
|
169
173
|
}
|
|
@@ -192,7 +196,7 @@ export class OllamaModel implements LanguageModel {
|
|
|
192
196
|
ollama,
|
|
193
197
|
chatRequest,
|
|
194
198
|
cancellation,
|
|
195
|
-
|
|
199
|
+
reasoning
|
|
196
200
|
);
|
|
197
201
|
|
|
198
202
|
// Stream the continued response
|
|
@@ -224,58 +228,15 @@ export class OllamaModel implements LanguageModel {
|
|
|
224
228
|
return result?.capabilities?.includes('thinking') || false;
|
|
225
229
|
}
|
|
226
230
|
|
|
227
|
-
|
|
228
|
-
|
|
229
|
-
*
|
|
230
|
-
* Note: Most models support boolean values for 'think', but some models (e.g., GPT-OSS) require
|
|
231
|
-
* effort levels ('low', 'medium', 'high') and ignore boolean values.
|
|
232
|
-
*
|
|
233
|
-
* @param thinkingMode The thinking mode settings from the request.
|
|
234
|
-
* @param model The model name to check for special handling.
|
|
235
|
-
* @returns The appropriate 'think' parameter value for the model.
|
|
236
|
-
*/
|
|
237
|
-
protected getThinkingParameter(thinkingMode: ThinkingModeSettings | undefined, model: string): boolean | 'low' | 'medium' | 'high' {
|
|
238
|
-
if (!thinkingMode?.enabled) {
|
|
239
|
-
return false;
|
|
240
|
-
}
|
|
241
|
-
|
|
242
|
-
if (this.requiresEffortLevel(model)) {
|
|
243
|
-
return this.budgetTokensToEffortLevel(thinkingMode.budgetTokens);
|
|
244
|
-
}
|
|
245
|
-
|
|
246
|
-
return true;
|
|
231
|
+
protected getThinkingParameter(reasoning: ReasoningSettings | undefined, model: string): boolean | 'low' | 'medium' | 'high' {
|
|
232
|
+
return ollamaThinkParamFor(reasoning?.level, this.requiresEffortLevel(model));
|
|
247
233
|
}
|
|
248
234
|
|
|
249
|
-
/**
|
|
250
|
-
* Checks if the model requires effort levels instead of boolean for the 'think' parameter.
|
|
251
|
-
*
|
|
252
|
-
* @param model The model name to check.
|
|
253
|
-
* @returns true if the model requires effort levels.
|
|
254
|
-
*/
|
|
235
|
+
/** Checks if the model requires effort levels instead of a boolean for `think`. */
|
|
255
236
|
protected requiresEffortLevel(model: string): boolean {
|
|
256
237
|
return model.toLowerCase().includes('gpt-oss');
|
|
257
238
|
}
|
|
258
239
|
|
|
259
|
-
/**
|
|
260
|
-
* Maps budget tokens to Ollama effort levels.
|
|
261
|
-
*
|
|
262
|
-
* @param budgetTokens Optional budget tokens from thinking mode settings.
|
|
263
|
-
* @returns The effort level ('low', 'medium', or 'high').
|
|
264
|
-
*/
|
|
265
|
-
protected budgetTokensToEffortLevel(budgetTokens: number | undefined): 'low' | 'medium' | 'high' {
|
|
266
|
-
if (budgetTokens === undefined) {
|
|
267
|
-
return 'medium';
|
|
268
|
-
}
|
|
269
|
-
|
|
270
|
-
if (budgetTokens <= 2000) {
|
|
271
|
-
return 'low';
|
|
272
|
-
} else if (budgetTokens <= 20000) {
|
|
273
|
-
return 'medium';
|
|
274
|
-
} else {
|
|
275
|
-
return 'high';
|
|
276
|
-
}
|
|
277
|
-
}
|
|
278
|
-
|
|
279
240
|
protected async handleStructuredOutputRequest(ollama: Ollama, chatRequest: ChatRequest): Promise<LanguageModelParsedResponse> {
|
|
280
241
|
const response = await ollama.chat({
|
|
281
242
|
...chatRequest,
|
|
@@ -283,17 +244,25 @@ export class OllamaModel implements LanguageModel {
|
|
|
283
244
|
stream: false,
|
|
284
245
|
});
|
|
285
246
|
try {
|
|
286
|
-
|
|
247
|
+
const result: LanguageModelParsedResponse = {
|
|
287
248
|
content: response.message.content,
|
|
288
249
|
parsed: JSON.parse(response.message.content)
|
|
289
250
|
};
|
|
251
|
+
if (response.prompt_eval_count !== undefined && response.eval_count !== undefined) {
|
|
252
|
+
result.usage = { input_tokens: response.prompt_eval_count, output_tokens: response.eval_count };
|
|
253
|
+
}
|
|
254
|
+
return result;
|
|
290
255
|
} catch (error) {
|
|
291
256
|
// TODO use ILogger
|
|
292
257
|
console.log('Failed to parse structured response from the language model.', error);
|
|
293
|
-
|
|
258
|
+
const result: LanguageModelParsedResponse = {
|
|
294
259
|
content: response.message.content,
|
|
295
260
|
parsed: {}
|
|
296
261
|
};
|
|
262
|
+
if (response.prompt_eval_count !== undefined && response.eval_count !== undefined) {
|
|
263
|
+
result.usage = { input_tokens: response.prompt_eval_count, output_tokens: response.eval_count };
|
|
264
|
+
}
|
|
265
|
+
return result;
|
|
297
266
|
}
|
|
298
267
|
}
|
|
299
268
|
|
|
@@ -301,14 +270,14 @@ export class OllamaModel implements LanguageModel {
|
|
|
301
270
|
ollama: Ollama,
|
|
302
271
|
chatRequest: ExtendedNonStreamingChatRequest,
|
|
303
272
|
cancellation?: CancellationToken,
|
|
304
|
-
|
|
273
|
+
reasoning?: ReasoningSettings
|
|
305
274
|
): Promise<LanguageModelResponse> {
|
|
306
275
|
try {
|
|
307
276
|
// even though we have a non-streaming request, we still use the streaming version for two reasons:
|
|
308
277
|
// 1. we can abort the stream if the request is cancelled instead of having to wait for the entire response
|
|
309
278
|
// 2. we can use think: true so the Ollama API separates thinking from content and we can filter out the thoughts in the response
|
|
310
279
|
const supportsThinking = await this.checkThinkingSupport(ollama, chatRequest.model);
|
|
311
|
-
const thinkParam = supportsThinking ? this.getThinkingParameter(
|
|
280
|
+
const thinkParam = supportsThinking ? this.getThinkingParameter(reasoning, chatRequest.model) : false;
|
|
312
281
|
const responseStream = await ollama.chat({ ...chatRequest, stream: true, think: thinkParam });
|
|
313
282
|
cancellation?.onCancellationRequested(() => {
|
|
314
283
|
responseStream.abort();
|
|
@@ -317,6 +286,8 @@ export class OllamaModel implements LanguageModel {
|
|
|
317
286
|
const toolCalls: OllamaToolCall[] = [];
|
|
318
287
|
let content = '';
|
|
319
288
|
let lastUpdated: Date = new Date();
|
|
289
|
+
let inputTokenCount: number | undefined;
|
|
290
|
+
let outputTokenCount: number | undefined;
|
|
320
291
|
|
|
321
292
|
// process the response stream
|
|
322
293
|
for await (const chunk of responseStream) {
|
|
@@ -331,10 +302,11 @@ export class OllamaModel implements LanguageModel {
|
|
|
331
302
|
toolCalls.push(...chunk.message.tool_calls);
|
|
332
303
|
}
|
|
333
304
|
|
|
334
|
-
// if the response is done,
|
|
305
|
+
// if the response is done, capture token usage and check the done reason
|
|
335
306
|
if (chunk.done) {
|
|
336
|
-
this.recordTokenUsage(chunk);
|
|
337
307
|
lastUpdated = chunk.created_at;
|
|
308
|
+
inputTokenCount = chunk.prompt_eval_count;
|
|
309
|
+
outputTokenCount = chunk.eval_count;
|
|
338
310
|
if (chunk.done_reason && chunk.done_reason !== 'stop') {
|
|
339
311
|
throw new Error('Ollama stopped unexpectedly. Reason: ' + chunk.done_reason);
|
|
340
312
|
}
|
|
@@ -356,11 +328,15 @@ export class OllamaModel implements LanguageModel {
|
|
|
356
328
|
}
|
|
357
329
|
|
|
358
330
|
// recurse to get the final response content (the intermediate content remains hidden, it is only part of the conversation)
|
|
359
|
-
return this.handleNonStreamingRequest(ollama, chatRequest, cancellation,
|
|
331
|
+
return this.handleNonStreamingRequest(ollama, chatRequest, cancellation, reasoning);
|
|
360
332
|
}
|
|
361
333
|
|
|
362
334
|
// if no tool calls are necessary, return the final response content
|
|
363
|
-
|
|
335
|
+
const result: LanguageModelTextResponse = { text: content };
|
|
336
|
+
if (inputTokenCount !== undefined && outputTokenCount !== undefined) {
|
|
337
|
+
result.usage = { input_tokens: inputTokenCount, output_tokens: outputTokenCount };
|
|
338
|
+
}
|
|
339
|
+
return result;
|
|
364
340
|
} catch (error) {
|
|
365
341
|
console.error('Error in ollama call:', error.message);
|
|
366
342
|
throw error;
|
|
@@ -413,16 +389,6 @@ export class OllamaModel implements LanguageModel {
|
|
|
413
389
|
return toolCallsForResponse;
|
|
414
390
|
}
|
|
415
391
|
|
|
416
|
-
private recordTokenUsage(response: ChatResponse): void {
|
|
417
|
-
if (this.tokenUsageService && response.prompt_eval_count && response.eval_count) {
|
|
418
|
-
this.tokenUsageService.recordTokenUsage(this.id, {
|
|
419
|
-
inputTokens: response.prompt_eval_count,
|
|
420
|
-
outputTokens: response.eval_count,
|
|
421
|
-
requestId: `ollama_${response.created_at}`
|
|
422
|
-
}).catch(error => console.error('Error recording token usage:', error));
|
|
423
|
-
}
|
|
424
|
-
}
|
|
425
|
-
|
|
426
392
|
protected initializeOllama(): Ollama {
|
|
427
393
|
const host = this.host();
|
|
428
394
|
if (!host) {
|
|
@@ -14,7 +14,7 @@
|
|
|
14
14
|
// SPDX-License-Identifier: EPL-2.0 OR GPL-2.0-only WITH Classpath-exception-2.0
|
|
15
15
|
// *****************************************************************************
|
|
16
16
|
|
|
17
|
-
import { LanguageModelRegistry, LanguageModelStatus
|
|
17
|
+
import { LanguageModelRegistry, LanguageModelStatus } from '@theia/ai-core';
|
|
18
18
|
import { getProxyUrl } from '@theia/ai-core/lib/node';
|
|
19
19
|
import { inject, injectable } from '@theia/core/shared/inversify';
|
|
20
20
|
import { OllamaModel } from './ollama-language-model';
|
|
@@ -29,9 +29,6 @@ export class OllamaLanguageModelsManagerImpl implements OllamaLanguageModelsMana
|
|
|
29
29
|
@inject(LanguageModelRegistry)
|
|
30
30
|
protected readonly languageModelRegistry: LanguageModelRegistry;
|
|
31
31
|
|
|
32
|
-
@inject(TokenUsageService)
|
|
33
|
-
protected readonly tokenUsageService: TokenUsageService;
|
|
34
|
-
|
|
35
32
|
get host(): string | undefined {
|
|
36
33
|
return this._host ?? process.env.OLLAMA_HOST;
|
|
37
34
|
}
|
|
@@ -59,7 +56,8 @@ export class OllamaLanguageModelsManagerImpl implements OllamaLanguageModelsMana
|
|
|
59
56
|
const status = this.calculateStatus(host);
|
|
60
57
|
await this.languageModelRegistry.patchLanguageModel<OllamaModel>(modelDescription.id, {
|
|
61
58
|
proxy: proxyUrl,
|
|
62
|
-
status
|
|
59
|
+
status,
|
|
60
|
+
reasoningSupport: modelDescription.reasoningSupport
|
|
63
61
|
});
|
|
64
62
|
} else {
|
|
65
63
|
const status = this.calculateStatus(host);
|
|
@@ -69,8 +67,8 @@ export class OllamaLanguageModelsManagerImpl implements OllamaLanguageModelsMana
|
|
|
69
67
|
modelDescription.model,
|
|
70
68
|
status,
|
|
71
69
|
hostProvider,
|
|
72
|
-
|
|
73
|
-
|
|
70
|
+
proxyUrl,
|
|
71
|
+
modelDescription.reasoningSupport
|
|
74
72
|
)
|
|
75
73
|
]);
|
|
76
74
|
}
|
|
@@ -0,0 +1,40 @@
|
|
|
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 Ollama's `think` parameter. Most models accept a boolean,
|
|
21
|
+
* but some (e.g. GPT-OSS) require an effort string — set {@link requiresEffortLevel} for those.
|
|
22
|
+
* Returns `false` when reasoning is not requested or disabled.
|
|
23
|
+
*/
|
|
24
|
+
export function ollamaThinkParamFor(
|
|
25
|
+
level: ReasoningLevel | undefined,
|
|
26
|
+
requiresEffortLevel: boolean
|
|
27
|
+
): boolean | 'low' | 'medium' | 'high' {
|
|
28
|
+
if (!level || level === 'off') {
|
|
29
|
+
return false;
|
|
30
|
+
}
|
|
31
|
+
if (!requiresEffortLevel) {
|
|
32
|
+
return true;
|
|
33
|
+
}
|
|
34
|
+
switch (level) {
|
|
35
|
+
case 'minimal':
|
|
36
|
+
case 'low': return 'low';
|
|
37
|
+
case 'high': return 'high';
|
|
38
|
+
default: return 'medium'; // 'medium' and 'auto'
|
|
39
|
+
}
|
|
40
|
+
}
|