@mate-academy/llm-gateway 6.0.0 → 6.2.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 (103) hide show
  1. package/dist/LLMError.d.ts +12 -0
  2. package/dist/LLMError.js +36 -0
  3. package/dist/LLMError.js.map +1 -0
  4. package/dist/LLMService.constants.d.ts +792 -2
  5. package/dist/LLMService.constants.js +5 -1
  6. package/dist/LLMService.constants.js.map +1 -1
  7. package/dist/LLMService.typedefs.d.ts +24 -2
  8. package/dist/LLMService.typedefs.js +1 -0
  9. package/dist/LLMService.typedefs.js.map +1 -1
  10. package/dist/index.d.ts +1 -0
  11. package/dist/index.js +1 -0
  12. package/dist/index.js.map +1 -1
  13. package/dist/providers/GoogleGenerativeAI/GoogleGenerativeAI.constants.d.ts +72 -0
  14. package/dist/providers/GoogleGenerativeAI/GoogleGenerativeAI.constants.js +6 -0
  15. package/dist/providers/GoogleGenerativeAI/GoogleGenerativeAI.constants.js.map +1 -1
  16. package/dist/providers/GoogleGenerativeAI/services/GoogleGenerativeAIAssistance.service.d.ts +8 -7
  17. package/dist/providers/GoogleGenerativeAI/services/GoogleGenerativeAIAssistance.service.js +217 -31
  18. package/dist/providers/GoogleGenerativeAI/services/GoogleGenerativeAIAssistance.service.js.map +1 -1
  19. package/dist/providers/LLMAPI/LLMAPI.constants.d.ts +884 -0
  20. package/dist/providers/LLMAPI/LLMAPI.constants.js +282 -0
  21. package/dist/providers/LLMAPI/LLMAPI.constants.js.map +1 -0
  22. package/dist/providers/LLMAPI/LLMAPI.entity.d.ts +6 -0
  23. package/dist/providers/LLMAPI/LLMAPI.entity.js +49 -0
  24. package/dist/providers/LLMAPI/LLMAPI.entity.js.map +1 -0
  25. package/dist/providers/LLMAPI/LLMAPI.typedefs.d.ts +48 -0
  26. package/dist/providers/LLMAPI/LLMAPI.typedefs.js +46 -0
  27. package/dist/providers/LLMAPI/LLMAPI.typedefs.js.map +1 -0
  28. package/dist/providers/LLMAPI/LLMAPIService.factory.d.ts +6 -0
  29. package/dist/providers/LLMAPI/LLMAPIService.factory.js +19 -0
  30. package/dist/providers/LLMAPI/LLMAPIService.factory.js.map +1 -0
  31. package/dist/providers/LLMAPI/index.d.ts +6 -0
  32. package/dist/providers/LLMAPI/index.js +23 -0
  33. package/dist/providers/LLMAPI/index.js.map +1 -0
  34. package/dist/providers/LLMAPI/schemas/LLMAPISchemaAdapter.d.ts +3 -0
  35. package/dist/providers/LLMAPI/schemas/LLMAPISchemaAdapter.js +8 -0
  36. package/dist/providers/LLMAPI/schemas/LLMAPISchemaAdapter.js.map +1 -0
  37. package/dist/providers/LLMAPI/services/LLMAPIAssistance.service.d.ts +34 -0
  38. package/dist/providers/LLMAPI/services/LLMAPIAssistance.service.js +497 -0
  39. package/dist/providers/LLMAPI/services/LLMAPIAssistance.service.js.map +1 -0
  40. package/dist/providers/LLMAPI/services/LLMAPICompletion.service.d.ts +18 -0
  41. package/dist/providers/LLMAPI/services/LLMAPICompletion.service.js +138 -0
  42. package/dist/providers/LLMAPI/services/LLMAPICompletion.service.js.map +1 -0
  43. package/dist/providers/LLMAPI/services/index.d.ts +2 -0
  44. package/dist/providers/LLMAPI/services/index.js +19 -0
  45. package/dist/providers/LLMAPI/services/index.js.map +1 -0
  46. package/dist/providers/LLMAPI/utilities/LLMAPIJsonFixer.d.ts +22 -0
  47. package/dist/providers/LLMAPI/utilities/LLMAPIJsonFixer.js +228 -0
  48. package/dist/providers/LLMAPI/utilities/LLMAPIJsonFixer.js.map +1 -0
  49. package/dist/providers/LLMAPI/utilities/index.d.ts +1 -0
  50. package/dist/providers/LLMAPI/utilities/index.js +7 -0
  51. package/dist/providers/LLMAPI/utilities/index.js.map +1 -0
  52. package/dist/providers/OpenAI/OpenAI.constants.d.ts +165 -0
  53. package/dist/providers/OpenAI/OpenAI.constants.js +11 -0
  54. package/dist/providers/OpenAI/OpenAI.constants.js.map +1 -1
  55. package/dist/providers/OpenAI/OpenAI.typedefs.d.ts +6 -0
  56. package/dist/providers/OpenAI/OpenAI.typedefs.js +9 -1
  57. package/dist/providers/OpenAI/OpenAI.typedefs.js.map +1 -1
  58. package/dist/providers/OpenAI/services/OpenAIAssistance.service.d.ts +9 -7
  59. package/dist/providers/OpenAI/services/OpenAIAssistance.service.js +209 -40
  60. package/dist/providers/OpenAI/services/OpenAIAssistance.service.js.map +1 -1
  61. package/dist/providers/OpenAI/services/OpenAICompletion.service.d.ts +3 -13
  62. package/dist/providers/OpenAI/services/OpenAICompletion.service.js +2 -181
  63. package/dist/providers/OpenAI/services/OpenAICompletion.service.js.map +1 -1
  64. package/dist/providers/OpenAICompatible/OpenAICompatibleCompletion.service.d.ts +21 -0
  65. package/dist/providers/OpenAICompatible/OpenAICompatibleCompletion.service.js +204 -0
  66. package/dist/providers/OpenAICompatible/OpenAICompatibleCompletion.service.js.map +1 -0
  67. package/dist/providers/index.d.ts +1 -0
  68. package/dist/providers/index.js +1 -0
  69. package/dist/providers/index.js.map +1 -1
  70. package/dist/services/LLMAssistanceService.abstract.d.ts +8 -6
  71. package/dist/services/LLMAssistanceService.abstract.js +20 -0
  72. package/dist/services/LLMAssistanceService.abstract.js.map +1 -1
  73. package/dist/services/chatState/CompletionsChatState.d.ts +19 -0
  74. package/dist/services/chatState/CompletionsChatState.js +80 -0
  75. package/dist/services/chatState/CompletionsChatState.js.map +1 -0
  76. package/dist/services/chatState/index.d.ts +1 -0
  77. package/dist/services/chatState/index.js +6 -0
  78. package/dist/services/chatState/index.js.map +1 -0
  79. package/dist/services/fileStorage/FileStorageToolExecutor.d.ts +15 -0
  80. package/dist/services/fileStorage/FileStorageToolExecutor.js +172 -0
  81. package/dist/services/fileStorage/FileStorageToolExecutor.js.map +1 -0
  82. package/dist/services/fileStorage/InMemoryFileStorage.d.ts +20 -0
  83. package/dist/services/fileStorage/InMemoryFileStorage.js +67 -0
  84. package/dist/services/fileStorage/InMemoryFileStorage.js.map +1 -0
  85. package/dist/services/fileStorage/fileStorageTools.d.ts +26 -0
  86. package/dist/services/fileStorage/fileStorageTools.js +67 -0
  87. package/dist/services/fileStorage/fileStorageTools.js.map +1 -0
  88. package/dist/services/fileStorage/index.d.ts +4 -0
  89. package/dist/services/fileStorage/index.js +11 -0
  90. package/dist/services/fileStorage/index.js.map +1 -0
  91. package/dist/utilities/index.d.ts +1 -0
  92. package/dist/utilities/index.js +1 -0
  93. package/dist/utilities/index.js.map +1 -1
  94. package/dist/utilities/schema/SchemaAdapterRegistry.d.ts +2 -0
  95. package/dist/utilities/schema/SchemaAdapterRegistry.js +2 -0
  96. package/dist/utilities/schema/SchemaAdapterRegistry.js.map +1 -1
  97. package/dist/utilities/tools/LLMTool.d.ts +10 -0
  98. package/dist/utilities/tools/LLMTool.js +10 -0
  99. package/dist/utilities/tools/LLMTool.js.map +1 -0
  100. package/dist/utilities/tools/index.d.ts +1 -0
  101. package/dist/utilities/tools/index.js +6 -0
  102. package/dist/utilities/tools/index.js.map +1 -0
  103. package/package.json +1 -1
@@ -0,0 +1,138 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LLMAPICompletionService = void 0;
4
+ const openai_1 = require("openai");
5
+ const LLMService_typedefs_1 = require("../../../LLMService.typedefs");
6
+ const serializeError_1 = require("../../../utilities/serializeError");
7
+ const OpenAICompatibleCompletion_service_1 = require("../../../providers/OpenAICompatible/OpenAICompatibleCompletion.service");
8
+ const LLMAPI_typedefs_1 = require("../../../providers/LLMAPI/LLMAPI.typedefs");
9
+ const OpenAI_entity_1 = require("../../../providers/OpenAI/OpenAI.entity");
10
+ const utilities_1 = require("../../../providers/LLMAPI/utilities");
11
+ class LLMAPICompletionService extends OpenAICompatibleCompletion_service_1.OpenAICompatibleCompletionService {
12
+ jsonFixer;
13
+ constructor(logger, reporter, options) {
14
+ super(LLMService_typedefs_1.LLMProviders.LLMAPI, logger, reporter, options);
15
+ }
16
+ get instance() {
17
+ return this.getOrCreateInstance(() => new openai_1.OpenAI({
18
+ ...this.options,
19
+ baseURL: LLMAPI_typedefs_1.LLMAPI_BASE_URL,
20
+ }));
21
+ }
22
+ getJsonFixer() {
23
+ if (!this.jsonFixer) {
24
+ this.jsonFixer = new utilities_1.LLMAPIJsonFixer(this.instance, this.logger, this.reporter);
25
+ }
26
+ return this.jsonFixer;
27
+ }
28
+ stripThinkingTags(text) {
29
+ return text.replace(/<think>[\s\S]*?<\/think>\s*/g, '').trim();
30
+ }
31
+ async sendTextMessage(options) {
32
+ const result = await super.sendTextMessage(options);
33
+ if ('text' in result && result.text) {
34
+ return {
35
+ ...result,
36
+ text: this.stripThinkingTags(result.text),
37
+ };
38
+ }
39
+ return result;
40
+ }
41
+ async sendStructuredMessage(options) {
42
+ const { model, message, history = [], instructions, abortSignal, schema, reporterContext, } = options;
43
+ const writeMetrics = this.reporter
44
+ ?.initWriter(reporterContext);
45
+ try {
46
+ abortSignal?.throwIfAborted();
47
+ const countTokensFn = OpenAI_entity_1.OpenAIEntity.getCountTokensFn();
48
+ const combinedMessages = await OpenAI_entity_1.OpenAIEntity
49
+ .combineMessagesWithLimit({
50
+ history,
51
+ message,
52
+ model,
53
+ countTokensFn,
54
+ instance: this.instance,
55
+ logger: this.logger,
56
+ });
57
+ const chatCompletionMessageParam = OpenAI_entity_1.OpenAIEntity
58
+ .getChatCompletionMessageParam(combinedMessages, this.logger);
59
+ const jsonSchema = schema._toProviderSchema(this.provider);
60
+ const schemaInstruction = 'You MUST respond with a valid JSON object'
61
+ + ' matching this JSON schema:\n'
62
+ + JSON.stringify(jsonSchema, null, 2);
63
+ const fullInstructions = instructions
64
+ ? `${instructions}\n\n${schemaInstruction}`
65
+ : schemaInstruction;
66
+ const systemMessage = [{ role: 'system', content: fullInstructions }];
67
+ abortSignal?.throwIfAborted();
68
+ const completion = await this.instance
69
+ .chat.completions.create({
70
+ model: model.name,
71
+ messages: [
72
+ ...systemMessage,
73
+ ...chatCompletionMessageParam,
74
+ ],
75
+ n: 1,
76
+ ...model.config,
77
+ response_format: { type: 'json_object' },
78
+ }, {
79
+ signal: abortSignal,
80
+ });
81
+ abortSignal?.throwIfAborted();
82
+ const rawContent = completion.choices[0]?.message.content ?? '';
83
+ const content = rawContent.replace(/<think>[\s\S]*?<\/think>\s*/g, '').trim();
84
+ if (!content) {
85
+ throw new Error(`Empty response from ${this.provider}`);
86
+ }
87
+ const promptTokens = completion.usage?.prompt_tokens ?? 0;
88
+ const cachedTokens = completion.usage?.prompt_tokens_details
89
+ ?.cached_tokens ?? 0;
90
+ const regularInputTokens = promptTokens - cachedTokens;
91
+ const outputTokens = completion.usage?.completion_tokens ?? 0;
92
+ const reasoningTokens = completion.usage?.completion_tokens_details
93
+ ?.reasoning_tokens ?? 0;
94
+ await this.writeSuccessMetrics({
95
+ method: this.getMethodName(this.sendStructuredMessage),
96
+ model,
97
+ usage: {
98
+ inputTextTokens: regularInputTokens,
99
+ inputCachedTextTokens: cachedTokens,
100
+ outputTextTokens: outputTokens,
101
+ outputReasoningTokens: reasoningTokens,
102
+ },
103
+ writeMetrics,
104
+ });
105
+ return this.getJsonFixer().parseStructuredResponse({
106
+ content,
107
+ schema,
108
+ jsonSchema,
109
+ reporterContext,
110
+ abortSignal,
111
+ });
112
+ }
113
+ catch (error) {
114
+ await this.writeErrorMetrics({
115
+ method: this.getMethodName(this.sendStructuredMessage),
116
+ model,
117
+ isAborted: abortSignal?.aborted,
118
+ writeMetrics,
119
+ });
120
+ this.logger
121
+ ?.child(this.getMethodName(this.sendStructuredMessage))
122
+ .error('Error sending structured message', {
123
+ error: (0, serializeError_1.serializeError)(error),
124
+ options,
125
+ });
126
+ return {
127
+ text: '',
128
+ error: error instanceof Error
129
+ ? error
130
+ : new Error(String(error)),
131
+ parseError: `Failed to get structured response`
132
+ + ` from ${this.provider}`,
133
+ };
134
+ }
135
+ }
136
+ }
137
+ exports.LLMAPICompletionService = LLMAPICompletionService;
138
+ //# sourceMappingURL=LLMAPICompletion.service.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LLMAPICompletion.service.js","sourceRoot":"","sources":["../../../../src/providers/LLMAPI/services/LLMAPICompletion.service.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,2 @@
1
+ export * from './LLMAPICompletion.service';
2
+ export * from './LLMAPIAssistance.service';
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
3
+ if (k2 === undefined) k2 = k;
4
+ var desc = Object.getOwnPropertyDescriptor(m, k);
5
+ if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
6
+ desc = { enumerable: true, get: function() { return m[k]; } };
7
+ }
8
+ Object.defineProperty(o, k2, desc);
9
+ }) : (function(o, m, k, k2) {
10
+ if (k2 === undefined) k2 = k;
11
+ o[k2] = m[k];
12
+ }));
13
+ var __exportStar = (this && this.__exportStar) || function(m, exports) {
14
+ for (var p in m) if (p !== "default" && !Object.prototype.hasOwnProperty.call(exports, p)) __createBinding(exports, m, p);
15
+ };
16
+ Object.defineProperty(exports, "__esModule", { value: true });
17
+ __exportStar(require("./LLMAPICompletion.service"), exports);
18
+ __exportStar(require("./LLMAPIAssistance.service"), exports);
19
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/providers/LLMAPI/services/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;AAAA,6DAA2C;AAC3C,6DAA2C"}
@@ -0,0 +1,22 @@
1
+ import type { OpenAI } from 'openai';
2
+ import type { LLMLoggerInterface } from '../../../utilities/logger';
3
+ import type { LLMReporterInterface } from '../../../utilities/reporter';
4
+ import type { LLMSchemaInterface } from '../../../utilities/schema';
5
+ import type { LLMStructuredResult } from '../../../LLMService.typedefs';
6
+ interface ParseStructuredResponseOptions {
7
+ content: string;
8
+ schema: LLMSchemaInterface;
9
+ jsonSchema: any;
10
+ reporterContext?: any;
11
+ abortSignal?: AbortSignal;
12
+ }
13
+ export declare class LLMAPIJsonFixer {
14
+ private readonly instance;
15
+ private readonly logger;
16
+ private readonly reporter;
17
+ constructor(instance: OpenAI, logger: LLMLoggerInterface | undefined, reporter: LLMReporterInterface<any> | undefined);
18
+ parseStructuredResponse(options: ParseStructuredResponseOptions): Promise<LLMStructuredResult>;
19
+ private fixAndParseJson;
20
+ }
21
+ export declare function sanitizeJsonResponse(response: string): string;
22
+ export {};
@@ -0,0 +1,228 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.LLMAPIJsonFixer = void 0;
4
+ exports.sanitizeJsonResponse = sanitizeJsonResponse;
5
+ const serializeError_1 = require("../../../utilities/serializeError");
6
+ const LLMAPI_typedefs_1 = require("../../../providers/LLMAPI/LLMAPI.typedefs");
7
+ const utilities_1 = require("../../../utilities");
8
+ class LLMAPIJsonFixer {
9
+ instance;
10
+ logger;
11
+ reporter;
12
+ constructor(instance, logger, reporter) {
13
+ this.instance = instance;
14
+ this.logger = logger;
15
+ this.reporter = reporter;
16
+ }
17
+ async parseStructuredResponse(options) {
18
+ const { content, schema, jsonSchema, reporterContext, abortSignal, } = options;
19
+ const sanitized = sanitizeJsonResponse(content);
20
+ try {
21
+ const parsed = JSON.parse(sanitized);
22
+ const validation = schema._parse(parsed);
23
+ if (validation.error) {
24
+ this.logger
25
+ ?.child('parseStructuredResponse')
26
+ .warn('Schema validation failed, attempting fix', { validationError: validation.error });
27
+ return this.fixAndParseJson({
28
+ rawResponse: sanitized,
29
+ parsingError: validation.error,
30
+ schema,
31
+ jsonSchema,
32
+ reporterContext,
33
+ abortSignal,
34
+ });
35
+ }
36
+ return {
37
+ text: sanitized,
38
+ data: validation.data,
39
+ };
40
+ }
41
+ catch (parseError) {
42
+ this.logger
43
+ ?.child('parseStructuredResponse')
44
+ .warn('Failed to parse JSON response, attempting fix', {
45
+ content: sanitized,
46
+ parseError: parseError.message,
47
+ });
48
+ return this.fixAndParseJson({
49
+ rawResponse: sanitized,
50
+ parsingError: parseError.message,
51
+ schema,
52
+ jsonSchema,
53
+ reporterContext,
54
+ abortSignal,
55
+ });
56
+ }
57
+ }
58
+ async fixAndParseJson(options) {
59
+ const { rawResponse, parsingError, schema, jsonSchema, reporterContext, abortSignal, } = options;
60
+ const fixWriteMetrics = this.reporter
61
+ ?.initWriter(reporterContext);
62
+ try {
63
+ abortSignal?.throwIfAborted();
64
+ const fixCompletion = await this.instance
65
+ .chat.completions.create({
66
+ model: LLMAPI_typedefs_1.LLMAPI_JSON_FIX_MODEL.name,
67
+ messages: [
68
+ {
69
+ role: 'system',
70
+ content: 'You are a JSON fixer.'
71
+ + ' Fix the provided broken or invalid JSON'
72
+ + ' so it matches the expected schema.'
73
+ + ' Return ONLY the corrected JSON'
74
+ + ' without any explanations or formatting.',
75
+ },
76
+ {
77
+ role: 'user',
78
+ content: buildFixJsonPrompt({
79
+ rawResponse,
80
+ parsingError,
81
+ jsonSchema,
82
+ }),
83
+ },
84
+ ],
85
+ n: 1,
86
+ ...LLMAPI_typedefs_1.LLMAPI_JSON_FIX_MODEL.config,
87
+ response_format: { type: 'json_object' },
88
+ }, {
89
+ signal: abortSignal,
90
+ });
91
+ const fixedContent = sanitizeJsonResponse(fixCompletion.choices[0]?.message.content ?? '');
92
+ const fixPromptTokens = fixCompletion.usage?.prompt_tokens ?? 0;
93
+ const fixCachedTokens = fixCompletion.usage?.prompt_tokens_details
94
+ ?.cached_tokens ?? 0;
95
+ const fixOutputTokens = fixCompletion.usage?.completion_tokens ?? 0;
96
+ await writeSuccessMetrics({
97
+ model: LLMAPI_typedefs_1.LLMAPI_JSON_FIX_MODEL,
98
+ usage: {
99
+ inputTextTokens: fixPromptTokens - fixCachedTokens,
100
+ inputCachedTextTokens: fixCachedTokens,
101
+ outputTextTokens: fixOutputTokens,
102
+ },
103
+ writeMetrics: fixWriteMetrics,
104
+ });
105
+ const parsed = JSON.parse(fixedContent);
106
+ const validation = schema._parse(parsed);
107
+ if (validation.error) {
108
+ this.logger
109
+ ?.child('fixAndParseJson')
110
+ .error('JSON fix attempt failed schema validation', {
111
+ fixedContent,
112
+ validationError: validation.error,
113
+ });
114
+ return {
115
+ text: fixedContent,
116
+ parseError: validation.error,
117
+ };
118
+ }
119
+ this.logger
120
+ ?.child('fixAndParseJson')
121
+ .info('JSON fix succeeded');
122
+ return {
123
+ text: fixedContent,
124
+ data: validation.data,
125
+ };
126
+ }
127
+ catch (fixError) {
128
+ await writeErrorMetrics({
129
+ model: LLMAPI_typedefs_1.LLMAPI_JSON_FIX_MODEL,
130
+ isAborted: abortSignal?.aborted,
131
+ writeMetrics: fixWriteMetrics,
132
+ });
133
+ this.logger
134
+ ?.child('fixAndParseJson')
135
+ .error('JSON fix request failed', {
136
+ error: (0, serializeError_1.serializeError)(fixError),
137
+ });
138
+ return {
139
+ text: rawResponse,
140
+ error: fixError,
141
+ parseError: 'Failed to fix structured response from LLMAPI',
142
+ };
143
+ }
144
+ }
145
+ }
146
+ exports.LLMAPIJsonFixer = LLMAPIJsonFixer;
147
+ function sanitizeJsonResponse(response) {
148
+ return response
149
+ .replace(/^```(?:json)?/, '')
150
+ .replace(/```$/, '')
151
+ .trim();
152
+ }
153
+ function buildFixJsonPrompt(options) {
154
+ const { rawResponse, parsingError, jsonSchema } = options;
155
+ return [
156
+ 'Fix the following JSON response'
157
+ + ' so it matches the expected schema.',
158
+ '',
159
+ 'Expected JSON Schema:',
160
+ JSON.stringify(jsonSchema, null, 2),
161
+ '',
162
+ 'Broken JSON response:',
163
+ rawResponse,
164
+ '',
165
+ 'Parsing error:',
166
+ parsingError,
167
+ '',
168
+ 'Common issues to fix:',
169
+ '- Missing or extra commas',
170
+ '- Unescaped special characters in strings',
171
+ '- Missing quotes around keys or values',
172
+ '- Wrong field names (rename to match schema)',
173
+ '- Wrong field types (convert to match schema)',
174
+ '- Truncated JSON (complete it logically)',
175
+ '',
176
+ 'Return ONLY the corrected JSON.',
177
+ ].join('\n');
178
+ }
179
+ async function writeSuccessMetrics(params) {
180
+ const { model, usage: { inputTextTokens = 0, outputTextTokens = 0, inputAudioTokens = 0, outputAudioTokens = 0, }, writeMetrics, } = params;
181
+ if (!writeMetrics) {
182
+ return;
183
+ }
184
+ const costs = (0, utilities_1.calculateCosts)(model, {
185
+ inputTextTokens,
186
+ outputTextTokens,
187
+ inputAudioTokens,
188
+ outputAudioTokens,
189
+ });
190
+ const input = inputTextTokens + inputAudioTokens;
191
+ const output = outputTextTokens + outputAudioTokens;
192
+ return writeMetrics({
193
+ provider: 'LLMAPI',
194
+ purpose: 'Completion',
195
+ model: model.name,
196
+ modelConfig: model.config ?? null,
197
+ method: 'fixAndParseJson',
198
+ status: 'success',
199
+ tokens: {
200
+ input,
201
+ output,
202
+ total: input + output,
203
+ },
204
+ costs,
205
+ });
206
+ }
207
+ async function writeErrorMetrics(params) {
208
+ const { model, isAborted = false, writeMetrics } = params;
209
+ if (!writeMetrics) {
210
+ return;
211
+ }
212
+ return writeMetrics({
213
+ provider: 'LLMAPI',
214
+ purpose: 'Completion',
215
+ model: model.name,
216
+ modelConfig: model.config ?? null,
217
+ method: 'fixAndParseJson',
218
+ status: isAborted ? 'cancelled' : 'error',
219
+ tokens: { input: 0, output: 0, total: 0 },
220
+ costs: {
221
+ total: 0,
222
+ input: 0,
223
+ output: 0,
224
+ currency: 'USD',
225
+ },
226
+ });
227
+ }
228
+ //# sourceMappingURL=LLMAPIJsonFixer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LLMAPIJsonFixer.js","sourceRoot":"","sources":["../../../../src/providers/LLMAPI/utilities/LLMAPIJsonFixer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1 @@
1
+ export { LLMAPIJsonFixer, sanitizeJsonResponse, } from './LLMAPIJsonFixer';
@@ -0,0 +1,7 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.sanitizeJsonResponse = exports.LLMAPIJsonFixer = void 0;
4
+ var LLMAPIJsonFixer_1 = require("./LLMAPIJsonFixer");
5
+ Object.defineProperty(exports, "LLMAPIJsonFixer", { enumerable: true, get: function () { return LLMAPIJsonFixer_1.LLMAPIJsonFixer; } });
6
+ Object.defineProperty(exports, "sanitizeJsonResponse", { enumerable: true, get: function () { return LLMAPIJsonFixer_1.sanitizeJsonResponse; } });
7
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../../src/providers/LLMAPI/utilities/index.ts"],"names":[],"mappings":";;;AAAA,qDAG2B;AAFzB,kHAAA,eAAe,OAAA;AACf,uHAAA,oBAAoB,OAAA"}