llm-proxy 1.0.0 → 1.0.2

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 (47) hide show
  1. package/dist/clients/AwsBedrockAnthropicClient.d.ts +0 -0
  2. package/{src/clients/AwsBedrockAnthropicClient.ts → dist/clients/AwsBedrockAnthropicClient.js} +2 -5
  3. package/dist/clients/AwsBedrockAnthropicClient.js.map +1 -0
  4. package/dist/clients/OpenAIClient.d.ts +0 -0
  5. package/{src/clients/OpenAIClient.ts → dist/clients/OpenAIClient.js} +2 -9
  6. package/dist/clients/OpenAIClient.js.map +1 -0
  7. package/dist/index.d.ts +11 -0
  8. package/dist/index.js +120 -0
  9. package/dist/index.js.map +1 -0
  10. package/dist/middleware/InputFormatAdapter.d.ts +4 -0
  11. package/dist/middleware/InputFormatAdapter.js +40 -0
  12. package/dist/middleware/InputFormatAdapter.js.map +1 -0
  13. package/dist/middleware/OutputFormatAdapter.d.ts +7 -0
  14. package/dist/middleware/OutputFormatAdapter.js +67 -0
  15. package/dist/middleware/OutputFormatAdapter.js.map +1 -0
  16. package/dist/middleware/ProviderFinder.d.ts +4 -0
  17. package/dist/middleware/ProviderFinder.js +19 -0
  18. package/dist/middleware/ProviderFinder.js.map +1 -0
  19. package/dist/services/AwsBedrockAnthropicService.d.ts +8 -0
  20. package/dist/services/AwsBedrockAnthropicService.js +110 -0
  21. package/dist/services/AwsBedrockAnthropicService.js.map +1 -0
  22. package/dist/services/ClientService.d.ts +5 -0
  23. package/dist/services/ClientService.js +3 -0
  24. package/dist/services/ClientService.js.map +1 -0
  25. package/dist/services/OpenAIService.d.ts +11 -0
  26. package/dist/services/OpenAIService.js +104 -0
  27. package/dist/services/OpenAIService.js.map +1 -0
  28. package/dist/types/index.d.ts +194 -0
  29. package/dist/types/index.js +50 -0
  30. package/dist/types/index.js.map +1 -0
  31. package/package.json +9 -3
  32. package/docs/directoryStructure.png +0 -0
  33. package/docs/plan.excalidraw +0 -1758
  34. package/docs/plan.png +0 -0
  35. package/jest.config.js +0 -10
  36. package/src/index.ts +0 -145
  37. package/src/middleware/InputFormatAdapter.ts +0 -51
  38. package/src/middleware/OutputFormatAdapter.ts +0 -83
  39. package/src/middleware/ProviderFinder.ts +0 -23
  40. package/src/services/AwsBedrockAnthropicService.ts +0 -111
  41. package/src/services/ClientService.ts +0 -29
  42. package/src/services/OpenAIService.ts +0 -68
  43. package/src/test/AwsBedrockAnthropicClient.test.ts +0 -98
  44. package/src/test/AwsBedrockAnthropicStreamClient.test.ts +0 -81
  45. package/src/test/OpenAIClient.test.ts +0 -58
  46. package/src/types/index.ts +0 -234
  47. package/tsconfig.json +0 -110
File without changes
@@ -1,13 +1,11 @@
1
+ "use strict";
1
2
  // import { AwsBedrockAnthropicService } from "../services/AwsBedrockAnthropicService";
2
3
  // import { BedrockAnthropicParsedChunk, Messages, SupportedLLMs } from "../types";
3
-
4
4
  // export class AwsBedrockAnthropicChatClient {
5
5
  // private client: AwsBedrockAnthropicService;
6
-
7
6
  // constructor() {
8
7
  // this.client = new AwsBedrockAnthropicService();
9
8
  // }
10
-
11
9
  // async sendMessage(
12
10
  // messages: Messages,
13
11
  // model: SupportedLLMs,
@@ -27,7 +25,6 @@
27
25
  // console.log("Response:", response);
28
26
  // return response;
29
27
  // }
30
-
31
28
  // async *sendMessageStream(
32
29
  // messages: Messages,
33
30
  // model: SupportedLLMs,
@@ -45,7 +42,6 @@
45
42
  // tools,
46
43
  // true
47
44
  // );
48
-
49
45
  // for await (const chunk of stream) {
50
46
  // const content = chunk.delta?.text;
51
47
  // if (content) {
@@ -54,3 +50,4 @@
54
50
  // }
55
51
  // }
56
52
  // }
53
+ //# sourceMappingURL=AwsBedrockAnthropicClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AwsBedrockAnthropicClient.js","sourceRoot":"","sources":["../../src/clients/AwsBedrockAnthropicClient.ts"],"names":[],"mappings":";AAAA,uFAAuF;AACvF,mFAAmF;AAEnF,+CAA+C;AAC/C,gDAAgD;AAEhD,oBAAoB;AACpB,sDAAsD;AACtD,MAAM;AAEN,uBAAuB;AACvB,0BAA0B;AAC1B,4BAA4B;AAC5B,0BAA0B;AAC1B,4BAA4B;AAC5B,6BAA6B;AAC7B,kBAAkB;AAClB,QAAQ;AACR,6DAA6D;AAC7D,kBAAkB;AAClB,eAAe;AACf,mBAAmB;AACnB,qBAAqB;AACrB,sBAAsB;AACtB,cAAc;AACd,SAAS;AACT,0CAA0C;AAC1C,uBAAuB;AACvB,MAAM;AAEN,8BAA8B;AAC9B,0BAA0B;AAC1B,4BAA4B;AAC5B,0BAA0B;AAC1B,4BAA4B;AAC5B,6BAA6B;AAC7B,kBAAkB;AAClB,+CAA+C;AAC/C,2DAA2D;AAC3D,kBAAkB;AAClB,eAAe;AACf,mBAAmB;AACnB,qBAAqB;AACrB,sBAAsB;AACtB,eAAe;AACf,aAAa;AACb,SAAS;AAET,0CAA0C;AAC1C,2CAA2C;AAC3C,uBAAuB;AACvB,yBAAyB;AACzB,UAAU;AACV,QAAQ;AACR,MAAM;AACN,IAAI"}
File without changes
@@ -1,10 +1,9 @@
1
+ "use strict";
1
2
  // import { OpenAIService } from "../services/OpenAIService";
2
3
  // import { OpenAIMessage, OpenAIMessagesRoles, OpenAIResponse, OpenAISupportedLLMs } from "../types";
3
-
4
4
  // export class OpenAIClient {
5
5
  // private client: OpenAIService;
6
6
  // private messages: OpenAIMessage[] = [];
7
-
8
7
  // constructor(apiKey: string, systemPrompt: string) {
9
8
  // this.client = new OpenAIService(apiKey);
10
9
  // this.messages.push({
@@ -12,7 +11,6 @@
12
11
  // content: systemPrompt,
13
12
  // });
14
13
  // }
15
-
16
14
  // async sendMessage(
17
15
  // userInput: string,
18
16
  // model: OpenAISupportedLLMs,
@@ -20,23 +18,19 @@
20
18
  // temperature: number
21
19
  // ): Promise<string> {
22
20
  // this.messages.push({ role: OpenAIMessagesRoles.USER, content: userInput });
23
-
24
21
  // const response: OpenAIResponse = await this.client.generateCompletion(
25
22
  // this.messages,
26
23
  // model,
27
24
  // maxTokens,
28
25
  // temperature
29
26
  // );
30
-
31
27
  // const responseContent: string = response.choices[0].message.content;
32
28
  // this.messages.push({
33
29
  // role: OpenAIMessagesRoles.ASSISTANT,
34
30
  // content: responseContent,
35
31
  // });
36
-
37
32
  // return responseContent;
38
33
  // }
39
-
40
34
  // async *sendMessageStream(
41
35
  // userInput: string,
42
36
  // model: OpenAISupportedLLMs,
@@ -44,14 +38,12 @@
44
38
  // temperature: number
45
39
  // ): AsyncGenerator<string, void, unknown> {
46
40
  // this.messages.push({ role: OpenAIMessagesRoles.USER, content: userInput });
47
-
48
41
  // const stream = this.client.generateStreamCompletion(
49
42
  // this.messages,
50
43
  // model,
51
44
  // maxTokens,
52
45
  // temperature
53
46
  // );
54
-
55
47
  // for await (const chunk of stream) {
56
48
  // if (
57
49
  // chunk.choices &&
@@ -64,3 +56,4 @@
64
56
  // }
65
57
  // }
66
58
  // }
59
+ //# sourceMappingURL=OpenAIClient.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OpenAIClient.js","sourceRoot":"","sources":["../../src/clients/OpenAIClient.ts"],"names":[],"mappings":";AAAA,6DAA6D;AAC7D,sGAAsG;AAEtG,8BAA8B;AAC9B,mCAAmC;AACnC,4CAA4C;AAE5C,wDAAwD;AACxD,+CAA+C;AAC/C,2BAA2B;AAC3B,0CAA0C;AAC1C,+BAA+B;AAC/B,UAAU;AACV,MAAM;AAEN,uBAAuB;AACvB,yBAAyB;AACzB,kCAAkC;AAClC,yBAAyB;AACzB,0BAA0B;AAC1B,yBAAyB;AACzB,kFAAkF;AAElF,6EAA6E;AAC7E,uBAAuB;AACvB,eAAe;AACf,mBAAmB;AACnB,oBAAoB;AACpB,SAAS;AAET,2EAA2E;AAC3E,2BAA2B;AAC3B,6CAA6C;AAC7C,kCAAkC;AAClC,UAAU;AAEV,8BAA8B;AAC9B,MAAM;AAEN,8BAA8B;AAC9B,yBAAyB;AACzB,kCAAkC;AAClC,yBAAyB;AACzB,0BAA0B;AAC1B,+CAA+C;AAC/C,kFAAkF;AAElF,2DAA2D;AAC3D,uBAAuB;AACvB,eAAe;AACf,mBAAmB;AACnB,oBAAoB;AACpB,SAAS;AAET,0CAA0C;AAC1C,aAAa;AACb,2BAA2B;AAC3B,oCAAoC;AACpC,yCAAyC;AACzC,YAAY;AACZ,0DAA0D;AAC1D,yBAAyB;AACzB,UAAU;AACV,QAAQ;AACR,MAAM;AACN,IAAI"}
@@ -0,0 +1,11 @@
1
+ import { Messages, SupportedLLMs, LLMResponse } from "./types";
2
+ interface Credentials {
3
+ apiKey?: string;
4
+ awsConfig?: {
5
+ accessKeyId: string;
6
+ secretAccessKey: string;
7
+ region: string;
8
+ };
9
+ }
10
+ export declare function generateLLMResponse(messages: Messages, model: SupportedLLMs, maxTokens: number, temperature: number, systemPrompt: string, tools: any, stream: boolean | undefined, credentials: Credentials): Promise<LLMResponse | AsyncGenerator<LLMResponse>>;
11
+ export { type Messages, type OpenAIMessages, type BedrockAnthropicMessages, OpenAIMessagesRoles, BedrockAnthropicMessageRole, BedrockAnthropicContentType, SupportedLLMs, BedrockAnthropicSupportedLLMs, type LLMResponse, } from "./types";
package/dist/index.js ADDED
@@ -0,0 +1,120 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __asyncValues = (this && this.__asyncValues) || function (o) {
12
+ if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
13
+ var m = o[Symbol.asyncIterator], i;
14
+ return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
15
+ function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
16
+ function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
17
+ };
18
+ var __await = (this && this.__await) || function (v) { return this instanceof __await ? (this.v = v, this) : new __await(v); }
19
+ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _arguments, generator) {
20
+ if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
21
+ var g = generator.apply(thisArg, _arguments || []), i, q = [];
22
+ return i = Object.create((typeof AsyncIterator === "function" ? AsyncIterator : Object).prototype), verb("next"), verb("throw"), verb("return", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;
23
+ function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }
24
+ function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }
25
+ function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
26
+ function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }
27
+ function fulfill(value) { resume("next", value); }
28
+ function reject(value) { resume("throw", value); }
29
+ function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
30
+ };
31
+ Object.defineProperty(exports, "__esModule", { value: true });
32
+ exports.BedrockAnthropicSupportedLLMs = exports.BedrockAnthropicContentType = exports.BedrockAnthropicMessageRole = exports.OpenAIMessagesRoles = void 0;
33
+ exports.generateLLMResponse = generateLLMResponse;
34
+ const ProviderFinder_1 = require("./middleware/ProviderFinder");
35
+ const InputFormatAdapter_1 = require("./middleware/InputFormatAdapter");
36
+ const OutputFormatAdapter_1 = require("./middleware/OutputFormatAdapter");
37
+ const AwsBedrockAnthropicService_1 = require("./services/AwsBedrockAnthropicService");
38
+ const OpenAIService_1 = require("./services/OpenAIService");
39
+ const types_1 = require("./types");
40
+ // Main function to handle both streaming and non-streaming requests
41
+ function generateLLMResponse(messages_1, model_1, maxTokens_1, temperature_1, systemPrompt_1, tools_1) {
42
+ return __awaiter(this, arguments, void 0, function* (messages, model, maxTokens, temperature, systemPrompt, tools, stream = false, credentials) {
43
+ // Step 2: Identify the provider based on the model
44
+ const provider = ProviderFinder_1.ProviderFinder.getProvider(model);
45
+ // Initialize the correct service based on the provider
46
+ let service;
47
+ if (provider === types_1.Providers.OPENAI) {
48
+ if (!credentials.apiKey) {
49
+ throw new Error("OpenAI API key is required for OpenAI models.");
50
+ }
51
+ service = new OpenAIService_1.OpenAIService(credentials.apiKey);
52
+ }
53
+ else if (provider === types_1.Providers.ANTHROPIC_BEDROCK) {
54
+ const awsConfig = credentials.awsConfig;
55
+ if (!awsConfig) {
56
+ throw new Error("AWS credentials are required for Bedrock models.");
57
+ }
58
+ service = new AwsBedrockAnthropicService_1.AwsBedrockAnthropicService(awsConfig.accessKeyId, awsConfig.secretAccessKey, awsConfig.region);
59
+ }
60
+ else {
61
+ throw new Error("Unsupported provider");
62
+ }
63
+ // Step 3: If the provider is not OpenAI, adapt the input to provider format
64
+ const adaptedMessages = provider !== types_1.Providers.OPENAI
65
+ ? InputFormatAdapter_1.InputFormatAdapter.adaptMessages(messages, provider)
66
+ : messages;
67
+ // Step 4: Process the response depending on whether streaming is requested
68
+ if (stream) {
69
+ return handleStreamResponse(service, adaptedMessages, model, maxTokens, temperature, systemPrompt, tools, provider);
70
+ }
71
+ else {
72
+ return handleNonStreamResponse(service, adaptedMessages, model, maxTokens, temperature, systemPrompt, tools, provider);
73
+ }
74
+ });
75
+ }
76
+ // Helper for non-streaming response
77
+ function handleNonStreamResponse(service, messages, model, maxTokens, temperature, systemPrompt, tools, provider) {
78
+ return __awaiter(this, void 0, void 0, function* () {
79
+ const response = yield service.generateCompletion(provider === types_1.Providers.OPENAI
80
+ ? messages
81
+ : messages, model, maxTokens, temperature, systemPrompt, tools);
82
+ // Step 6: Adapt the response if provider is not OpenAI
83
+ return provider === types_1.Providers.OPENAI
84
+ ? response
85
+ : OutputFormatAdapter_1.OutputFormatAdapter.adaptResponse(response, provider);
86
+ });
87
+ }
88
+ // Helper for streaming response
89
+ function handleStreamResponse(service, messages, model, maxTokens, temperature, systemPrompt, tools, provider) {
90
+ return __asyncGenerator(this, arguments, function* handleStreamResponse_1() {
91
+ var _a, e_1, _b, _c;
92
+ const stream = service.generateStreamCompletion(provider === types_1.Providers.OPENAI
93
+ ? messages
94
+ : messages, model, maxTokens, temperature, systemPrompt, tools, true);
95
+ try {
96
+ // Step 7: Yield adapted chunks if the provider is not OpenAI
97
+ for (var _d = true, stream_1 = __asyncValues(stream), stream_1_1; stream_1_1 = yield __await(stream_1.next()), _a = stream_1_1.done, !_a; _d = true) {
98
+ _c = stream_1_1.value;
99
+ _d = false;
100
+ const chunk = _c;
101
+ yield yield __await(provider === types_1.Providers.OPENAI
102
+ ? chunk
103
+ : OutputFormatAdapter_1.OutputFormatAdapter.adaptResponse(chunk, provider));
104
+ }
105
+ }
106
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
107
+ finally {
108
+ try {
109
+ if (!_d && !_a && (_b = stream_1.return)) yield __await(_b.call(stream_1));
110
+ }
111
+ finally { if (e_1) throw e_1.error; }
112
+ }
113
+ });
114
+ }
115
+ var types_2 = require("./types");
116
+ Object.defineProperty(exports, "OpenAIMessagesRoles", { enumerable: true, get: function () { return types_2.OpenAIMessagesRoles; } });
117
+ Object.defineProperty(exports, "BedrockAnthropicMessageRole", { enumerable: true, get: function () { return types_2.BedrockAnthropicMessageRole; } });
118
+ Object.defineProperty(exports, "BedrockAnthropicContentType", { enumerable: true, get: function () { return types_2.BedrockAnthropicContentType; } });
119
+ Object.defineProperty(exports, "BedrockAnthropicSupportedLLMs", { enumerable: true, get: function () { return types_2.BedrockAnthropicSupportedLLMs; } });
120
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,4 @@
1
+ import { BedrockAnthropicMessage, Messages, OpenAIMessages, Providers } from "../types";
2
+ export declare class InputFormatAdapter {
3
+ static adaptMessages(messages: Messages, provider: Providers): OpenAIMessages | BedrockAnthropicMessage[];
4
+ }
@@ -0,0 +1,40 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.InputFormatAdapter = void 0;
4
+ const types_1 = require("../types");
5
+ class InputFormatAdapter {
6
+ static adaptMessages(messages, provider) {
7
+ switch (provider) {
8
+ case types_1.Providers.OPENAI:
9
+ return messages.map((msg) => {
10
+ if (msg.role === types_1.OpenAIMessagesRoles.FUNCTION) {
11
+ return {
12
+ role: msg.role,
13
+ content: msg.content,
14
+ name: msg.name,
15
+ };
16
+ }
17
+ return {
18
+ role: msg.role,
19
+ content: msg.content,
20
+ };
21
+ });
22
+ case types_1.Providers.ANTHROPIC_BEDROCK:
23
+ return messages.map((msg) => ({
24
+ role: msg.role === types_1.OpenAIMessagesRoles.USER
25
+ ? types_1.BedrockAnthropicMessageRole.USER
26
+ : types_1.BedrockAnthropicMessageRole.ASSISTANT,
27
+ content: [
28
+ {
29
+ type: types_1.BedrockAnthropicContentType.TEXT,
30
+ text: msg.content,
31
+ },
32
+ ],
33
+ }));
34
+ default:
35
+ throw new Error(`Unsupported provider: ${provider}`);
36
+ }
37
+ }
38
+ }
39
+ exports.InputFormatAdapter = InputFormatAdapter;
40
+ //# sourceMappingURL=InputFormatAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"InputFormatAdapter.js","sourceRoot":"","sources":["../../src/middleware/InputFormatAdapter.ts"],"names":[],"mappings":";;;AAAA,oCASkB;AAElB,MAAa,kBAAkB;IAC7B,MAAM,CAAC,aAAa,CAClB,QAAkB,EAClB,QAAmB;QAEnB,QAAQ,QAAQ,EAAE,CAAC;YACjB,KAAK,iBAAS,CAAC,MAAM;gBACnB,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE;oBAC1B,IAAI,GAAG,CAAC,IAAI,KAAK,2BAAmB,CAAC,QAAQ,EAAE,CAAC;wBAC9C,OAAO;4BACL,IAAI,EAAE,GAAG,CAAC,IAAI;4BACd,OAAO,EAAE,GAAG,CAAC,OAAO;4BACpB,IAAI,EAAG,GAA6B,CAAC,IAAI;yBAC1C,CAAC;oBACJ,CAAC;oBACD,OAAO;wBACL,IAAI,EAAE,GAAG,CAAC,IAAI;wBACd,OAAO,EAAE,GAAG,CAAC,OAAiB;qBAC/B,CAAC;gBACJ,CAAC,CAAmB,CAAC;YAEvB,KAAK,iBAAS,CAAC,iBAAiB;gBAC9B,OAAO,QAAQ,CAAC,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC;oBAC5B,IAAI,EACF,GAAG,CAAC,IAAI,KAAK,2BAAmB,CAAC,IAAI;wBACnC,CAAC,CAAC,mCAA2B,CAAC,IAAI;wBAClC,CAAC,CAAC,mCAA2B,CAAC,SAAS;oBAC3C,OAAO,EAAE;wBACP;4BACE,IAAI,EAAE,mCAA2B,CAAC,IAAI;4BACtC,IAAI,EAAE,GAAG,CAAC,OAAiB;yBAC5B;qBACF;iBACF,CAAC,CAA8B,CAAC;YAEnC;gBACE,MAAM,IAAI,KAAK,CAAC,yBAAyB,QAAQ,EAAE,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;CACF;AAvCD,gDAuCC"}
@@ -0,0 +1,7 @@
1
+ import { LLMResponse, Providers } from "../types";
2
+ export declare class OutputFormatAdapter {
3
+ static adaptResponse(response: any, provider: Providers): LLMResponse;
4
+ private static adaptAnthropicBedrockResponse;
5
+ private static mapRole;
6
+ private static extractContent;
7
+ }
@@ -0,0 +1,67 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OutputFormatAdapter = void 0;
4
+ const types_1 = require("../types");
5
+ class OutputFormatAdapter {
6
+ static adaptResponse(response, provider) {
7
+ switch (provider) {
8
+ case types_1.Providers.OPENAI:
9
+ return response;
10
+ case types_1.Providers.ANTHROPIC_BEDROCK:
11
+ return this.adaptAnthropicBedrockResponse(response);
12
+ default:
13
+ throw new Error(`Unsupported provider: ${provider}`);
14
+ }
15
+ }
16
+ static adaptAnthropicBedrockResponse(response) {
17
+ const openAIResponse = {
18
+ id: response.id,
19
+ object: "text_completion",
20
+ created: Date.now(),
21
+ model: response.model,
22
+ choices: response.content.map((contentBlock, index) => ({
23
+ index,
24
+ message: {
25
+ role: this.mapRole(contentBlock),
26
+ content: this.extractContent(contentBlock),
27
+ },
28
+ logprobs: null,
29
+ finish_reason: response.stop_reason,
30
+ })),
31
+ usage: {
32
+ prompt_tokens: response.usage.input_tokens,
33
+ completion_tokens: response.usage.output_tokens,
34
+ total_tokens: response.usage.input_tokens + response.usage.output_tokens,
35
+ prompt_tokens_details: { cached_tokens: 0 },
36
+ completion_tokens_details: { reasoning_tokens: 0 },
37
+ },
38
+ system_fingerprint: "anthropic_translation",
39
+ };
40
+ return openAIResponse;
41
+ }
42
+ static mapRole(content) {
43
+ switch (content.type) {
44
+ case types_1.BedrockAnthropicContentType.TOOL_USE:
45
+ case types_1.BedrockAnthropicContentType.TOOL_RESULT:
46
+ return "tool";
47
+ case types_1.BedrockAnthropicContentType.TEXT:
48
+ return "assistant";
49
+ default:
50
+ return "unknown";
51
+ }
52
+ }
53
+ static extractContent(content) {
54
+ switch (content.type) {
55
+ case types_1.BedrockAnthropicContentType.TEXT:
56
+ return content.text;
57
+ case types_1.BedrockAnthropicContentType.TOOL_RESULT:
58
+ return content.content || "";
59
+ case types_1.BedrockAnthropicContentType.TOOL_USE:
60
+ return content.id || "";
61
+ default:
62
+ return "";
63
+ }
64
+ }
65
+ }
66
+ exports.OutputFormatAdapter = OutputFormatAdapter;
67
+ //# sourceMappingURL=OutputFormatAdapter.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"OutputFormatAdapter.js","sourceRoot":"","sources":["../../src/middleware/OutputFormatAdapter.ts"],"names":[],"mappings":";;;AAAA,oCAUkB;AAElB,MAAa,mBAAmB;IAC9B,MAAM,CAAC,aAAa,CAAC,QAAa,EAAE,QAAmB;QACrD,QAAQ,QAAQ,EAAE,CAAC;YACjB,KAAK,iBAAS,CAAC,MAAM;gBACnB,OAAO,QAA0B,CAAC;YAEpC,KAAK,iBAAS,CAAC,iBAAiB;gBAC9B,OAAO,IAAI,CAAC,6BAA6B,CACvC,QAAoC,CACrC,CAAC;YAEJ;gBACE,MAAM,IAAI,KAAK,CAAC,yBAAyB,QAAQ,EAAE,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;IAEO,MAAM,CAAC,6BAA6B,CAC1C,QAAkC;QAElC,MAAM,cAAc,GAAmB;YACrC,EAAE,EAAE,QAAQ,CAAC,EAAE;YACf,MAAM,EAAE,iBAAiB;YACzB,OAAO,EAAE,IAAI,CAAC,GAAG,EAAE;YACnB,KAAK,EAAE,QAAQ,CAAC,KAAK;YACrB,OAAO,EAAE,QAAQ,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC;gBACtD,KAAK;gBACL,OAAO,EAAE;oBACP,IAAI,EAAE,IAAI,CAAC,OAAO,CAAC,YAAY,CAAC;oBAChC,OAAO,EAAE,IAAI,CAAC,cAAc,CAAC,YAAY,CAAC;iBAC3C;gBACD,QAAQ,EAAE,IAAI;gBACd,aAAa,EAAE,QAAQ,CAAC,WAAW;aACpC,CAAC,CAAC;YACH,KAAK,EAAE;gBACL,aAAa,EAAE,QAAQ,CAAC,KAAK,CAAC,YAAY;gBAC1C,iBAAiB,EAAE,QAAQ,CAAC,KAAK,CAAC,aAAa;gBAC/C,YAAY,EACV,QAAQ,CAAC,KAAK,CAAC,YAAY,GAAG,QAAQ,CAAC,KAAK,CAAC,aAAa;gBAC5D,qBAAqB,EAAE,EAAE,aAAa,EAAE,CAAC,EAAE;gBAC3C,yBAAyB,EAAE,EAAE,gBAAgB,EAAE,CAAC,EAAE;aACnD;YACD,kBAAkB,EAAE,uBAAuB;SAC5C,CAAC;QACF,OAAO,cAAc,CAAC;IACxB,CAAC;IAEO,MAAM,CAAC,OAAO,CAAC,OAAgC;QACrD,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;YACrB,KAAK,mCAA2B,CAAC,QAAQ,CAAC;YAC1C,KAAK,mCAA2B,CAAC,WAAW;gBAC1C,OAAO,MAAM,CAAC;YAChB,KAAK,mCAA2B,CAAC,IAAI;gBACnC,OAAO,WAAW,CAAC;YACrB;gBACE,OAAO,SAAS,CAAC;QACrB,CAAC;IACH,CAAC;IAEO,MAAM,CAAC,cAAc,CAAC,OAAgC;QAC5D,QAAQ,OAAO,CAAC,IAAI,EAAE,CAAC;YACrB,KAAK,mCAA2B,CAAC,IAAI;gBACnC,OAAQ,OAAuC,CAAC,IAAI,CAAC;YACvD,KAAK,mCAA2B,CAAC,WAAW;gBAC1C,OAAQ,OAA6C,CAAC,OAAO,IAAI,EAAE,CAAC;YACtE,KAAK,mCAA2B,CAAC,QAAQ;gBACvC,OAAQ,OAA0C,CAAC,EAAE,IAAI,EAAE,CAAC;YAC9D;gBACE,OAAO,EAAE,CAAC;QACd,CAAC;IACH,CAAC;CACF;AAtED,kDAsEC"}
@@ -0,0 +1,4 @@
1
+ import { Providers, SupportedLLMs } from "../types";
2
+ export declare class ProviderFinder {
3
+ static getProvider(model: SupportedLLMs): Providers;
4
+ }
@@ -0,0 +1,19 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ProviderFinder = void 0;
4
+ const types_1 = require("../types");
5
+ class ProviderFinder {
6
+ static getProvider(model) {
7
+ if (model.type === "OpenAI" &&
8
+ Object.values(types_1.OpenAISupportedLLMs).includes(model.model)) {
9
+ return types_1.Providers.OPENAI;
10
+ }
11
+ else if (model.type === "BedrockAnthropic" &&
12
+ Object.values(types_1.BedrockAnthropicSupportedLLMs).includes(model.model)) {
13
+ return types_1.Providers.ANTHROPIC_BEDROCK;
14
+ }
15
+ throw new Error(`Unsupported model: ${model.model}`);
16
+ }
17
+ }
18
+ exports.ProviderFinder = ProviderFinder;
19
+ //# sourceMappingURL=ProviderFinder.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ProviderFinder.js","sourceRoot":"","sources":["../../src/middleware/ProviderFinder.ts"],"names":[],"mappings":";;;AAAA,oCAKkB;AAElB,MAAa,cAAc;IACzB,MAAM,CAAC,WAAW,CAAC,KAAoB;QACrC,IACE,KAAK,CAAC,IAAI,KAAK,QAAQ;YACvB,MAAM,CAAC,MAAM,CAAC,2BAAmB,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EACxD,CAAC;YACD,OAAO,iBAAS,CAAC,MAAM,CAAC;QAC1B,CAAC;aAAM,IACL,KAAK,CAAC,IAAI,KAAK,kBAAkB;YACjC,MAAM,CAAC,MAAM,CAAC,qCAA6B,CAAC,CAAC,QAAQ,CAAC,KAAK,CAAC,KAAK,CAAC,EAClE,CAAC;YACD,OAAO,iBAAS,CAAC,iBAAiB,CAAC;QACrC,CAAC;QACD,MAAM,IAAI,KAAK,CAAC,sBAAsB,KAAK,CAAC,KAAK,EAAE,CAAC,CAAC;IACvD,CAAC;CACF;AAfD,wCAeC"}
@@ -0,0 +1,8 @@
1
+ import { BedrockAnthropicParsedChunk, BedrockAnthropicResponse, Messages, SupportedLLMs } from "../types";
2
+ import { ClientService } from "./ClientService";
3
+ export declare class AwsBedrockAnthropicService implements ClientService {
4
+ private bedrock;
5
+ constructor(awsAccessKey: string, awsSecretKey: string, region: string);
6
+ generateCompletion(messages: Messages, model?: SupportedLLMs, maxTokens?: number, temperature?: number, systemPrompt?: string, tools?: any): Promise<BedrockAnthropicResponse>;
7
+ generateStreamCompletion(messages: Messages, model?: SupportedLLMs, maxTokens?: number, temperature?: number, systemPrompt?: string, tools?: any, stream?: boolean): AsyncGenerator<BedrockAnthropicParsedChunk, void, unknown>;
8
+ }
@@ -0,0 +1,110 @@
1
+ "use strict";
2
+ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
+ function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
+ return new (P || (P = Promise))(function (resolve, reject) {
5
+ function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
+ function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
+ function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
+ step((generator = generator.apply(thisArg, _arguments || [])).next());
9
+ });
10
+ };
11
+ var __await = (this && this.__await) || function (v) { return this instanceof __await ? (this.v = v, this) : new __await(v); }
12
+ var __asyncValues = (this && this.__asyncValues) || function (o) {
13
+ if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
14
+ var m = o[Symbol.asyncIterator], i;
15
+ return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
16
+ function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
17
+ function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
18
+ };
19
+ var __asyncGenerator = (this && this.__asyncGenerator) || function (thisArg, _arguments, generator) {
20
+ if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
21
+ var g = generator.apply(thisArg, _arguments || []), i, q = [];
22
+ return i = Object.create((typeof AsyncIterator === "function" ? AsyncIterator : Object).prototype), verb("next"), verb("throw"), verb("return", awaitReturn), i[Symbol.asyncIterator] = function () { return this; }, i;
23
+ function awaitReturn(f) { return function (v) { return Promise.resolve(v).then(f, reject); }; }
24
+ function verb(n, f) { if (g[n]) { i[n] = function (v) { return new Promise(function (a, b) { q.push([n, v, a, b]) > 1 || resume(n, v); }); }; if (f) i[n] = f(i[n]); } }
25
+ function resume(n, v) { try { step(g[n](v)); } catch (e) { settle(q[0][3], e); } }
26
+ function step(r) { r.value instanceof __await ? Promise.resolve(r.value.v).then(fulfill, reject) : settle(q[0][2], r); }
27
+ function fulfill(value) { resume("next", value); }
28
+ function reject(value) { resume("throw", value); }
29
+ function settle(f, v) { if (f(v), q.shift(), q.length) resume(q[0][0], q[0][1]); }
30
+ };
31
+ Object.defineProperty(exports, "__esModule", { value: true });
32
+ exports.AwsBedrockAnthropicService = void 0;
33
+ const client_bedrock_runtime_1 = require("@aws-sdk/client-bedrock-runtime");
34
+ class AwsBedrockAnthropicService {
35
+ constructor(awsAccessKey, awsSecretKey, region) {
36
+ this.bedrock = new client_bedrock_runtime_1.BedrockRuntimeClient({
37
+ region,
38
+ credentials: {
39
+ accessKeyId: awsAccessKey,
40
+ secretAccessKey: awsSecretKey,
41
+ },
42
+ });
43
+ }
44
+ generateCompletion(messages, model, maxTokens, temperature, systemPrompt, tools) {
45
+ return __awaiter(this, void 0, void 0, function* () {
46
+ const modelId = (model === null || model === void 0 ? void 0 : model.type) === "BedrockAnthropic" ? model.model : undefined;
47
+ if (!modelId) {
48
+ throw new Error("Invalid model type for AwsBedrockAnthropicService");
49
+ }
50
+ const body = JSON.stringify(Object.assign({ anthropic_version: "bedrock-2023-05-31", max_tokens: maxTokens, temperature,
51
+ messages, system: systemPrompt }, (tools && tools.length > 0 ? { tools } : {})));
52
+ const command = new client_bedrock_runtime_1.InvokeModelCommand({
53
+ modelId,
54
+ body,
55
+ contentType: "application/json",
56
+ accept: "application/json",
57
+ });
58
+ const response = yield this.bedrock.send(command);
59
+ return JSON.parse(new TextDecoder().decode(response.body));
60
+ });
61
+ }
62
+ generateStreamCompletion(messages, model, maxTokens, temperature, systemPrompt, tools, stream) {
63
+ return __asyncGenerator(this, arguments, function* generateStreamCompletion_1() {
64
+ var _a, e_1, _b, _c;
65
+ var _d;
66
+ const modelId = (model === null || model === void 0 ? void 0 : model.type) === "BedrockAnthropic" ? model.model : undefined;
67
+ if (!modelId) {
68
+ throw new Error("Invalid model type for AwsBedrockAnthropicService");
69
+ }
70
+ const body = JSON.stringify(Object.assign({ anthropic_version: "bedrock-2023-05-31", max_tokens: maxTokens, temperature,
71
+ messages, system: systemPrompt }, (tools && tools.length > 0 ? { tools } : {})));
72
+ const command = new client_bedrock_runtime_1.InvokeModelWithResponseStreamCommand({
73
+ modelId,
74
+ body,
75
+ contentType: "application/json",
76
+ accept: "application/json",
77
+ });
78
+ const response = yield __await(this.bedrock.send(command));
79
+ if (response.body) {
80
+ const decoder = new TextDecoder("utf-8");
81
+ try {
82
+ for (var _e = true, _f = __asyncValues(response.body), _g; _g = yield __await(_f.next()), _a = _g.done, !_a; _e = true) {
83
+ _c = _g.value;
84
+ _e = false;
85
+ const payload = _c;
86
+ const decodedString = decoder.decode((_d = payload.chunk) === null || _d === void 0 ? void 0 : _d.bytes, {
87
+ stream: true,
88
+ });
89
+ try {
90
+ const jsonObject = JSON.parse(decodedString);
91
+ yield yield __await(jsonObject);
92
+ }
93
+ catch (error) {
94
+ console.error("Failed to parse chunk as JSON:", error);
95
+ }
96
+ }
97
+ }
98
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
99
+ finally {
100
+ try {
101
+ if (!_e && !_a && (_b = _f.return)) yield __await(_b.call(_f));
102
+ }
103
+ finally { if (e_1) throw e_1.error; }
104
+ }
105
+ }
106
+ });
107
+ }
108
+ }
109
+ exports.AwsBedrockAnthropicService = AwsBedrockAnthropicService;
110
+ //# sourceMappingURL=AwsBedrockAnthropicService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"AwsBedrockAnthropicService.js","sourceRoot":"","sources":["../../src/services/AwsBedrockAnthropicService.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { BedrockAnthropicParsedChunk, LLMResponse, Messages, SupportedLLMs } from "../types";
2
+ export interface ClientService {
3
+ generateCompletion(messages: Messages, model?: SupportedLLMs, maxTokens?: number, temperature?: number, systemPrompt?: string, tools?: any): Promise<LLMResponse>;
4
+ generateStreamCompletion(messages: Messages, model?: SupportedLLMs, maxTokens?: number, temperature?: number, systemPrompt?: string, tools?: any, stream?: boolean): AsyncGenerator<BedrockAnthropicParsedChunk, void, unknown>;
5
+ }
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=ClientService.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ClientService.js","sourceRoot":"","sources":["../../src/services/ClientService.ts"],"names":[],"mappings":""}
@@ -0,0 +1,11 @@
1
+ import { OpenAIMessages, OpenAIResponse, SupportedLLMs } from "../types";
2
+ import { ClientService } from "./ClientService";
3
+ export declare class OpenAIService implements ClientService {
4
+ private openai;
5
+ constructor(apiKey: string);
6
+ generateCompletion(messages: OpenAIMessages, model: SupportedLLMs, maxTokens: number, temperature: number, systemPrompt?: string, // Optional parameter
7
+ tools?: any): Promise<OpenAIResponse>;
8
+ generateStreamCompletion(messages: OpenAIMessages, model: SupportedLLMs, maxTokens: number, temperature: number, systemPrompt?: string, // Optional parameter
9
+ tools?: any, // Optional parameter
10
+ stream?: boolean): AsyncGenerator<any, void, unknown>;
11
+ }