@mate-academy/llm-gateway 2.3.0 → 2.4.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 (53) hide show
  1. package/README.md +159 -0
  2. package/dist/LLMService.typedefs.d.ts +9 -0
  3. package/dist/LLMService.typedefs.js.map +1 -1
  4. package/dist/index.d.ts +1 -1
  5. package/dist/index.js +1 -1
  6. package/dist/index.js.map +1 -1
  7. package/dist/providers/GoogleGenerativeAI/GoogleGenerativeAI.constants.js +1 -1
  8. package/dist/providers/GoogleGenerativeAI/GoogleGenerativeAI.constants.js.map +1 -1
  9. package/dist/providers/GoogleGenerativeAI/GoogleGenerativeAI.entity.d.ts +4 -0
  10. package/dist/providers/GoogleGenerativeAI/GoogleGenerativeAI.entity.js +2 -1
  11. package/dist/providers/GoogleGenerativeAI/GoogleGenerativeAI.entity.js.map +1 -1
  12. package/dist/providers/GoogleGenerativeAI/services/GoogleGenerativeAIAssistance.service.d.ts +7 -1
  13. package/dist/providers/GoogleGenerativeAI/services/GoogleGenerativeAIAssistance.service.js +77 -1
  14. package/dist/providers/GoogleGenerativeAI/services/GoogleGenerativeAIAssistance.service.js.map +1 -1
  15. package/dist/providers/GoogleGenerativeAI/services/GoogleGenerativeAICompletion.service.d.ts +7 -1
  16. package/dist/providers/GoogleGenerativeAI/services/GoogleGenerativeAICompletion.service.js +79 -2
  17. package/dist/providers/GoogleGenerativeAI/services/GoogleGenerativeAICompletion.service.js.map +1 -1
  18. package/dist/providers/OpenAI/OpenAI.constants.js +1 -1
  19. package/dist/providers/OpenAI/OpenAI.constants.js.map +1 -1
  20. package/dist/providers/OpenAI/services/OpenAIAssistance.service.d.ts +7 -1
  21. package/dist/providers/OpenAI/services/OpenAIAssistance.service.js +117 -3
  22. package/dist/providers/OpenAI/services/OpenAIAssistance.service.js.map +1 -1
  23. package/dist/providers/OpenAI/services/OpenAICompletion.service.d.ts +7 -1
  24. package/dist/providers/OpenAI/services/OpenAICompletion.service.js +86 -2
  25. package/dist/providers/OpenAI/services/OpenAICompletion.service.js.map +1 -1
  26. package/dist/services/LLMAssistanceService.abstract.d.ts +8 -1
  27. package/dist/services/LLMAssistanceService.abstract.js.map +1 -1
  28. package/dist/services/LLMCompletionService.abstract.d.ts +8 -1
  29. package/dist/services/LLMCompletionService.abstract.js.map +1 -1
  30. package/dist/utilities/functional.utils.js.map +1 -0
  31. package/dist/utilities/index.d.ts +3 -0
  32. package/dist/utilities/index.js +22 -0
  33. package/dist/utilities/index.js.map +1 -0
  34. package/dist/utilities/promptBuilder.js.map +1 -0
  35. package/dist/utilities/schema/AbstractSchemaBuilder.d.ts +50 -0
  36. package/dist/utilities/schema/AbstractSchemaBuilder.js +11 -0
  37. package/dist/utilities/schema/AbstractSchemaBuilder.js.map +1 -0
  38. package/dist/utilities/schema/LLMSchema.d.ts +119 -0
  39. package/dist/utilities/schema/LLMSchema.js +286 -0
  40. package/dist/utilities/schema/LLMSchema.js.map +1 -0
  41. package/dist/utilities/schema/LLMSchemaInterface.d.ts +47 -0
  42. package/dist/utilities/schema/LLMSchemaInterface.js +3 -0
  43. package/dist/utilities/schema/LLMSchemaInterface.js.map +1 -0
  44. package/dist/utilities/schema/index.d.ts +3 -0
  45. package/dist/utilities/schema/index.js +11 -0
  46. package/dist/utilities/schema/index.js.map +1 -0
  47. package/package.json +19 -11
  48. package/dist/functional.utils.js.map +0 -1
  49. package/dist/promptBuilder.js.map +0 -1
  50. /package/dist/{functional.utils.d.ts → utilities/functional.utils.d.ts} +0 -0
  51. /package/dist/{functional.utils.js → utilities/functional.utils.js} +0 -0
  52. /package/dist/{promptBuilder.d.ts → utilities/promptBuilder.d.ts} +0 -0
  53. /package/dist/{promptBuilder.js → utilities/promptBuilder.js} +0 -0
@@ -1,7 +1,8 @@
1
1
  import { type Logger } from '@mate-academy/core';
2
2
  import { OpenAI } from 'openai';
3
- import { type LLMAssistanceOptions, type LLMAssistanceResult, type LLMAssistanceMessage, type LLMCreateAssistantOptions, type LLMCreateAssistantResult, type LLMCreateChatOptions, type LLMCreateChatResult, type LLMCreateFileStorageOptions, type LLMCreateFileStorageResult, type LLMInstanceOptions, LLMProviders, type LLMUploadFileOptions, type LLMUploadFileResult } from '../../../LLMService.typedefs';
3
+ import { type LLMAssistanceOptions, type LLMAssistanceResult, type LLMAssistanceMessage, type LLMCreateAssistantOptions, type LLMCreateAssistantResult, type LLMCreateChatOptions, type LLMCreateChatResult, type LLMCreateFileStorageOptions, type LLMCreateFileStorageResult, type LLMInstanceOptions, LLMProviders, type LLMUploadFileOptions, type LLMUploadFileResult, type LLMStructuredResult } from '../../../LLMService.typedefs';
4
4
  import { LLMAssistanceService } from '../../../services';
5
+ import { type LLMSchemaInterface, type InferSchema } from '../../../utilities/schema';
5
6
  export declare class OpenAIAssistanceService extends LLMAssistanceService<LLMProviders.OpenAI> {
6
7
  #private;
7
8
  private uploadedFiles;
@@ -15,6 +16,11 @@ export declare class OpenAIAssistanceService extends LLMAssistanceService<LLMPro
15
16
  deleteChat(chatId: string): Promise<void>;
16
17
  createAssistant(options: LLMCreateAssistantOptions<LLMProviders.OpenAI>): Promise<LLMCreateAssistantResult>;
17
18
  deleteAssistant(assistantId: string): Promise<void>;
19
+ assistInChat<S extends LLMSchemaInterface>(options: LLMAssistanceOptions & {
20
+ schema: S;
21
+ }): Promise<LLMStructuredResult<InferSchema<S>>>;
18
22
  assistInChat(options: LLMAssistanceOptions): Promise<LLMAssistanceResult>;
23
+ private assistInChatText;
24
+ private assistInChatStructured;
19
25
  countTokens(messages: LLMAssistanceMessage[]): Promise<number>;
20
26
  }
@@ -200,10 +200,16 @@ class OpenAIAssistanceService extends services_1.LLMAssistanceService {
200
200
  await this.instance.beta.assistants.delete(assistantId);
201
201
  }
202
202
  async assistInChat(options) {
203
+ if (options.schema) {
204
+ return this.assistInChatStructured(options);
205
+ }
206
+ return this.assistInChatText(options);
207
+ }
208
+ async assistInChatText(options) {
203
209
  try {
204
210
  const { message, chatId, assistantId, storageId, abortSignal, } = options;
205
211
  abortSignal?.throwIfAborted();
206
- const { attachments, content, role, } = message;
212
+ const { attachments, content: messageContentItems, role, } = message;
207
213
  const messageContent = [];
208
214
  if (attachments) {
209
215
  attachments
@@ -218,7 +224,7 @@ class OpenAIAssistanceService extends services_1.LLMAssistanceService {
218
224
  });
219
225
  });
220
226
  }
221
- messageContent.push(...content);
227
+ messageContent.push(...messageContentItems);
222
228
  const threadMessageData = {
223
229
  role: (role === LLMService_typedefs_1.LLMRoles.User
224
230
  ? OpenAI_typedefs_1.OpenAIRoles.User
@@ -273,7 +279,7 @@ class OpenAIAssistanceService extends services_1.LLMAssistanceService {
273
279
  }
274
280
  catch (error) {
275
281
  this.logger
276
- .child('assistInChat')
282
+ .child('assistInChatText')
277
283
  .error('Error assisting in chat', {
278
284
  error,
279
285
  options,
@@ -281,6 +287,114 @@ class OpenAIAssistanceService extends services_1.LLMAssistanceService {
281
287
  return { error };
282
288
  }
283
289
  }
290
+ async assistInChatStructured(options) {
291
+ try {
292
+ const { message, chatId, assistantId, abortSignal, schema, } = options;
293
+ abortSignal?.throwIfAborted();
294
+ const { attachments, content: messageContentItems, role, } = message;
295
+ const messageContent = [];
296
+ if (attachments) {
297
+ attachments
298
+ .filter(this.isImageFile)
299
+ .forEach((attachment) => {
300
+ messageContent.push({
301
+ type: 'image_file',
302
+ image_file: {
303
+ file_id: attachment.fileId,
304
+ detail: 'high',
305
+ },
306
+ });
307
+ });
308
+ }
309
+ messageContent.push(...messageContentItems);
310
+ const threadMessageData = {
311
+ role: (role === LLMService_typedefs_1.LLMRoles.User
312
+ ? OpenAI_typedefs_1.OpenAIRoles.User
313
+ : OpenAI_typedefs_1.OpenAIRoles.Assistant),
314
+ content: messageContent,
315
+ attachments: attachments
316
+ ?.filter(this.isNotImageFile)
317
+ .map((attachment) => ({
318
+ file_id: attachment.fileId,
319
+ tools: [{ type: 'file_search' }],
320
+ })) ?? [],
321
+ };
322
+ await this.instance.beta.threads.messages.create(chatId, threadMessageData, {
323
+ signal: abortSignal,
324
+ });
325
+ abortSignal?.throwIfAborted();
326
+ // Convert schema to OpenAI JSON Schema format
327
+ const jsonSchema = schema._toOpenAISchema();
328
+ const threadRun = await this.instance.beta.threads.runs.createAndPoll(chatId, {
329
+ assistant_id: assistantId,
330
+ response_format: {
331
+ type: 'json_schema',
332
+ json_schema: {
333
+ name: 'structured_response',
334
+ strict: true,
335
+ schema: jsonSchema,
336
+ },
337
+ },
338
+ }, {
339
+ signal: abortSignal,
340
+ });
341
+ const { status } = threadRun;
342
+ if (status !== 'completed') {
343
+ throw new Error(`Thread run did not complete for structured message, status: ${status}`);
344
+ }
345
+ abortSignal?.throwIfAborted();
346
+ const threadRunMessages = await this.instance.beta.threads.messages.list(chatId, {
347
+ run_id: threadRun.id,
348
+ }, {
349
+ signal: abortSignal,
350
+ });
351
+ const assistantResponse = threadRunMessages.data.find((message) => message.role === OpenAI_typedefs_1.OpenAIRoles.Assistant);
352
+ const textContent = assistantResponse?.content
353
+ .find((content) => (content.type === 'text' && 'text' in content));
354
+ abortSignal?.throwIfAborted();
355
+ const content = textContent?.text?.value ?? '';
356
+ if (!content) {
357
+ return {
358
+ text: '',
359
+ parseError: 'Empty response from OpenAI Assistant',
360
+ };
361
+ }
362
+ try {
363
+ const parsed = JSON.parse(content);
364
+ const validation = schema._parse(parsed);
365
+ return {
366
+ text: content,
367
+ data: validation.data,
368
+ parseError: validation.error,
369
+ };
370
+ }
371
+ catch (parseError) {
372
+ this.logger
373
+ .child('assistInChatStructured')
374
+ .warn('Failed to parse JSON response', {
375
+ content,
376
+ parseError: parseError.message,
377
+ });
378
+ return {
379
+ text: content,
380
+ parseError: `JSON parsing failed: ${parseError.message}`,
381
+ };
382
+ }
383
+ }
384
+ catch (error) {
385
+ this.logger
386
+ .child('assistInChatStructured')
387
+ .error('Error assisting in chat with structured output', {
388
+ error,
389
+ options,
390
+ });
391
+ return {
392
+ text: '',
393
+ error,
394
+ parseError: 'Failed to get structured response from OpenAI Assistant',
395
+ };
396
+ }
397
+ }
284
398
  async countTokens(messages) {
285
399
  const countTokensFn = OpenAI_entity_1.OpenAIEntity
286
400
  .getCountTokensFn();
@@ -1 +1 @@
1
- {"version":3,"file":"OpenAIAssistance.service.js","sourceRoot":"","sources":["../../../../src/providers/OpenAI/services/OpenAIAssistance.service.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"OpenAIAssistance.service.js","sourceRoot":"","sources":["../../../../src/providers/OpenAI/services/OpenAIAssistance.service.ts"],"names":[],"mappings":"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"}
@@ -1,10 +1,16 @@
1
1
  import { type Logger } from '@mate-academy/core';
2
2
  import { OpenAI } from 'openai';
3
- import { type LLMCompletionResult, type LLMInstanceOptions, LLMProviders, type LLMSendMessageOptions } from '../../../LLMService.typedefs';
3
+ import { type LLMCompletionResult, type LLMInstanceOptions, LLMProviders, type LLMSendMessageOptions, type LLMStructuredResult } from '../../../LLMService.typedefs';
4
4
  import { LLMCompletionService } from '../../../services';
5
+ import { type LLMSchemaInterface, type InferSchema } from '../../../utilities/schema';
5
6
  export declare class OpenAICompletionService extends LLMCompletionService<LLMProviders.OpenAI> {
6
7
  #private;
7
8
  constructor(logger: Logger, options: LLMInstanceOptions[LLMProviders.OpenAI]);
8
9
  get instance(): OpenAI;
10
+ sendMessage<S extends LLMSchemaInterface>(options: LLMSendMessageOptions<typeof this.provider> & {
11
+ schema: S;
12
+ }): Promise<LLMStructuredResult<InferSchema<S>>>;
9
13
  sendMessage(options: LLMSendMessageOptions<typeof this.provider>): Promise<LLMCompletionResult>;
14
+ private sendTextMessage;
15
+ private sendStructuredMessage;
10
16
  }
@@ -17,6 +17,12 @@ class OpenAICompletionService extends services_1.LLMCompletionService {
17
17
  return this.#instance;
18
18
  }
19
19
  async sendMessage(options) {
20
+ if (options.schema) {
21
+ return this.sendStructuredMessage(options);
22
+ }
23
+ return this.sendTextMessage(options);
24
+ }
25
+ async sendTextMessage(options) {
20
26
  try {
21
27
  const { model, message, history = [], abortSignal, } = options;
22
28
  abortSignal?.throwIfAborted();
@@ -47,14 +53,92 @@ class OpenAICompletionService extends services_1.LLMCompletionService {
47
53
  }
48
54
  catch (error) {
49
55
  this.logger
50
- .child('sendMessage')
51
- .error('Error sending message', {
56
+ .child('sendTextMessage')
57
+ .error('Error sending text message', {
52
58
  error,
53
59
  options,
54
60
  });
55
61
  return { error };
56
62
  }
57
63
  }
64
+ async sendStructuredMessage(options) {
65
+ try {
66
+ const { model, message, history = [], abortSignal, schema, } = options;
67
+ abortSignal?.throwIfAborted();
68
+ const countTokensFn = OpenAI_entity_1.OpenAIEntity.getCountTokensFn();
69
+ const combinedMessages = await OpenAI_entity_1.OpenAIEntity.combineMessagesWithLimit({
70
+ history,
71
+ message,
72
+ model,
73
+ countTokensFn,
74
+ instance: this.instance,
75
+ logger: this.logger,
76
+ });
77
+ const chatCompletionMessageParam = OpenAI_entity_1.OpenAIEntity
78
+ .getChatCompletionMessageParam(combinedMessages, this.logger);
79
+ abortSignal?.throwIfAborted();
80
+ // Convert schema to OpenAI JSON Schema format
81
+ const jsonSchema = schema._toOpenAISchema();
82
+ const completion = await this.instance.chat.completions.create({
83
+ model: model.name,
84
+ messages: chatCompletionMessageParam,
85
+ n: 1,
86
+ ...model.config,
87
+ response_format: {
88
+ type: 'json_schema',
89
+ json_schema: {
90
+ name: 'structured_response',
91
+ strict: true,
92
+ schema: jsonSchema,
93
+ },
94
+ },
95
+ }, {
96
+ signal: abortSignal,
97
+ });
98
+ abortSignal?.throwIfAborted();
99
+ const content = completion.choices[0]?.message.content ?? '';
100
+ if (!content) {
101
+ return {
102
+ text: '',
103
+ parseError: 'Empty response from OpenAI',
104
+ };
105
+ }
106
+ try {
107
+ const parsed = JSON.parse(content);
108
+ const validation = schema._parse(parsed);
109
+ return {
110
+ text: content,
111
+ data: validation.data,
112
+ parseError: validation.error,
113
+ };
114
+ }
115
+ catch (parseError) {
116
+ this.logger
117
+ .child('sendStructuredMessage')
118
+ .warn('Failed to parse JSON response', {
119
+ content,
120
+ parseError: parseError.message,
121
+ });
122
+ return {
123
+ text: content,
124
+ parseError: `JSON parsing failed: ${parseError.message}`,
125
+ };
126
+ }
127
+ }
128
+ catch (error) {
129
+ this.logger
130
+ .child('sendStructuredMessage')
131
+ .error('Error sending structured message', {
132
+ error,
133
+ options,
134
+ });
135
+ return {
136
+ text: '',
137
+ error,
138
+ parseError: 'Failed to get structured response from OpenAI',
139
+ };
140
+ }
141
+ }
58
142
  }
59
143
  exports.OpenAICompletionService = OpenAICompletionService;
60
144
  //# sourceMappingURL=OpenAICompletion.service.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"OpenAICompletion.service.js","sourceRoot":"","sources":["../../../../src/providers/OpenAI/services/OpenAICompletion.service.ts"],"names":[],"mappings":";;;AACA,mCAAgC;AAChC,+DAK+B;AAC/B,yCAEoB;AACpB,oEAAgE;AAEhE,MAAa,uBACX,SAAQ,+BAAyC;IACjD,SAAS,GAAkB,IAAI,CAAC;IAEhC,YACE,MAAc,EACd,OAAgD;QAEhD,KAAK,CAAC,kCAAY,CAAC,MAAM,EAAE,MAAM,EAAE,OAAO,CAAC,CAAC;IAC9C,CAAC;IAED,IAAI,QAAQ;QACV,IAAI,CAAC,IAAI,CAAC,SAAS,EAAE,CAAC;YACpB,IAAI,CAAC,SAAS,GAAG,IAAI,eAAM,CAAC,IAAI,CAAC,OAAO,CAAC,CAAC;QAC5C,CAAC;QAED,OAAO,IAAI,CAAC,SAAS,CAAC;IACxB,CAAC;IAED,KAAK,CAAC,WAAW,CACf,OAAoD;QAEpD,IAAI,CAAC;YACH,MAAM,EACJ,KAAK,EACL,OAAO,EACP,OAAO,GAAG,EAAE,EACZ,WAAW,GACZ,GAAG,OAAO,CAAC;YAEZ,WAAW,EAAE,cAAc,EAAE,CAAC;YAE9B,MAAM,aAAa,GAAG,4BAAY,CAAC,gBAAgB,EAAE,CAAC;YAEtD,MAAM,gBAAgB,GAAG,MAAM,4BAAY,CAAC,wBAAwB,CAAC;gBACnE,OAAO;gBACP,OAAO;gBACP,KAAK;gBACL,aAAa;gBACb,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,MAAM,EAAE,IAAI,CAAC,MAAM;aACpB,CAAC,CAAC;YAEH,MAAM,0BAA0B,GAAG,4BAAY;iBAC5C,6BAA6B,CAAC,gBAAgB,EAAE,IAAI,CAAC,MAAM,CAAC,CAAC;YAEhE,WAAW,EAAE,cAAc,EAAE,CAAC;YAE9B,MAAM,UAAU,GAAG,MAAM,IAAI,CAAC,QAAQ,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;gBAC7D,KAAK,EAAE,KAAK,CAAC,IAAI;gBACjB,QAAQ,EAAE,0BAA0B;gBACpC,CAAC,EAAE,CAAC;gBACJ,GAAG,KAAK,CAAC,MAAM;aAChB,EAAE;gBACD,MAAM,EAAE,WAAW;aACpB,CAAC,CAAC;YAEH,WAAW,EAAE,cAAc,EAAE,CAAC;YAE9B,OAAO;gBACL,IAAI,EAAE,UAAU,CAAC,OAAO,CAAC,CAAC,CAAC,EAAE,OAAO,CAAC,OAAO,IAAI,EAAE;aACnD,CAAC;QACJ,CAAC;QAAC,OAAO,KAAU,EAAE,CAAC;YACpB,IAAI,CAAC,MAAM;iBACR,KAAK,CAAC,aAAa,CAAC;iBACpB,KAAK,CAAC,uBAAuB,EAAE;gBAC9B,KAAK;gBACL,OAAO;aACR,CAAC,CAAC;YAEL,OAAO,EAAE,KAAK,EAAE,CAAC;QACnB,CAAC;IACH,CAAC;CACF;AAzED,0DAyEC"}
1
+ {"version":3,"file":"OpenAICompletion.service.js","sourceRoot":"","sources":["../../../../src/providers/OpenAI/services/OpenAICompletion.service.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,7 @@
1
1
  import { type Logger } from '@mate-academy/core';
2
- import { type LLMAssistanceOptions, type LLMAssistanceResult, type LLMAssistanceMessage, type LLMCreateAssistantOptions, type LLMCreateAssistantResult, type LLMCreateChatOptions, type LLMCreateChatResult, type LLMCreateFileStorageOptions, type LLMCreateFileStorageResult, type LLMInstanceOptions, type LLMModel, type LLMProviders, LLMPurposes, type LLMUploadFileOptions, type LLMUploadFileResult } from '../LLMService.typedefs';
2
+ import { type LLMAssistanceOptions, type LLMAssistanceResult, type LLMAssistanceMessage, type LLMCreateAssistantOptions, type LLMCreateAssistantResult, type LLMCreateChatOptions, type LLMCreateChatResult, type LLMCreateFileStorageOptions, type LLMCreateFileStorageResult, type LLMInstanceOptions, type LLMModel, type LLMProviders, LLMPurposes, type LLMUploadFileOptions, type LLMUploadFileResult, type LLMStructuredResult } from '../LLMService.typedefs';
3
3
  import { LLMBaseService } from '../services';
4
+ import { type LLMSchemaInterface, type InferSchema } from '../utilities/schema';
4
5
  export declare abstract class LLMAssistanceService<Provider extends LLMProviders> extends LLMBaseService<LLMPurposes.Assistance, Provider> {
5
6
  constructor(provider: Provider, logger: Logger, options: LLMInstanceOptions[Provider]);
6
7
  abstract uploadFile(options: LLMUploadFileOptions): Promise<LLMUploadFileResult>;
@@ -11,7 +12,13 @@ export declare abstract class LLMAssistanceService<Provider extends LLMProviders
11
12
  abstract deleteAssistant(assistantId: string): Promise<void>;
12
13
  abstract createChat(options: LLMCreateChatOptions<Provider>): Promise<LLMCreateChatResult>;
13
14
  abstract deleteChat(chatId: string): Promise<void>;
15
+ abstract assistInChat<S extends LLMSchemaInterface>(options: LLMAssistanceOptions & {
16
+ schema: S;
17
+ }): Promise<LLMStructuredResult<InferSchema<S>>>;
14
18
  abstract assistInChat(options: LLMAssistanceOptions): Promise<LLMAssistanceResult>;
19
+ abstract assistInChat(options: LLMAssistanceOptions & {
20
+ schema?: LLMSchemaInterface;
21
+ }): Promise<LLMAssistanceResult | LLMStructuredResult>;
15
22
  abstract countTokens(messages: LLMAssistanceMessage[], model: LLMModel<Provider>): Promise<number>;
16
23
  protected isImageFile(file: LLMUploadFileOptions): boolean;
17
24
  protected isNotImageFile: (file: LLMUploadFileOptions) => boolean;
@@ -1 +1 @@
1
- {"version":3,"file":"LLMAssistanceService.abstract.js","sourceRoot":"","sources":["../../src/services/LLMAssistanceService.abstract.ts"],"names":[],"mappings":";;;AACA,+DAgB+B;AAC/B,yCAA4C;AAC5C,iEAA8D;AAE9D,MAAsB,oBACpB,SAAQ,yBAGP;IACD,YACE,QAAkB,EAClB,MAAc,EACd,OAAqC;QAErC,KAAK,CACH,QAAQ,EACR,mBAAmB,EACnB,iCAAW,CAAC,UAAU,EACtB,MAAM,EACN,OAAO,CACR,CAAC;IACJ,CAAC;IA2CS,WAAW,CAAC,IAA0B;QAC9C,OAAO,2CAAoB,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACtD,CAAC;IAES,cAAc,GAAG,CAAC,IAA0B,EAAW,EAAE;QACjE,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC,CAAA;CACF;AAnED,oDAmEC"}
1
+ {"version":3,"file":"LLMAssistanceService.abstract.js","sourceRoot":"","sources":["../../src/services/LLMAssistanceService.abstract.ts"],"names":[],"mappings":";;;AACA,+DAiB+B;AAC/B,yCAA4C;AAC5C,iEAA8D;AAG9D,MAAsB,oBACpB,SAAQ,yBAGP;IACD,YACE,QAAkB,EAClB,MAAc,EACd,OAAqC;QAErC,KAAK,CACH,QAAQ,EACR,mBAAmB,EACnB,iCAAW,CAAC,UAAU,EACtB,MAAM,EACN,OAAO,CACR,CAAC;IACJ,CAAC;IAmDS,WAAW,CAAC,IAA0B;QAC9C,OAAO,2CAAoB,CAAC,QAAQ,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;IACtD,CAAC;IAES,cAAc,GAAG,CAAC,IAA0B,EAAW,EAAE;QACjE,OAAO,CAAC,IAAI,CAAC,WAAW,CAAC,IAAI,CAAC,CAAC;IACjC,CAAC,CAAA;CACF;AA3ED,oDA2EC"}
@@ -1,7 +1,14 @@
1
1
  import { type Logger } from '@mate-academy/core';
2
- import { LLMPurposes, type LLMProviders, type LLMSendMessageOptions, type LLMCompletionResult, type LLMInstanceOptions } from '../LLMService.typedefs';
2
+ import { LLMPurposes, type LLMProviders, type LLMSendMessageOptions, type LLMCompletionResult, type LLMInstanceOptions, type LLMStructuredResult } from '../LLMService.typedefs';
3
3
  import { LLMBaseService } from '../services';
4
+ import { type LLMSchemaInterface, type InferSchema } from '../utilities/schema';
4
5
  export declare abstract class LLMCompletionService<Provider extends LLMProviders> extends LLMBaseService<LLMPurposes.Completion, Provider> {
5
6
  constructor(provider: Provider, logger: Logger, options: LLMInstanceOptions[Provider]);
7
+ abstract sendMessage<S extends LLMSchemaInterface>(options: LLMSendMessageOptions<Provider> & {
8
+ schema: S;
9
+ }): Promise<LLMStructuredResult<InferSchema<S>>>;
6
10
  abstract sendMessage(options: LLMSendMessageOptions<Provider>): Promise<LLMCompletionResult>;
11
+ abstract sendMessage(options: LLMSendMessageOptions<Provider> & {
12
+ schema?: LLMSchemaInterface;
13
+ }): Promise<LLMCompletionResult | LLMStructuredResult>;
7
14
  }
@@ -1 +1 @@
1
- {"version":3,"file":"LLMCompletionService.abstract.js","sourceRoot":"","sources":["../../src/services/LLMCompletionService.abstract.ts"],"names":[],"mappings":";;;AACA,+DAM+B;AAC/B,yCAA4C;AAE5C,MAAsB,oBAGpB,SAAQ,yBAAgD;IACxD,YACE,QAAkB,EAClB,MAAc,EACd,OAAqC;QAErC,KAAK,CACH,QAAQ,EACR,mBAAmB,EACnB,iCAAW,CAAC,UAAU,EACtB,MAAM,EACN,OAAO,CACR,CAAC;IACJ,CAAC;CAKF;AArBD,oDAqBC"}
1
+ {"version":3,"file":"LLMCompletionService.abstract.js","sourceRoot":"","sources":["../../src/services/LLMCompletionService.abstract.ts"],"names":[],"mappings":";;;AACA,+DAO+B;AAC/B,yCAA4C;AAG5C,MAAsB,oBAGpB,SAAQ,yBAAgD;IACxD,YACE,QAAkB,EAClB,MAAc,EACd,OAAqC;QAErC,KAAK,CACH,QAAQ,EACR,mBAAmB,EACnB,iCAAW,CAAC,UAAU,EACtB,MAAM,EACN,OAAO,CACR,CAAC;IACJ,CAAC;CAaF;AA7BD,oDA6BC"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"functional.utils.js","sourceRoot":"","sources":["../../src/utilities/functional.utils.ts"],"names":[],"mappings":";;;AAAO,MAAM,IAAI,GAAG,CAAuB,GAAM,EAAE,IAAS,EAAc,EAAE,CAAC,CAC3E,IAAI,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,EAAE;IACvB,MAAM,CAAC,MAAM,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,EAAE,GAAG,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;IAExC,OAAO,GAAG,CAAC;AACb,CAAC,EAAE,EAAgB,CAAC,CACrB,CAAC;AANW,QAAA,IAAI,QAMf"}
@@ -0,0 +1,3 @@
1
+ export * from './functional.utils';
2
+ export * from './promptBuilder';
3
+ export { LLMSchema, type LLMSchemaInterface, type InferSchema } from './schema';
@@ -0,0 +1,22 @@
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
+ exports.LLMSchema = void 0;
18
+ __exportStar(require("./functional.utils"), exports);
19
+ __exportStar(require("./promptBuilder"), exports);
20
+ var schema_1 = require("./schema");
21
+ Object.defineProperty(exports, "LLMSchema", { enumerable: true, get: function () { return schema_1.LLMSchema; } });
22
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/utilities/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;AAAA,qDAAmC;AACnC,kDAAgC;AAChC,mCAAgF;AAAvE,mGAAA,SAAS,OAAA"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"promptBuilder.js","sourceRoot":"","sources":["../../src/utilities/promptBuilder.ts"],"names":[],"mappings":";AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GA+BG;;AAoHH,oDAQC;AA1DD,SAAS,aAAa,CACpB,MAAc,EACd,SAA2D;IAE3D,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,OAAO,MAAM,CAAC;IAChB,CAAC;IAED,MAAM,gBAAgB,GAAG,CAAC,MAAc,EAAU,EAAE,CAAC;IACnD,+DAA+D;IAC/D,MAAM,CAAC,OAAO,CAAC,SAAS,CAAC,CAAC,MAAM,CAAC,CAAC,GAAG,EAAE,CAAC,GAAG,EAAE,KAAK,CAAC,EAAE,EAAE,CAAC,CACtD,GAAG,CAAC,OAAO,CAAC,IAAI,MAAM,CAAC,SAAS,GAAG,QAAQ,EAAE,GAAG,CAAC,EAAE,MAAM,CAAC,KAAK,CAAC,CAAC,CAClE,EAAE,MAAM,CAAC,CACX,CAAC;IAEF,MAAM,0BAA0B,GAAG,CAAC,MAAc,EAAU,EAAE;QAC5D,qEAAqE;QACrE,OAAO,MAAM,CAAC,OAAO,CAAC,+BAA+B,EAAE,CAAC,CAAC,EAAE,WAAW,EAAE,OAAO,EAAE,EAAE;YACjF,MAAM,KAAK,GAAG,SAAS,CAAC,WAAW,CAAC,CAAC;YAErC,IAAI,KAAK,EAAE,CAAC;gBACV,6EAA6E;gBAC7E,MAAM,gBAAgB,GAAG,0BAA0B,CAAC,OAAO,CAAC,CAAC;gBAC7D,OAAO,gBAAgB,CAAC,gBAAgB,CAAC,CAAC;YAC5C,CAAC;YAED,OAAO,EAAE,CAAC;QACZ,CAAC,CAAC,CAAC;IACL,CAAC,CAAC;IAEF,IAAI,MAAM,GAAG,MAAM,CAAC;IAEpB,mFAAmF;IACnF,MAAM,GAAG,0BAA0B,CAAC,MAAM,CAAC,CAAC;IAE5C,6CAA6C;IAC7C,MAAM,GAAG,gBAAgB,CAAC,MAAM,CAAC,CAAC;IAElC,OAAO,MAAM,CAAC;AAChB,CAAC;AAED;;;;;;;;GAQG;AACH,SAAgB,oBAAoB,CAAmB,QAAW;IAChE,MAAM,eAAe,GAAG,QAAQ,CAAC,IAAI,EAAO,CAAC;IAE7C,OAAO,CACL,GAAG,IAEqC,EAChC,EAAE,CAAC,aAAa,CAAC,eAAe,EAAE,GAAG,IAAI,CAAC,CAAC;AACvD,CAAC"}
@@ -0,0 +1,50 @@
1
+ import { type LLMSchemaInterface, type InferSchema } from './LLMSchemaInterface';
2
+ /**
3
+ * Schema builder interface definition
4
+ * This defines the public API for schema building while allowing
5
+ * different implementations for the underlying validation library
6
+ */
7
+ export interface SchemaBuilder {
8
+ string(): LLMSchemaInterface<string>;
9
+ number(): LLMSchemaInterface<number>;
10
+ boolean(): LLMSchemaInterface<boolean>;
11
+ object<T extends Record<string, LLMSchemaInterface>>(shape: T): LLMSchemaInterface<{
12
+ [K in keyof T]: InferSchema<T[K]>;
13
+ }>;
14
+ array<T>(itemSchema: LLMSchemaInterface<T>): LLMSchemaInterface<T[]>;
15
+ enum<T extends readonly [string, ...string[]]>(values: T): LLMSchemaInterface<T[number]>;
16
+ union<T extends readonly [LLMSchemaInterface, ...LLMSchemaInterface[]]>(schemas: T): LLMSchemaInterface<InferSchema<T[number]>>;
17
+ literal<T extends string | number | boolean>(value: T): LLMSchemaInterface<T>;
18
+ }
19
+ /**
20
+ * Abstract base class for schema instances
21
+ * This class defines the instance methods for schema manipulation
22
+ */
23
+ export declare abstract class AbstractSchemaBuilder {
24
+ /**
25
+ * Makes the schema optional
26
+ */
27
+ abstract optional(): LLMSchemaInterface<any>;
28
+ /**
29
+ * Makes the schema nullable
30
+ */
31
+ abstract nullable(): LLMSchemaInterface<any>;
32
+ /**
33
+ * Sets a default value
34
+ */
35
+ abstract default(value: any): LLMSchemaInterface<any>;
36
+ /**
37
+ * Adds a description (for documentation)
38
+ */
39
+ abstract describe(description: string): LLMSchemaInterface<any>;
40
+ abstract min(length: number): LLMSchemaInterface<any>;
41
+ abstract max(length: number): LLMSchemaInterface<any>;
42
+ abstract email(): LLMSchemaInterface<any>;
43
+ abstract url(): LLMSchemaInterface<any>;
44
+ abstract uuid(): LLMSchemaInterface<any>;
45
+ abstract int(): LLMSchemaInterface<any>;
46
+ abstract positive(): LLMSchemaInterface<any>;
47
+ abstract negative(): LLMSchemaInterface<any>;
48
+ abstract nonpositive(): LLMSchemaInterface<any>;
49
+ abstract nonnegative(): LLMSchemaInterface<any>;
50
+ }
@@ -0,0 +1,11 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.AbstractSchemaBuilder = void 0;
4
+ /**
5
+ * Abstract base class for schema instances
6
+ * This class defines the instance methods for schema manipulation
7
+ */
8
+ class AbstractSchemaBuilder {
9
+ }
10
+ exports.AbstractSchemaBuilder = AbstractSchemaBuilder;
11
+ //# sourceMappingURL=AbstractSchemaBuilder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AbstractSchemaBuilder.js","sourceRoot":"","sources":["../../../src/utilities/schema/AbstractSchemaBuilder.ts"],"names":[],"mappings":";;;AA8BA;;;GAGG;AACH,MAAsB,qBAAqB;CAqC1C;AArCD,sDAqCC"}
@@ -0,0 +1,119 @@
1
+ import { type LLMSchemaInterface, type ParseResult, type InferSchema } from './LLMSchemaInterface';
2
+ /**
3
+ * Concrete implementation of schema builder using Zod as the underlying validator.
4
+ * This implementation can be replaced with another validator without changing the public API.
5
+ */
6
+ export declare class LLMSchema<T = any> implements LLMSchemaInterface<T> {
7
+ private readonly zodSchema;
8
+ private constructor();
9
+ /**
10
+ * Creates a string schema
11
+ */
12
+ static string(): LLMSchemaInterface<string>;
13
+ /**
14
+ * Creates a number schema
15
+ */
16
+ static number(): LLMSchemaInterface<number>;
17
+ /**
18
+ * Creates a boolean schema
19
+ */
20
+ static boolean(): LLMSchemaInterface<boolean>;
21
+ /**
22
+ * Creates an object schema
23
+ */
24
+ static object<T extends Record<string, LLMSchemaInterface>>(shape: T): LLMSchemaInterface<{
25
+ [K in keyof T]: InferSchema<T[K]>;
26
+ }>;
27
+ /**
28
+ * Creates an array schema
29
+ */
30
+ static array<T>(itemSchema: LLMSchemaInterface<T>): LLMSchemaInterface<T[]>;
31
+ /**
32
+ * Creates an enum schema
33
+ */
34
+ static enum<T extends readonly [string, ...string[]]>(values: T): LLMSchemaInterface<T[number]>;
35
+ /**
36
+ * Creates a union schema
37
+ */
38
+ static union<T extends readonly [LLMSchemaInterface, ...LLMSchemaInterface[]]>(schemas: T): LLMSchemaInterface<InferSchema<T[number]>>;
39
+ /**
40
+ * Creates a literal schema
41
+ */
42
+ static literal<T extends string | number | boolean>(value: T): LLMSchemaInterface<T>;
43
+ /**
44
+ * Makes the schema optional
45
+ */
46
+ optional(): LLMSchemaInterface<T | undefined>;
47
+ /**
48
+ * Makes the schema nullable
49
+ */
50
+ nullable(): LLMSchemaInterface<T | null>;
51
+ /**
52
+ * Sets a default value
53
+ */
54
+ default(value: any): LLMSchemaInterface<T>;
55
+ /**
56
+ * Adds a description (for documentation)
57
+ */
58
+ describe(description: string): LLMSchemaInterface<T>;
59
+ /**
60
+ * Sets minimum string length
61
+ */
62
+ min(length: number): LLMSchemaInterface<T>;
63
+ /**
64
+ * Sets maximum string length
65
+ */
66
+ max(length: number): LLMSchemaInterface<T>;
67
+ /**
68
+ * Validates as email
69
+ */
70
+ email(): LLMSchemaInterface<T>;
71
+ /**
72
+ * Validates as URL
73
+ */
74
+ url(): LLMSchemaInterface<T>;
75
+ /**
76
+ * Validates as UUID
77
+ */
78
+ uuid(): LLMSchemaInterface<T>;
79
+ /**
80
+ * Validates as integer
81
+ */
82
+ int(): LLMSchemaInterface<T>;
83
+ /**
84
+ * Validates as positive number
85
+ */
86
+ positive(): LLMSchemaInterface<T>;
87
+ /**
88
+ * Validates as negative number
89
+ */
90
+ negative(): LLMSchemaInterface<T>;
91
+ /**
92
+ * Validates as non-positive number
93
+ */
94
+ nonpositive(): LLMSchemaInterface<T>;
95
+ /**
96
+ * Validates as non-negative number
97
+ */
98
+ nonnegative(): LLMSchemaInterface<T>;
99
+ /**
100
+ * @internal
101
+ * Parses data using the schema
102
+ */
103
+ _parse(data: unknown): ParseResult<T>;
104
+ /**
105
+ * @internal
106
+ * Converts schema to OpenAI JSON Schema format
107
+ */
108
+ _toOpenAISchema(): any;
109
+ /**
110
+ * @internal
111
+ * Converts schema to Google Generative AI format
112
+ */
113
+ _toGoogleSchema(): any;
114
+ /**
115
+ * @internal
116
+ * Converts JSON Schema to Google's Type-based format
117
+ */
118
+ private _convertJsonSchemaToGoogleFormat;
119
+ }