@holokai/holo-provider-ollama 0.1.0 → 0.1.3
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/dist/ollama.auditor.d.ts
CHANGED
|
@@ -1,12 +1,19 @@
|
|
|
1
|
-
import { BaseAuditor, HoloWorkerRequest,
|
|
1
|
+
import { BaseAuditor, HoloWorkerRequest, ProviderEnvelope, ProviderEvent } from "@holokai/sdk";
|
|
2
2
|
import { ChatRequest, GenerateRequest } from "ollama";
|
|
3
|
-
import { LlmRequest
|
|
3
|
+
import { LlmRequest } from "@holokai/sdk/core/entities";
|
|
4
4
|
export declare class OllamaAuditor extends BaseAuditor {
|
|
5
5
|
readonly provider = "ollama";
|
|
6
6
|
protected toHoloRequest(workerRequest: HoloWorkerRequest, llmRequest: Omit<LlmRequest, 'id'>): void;
|
|
7
7
|
protected mapProviderPayload(workerRequest: HoloWorkerRequest, llmRequest: Omit<LlmRequest, 'id'>): void;
|
|
8
|
-
protected
|
|
9
|
-
|
|
8
|
+
protected mapResponseMetrics(providerEvent: Extract<ProviderEvent, {
|
|
9
|
+
type: 'done' | 'error';
|
|
10
|
+
}>): Promise<Partial<{
|
|
11
|
+
usage_raw: any;
|
|
12
|
+
input_tokens: any;
|
|
13
|
+
output_tokens: any;
|
|
14
|
+
time_to_first_token: any;
|
|
15
|
+
total_processing_time: any;
|
|
16
|
+
}>>;
|
|
10
17
|
private extractUserPromptFromMessages;
|
|
11
18
|
private extractSystemPromptFromMessages;
|
|
12
19
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ollama.auditor.d.ts","sourceRoot":"","sources":["../src/ollama.auditor.ts"],"names":[],"mappings":"AAEA,OAAO,
|
|
1
|
+
{"version":3,"file":"ollama.auditor.d.ts","sourceRoot":"","sources":["../src/ollama.auditor.ts"],"names":[],"mappings":"AAEA,OAAO,EAAC,WAAW,EAAE,iBAAiB,EAAe,gBAAgB,EAAE,aAAa,EAAc,MAAM,cAAc,CAAC;AACvH,OAAO,EAAC,WAAW,EAAgB,eAAe,EAAmB,MAAM,QAAQ,CAAC;AACpF,OAAO,EAAC,UAAU,EAAC,MAAM,4BAA4B,CAAC;AAEtD,qBACa,aAAc,SAAQ,WAAW;IAC1C,QAAQ,CAAC,QAAQ,YAAY;IAE7B,SAAS,CAAC,aAAa,CAAC,aAAa,EAAE,iBAAiB,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,GAAG,IAAI;IA4BnG,SAAS,CAAC,kBAAkB,CAAC,aAAa,EAAE,iBAAiB,EAAE,UAAU,EAAE,IAAI,CAAC,UAAU,EAAE,IAAI,CAAC,GAAG,IAAI;cAQxF,kBAAkB,CAAC,aAAa,EAAE,OAAO,CAAC,aAAa,EAAE;QAAE,IAAI,EAAE,MAAM,GAAG,OAAO,CAAA;KAAE,CAAC;;;;;;;IAoBpG,OAAO,CAAC,6BAA6B;IAWrC,OAAO,CAAC,+BAA+B;IAOvC;;;;;;OAMG;IACH,OAAO,CAAC,yBAAyB;cAYjB,sBAAsB,CAAC,OAAO,EAAE,eAAe,GAAG,WAAW,GAAG,OAAO,CAAC,gBAAgB,CAAC;CAK5G"}
|
package/dist/ollama.auditor.js
CHANGED
|
@@ -6,7 +6,6 @@ var __decorate = (this && this.__decorate) || function (decorators, target, key,
|
|
|
6
6
|
};
|
|
7
7
|
import { injectable } from 'tsyringe';
|
|
8
8
|
import { BaseAuditor, pickDefined, RequestType } from "@holokai/sdk";
|
|
9
|
-
import { LlmStatus } from "@holokai/sdk/core/entities";
|
|
10
9
|
let OllamaAuditor = class OllamaAuditor extends BaseAuditor {
|
|
11
10
|
provider = 'ollama';
|
|
12
11
|
toHoloRequest(workerRequest, llmRequest) {
|
|
@@ -42,68 +41,22 @@ let OllamaAuditor = class OllamaAuditor extends BaseAuditor {
|
|
|
42
41
|
llmRequest.options = payload.options;
|
|
43
42
|
}
|
|
44
43
|
}
|
|
45
|
-
|
|
46
|
-
const
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
// Extract response text from final response
|
|
50
|
-
if (workerResponse.fullResponse !== undefined) {
|
|
51
|
-
llmResponse.response = workerResponse.fullResponse;
|
|
52
|
-
}
|
|
53
|
-
else if (payload.response !== undefined) {
|
|
54
|
-
// Generate format
|
|
55
|
-
llmResponse.response = payload.response;
|
|
56
|
-
}
|
|
57
|
-
else if (payload.message?.content !== undefined) {
|
|
58
|
-
// Chat format - handle empty content with tool calls
|
|
59
|
-
if (payload.message.content === '' && payload.message.tool_calls) {
|
|
60
|
-
llmResponse.response = JSON.stringify(payload.message.tool_calls);
|
|
61
|
-
}
|
|
62
|
-
else {
|
|
63
|
-
llmResponse.response = payload.message.content;
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
// Ensure response is never undefined for successful completions
|
|
67
|
-
if (llmResponse.response === undefined) {
|
|
68
|
-
llmResponse.response = '';
|
|
69
|
-
}
|
|
70
|
-
}
|
|
71
|
-
collectResponseMetrics(workerResponse, llmResponse) {
|
|
72
|
-
const payload = workerResponse.payload;
|
|
73
|
-
// Extract token usage from metrics or payload
|
|
74
|
-
if (workerResponse.metrics) {
|
|
75
|
-
llmResponse.usage_raw = workerResponse.metrics;
|
|
76
|
-
llmResponse.input_tokens = workerResponse.metrics.inputTokens;
|
|
77
|
-
llmResponse.output_tokens = workerResponse.metrics.outputTokens;
|
|
78
|
-
llmResponse.time_to_first_token = workerResponse.metrics.timeToFirstToken;
|
|
79
|
-
llmResponse.total_processing_time = workerResponse.metrics.totalProcessingTime;
|
|
80
|
-
}
|
|
81
|
-
else {
|
|
82
|
-
const promptTokens = payload.prompt_eval_count || 0;
|
|
83
|
-
const responseTokens = payload.eval_count || 0;
|
|
84
|
-
// Fallback to payload data
|
|
85
|
-
llmResponse.input_tokens = promptTokens;
|
|
86
|
-
llmResponse.output_tokens = responseTokens;
|
|
87
|
-
if (payload.total_duration) {
|
|
88
|
-
llmResponse.total_processing_time = Math.round(payload.total_duration / 1000000); // Convert nanoseconds to milliseconds
|
|
89
|
-
}
|
|
90
|
-
// Calculate time to first token using Ollama timing data
|
|
91
|
-
llmResponse.time_to_first_token = this.calculateTimeToFirstToken(payload);
|
|
92
|
-
const metrics = {
|
|
93
|
-
input_tokens: promptTokens,
|
|
94
|
-
output_tokens: responseTokens,
|
|
95
|
-
time_to_first_token: this.calculateTimeToFirstToken(payload),
|
|
96
|
-
total_processing_time: (payload.total_duration ? Math.round(payload.total_duration / 1000000) : undefined)
|
|
97
|
-
};
|
|
98
|
-
llmResponse.usage_raw = metrics;
|
|
99
|
-
}
|
|
100
|
-
// Set status based on completion
|
|
101
|
-
if (payload.done === true) {
|
|
102
|
-
llmResponse.status = LlmStatus.SUCCESS;
|
|
103
|
-
}
|
|
104
|
-
else {
|
|
105
|
-
llmResponse.status = LlmStatus.PARTIAL;
|
|
44
|
+
async mapResponseMetrics(providerEvent) {
|
|
45
|
+
const metrics = await super.mapResponseMetrics(providerEvent);
|
|
46
|
+
if (providerEvent.type === 'error') {
|
|
47
|
+
return metrics;
|
|
106
48
|
}
|
|
49
|
+
const payload = providerEvent.message;
|
|
50
|
+
const usage = {
|
|
51
|
+
input_tokens: payload.prompt_eval_count || metrics.input_tokens,
|
|
52
|
+
output_tokens: payload.eval_count || metrics.output_tokens,
|
|
53
|
+
time_to_first_token: this.calculateTimeToFirstToken(payload) || metrics.time_to_first_token,
|
|
54
|
+
total_processing_time: payload.total_duration ? Math.round(payload.total_duration / 1000000) : metrics.total_processing_time
|
|
55
|
+
};
|
|
56
|
+
return pickDefined({
|
|
57
|
+
usage_raw: usage,
|
|
58
|
+
...usage
|
|
59
|
+
});
|
|
107
60
|
}
|
|
108
61
|
extractUserPromptFromMessages(messages) {
|
|
109
62
|
if (!messages || !Array.isArray(messages))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ollama.auditor.js","sourceRoot":"","sources":["../src/ollama.auditor.ts"],"names":[],"mappings":";;;;;;AAAA,OAAO,EAAC,UAAU,EAAC,MAAM,UAAU,CAAC;AAEpC,OAAO,
|
|
1
|
+
{"version":3,"file":"ollama.auditor.js","sourceRoot":"","sources":["../src/ollama.auditor.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@holokai/holo-provider-ollama",
|
|
3
|
-
"version": "0.1.
|
|
3
|
+
"version": "0.1.3",
|
|
4
4
|
"type": "module",
|
|
5
5
|
"description": "Ollama provider plugin for Holo LLM Gateway",
|
|
6
6
|
"author": "Holokai",
|
|
@@ -58,7 +58,7 @@
|
|
|
58
58
|
"prepublishOnly": "npm run clean && npm run build"
|
|
59
59
|
},
|
|
60
60
|
"peerDependencies": {
|
|
61
|
-
"@holokai/sdk": "^0.1.
|
|
61
|
+
"@holokai/sdk": "^0.1.1"
|
|
62
62
|
},
|
|
63
63
|
"dependencies": {
|
|
64
64
|
"ollama": "^0.6.3"
|