llm-proxy 1.3.13 → 1.4.14
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/index.js +20 -20
- package/dist/index.js.map +1 -1
- package/dist/middleware/InputFormatAdapter.d.ts +3 -3
- package/dist/middleware/InputFormatAdapter.js +57 -22
- package/dist/middleware/InputFormatAdapter.js.map +1 -1
- package/dist/middleware/OutputFormatAdapter.d.ts +8 -4
- package/dist/middleware/OutputFormatAdapter.js +98 -103
- package/dist/middleware/OutputFormatAdapter.js.map +1 -1
- package/dist/middleware/ProviderFinder.d.ts +1 -1
- package/dist/middleware/ProviderFinder.js +1 -2
- package/dist/middleware/ProviderFinder.js.map +1 -1
- package/dist/services/AwsBedrockAnthropicService.d.ts +4 -2
- package/dist/services/AwsBedrockAnthropicService.js +9 -16
- package/dist/services/AwsBedrockAnthropicService.js.map +1 -1
- package/dist/services/ClientService.d.ts +4 -4
- package/dist/services/ClientService.js +0 -6
- package/dist/services/ClientService.js.map +1 -1
- package/dist/services/OpenAIService.d.ts +4 -4
- package/dist/services/OpenAIService.js +7 -6
- package/dist/services/OpenAIService.js.map +1 -1
- package/package.json +2 -2
package/dist/index.js
CHANGED
|
@@ -46,51 +46,51 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
|
46
46
|
};
|
|
47
47
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
48
48
|
exports.generateLLMStreamResponse = exports.generateLLMResponse = void 0;
|
|
49
|
-
const ProviderFinder_1 = require("./middleware/ProviderFinder");
|
|
50
|
-
const InputFormatAdapter_1 = require("./middleware/InputFormatAdapter");
|
|
51
|
-
const OutputFormatAdapter_1 = require("./middleware/OutputFormatAdapter");
|
|
52
49
|
const types_1 = require("./types");
|
|
53
50
|
const OpenAIService_1 = __importDefault(require("./services/OpenAIService"));
|
|
54
51
|
const AwsBedrockAnthropicService_1 = __importDefault(require("./services/AwsBedrockAnthropicService"));
|
|
52
|
+
const ProviderFinder_1 = __importDefault(require("./middleware/ProviderFinder"));
|
|
53
|
+
const InputFormatAdapter_1 = __importDefault(require("./middleware/InputFormatAdapter"));
|
|
54
|
+
const OutputFormatAdapter_1 = __importDefault(require("./middleware/OutputFormatAdapter"));
|
|
55
55
|
// Main function for non-streaming requests
|
|
56
56
|
function generateLLMResponse(params) {
|
|
57
57
|
return __awaiter(this, void 0, void 0, function* () {
|
|
58
58
|
const { messages, model, functions, max_tokens, temperature, credentials } = params;
|
|
59
59
|
// Step 1: Identify the provider based on the model
|
|
60
|
-
const provider = ProviderFinder_1.
|
|
60
|
+
const provider = ProviderFinder_1.default.getProvider(model);
|
|
61
61
|
// Initialize the correct service based on the provider
|
|
62
62
|
let service;
|
|
63
63
|
if (provider === types_1.Providers.OPENAI) {
|
|
64
64
|
if (!credentials.apiKey) {
|
|
65
|
-
return Promise.reject("OpenAI API key is required for OpenAI models.");
|
|
65
|
+
return Promise.reject(new Error("OpenAI API key is required for OpenAI models."));
|
|
66
66
|
}
|
|
67
67
|
service = new OpenAIService_1.default(credentials.apiKey);
|
|
68
68
|
}
|
|
69
69
|
else if (provider === types_1.Providers.ANTHROPIC_BEDROCK) {
|
|
70
|
-
const awsConfig = credentials
|
|
70
|
+
const { awsConfig } = credentials;
|
|
71
71
|
if (!awsConfig) {
|
|
72
|
-
return Promise.reject("AWS credentials are required for Bedrock models.");
|
|
72
|
+
return Promise.reject(new Error("AWS credentials are required for Bedrock models."));
|
|
73
73
|
}
|
|
74
74
|
service = new AwsBedrockAnthropicService_1.default(awsConfig.accessKeyId, awsConfig.secretAccessKey, awsConfig.region);
|
|
75
75
|
}
|
|
76
76
|
else {
|
|
77
|
-
return Promise.reject("Unsupported provider");
|
|
77
|
+
return Promise.reject(new Error("Unsupported provider"));
|
|
78
78
|
}
|
|
79
79
|
// Step 2: Adapt messages and extract the system prompt
|
|
80
|
-
const { adaptedMessages, systemPrompt } = InputFormatAdapter_1.
|
|
80
|
+
const { adaptedMessages, systemPrompt } = InputFormatAdapter_1.default.adaptMessages(messages, provider);
|
|
81
81
|
// Step 3: Generate the completion
|
|
82
82
|
const response = yield service.generateCompletion({
|
|
83
83
|
messages: adaptedMessages,
|
|
84
84
|
model,
|
|
85
|
-
max_tokens
|
|
85
|
+
max_tokens,
|
|
86
86
|
temperature: temperature || 0,
|
|
87
|
-
functions,
|
|
87
|
+
tools: functions,
|
|
88
88
|
systemPrompt,
|
|
89
89
|
});
|
|
90
90
|
// Step 4: Adapt the response if needed
|
|
91
91
|
return provider === types_1.Providers.OPENAI
|
|
92
92
|
? response
|
|
93
|
-
: OutputFormatAdapter_1.
|
|
93
|
+
: OutputFormatAdapter_1.default.adaptResponse(response, provider);
|
|
94
94
|
});
|
|
95
95
|
}
|
|
96
96
|
exports.generateLLMResponse = generateLLMResponse;
|
|
@@ -99,34 +99,34 @@ function generateLLMStreamResponse(params) {
|
|
|
99
99
|
return __awaiter(this, void 0, void 0, function* () {
|
|
100
100
|
const { messages, model, functions, max_tokens, temperature, credentials } = params;
|
|
101
101
|
// Step 1: Identify the provider based on the model
|
|
102
|
-
const provider = ProviderFinder_1.
|
|
102
|
+
const provider = ProviderFinder_1.default.getProvider(model);
|
|
103
103
|
// Initialize the correct service based on the provider
|
|
104
104
|
let service;
|
|
105
105
|
if (provider === types_1.Providers.OPENAI) {
|
|
106
106
|
if (!credentials.apiKey) {
|
|
107
|
-
return Promise.reject("OpenAI API key is required for OpenAI models.");
|
|
107
|
+
return Promise.reject(new Error("OpenAI API key is required for OpenAI models."));
|
|
108
108
|
}
|
|
109
109
|
service = new OpenAIService_1.default(credentials.apiKey);
|
|
110
110
|
}
|
|
111
111
|
else if (provider === types_1.Providers.ANTHROPIC_BEDROCK) {
|
|
112
|
-
const awsConfig = credentials
|
|
112
|
+
const { awsConfig } = credentials;
|
|
113
113
|
if (!awsConfig) {
|
|
114
|
-
return Promise.reject("AWS credentials are required for Bedrock models.");
|
|
114
|
+
return Promise.reject(new Error("AWS credentials are required for Bedrock models."));
|
|
115
115
|
}
|
|
116
116
|
service = new AwsBedrockAnthropicService_1.default(awsConfig.accessKeyId, awsConfig.secretAccessKey, awsConfig.region);
|
|
117
117
|
}
|
|
118
118
|
else {
|
|
119
|
-
return Promise.reject("Unsupported provider");
|
|
119
|
+
return Promise.reject(new Error("Unsupported provider"));
|
|
120
120
|
}
|
|
121
121
|
// Step 2: Adapt messages and extract the system prompt
|
|
122
|
-
const { adaptedMessages, systemPrompt } = InputFormatAdapter_1.
|
|
122
|
+
const { adaptedMessages, systemPrompt } = InputFormatAdapter_1.default.adaptMessages(messages, provider);
|
|
123
123
|
// Step 3: Generate the streaming completion
|
|
124
124
|
const stream = service.generateStreamCompletion({
|
|
125
125
|
messages: adaptedMessages,
|
|
126
126
|
model,
|
|
127
127
|
max_tokens,
|
|
128
128
|
temperature: temperature || 0,
|
|
129
|
-
functions,
|
|
129
|
+
tools: functions,
|
|
130
130
|
systemPrompt,
|
|
131
131
|
});
|
|
132
132
|
// Step 4: Create and return the async generator
|
|
@@ -141,7 +141,7 @@ function generateLLMStreamResponse(params) {
|
|
|
141
141
|
const chunk = _c;
|
|
142
142
|
yield yield __await(provider === types_1.Providers.OPENAI
|
|
143
143
|
? chunk
|
|
144
|
-
: OutputFormatAdapter_1.
|
|
144
|
+
: OutputFormatAdapter_1.default.adaptResponse(chunk, provider));
|
|
145
145
|
}
|
|
146
146
|
finally {
|
|
147
147
|
_d = true;
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
import { BedrockAnthropicMessage,
|
|
2
|
-
export
|
|
3
|
-
static adaptMessages(messages:
|
|
1
|
+
import { BedrockAnthropicMessage, OpenAIMessages, Providers } from "../types";
|
|
2
|
+
export default class InputFormatAdapter {
|
|
3
|
+
static adaptMessages(messages: any, provider: Providers): {
|
|
4
4
|
adaptedMessages: OpenAIMessages | BedrockAnthropicMessage[];
|
|
5
5
|
systemPrompt?: string;
|
|
6
6
|
};
|
|
@@ -1,21 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.InputFormatAdapter = void 0;
|
|
4
3
|
const types_1 = require("../types");
|
|
5
4
|
class InputFormatAdapter {
|
|
6
5
|
static adaptMessages(messages, provider) {
|
|
7
|
-
//
|
|
8
|
-
/**!SECTION
|
|
9
|
-
* There some strange stuff happened, in a function call assistant message the
|
|
10
|
-
* will be by default null, it must be null, but the openai api was returning error
|
|
11
|
-
* and it cannot be null of fine, but using same api version, from different app (CMND)
|
|
12
|
-
* it works well !!!!!!!! it works with null content on the same version,
|
|
13
|
-
* im not convinced with this work to make it empty string instead of null so here is a todo to go back to it
|
|
14
|
-
*/
|
|
15
6
|
var _a;
|
|
16
7
|
switch (provider) {
|
|
17
8
|
case types_1.Providers.OPENAI:
|
|
18
9
|
return {
|
|
10
|
+
// @ts-ignore
|
|
19
11
|
adaptedMessages: messages.map((msg) => {
|
|
20
12
|
var _a, _b;
|
|
21
13
|
if (msg.role === "function") {
|
|
@@ -27,7 +19,7 @@ class InputFormatAdapter {
|
|
|
27
19
|
}
|
|
28
20
|
return {
|
|
29
21
|
role: msg.role,
|
|
30
|
-
content: (_b = msg.content) !== null && _b !== void 0 ? _b : "",
|
|
22
|
+
content: (_b = msg.content) !== null && _b !== void 0 ? _b : "function call",
|
|
31
23
|
};
|
|
32
24
|
}),
|
|
33
25
|
};
|
|
@@ -41,18 +33,61 @@ class InputFormatAdapter {
|
|
|
41
33
|
throw new Error("The first message must have a role of 'system' for Anthropic.");
|
|
42
34
|
}
|
|
43
35
|
const systemPrompt = (_a = firstMessage.content) !== null && _a !== void 0 ? _a : "";
|
|
44
|
-
const adaptedMessages =
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
36
|
+
const adaptedMessages = [];
|
|
37
|
+
// @ts-ignore
|
|
38
|
+
restMessages.forEach((msg) => {
|
|
39
|
+
var _a, _b;
|
|
40
|
+
if (msg.role !== "user" && msg.role !== "assistant") {
|
|
41
|
+
// Add the "empty" message before the current one
|
|
42
|
+
adaptedMessages.push({
|
|
43
|
+
role: "user",
|
|
44
|
+
content: [
|
|
45
|
+
{
|
|
46
|
+
type: types_1.BedrockAnthropicContentType.TEXT,
|
|
47
|
+
text: ":",
|
|
48
|
+
},
|
|
49
|
+
],
|
|
50
|
+
});
|
|
51
|
+
// Change the role to "assistant" for the current message
|
|
52
|
+
adaptedMessages.push({
|
|
53
|
+
role: "assistant",
|
|
54
|
+
content: [
|
|
55
|
+
{
|
|
56
|
+
type: types_1.BedrockAnthropicContentType.TEXT,
|
|
57
|
+
text: (_a = msg.content) !== null && _a !== void 0 ? _a : "",
|
|
58
|
+
},
|
|
59
|
+
],
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
else {
|
|
63
|
+
// Add the message as-is
|
|
64
|
+
adaptedMessages.push({
|
|
65
|
+
role: msg.role,
|
|
66
|
+
content: [
|
|
67
|
+
{
|
|
68
|
+
type: types_1.BedrockAnthropicContentType.TEXT,
|
|
69
|
+
text: (_b = msg.content) !== null && _b !== void 0 ? _b : msg.function_call.arguments,
|
|
70
|
+
},
|
|
71
|
+
],
|
|
72
|
+
});
|
|
73
|
+
}
|
|
55
74
|
});
|
|
75
|
+
// Ensure no two consecutive messages have the same role
|
|
76
|
+
for (let i = 0; i < adaptedMessages.length - 1; i += 1) {
|
|
77
|
+
if (adaptedMessages[i].role === adaptedMessages[i + 1].role) {
|
|
78
|
+
// Insert a placeholder message with the opposite role
|
|
79
|
+
adaptedMessages.splice(i + 1, 0, {
|
|
80
|
+
role: adaptedMessages[i].role === "user" ? "assistant" : "user",
|
|
81
|
+
content: [
|
|
82
|
+
{
|
|
83
|
+
type: types_1.BedrockAnthropicContentType.TEXT,
|
|
84
|
+
text: ":",
|
|
85
|
+
},
|
|
86
|
+
],
|
|
87
|
+
});
|
|
88
|
+
i += 1; // Skip the inserted message
|
|
89
|
+
}
|
|
90
|
+
}
|
|
56
91
|
return { adaptedMessages, systemPrompt };
|
|
57
92
|
}
|
|
58
93
|
default:
|
|
@@ -60,5 +95,5 @@ class InputFormatAdapter {
|
|
|
60
95
|
}
|
|
61
96
|
}
|
|
62
97
|
}
|
|
63
|
-
exports.
|
|
98
|
+
exports.default = InputFormatAdapter;
|
|
64
99
|
//# sourceMappingURL=InputFormatAdapter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InputFormatAdapter.js","sourceRoot":"","sources":["../../src/middleware/InputFormatAdapter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"InputFormatAdapter.js","sourceRoot":"","sources":["../../src/middleware/InputFormatAdapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +1,12 @@
|
|
|
1
1
|
import { LLMResponse, Providers } from "../types";
|
|
2
|
-
export
|
|
2
|
+
export default class OutputFormatAdapter {
|
|
3
|
+
private static isToolUseStream;
|
|
4
|
+
private static toolArguments;
|
|
5
|
+
private static model;
|
|
6
|
+
private static toolName;
|
|
3
7
|
static adaptResponse(response: any, provider: Providers): LLMResponse;
|
|
4
|
-
private static adaptCompleteResponse;
|
|
5
8
|
private static adaptStreamingResponse;
|
|
6
|
-
private static
|
|
7
|
-
private static
|
|
9
|
+
private static createToolUseResponse;
|
|
10
|
+
private static createNonToolUseResponse;
|
|
11
|
+
private static resetState;
|
|
8
12
|
}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.OutputFormatAdapter = void 0;
|
|
4
3
|
const types_1 = require("../types");
|
|
5
4
|
class OutputFormatAdapter {
|
|
6
5
|
static adaptResponse(response, provider) {
|
|
@@ -12,13 +11,7 @@ class OutputFormatAdapter {
|
|
|
12
11
|
case types_1.Providers.OPENAI:
|
|
13
12
|
return response;
|
|
14
13
|
case types_1.Providers.ANTHROPIC_BEDROCK:
|
|
15
|
-
|
|
16
|
-
if (response.type === "message" && !response.delta) {
|
|
17
|
-
return this.adaptCompleteResponse(response);
|
|
18
|
-
}
|
|
19
|
-
else {
|
|
20
|
-
return this.adaptStreamingResponse(response);
|
|
21
|
-
}
|
|
14
|
+
return this.adaptStreamingResponse(response);
|
|
22
15
|
default:
|
|
23
16
|
throw new Error(`Unsupported provider: ${provider}`);
|
|
24
17
|
}
|
|
@@ -27,120 +20,122 @@ class OutputFormatAdapter {
|
|
|
27
20
|
throw new Error(`Failed to adapt response: ${error.message}`);
|
|
28
21
|
}
|
|
29
22
|
}
|
|
30
|
-
static
|
|
23
|
+
static adaptStreamingResponse(chunk) {
|
|
24
|
+
var _a, _b, _c, _d, _e;
|
|
25
|
+
const metrics = chunk["amazon-bedrock-invocationMetrics"];
|
|
26
|
+
const isStop = chunk.type === "content_block_stop" || chunk.type === "message_stop";
|
|
27
|
+
// Cache model on the first `message_start` chunk
|
|
28
|
+
if (chunk.type === "message_start" && ((_a = chunk.message) === null || _a === void 0 ? void 0 : _a.model)) {
|
|
29
|
+
this.model = chunk.message.model;
|
|
30
|
+
}
|
|
31
|
+
// Detect tool use for the current chunk and cache the tool name
|
|
32
|
+
if (chunk.type === "content_block_start" &&
|
|
33
|
+
((_b = chunk.content_block) === null || _b === void 0 ? void 0 : _b.type) === "tool_use") {
|
|
34
|
+
this.isToolUseStream = true;
|
|
35
|
+
this.toolName = ((_c = chunk.content_block) === null || _c === void 0 ? void 0 : _c.name) || "unknown_tool"; // Capture tool name
|
|
36
|
+
}
|
|
37
|
+
// Accumulate tool arguments for tool-use streams
|
|
38
|
+
if (chunk.type === "content_block_delta" &&
|
|
39
|
+
((_d = chunk.delta) === null || _d === void 0 ? void 0 : _d.type) === "input_json_delta") {
|
|
40
|
+
this.toolArguments.push(((_e = chunk.delta) === null || _e === void 0 ? void 0 : _e.partial_json) || "nothing");
|
|
41
|
+
}
|
|
42
|
+
// Handle the end of the stream
|
|
43
|
+
if (isStop) {
|
|
44
|
+
const response = this.isToolUseStream
|
|
45
|
+
? this.createToolUseResponse(metrics, isStop)
|
|
46
|
+
: this.createNonToolUseResponse(metrics, isStop, chunk);
|
|
47
|
+
// Reset state after processing the end of the stream
|
|
48
|
+
this.resetState();
|
|
49
|
+
return response;
|
|
50
|
+
}
|
|
51
|
+
// Handle intermediate chunks (non-stop chunks)
|
|
52
|
+
return this.isToolUseStream
|
|
53
|
+
? this.createToolUseResponse(metrics, isStop, chunk)
|
|
54
|
+
: this.createNonToolUseResponse(metrics, isStop, chunk);
|
|
55
|
+
}
|
|
56
|
+
static createToolUseResponse(metrics, isStop, chunk) {
|
|
57
|
+
var _a, _b;
|
|
31
58
|
return {
|
|
32
|
-
id:
|
|
33
|
-
object: "
|
|
59
|
+
id: `stream-${Date.now()}`,
|
|
60
|
+
object: "chat.completion.chunk",
|
|
34
61
|
created: Date.now(),
|
|
35
|
-
model:
|
|
36
|
-
choices: response.content.map((contentBlock, index) => ({
|
|
37
|
-
index,
|
|
38
|
-
message: {
|
|
39
|
-
role: this.mapRole(contentBlock),
|
|
40
|
-
content: this.extractContent(contentBlock),
|
|
41
|
-
},
|
|
42
|
-
logprobs: null,
|
|
43
|
-
finish_reason: response.stop_reason || null,
|
|
44
|
-
})),
|
|
45
|
-
usage: {
|
|
46
|
-
prompt_tokens: response.usage.input_tokens,
|
|
47
|
-
completion_tokens: response.usage.output_tokens,
|
|
48
|
-
total_tokens: response.usage.input_tokens + response.usage.output_tokens,
|
|
49
|
-
prompt_tokens_details: { cached_tokens: 0 },
|
|
50
|
-
completion_tokens_details: { reasoning_tokens: 0 },
|
|
51
|
-
},
|
|
62
|
+
model: this.model || "unknown-model",
|
|
52
63
|
system_fingerprint: "anthropic_translation",
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
choices: [
|
|
66
|
-
{
|
|
67
|
-
index: 0,
|
|
68
|
-
delta: {
|
|
69
|
-
role: "assistant",
|
|
70
|
-
content: "",
|
|
71
|
-
},
|
|
72
|
-
logprobs: null,
|
|
73
|
-
finish_reason: "stop",
|
|
64
|
+
choices: [
|
|
65
|
+
{
|
|
66
|
+
index: 0,
|
|
67
|
+
delta: {
|
|
68
|
+
function_call: {
|
|
69
|
+
name: this.toolName || "unknown_tool",
|
|
70
|
+
arguments: chunk &&
|
|
71
|
+
chunk.type === "content_block_delta" &&
|
|
72
|
+
((_a = chunk.delta) === null || _a === void 0 ? void 0 : _a.type) === "input_json_delta"
|
|
73
|
+
? (_b = chunk.delta) === null || _b === void 0 ? void 0 : _b.partial_json
|
|
74
|
+
: this.toolArguments.join(", ")
|
|
75
|
+
}
|
|
74
76
|
},
|
|
75
|
-
|
|
76
|
-
|
|
77
|
+
logprobs: null,
|
|
78
|
+
finish_reason: isStop ? "stop" : null
|
|
79
|
+
}
|
|
80
|
+
],
|
|
81
|
+
usage: isStop
|
|
82
|
+
? {
|
|
77
83
|
prompt_tokens: (metrics === null || metrics === void 0 ? void 0 : metrics.inputTokenCount) || 0,
|
|
78
84
|
completion_tokens: (metrics === null || metrics === void 0 ? void 0 : metrics.outputTokenCount) || 0,
|
|
79
|
-
total_tokens: ((metrics === null || metrics === void 0 ? void 0 : metrics.inputTokenCount) || 0) +
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
85
|
+
total_tokens: ((metrics === null || metrics === void 0 ? void 0 : metrics.inputTokenCount) || 0) +
|
|
86
|
+
((metrics === null || metrics === void 0 ? void 0 : metrics.outputTokenCount) || 0),
|
|
87
|
+
prompt_tokens_details: {
|
|
88
|
+
cached_tokens: 0
|
|
89
|
+
},
|
|
90
|
+
completion_tokens_details: {
|
|
91
|
+
reasoning_tokens: 0
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
: null
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
static createNonToolUseResponse(metrics, isStop, chunk) {
|
|
98
|
+
var _a, _b;
|
|
87
99
|
const content = ((_a = chunk.content_block) === null || _a === void 0 ? void 0 : _a.text) || ((_b = chunk.delta) === null || _b === void 0 ? void 0 : _b.text) || "";
|
|
88
100
|
return {
|
|
89
101
|
id: `stream-${Date.now()}`,
|
|
90
|
-
object: "
|
|
102
|
+
object: "chat.completion.chunk",
|
|
91
103
|
created: Date.now(),
|
|
92
|
-
model: "
|
|
104
|
+
model: this.model || "unknown-model",
|
|
93
105
|
choices: [
|
|
94
106
|
{
|
|
95
107
|
index: 0,
|
|
96
108
|
delta: {
|
|
97
|
-
|
|
98
|
-
content,
|
|
109
|
+
content
|
|
99
110
|
},
|
|
100
111
|
logprobs: null,
|
|
101
|
-
finish_reason: "null
|
|
102
|
-
}
|
|
112
|
+
finish_reason: isStop ? "stop" : null
|
|
113
|
+
}
|
|
103
114
|
],
|
|
104
|
-
usage:
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
115
|
+
usage: isStop
|
|
116
|
+
? {
|
|
117
|
+
prompt_tokens: (metrics === null || metrics === void 0 ? void 0 : metrics.inputTokenCount) || 0,
|
|
118
|
+
completion_tokens: (metrics === null || metrics === void 0 ? void 0 : metrics.outputTokenCount) || 0,
|
|
119
|
+
total_tokens: ((metrics === null || metrics === void 0 ? void 0 : metrics.inputTokenCount) || 0) +
|
|
120
|
+
((metrics === null || metrics === void 0 ? void 0 : metrics.outputTokenCount) || 0),
|
|
121
|
+
prompt_tokens_details: {
|
|
122
|
+
cached_tokens: 0
|
|
123
|
+
},
|
|
124
|
+
completion_tokens_details: {
|
|
125
|
+
reasoning_tokens: 0
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
: null
|
|
112
129
|
};
|
|
113
130
|
}
|
|
114
|
-
static
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
case types_1.BedrockAnthropicContentType.TOOL_USE:
|
|
120
|
-
case types_1.BedrockAnthropicContentType.TOOL_RESULT:
|
|
121
|
-
return "tool";
|
|
122
|
-
case types_1.BedrockAnthropicContentType.TEXT:
|
|
123
|
-
return "assistant";
|
|
124
|
-
default:
|
|
125
|
-
return "assistant"; // Default to assistant for unknown types
|
|
126
|
-
}
|
|
127
|
-
}
|
|
128
|
-
static extractContent(content) {
|
|
129
|
-
if (!content || !content.type) {
|
|
130
|
-
throw new Error("Invalid content block structure");
|
|
131
|
-
}
|
|
132
|
-
switch (content.type) {
|
|
133
|
-
case types_1.BedrockAnthropicContentType.TEXT:
|
|
134
|
-
const textContent = content;
|
|
135
|
-
return textContent.text || "";
|
|
136
|
-
case types_1.BedrockAnthropicContentType.TOOL_RESULT:
|
|
137
|
-
return content.content || "";
|
|
138
|
-
case types_1.BedrockAnthropicContentType.TOOL_USE:
|
|
139
|
-
return content.id || "";
|
|
140
|
-
default:
|
|
141
|
-
return "";
|
|
142
|
-
}
|
|
131
|
+
static resetState() {
|
|
132
|
+
this.isToolUseStream = false;
|
|
133
|
+
this.toolArguments = [];
|
|
134
|
+
this.model = undefined;
|
|
135
|
+
this.toolName = undefined;
|
|
143
136
|
}
|
|
144
137
|
}
|
|
145
|
-
exports.
|
|
138
|
+
exports.default = OutputFormatAdapter;
|
|
139
|
+
OutputFormatAdapter.isToolUseStream = false;
|
|
140
|
+
OutputFormatAdapter.toolArguments = [];
|
|
146
141
|
//# sourceMappingURL=OutputFormatAdapter.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OutputFormatAdapter.js","sourceRoot":"","sources":["../../src/middleware/OutputFormatAdapter.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"OutputFormatAdapter.js","sourceRoot":"","sources":["../../src/middleware/OutputFormatAdapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,6 +1,5 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.ProviderFinder = void 0;
|
|
4
3
|
const types_1 = require("../types");
|
|
5
4
|
class ProviderFinder {
|
|
6
5
|
static getProvider(model) {
|
|
@@ -16,5 +15,5 @@ class ProviderFinder {
|
|
|
16
15
|
throw new Error(`Unsupported model: ${model}`);
|
|
17
16
|
}
|
|
18
17
|
}
|
|
19
|
-
exports.
|
|
18
|
+
exports.default = ProviderFinder;
|
|
20
19
|
//# sourceMappingURL=ProviderFinder.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProviderFinder.js","sourceRoot":"","sources":["../../src/middleware/ProviderFinder.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ProviderFinder.js","sourceRoot":"","sources":["../../src/middleware/ProviderFinder.ts"],"names":[],"mappings":";;AAAA,oCAIkB;AAElB,MAAqB,cAAc;IACjC,MAAM,CAAC,WAAW,CAAC,KAAa;QAC9B,sDAAsD;QACtD,IACE,MAAM,CAAC,MAAM,CAAC,2BAAmB,CAAC,CAAC,QAAQ,CAAC,KAA4B,CAAC,EACzE;YACA,OAAO,iBAAS,CAAC,MAAM,CAAC;SACzB;QACD,iEAAiE;QACjE,IACE,MAAM,CAAC,MAAM,CAAC,qCAA6B,CAAC,CAAC,QAAQ,CACnD,KAAsC,CACvC,EACD;YACA,OAAO,iBAAS,CAAC,iBAAiB,CAAC;SACpC;QACD,wCAAwC;QACxC,MAAM,IAAI,KAAK,CAAC,sBAAsB,KAAK,EAAE,CAAC,CAAC;IACjD,CAAC;CACF;AAnBD,iCAmBC"}
|
|
@@ -5,16 +5,18 @@ export default class AwsBedrockAnthropicService implements ClientService {
|
|
|
5
5
|
constructor(awsAccessKey: string, awsSecretKey: string, region: string);
|
|
6
6
|
generateCompletion(params: {
|
|
7
7
|
messages: Messages;
|
|
8
|
-
model
|
|
8
|
+
model?: string;
|
|
9
9
|
max_tokens?: number;
|
|
10
10
|
temperature?: number;
|
|
11
|
+
tools?: any;
|
|
11
12
|
systemPrompt?: string;
|
|
12
13
|
}): Promise<BedrockAnthropicResponse>;
|
|
13
14
|
generateStreamCompletion(params: {
|
|
14
15
|
messages: Messages;
|
|
15
|
-
model
|
|
16
|
+
model?: string;
|
|
16
17
|
max_tokens?: number;
|
|
17
18
|
temperature?: number;
|
|
19
|
+
tools?: any;
|
|
18
20
|
systemPrompt?: string;
|
|
19
21
|
}): AsyncGenerator<BedrockAnthropicParsedChunk, void, unknown>;
|
|
20
22
|
}
|
|
@@ -41,17 +41,13 @@ class AwsBedrockAnthropicService {
|
|
|
41
41
|
}
|
|
42
42
|
generateCompletion(params) {
|
|
43
43
|
return __awaiter(this, void 0, void 0, function* () {
|
|
44
|
-
const { messages, model, max_tokens, temperature, systemPrompt } = params;
|
|
44
|
+
const { messages, model, max_tokens, temperature, systemPrompt, tools } = params;
|
|
45
45
|
if (!model) {
|
|
46
|
-
return Promise.reject("Model ID is required for AwsBedrockAnthropicService");
|
|
46
|
+
return Promise.reject(new Error("Model ID is required for AwsBedrockAnthropicService"));
|
|
47
47
|
}
|
|
48
|
-
const body = JSON.stringify({
|
|
49
|
-
anthropic_version: "bedrock-2023-05-31",
|
|
50
|
-
max_tokens,
|
|
48
|
+
const body = JSON.stringify(Object.assign({ anthropic_version: "bedrock-2023-05-31", max_tokens,
|
|
51
49
|
temperature,
|
|
52
|
-
messages,
|
|
53
|
-
system: systemPrompt,
|
|
54
|
-
});
|
|
50
|
+
messages, system: systemPrompt }, (tools.length ? { tools } : {})));
|
|
55
51
|
const command = new client_bedrock_runtime_1.InvokeModelCommand({
|
|
56
52
|
modelId: model,
|
|
57
53
|
body,
|
|
@@ -62,21 +58,18 @@ class AwsBedrockAnthropicService {
|
|
|
62
58
|
return JSON.parse(new TextDecoder().decode(response.body));
|
|
63
59
|
});
|
|
64
60
|
}
|
|
61
|
+
// eslint-disable-next-line consistent-return
|
|
65
62
|
generateStreamCompletion(params) {
|
|
66
63
|
var _a;
|
|
67
64
|
return __asyncGenerator(this, arguments, function* generateStreamCompletion_1() {
|
|
68
65
|
var _b, e_1, _c, _d;
|
|
69
|
-
const { messages, model, max_tokens, temperature, systemPrompt } = params;
|
|
66
|
+
const { messages, model, max_tokens, temperature, tools, systemPrompt } = params;
|
|
70
67
|
if (!model) {
|
|
71
|
-
return yield __await(Promise.reject("Model ID is required for AwsBedrockAnthropicService"));
|
|
68
|
+
return yield __await(Promise.reject(new Error("Model ID is required for AwsBedrockAnthropicService")));
|
|
72
69
|
}
|
|
73
|
-
const body = JSON.stringify({
|
|
74
|
-
anthropic_version: "bedrock-2023-05-31",
|
|
75
|
-
max_tokens,
|
|
70
|
+
const body = JSON.stringify(Object.assign({ anthropic_version: "bedrock-2023-05-31", max_tokens,
|
|
76
71
|
temperature,
|
|
77
|
-
messages,
|
|
78
|
-
system: systemPrompt,
|
|
79
|
-
});
|
|
72
|
+
messages, system: systemPrompt }, (tools.length ? { tools } : {})));
|
|
80
73
|
const command = new client_bedrock_runtime_1.InvokeModelWithResponseStreamCommand({
|
|
81
74
|
modelId: model,
|
|
82
75
|
body,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"AwsBedrockAnthropicService.js","sourceRoot":"","sources":["../../src/services/AwsBedrockAnthropicService.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,4EAIyC;AAQzC,MAAqB,0BAA0B;IAG7C,YAAY,YAAoB,EAAE,YAAoB,EAAE,MAAc;QACpE,IAAI,CAAC,OAAO,GAAG,IAAI,6CAAoB,CAAC;YACtC,MAAM;YACN,WAAW,EAAE;gBACX,WAAW,EAAE,YAAY;gBACzB,eAAe,EAAE,YAAY;aAC9B;SACF,CAAC,CAAC;IACL,CAAC;IAEK,kBAAkB,CAAC,
|
|
1
|
+
{"version":3,"file":"AwsBedrockAnthropicService.js","sourceRoot":"","sources":["../../src/services/AwsBedrockAnthropicService.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,19 +1,19 @@
|
|
|
1
1
|
import { BedrockAnthropicParsedChunk, LLMResponse, Messages } from "../types";
|
|
2
2
|
export interface ClientService {
|
|
3
|
-
generateCompletion({ messages, model, max_tokens, temperature,
|
|
3
|
+
generateCompletion({ messages, model, max_tokens, temperature, tools, systemPrompt, }: {
|
|
4
4
|
messages: Messages;
|
|
5
5
|
model?: string;
|
|
6
6
|
max_tokens?: number;
|
|
7
7
|
temperature?: number;
|
|
8
|
-
|
|
8
|
+
tools?: any;
|
|
9
9
|
systemPrompt?: string;
|
|
10
10
|
}): Promise<LLMResponse>;
|
|
11
|
-
generateStreamCompletion({ messages, model, max_tokens, temperature,
|
|
11
|
+
generateStreamCompletion({ messages, model, max_tokens, temperature, tools, systemPrompt, }: {
|
|
12
12
|
messages: Messages;
|
|
13
13
|
model?: string;
|
|
14
14
|
max_tokens?: number;
|
|
15
15
|
temperature?: number;
|
|
16
|
-
|
|
16
|
+
tools?: any;
|
|
17
17
|
systemPrompt?: string;
|
|
18
18
|
}): AsyncGenerator<BedrockAnthropicParsedChunk, void, unknown>;
|
|
19
19
|
}
|
|
@@ -1,9 +1,3 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
// functions: [
|
|
4
|
-
// {
|
|
5
|
-
// name: "function1",
|
|
6
|
-
// description: "Description of function1",
|
|
7
|
-
// parameters: {/* JSON schema for function1 */}
|
|
8
|
-
// },
|
|
9
3
|
//# sourceMappingURL=ClientService.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ClientService.js","sourceRoot":"","sources":["../../src/services/ClientService.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"ClientService.js","sourceRoot":"","sources":["../../src/services/ClientService.ts"],"names":[],"mappings":""}
|
|
@@ -3,20 +3,20 @@ import { ClientService } from "./ClientService";
|
|
|
3
3
|
export default class OpenAIService implements ClientService {
|
|
4
4
|
private openai;
|
|
5
5
|
constructor(apiKey: string);
|
|
6
|
-
generateCompletion({ messages, model, max_tokens, temperature,
|
|
6
|
+
generateCompletion({ messages, model, max_tokens, temperature, tools, }: {
|
|
7
7
|
messages: OpenAIMessages;
|
|
8
8
|
model: string;
|
|
9
9
|
max_tokens: number;
|
|
10
10
|
temperature: number;
|
|
11
11
|
systemPrompt?: string;
|
|
12
|
-
|
|
12
|
+
tools?: any;
|
|
13
13
|
}): Promise<OpenAIResponse>;
|
|
14
|
-
generateStreamCompletion({ messages, model, max_tokens, temperature,
|
|
14
|
+
generateStreamCompletion({ messages, model, max_tokens, temperature, tools, }: {
|
|
15
15
|
messages: OpenAIMessages;
|
|
16
16
|
model: string;
|
|
17
17
|
max_tokens: number;
|
|
18
18
|
temperature: number;
|
|
19
19
|
systemPrompt?: string;
|
|
20
|
-
|
|
20
|
+
tools?: any;
|
|
21
21
|
}): AsyncGenerator<any, void, unknown>;
|
|
22
22
|
}
|
|
@@ -36,10 +36,10 @@ class OpenAIService {
|
|
|
36
36
|
constructor(apiKey) {
|
|
37
37
|
this.openai = new openai_1.default({ apiKey });
|
|
38
38
|
}
|
|
39
|
-
generateCompletion({ messages, model, max_tokens, temperature,
|
|
39
|
+
generateCompletion({ messages, model, max_tokens, temperature, tools, }) {
|
|
40
40
|
return __awaiter(this, void 0, void 0, function* () {
|
|
41
41
|
if (!model) {
|
|
42
|
-
return Promise.reject("Model ID is required for OpenAIService.");
|
|
42
|
+
return Promise.reject(new Error("Model ID is required for OpenAIService."));
|
|
43
43
|
}
|
|
44
44
|
try {
|
|
45
45
|
const response = yield this.openai.chat.completions.create({
|
|
@@ -47,7 +47,7 @@ class OpenAIService {
|
|
|
47
47
|
messages,
|
|
48
48
|
max_tokens,
|
|
49
49
|
temperature,
|
|
50
|
-
functions,
|
|
50
|
+
functions: tools,
|
|
51
51
|
});
|
|
52
52
|
return response;
|
|
53
53
|
}
|
|
@@ -56,11 +56,12 @@ class OpenAIService {
|
|
|
56
56
|
}
|
|
57
57
|
});
|
|
58
58
|
}
|
|
59
|
-
|
|
59
|
+
// eslint-disable-next-line consistent-return
|
|
60
|
+
generateStreamCompletion({ messages, model, max_tokens, temperature, tools, }) {
|
|
60
61
|
return __asyncGenerator(this, arguments, function* generateStreamCompletion_1() {
|
|
61
62
|
var _a, e_1, _b, _c;
|
|
62
63
|
if (!model) {
|
|
63
|
-
return yield __await(Promise.reject("Model ID is required for OpenAIService."));
|
|
64
|
+
return yield __await(Promise.reject(new Error("Model ID is required for OpenAIService.")));
|
|
64
65
|
}
|
|
65
66
|
try {
|
|
66
67
|
const stream = yield __await(this.openai.chat.completions.create({
|
|
@@ -68,7 +69,7 @@ class OpenAIService {
|
|
|
68
69
|
messages,
|
|
69
70
|
max_tokens,
|
|
70
71
|
temperature,
|
|
71
|
-
functions,
|
|
72
|
+
functions: tools,
|
|
72
73
|
stream: true,
|
|
73
74
|
stream_options: {
|
|
74
75
|
include_usage: true,
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OpenAIService.js","sourceRoot":"","sources":["../../src/services/OpenAIService.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,oDAA4B;AAI5B,MAAqB,aAAa;IAGhC,YAAY,MAAc;QACxB,IAAI,CAAC,MAAM,GAAG,IAAI,gBAAM,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;IACvC,CAAC;IAEK,kBAAkB,CAAC,EACvB,QAAQ,EACR,KAAK,EACL,UAAU,EACV,WAAW,EACX,
|
|
1
|
+
{"version":3,"file":"OpenAIService.js","sourceRoot":"","sources":["../../src/services/OpenAIService.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,oDAA4B;AAI5B,MAAqB,aAAa;IAGhC,YAAY,MAAc;QACxB,IAAI,CAAC,MAAM,GAAG,IAAI,gBAAM,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;IACvC,CAAC;IAEK,kBAAkB,CAAC,EACvB,QAAQ,EACR,KAAK,EACL,UAAU,EACV,WAAW,EACX,KAAK,GASN;;YACC,IAAI,CAAC,KAAK,EAAE;gBACV,OAAO,OAAO,CAAC,MAAM,CACnB,IAAI,KAAK,CAAC,yCAAyC,CAAC,CACrD,CAAC;aACH;YAED,IAAI;gBACF,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;oBACzD,KAAK;oBACL,QAAQ;oBACR,UAAU;oBACV,WAAW;oBACX,SAAS,EAAE,KAAK;iBACjB,CAAC,CAAC;gBACH,OAAO,QAA0B,CAAC;aACnC;YAAC,OAAO,KAAK,EAAE;gBACd,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;aAC9B;QACH,CAAC;KAAA;IAED,6CAA6C;IACtC,wBAAwB,CAAC,EAC9B,QAAQ,EACR,KAAK,EACL,UAAU,EACV,WAAW,EACX,KAAK,GAUN;;;YACC,IAAI,CAAC,KAAK,EAAE;gBACV,qBAAO,OAAO,CAAC,MAAM,CACnB,IAAI,KAAK,CAAC,yCAAyC,CAAC,CACrD,EAAC;aACH;YAED,IAAI;gBACF,MAAM,MAAM,GAAG,cAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC;oBACvD,KAAK;oBACL,QAAQ;oBACR,UAAU;oBACV,WAAW;oBACX,SAAS,EAAE,KAAK;oBAChB,MAAM,EAAE,IAAI;oBACZ,cAAc,EAAE;wBACd,aAAa,EAAE,IAAI;qBACpB;iBACF,CAAC,CAAA,CAAC;;oBAEH,KAA0B,eAAA,WAAA,cAAA,MAAM,CAAA,YAAA;wBAAN,sBAAM;wBAAN,WAAM;;4BAArB,MAAM,KAAK,KAAA,CAAA;4BACpB,oBAAM,KAAK,CAAA,CAAC;;;;;qBACb;;;;;;;;;aACF;YAAC,OAAO,KAAK,EAAE;gBACd,qBAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,EAAC;aAC9B;QACH,CAAC;KAAA;CACF;AArFD,gCAqFC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "llm-proxy",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.4.14",
|
|
4
4
|
"description": "An LLM Proxy that allows the user to interact with different language models from different providers using unified request and response formats.",
|
|
5
5
|
"main": "dist/index.js",
|
|
6
6
|
"types": "dist/index.d.ts",
|
|
@@ -30,7 +30,7 @@
|
|
|
30
30
|
"aws-sdk": "^2.1691.0",
|
|
31
31
|
"axios": "^1.7.7",
|
|
32
32
|
"dotenv": "^16.4.5",
|
|
33
|
-
"llm-proxy": "^1.
|
|
33
|
+
"llm-proxy": "^1.4.14",
|
|
34
34
|
"openai": "^4.69.0"
|
|
35
35
|
}
|
|
36
36
|
}
|