llm-proxy 1.8.2 → 1.8.3
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/middleware/InputFormatAdapter.js +79 -15
- package/dist/middleware/InputFormatAdapter.js.map +1 -1
- package/dist/services/OpenAICompatibleService.js +17 -8
- package/dist/services/OpenAICompatibleService.js.map +1 -1
- package/dist/services/OpenAIService.d.ts +6 -2
- package/dist/services/OpenAIService.js +58 -13
- package/dist/services/OpenAIService.js.map +1 -1
- package/dist/types/index.d.ts +16 -2
- package/dist/types/index.js.map +1 -1
- package/dist/utils/inputFormatAdapterUtils/openAIToLlamaMessage.js +3 -2
- package/dist/utils/inputFormatAdapterUtils/openAIToLlamaMessage.js.map +1 -1
- package/package.json +1 -1
|
@@ -9,28 +9,92 @@ class InputFormatAdapter {
|
|
|
9
9
|
static adaptMessages(messages, provider) {
|
|
10
10
|
var _a;
|
|
11
11
|
switch (provider) {
|
|
12
|
-
case types_1.Providers.OPENAI:
|
|
13
|
-
case types_1.Providers.OPENAI_COMPATIBLE_PROVIDER:
|
|
12
|
+
case types_1.Providers.OPENAI: {
|
|
14
13
|
return {
|
|
15
14
|
// @ts-ignore: Ignore the any type in the msg
|
|
16
|
-
adaptedMessages: messages
|
|
17
|
-
|
|
15
|
+
adaptedMessages: messages
|
|
16
|
+
.map((msg) => {
|
|
17
|
+
// Skip 'function' role messages - they should have been converted to tool format earlier
|
|
18
18
|
if (msg.role === "function") {
|
|
19
|
-
return
|
|
20
|
-
role: msg.role,
|
|
21
|
-
content: (_a = msg.content) !== null && _a !== void 0 ? _a : "",
|
|
22
|
-
...(msg.thought_signature && {
|
|
23
|
-
thought_signature: msg.thought_signature,
|
|
24
|
-
}),
|
|
25
|
-
name: msg.name,
|
|
26
|
-
};
|
|
19
|
+
return null;
|
|
27
20
|
}
|
|
28
|
-
|
|
21
|
+
// Preserve the original message structure, including tool_calls if present
|
|
22
|
+
const adaptedMsg = {
|
|
29
23
|
role: msg.role,
|
|
30
|
-
content:
|
|
24
|
+
content: msg.content,
|
|
31
25
|
};
|
|
32
|
-
|
|
26
|
+
// If it's an assistant message with tool_calls, preserve them
|
|
27
|
+
if (msg.role === "assistant" && msg.tool_calls) {
|
|
28
|
+
adaptedMsg.tool_calls = msg.tool_calls;
|
|
29
|
+
// content can be null when tool_calls is present
|
|
30
|
+
if (adaptedMsg.content === undefined) {
|
|
31
|
+
adaptedMsg.content = null;
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
else if (msg.role === "tool") {
|
|
35
|
+
// For tool role, preserve tool_call_id and name
|
|
36
|
+
adaptedMsg.tool_call_id = msg.tool_call_id;
|
|
37
|
+
adaptedMsg.name = msg.name;
|
|
38
|
+
// Ensure content is a string for tool messages
|
|
39
|
+
if (!adaptedMsg.content) {
|
|
40
|
+
adaptedMsg.content = "";
|
|
41
|
+
}
|
|
42
|
+
}
|
|
43
|
+
else {
|
|
44
|
+
// For other messages, ensure content is not null/undefined
|
|
45
|
+
if (adaptedMsg.content === null ||
|
|
46
|
+
adaptedMsg.content === undefined) {
|
|
47
|
+
adaptedMsg.content = "";
|
|
48
|
+
}
|
|
49
|
+
}
|
|
50
|
+
return adaptedMsg;
|
|
51
|
+
})
|
|
52
|
+
.filter(Boolean),
|
|
33
53
|
};
|
|
54
|
+
}
|
|
55
|
+
case types_1.Providers.OPENAI_COMPATIBLE_PROVIDER: {
|
|
56
|
+
return {
|
|
57
|
+
// @ts-ignore: Ignore the any type in the msg
|
|
58
|
+
adaptedMessages: messages
|
|
59
|
+
.map((msg) => {
|
|
60
|
+
// Skip 'function' role messages - they should have been converted to tool format earlier
|
|
61
|
+
if (msg.role === "function") {
|
|
62
|
+
return null;
|
|
63
|
+
}
|
|
64
|
+
// Preserve the original message structure, including tool_calls if present
|
|
65
|
+
const adaptedMsg = {
|
|
66
|
+
role: msg.role,
|
|
67
|
+
content: msg.content,
|
|
68
|
+
};
|
|
69
|
+
// If it's an assistant message with tool_calls, preserve them
|
|
70
|
+
if (msg.role === "assistant" && msg.tool_calls) {
|
|
71
|
+
adaptedMsg.tool_calls = msg.tool_calls;
|
|
72
|
+
// content can be null when tool_calls is present
|
|
73
|
+
if (adaptedMsg.content === undefined) {
|
|
74
|
+
adaptedMsg.content = null;
|
|
75
|
+
}
|
|
76
|
+
}
|
|
77
|
+
else if (msg.role === "tool") {
|
|
78
|
+
// For tool role, preserve tool_call_id and name
|
|
79
|
+
adaptedMsg.tool_call_id = msg.tool_call_id;
|
|
80
|
+
adaptedMsg.name = msg.name;
|
|
81
|
+
// Ensure content is a string for tool messages
|
|
82
|
+
if (!adaptedMsg.content) {
|
|
83
|
+
adaptedMsg.content = "";
|
|
84
|
+
}
|
|
85
|
+
}
|
|
86
|
+
else {
|
|
87
|
+
// For other messages, ensure content is not null/undefined
|
|
88
|
+
if (adaptedMsg.content === null ||
|
|
89
|
+
adaptedMsg.content === undefined) {
|
|
90
|
+
adaptedMsg.content = "";
|
|
91
|
+
}
|
|
92
|
+
}
|
|
93
|
+
return adaptedMsg;
|
|
94
|
+
})
|
|
95
|
+
.filter(Boolean),
|
|
96
|
+
};
|
|
97
|
+
}
|
|
34
98
|
case types_1.Providers.ANTHROPIC_BEDROCK: {
|
|
35
99
|
if (!messages.length) {
|
|
36
100
|
throw new Error("Messages array cannot be empty for Anthropic.");
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"InputFormatAdapter.js","sourceRoot":"","sources":["../../src/middleware/InputFormatAdapter.ts"],"names":[],"mappings":";;;;;AAAA,
|
|
1
|
+
{"version":3,"file":"InputFormatAdapter.js","sourceRoot":"","sources":["../../src/middleware/InputFormatAdapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -32,6 +32,12 @@ function reformatMessagesWithThoughtSignature(messages) {
|
|
|
32
32
|
var _a, _b, _c;
|
|
33
33
|
const reformatted = [];
|
|
34
34
|
let i = 0;
|
|
35
|
+
const makeToolCallId = () => {
|
|
36
|
+
const prefix = "call_";
|
|
37
|
+
const base = (0, uuid_1.v4)().replace(/-/g, ""); // 32 chars
|
|
38
|
+
const id = `${prefix}${base}`; // 37 chars total
|
|
39
|
+
return id.length > 40 ? id.slice(0, 40) : id;
|
|
40
|
+
};
|
|
35
41
|
while (i < messages.length) {
|
|
36
42
|
const message = messages[i];
|
|
37
43
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
@@ -48,8 +54,8 @@ function reformatMessagesWithThoughtSignature(messages) {
|
|
|
48
54
|
const nextMessage = i + 1 < messages.length ? messages[i + 1] : null;
|
|
49
55
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
50
56
|
const nextMsg = nextMessage;
|
|
51
|
-
// Generate a unique ID for the tool call
|
|
52
|
-
const toolCallId =
|
|
57
|
+
// Generate a unique ID for the tool call (<= 40 chars)
|
|
58
|
+
const toolCallId = makeToolCallId();
|
|
53
59
|
// Extract thought_signature from the next function message if it exists
|
|
54
60
|
const thoughtSignature = (nextMsg === null || nextMsg === void 0 ? void 0 : nextMsg.role) === "function" && (nextMsg === null || nextMsg === void 0 ? void 0 : nextMsg.thought_signature)
|
|
55
61
|
? nextMsg.thought_signature
|
|
@@ -110,17 +116,19 @@ function reformatMessagesWithThoughtSignature(messages) {
|
|
|
110
116
|
role: "assistant",
|
|
111
117
|
tool_calls: [
|
|
112
118
|
{
|
|
113
|
-
id:
|
|
119
|
+
id: makeToolCallId(),
|
|
114
120
|
type: "function",
|
|
115
121
|
function: {
|
|
116
122
|
name: function_call.name,
|
|
117
123
|
arguments: function_call.arguments,
|
|
118
124
|
},
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
125
|
+
...(thought_signature && {
|
|
126
|
+
extra_content: {
|
|
127
|
+
google: {
|
|
128
|
+
thought_signature,
|
|
129
|
+
},
|
|
122
130
|
},
|
|
123
|
-
},
|
|
131
|
+
}),
|
|
124
132
|
},
|
|
125
133
|
],
|
|
126
134
|
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
@@ -159,12 +167,13 @@ class OpenAICompatibleService {
|
|
|
159
167
|
}
|
|
160
168
|
try {
|
|
161
169
|
const reformattedMessages = reformatMessagesWithThoughtSignature(messages);
|
|
170
|
+
const normalizedTools = normalizeTools(tools);
|
|
162
171
|
const response = await this.openai.chat.completions.create({
|
|
163
172
|
model,
|
|
164
173
|
messages: reformattedMessages,
|
|
165
174
|
max_tokens,
|
|
166
175
|
temperature,
|
|
167
|
-
|
|
176
|
+
...(normalizedTools && { tools: normalizedTools }),
|
|
168
177
|
});
|
|
169
178
|
return response;
|
|
170
179
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"OpenAICompatibleService.js","sourceRoot":"","sources":["../../src/services/OpenAICompatibleService.ts"],"names":[],"mappings":";;;;;AAAA,oDAA4B;AAC5B,+BAAkC;AAIlC,SAAS,cAAc,CAAC,KAAa;IACnC,IAAI,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC;QAAE,OAAO,SAAS,CAAC;IAE5C,OAAO,KAAK,CAAC,GAAG,CAAC,CAAC,IAAI,EAAE,EAAE;QACxB,kBAAkB;QAClB,IAAI,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI,MAAK,UAAU,IAAI,IAAI,CAAC,QAAQ,EAAE,CAAC;YAC/C,OAAO,IAAI,CAAC;QACd,CAAC;QAED,qBAAqB;QACrB,IAAI,CAAA,IAAI,aAAJ,IAAI,uBAAJ,IAAI,CAAE,IAAI,MAAK,UAAU,IAAI,IAAI,CAAC,IAAI,IAAI,IAAI,CAAC,UAAU,EAAE,CAAC;YAC9D,OAAO;gBACL,IAAI,EAAE,UAAU;gBAChB,QAAQ,EAAE;oBACR,IAAI,EAAE,IAAI,CAAC,IAAI;oBACf,WAAW,EAAE,IAAI,CAAC,WAAW;oBAC7B,UAAU,EAAE,IAAI,CAAC,UAAU;iBAC5B;aACF,CAAC;QACJ,CAAC;QAED,mCAAmC;QACnC,MAAM,IAAI,KAAK,CACb,wCAAwC,IAAI,CAAC,SAAS,CAAC,IAAI,EAAE,IAAI,EAAE,CAAC,CAAC,EAAE,CACxE,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAED,SAAS,oCAAoC,CAC3C,QAAwB;;IAExB,MAAM,WAAW,GAAmB,EAAE,CAAC;IACvC,IAAI,CAAC,GAAG,CAAC,CAAC;IAEV,OAAO,CAAC,GAAG,QAAQ,CAAC,MAAM,EAAE,CAAC;QAC3B,MAAM,OAAO,GAAG,QAAQ,CAAC,CAAC,CAAC,CAAC;QAC5B,8DAA8D;QAC9D,MAAM,GAAG,GAAG,OAAc,CAAC;QAE3B,gGAAgG;QAChG,MAAM,0BAA0B,GAC9B,GAAG,CAAC,IAAI,KAAK,WAAW;YACxB,OAAO,GAAG,CAAC,OAAO,KAAK,QAAQ;YAC/B,GAAG,CAAC,OAAO,KAAK,IAAI;YACpB,CAAC,KAAK,CAAC,OAAO,CAAC,GAAG,CAAC,OAAO,CAAC;YAC3B,GAAG,CAAC,OAAO,CAAC,IAAI;YAChB,GAAG,CAAC,OAAO,CAAC,SAAS,CAAC;QAExB,IAAI,0BAA0B,EAAE,CAAC;YAC/B,wDAAwD;YACxD,MAAM,WAAW,GAAG,CAAC,GAAG,CAAC,GAAG,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC,QAAQ,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,CAAC;YACrE,8DAA8D;YAC9D,MAAM,OAAO,GAAG,WAAkB,CAAC;YAEnC,
|
|
1
|
+
{"version":3,"file":"OpenAICompatibleService.js","sourceRoot":"","sources":["../../src/services/OpenAICompatibleService.ts"],"names":[],"mappings":"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"}
|
|
@@ -3,20 +3,24 @@ 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, tools, }: {
|
|
6
|
+
generateCompletion({ messages, model, max_tokens, temperature, tools, reasoning_effort, verbosity }: {
|
|
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
|
+
reasoning_effort?: "none" | "minimal" | "low" | "medium" | "high" | "xhigh";
|
|
14
|
+
verbosity?: "low" | "medium" | "high";
|
|
13
15
|
}): Promise<OpenAIResponse>;
|
|
14
|
-
generateStreamCompletion({ messages, model, max_tokens, temperature, tools, }: {
|
|
16
|
+
generateStreamCompletion({ messages, model, max_tokens, temperature, tools, reasoning_effort, verbosity }: {
|
|
15
17
|
messages: OpenAIMessages;
|
|
16
18
|
model: string;
|
|
17
19
|
max_tokens: number;
|
|
18
20
|
temperature: number;
|
|
19
21
|
systemPrompt?: string;
|
|
20
22
|
tools?: any;
|
|
23
|
+
reasoning_effort?: "none" | "minimal" | "low" | "medium" | "high" | "xhigh";
|
|
24
|
+
verbosity?: "low" | "medium" | "high";
|
|
21
25
|
}): AsyncGenerator<any, void, unknown>;
|
|
22
26
|
}
|
|
@@ -8,18 +8,40 @@ class OpenAIService {
|
|
|
8
8
|
constructor(apiKey) {
|
|
9
9
|
this.openai = new openai_1.default({ apiKey });
|
|
10
10
|
}
|
|
11
|
-
async generateCompletion({ messages, model, max_tokens, temperature, tools, }) {
|
|
11
|
+
async generateCompletion({ messages, model, max_tokens, temperature, tools, reasoning_effort, verbosity }) {
|
|
12
12
|
if (!model) {
|
|
13
13
|
return Promise.reject(new Error("Model ID is required for OpenAIService."));
|
|
14
14
|
}
|
|
15
15
|
try {
|
|
16
|
-
|
|
16
|
+
// Build the request object
|
|
17
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
18
|
+
const requestBody = {
|
|
17
19
|
model,
|
|
18
20
|
messages,
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
21
|
+
temperature
|
|
22
|
+
};
|
|
23
|
+
// Use max_completion_tokens for newer models (GPT-5+), fallback to max_tokens for older models
|
|
24
|
+
if (model.startsWith("gpt-5") ||
|
|
25
|
+
model.startsWith("o3") ||
|
|
26
|
+
model.startsWith("o4")) {
|
|
27
|
+
requestBody.max_completion_tokens = max_tokens;
|
|
28
|
+
}
|
|
29
|
+
else {
|
|
30
|
+
requestBody.max_tokens = max_tokens;
|
|
31
|
+
}
|
|
32
|
+
// Add tools if provided (modern API, replaces deprecated functions)
|
|
33
|
+
if (tools) {
|
|
34
|
+
requestBody.tools = tools;
|
|
35
|
+
}
|
|
36
|
+
// Add optional reasoning parameter for reasoning models
|
|
37
|
+
if (reasoning_effort) {
|
|
38
|
+
requestBody.reasoning_effort = reasoning_effort;
|
|
39
|
+
}
|
|
40
|
+
// Add optional verbosity parameter
|
|
41
|
+
if (verbosity) {
|
|
42
|
+
requestBody.verbosity = verbosity;
|
|
43
|
+
}
|
|
44
|
+
const response = await this.openai.chat.completions.create(requestBody);
|
|
23
45
|
return response;
|
|
24
46
|
}
|
|
25
47
|
catch (error) {
|
|
@@ -27,22 +49,45 @@ class OpenAIService {
|
|
|
27
49
|
}
|
|
28
50
|
}
|
|
29
51
|
// eslint-disable-next-line consistent-return
|
|
30
|
-
async *generateStreamCompletion({ messages, model, max_tokens, temperature, tools, }) {
|
|
52
|
+
async *generateStreamCompletion({ messages, model, max_tokens, temperature, tools, reasoning_effort, verbosity }) {
|
|
31
53
|
if (!model) {
|
|
32
54
|
return Promise.reject(new Error("Model ID is required for OpenAIService."));
|
|
33
55
|
}
|
|
34
56
|
try {
|
|
35
|
-
|
|
57
|
+
// Build the request object
|
|
58
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
59
|
+
const requestBody = {
|
|
36
60
|
model,
|
|
37
61
|
messages,
|
|
38
|
-
max_tokens,
|
|
39
62
|
temperature,
|
|
40
|
-
functions: tools,
|
|
41
63
|
stream: true,
|
|
42
64
|
stream_options: {
|
|
43
|
-
include_usage: true
|
|
44
|
-
}
|
|
45
|
-
}
|
|
65
|
+
include_usage: true
|
|
66
|
+
}
|
|
67
|
+
};
|
|
68
|
+
// Use max_completion_tokens for newer models (GPT-5+), fallback to max_tokens for older models
|
|
69
|
+
if (model.startsWith("gpt-5") ||
|
|
70
|
+
model.startsWith("o3") ||
|
|
71
|
+
model.startsWith("o4")) {
|
|
72
|
+
requestBody.max_completion_tokens = max_tokens;
|
|
73
|
+
}
|
|
74
|
+
else {
|
|
75
|
+
requestBody.max_tokens = max_tokens;
|
|
76
|
+
}
|
|
77
|
+
// Add tools if provided (modern API, replaces deprecated functions)
|
|
78
|
+
if (tools) {
|
|
79
|
+
requestBody.tools = tools;
|
|
80
|
+
}
|
|
81
|
+
// Add optional reasoning parameter for reasoning models
|
|
82
|
+
if (reasoning_effort) {
|
|
83
|
+
requestBody.reasoning_effort = reasoning_effort;
|
|
84
|
+
}
|
|
85
|
+
// Add optional verbosity parameter
|
|
86
|
+
if (verbosity) {
|
|
87
|
+
requestBody.verbosity = verbosity;
|
|
88
|
+
}
|
|
89
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
90
|
+
const stream = await this.openai.chat.completions.create(requestBody);
|
|
46
91
|
for await (const chunk of stream) {
|
|
47
92
|
yield chunk;
|
|
48
93
|
}
|
|
@@ -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;IAED,KAAK,CAAC,kBAAkB,CAAC,EACvB,QAAQ,EACR,KAAK,EACL,UAAU,EACV,WAAW,EACX,KAAK,
|
|
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;IAED,KAAK,CAAC,kBAAkB,CAAC,EACvB,QAAQ,EACR,KAAK,EACL,UAAU,EACV,WAAW,EACX,KAAK,EACL,gBAAgB,EAChB,SAAS,EAWV;QACC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,OAAO,CAAC,MAAM,CACnB,IAAI,KAAK,CAAC,yCAAyC,CAAC,CACrD,CAAC;QACJ,CAAC;QAED,IAAI,CAAC;YACH,2BAA2B;YAC3B,8DAA8D;YAC9D,MAAM,WAAW,GAAQ;gBACvB,KAAK;gBACL,QAAQ;gBACR,WAAW;aACZ,CAAC;YAEF,+FAA+F;YAC/F,IACE,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC;gBACzB,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC;gBACtB,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EACtB,CAAC;gBACD,WAAW,CAAC,qBAAqB,GAAG,UAAU,CAAC;YACjD,CAAC;iBAAM,CAAC;gBACN,WAAW,CAAC,UAAU,GAAG,UAAU,CAAC;YACtC,CAAC;YAED,oEAAoE;YACpE,IAAI,KAAK,EAAE,CAAC;gBACV,WAAW,CAAC,KAAK,GAAG,KAAK,CAAC;YAC5B,CAAC;YAED,wDAAwD;YACxD,IAAI,gBAAgB,EAAE,CAAC;gBACrB,WAAW,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;YAClD,CAAC;YAED,mCAAmC;YACnC,IAAI,SAAS,EAAE,CAAC;gBACd,WAAW,CAAC,SAAS,GAAG,SAAS,CAAC;YACpC,CAAC;YAED,MAAM,QAAQ,GAAG,MAAM,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CAAC,WAAW,CAAC,CAAC;YACxE,OAAO,QAA0B,CAAC;QACpC,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;IAED,6CAA6C;IAC7C,KAAK,CAAC,CAAC,wBAAwB,CAAC,EAC9B,QAAQ,EACR,KAAK,EACL,UAAU,EACV,WAAW,EACX,KAAK,EACL,gBAAgB,EAChB,SAAS,EAYV;QACC,IAAI,CAAC,KAAK,EAAE,CAAC;YACX,OAAO,OAAO,CAAC,MAAM,CACnB,IAAI,KAAK,CAAC,yCAAyC,CAAC,CACrD,CAAC;QACJ,CAAC;QAED,IAAI,CAAC;YACH,2BAA2B;YAC3B,8DAA8D;YAC9D,MAAM,WAAW,GAAQ;gBACvB,KAAK;gBACL,QAAQ;gBACR,WAAW;gBACX,MAAM,EAAE,IAAI;gBACZ,cAAc,EAAE;oBACd,aAAa,EAAE,IAAI;iBACpB;aACF,CAAC;YAEF,+FAA+F;YAC/F,IACE,KAAK,CAAC,UAAU,CAAC,OAAO,CAAC;gBACzB,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC;gBACtB,KAAK,CAAC,UAAU,CAAC,IAAI,CAAC,EACtB,CAAC;gBACD,WAAW,CAAC,qBAAqB,GAAG,UAAU,CAAC;YACjD,CAAC;iBAAM,CAAC;gBACN,WAAW,CAAC,UAAU,GAAG,UAAU,CAAC;YACtC,CAAC;YAED,oEAAoE;YACpE,IAAI,KAAK,EAAE,CAAC;gBACV,WAAW,CAAC,KAAK,GAAG,KAAK,CAAC;YAC5B,CAAC;YAED,wDAAwD;YACxD,IAAI,gBAAgB,EAAE,CAAC;gBACrB,WAAW,CAAC,gBAAgB,GAAG,gBAAgB,CAAC;YAClD,CAAC;YAED,mCAAmC;YACnC,IAAI,SAAS,EAAE,CAAC;gBACd,WAAW,CAAC,SAAS,GAAG,SAAS,CAAC;YACpC,CAAC;YAED,8DAA8D;YAC9D,MAAM,MAAM,GAAG,MAAO,IAAI,CAAC,MAAM,CAAC,IAAI,CAAC,WAAW,CAAC,MAAM,CACvD,WAAW,CACJ,CAAC;YAEV,IAAI,KAAK,EAAE,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBACjC,MAAM,KAAK,CAAC;YACd,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,OAAO,OAAO,CAAC,MAAM,CAAC,KAAK,CAAC,CAAC;QAC/B,CAAC;IACH,CAAC;CACF;AAxJD,gCAwJC"}
|
package/dist/types/index.d.ts
CHANGED
|
@@ -131,6 +131,16 @@ export interface OpenAIResponse {
|
|
|
131
131
|
message: {
|
|
132
132
|
role: string;
|
|
133
133
|
content: string;
|
|
134
|
+
refusal?: string | null;
|
|
135
|
+
annotations?: Array<any>;
|
|
136
|
+
tool_calls?: Array<{
|
|
137
|
+
id: string;
|
|
138
|
+
type: string;
|
|
139
|
+
function: {
|
|
140
|
+
name: string;
|
|
141
|
+
arguments: string;
|
|
142
|
+
};
|
|
143
|
+
}>;
|
|
134
144
|
function_call?: {
|
|
135
145
|
name: string;
|
|
136
146
|
arguments: any;
|
|
@@ -144,10 +154,14 @@ export interface OpenAIResponse {
|
|
|
144
154
|
completion_tokens: number;
|
|
145
155
|
total_tokens: number;
|
|
146
156
|
prompt_tokens_details?: {
|
|
147
|
-
cached_tokens
|
|
157
|
+
cached_tokens?: number;
|
|
158
|
+
audio_tokens?: number;
|
|
148
159
|
};
|
|
149
160
|
completion_tokens_details?: {
|
|
150
|
-
reasoning_tokens
|
|
161
|
+
reasoning_tokens?: number;
|
|
162
|
+
audio_tokens?: number;
|
|
163
|
+
accepted_prediction_tokens?: number;
|
|
164
|
+
rejected_prediction_tokens?: number;
|
|
151
165
|
};
|
|
152
166
|
};
|
|
153
167
|
system_fingerprint: string;
|
package/dist/types/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":";;;AAAA,UAAU;AACV,IAAY,SAKX;AALD,WAAY,SAAS;IACnB,8BAAiB,CAAA;IACjB,mDAAsC,CAAA;IACtC,2CAA8B,CAAA;IAC9B,oEAAuD,CAAA;AACzD,CAAC,EALW,SAAS,yBAAT,SAAS,QAKpB;AA8ED,IAAY,mBA2CX;AA3CD,WAAY,mBAAmB;IAC7B,0CAAmB,CAAA;IACnB,sCAAe,CAAA;IACf,gDAAyB,CAAA;IACzB,gDAAyB,CAAA;IACzB,0CAAmB,CAAA;IACnB,oDAA6B,CAAA;IAC7B,oDAA6B,CAAA;IAC7B,0CAAmB,CAAA;IACnB,2DAAoC,CAAA;IACpC,yCAAkB,CAAA;IAClB,+DAAwC,CAAA;IACxC,+DAAwC,CAAA;IACxC,+DAAwC,CAAA;IACxC,2EAAoD,CAAA;IACpD,iGAA0E,CAAA;IAC1E,qEAA8C,CAAA;IAC9C,2FAAoE,CAAA;IACpE,mDAA4B,CAAA;IAC5B,yEAAkD,CAAA;IAClD,gDAAyB,CAAA;IACzB,sEAA+C,CAAA;IAC/C,0CAAmB,CAAA;IACnB,gEAAyC,CAAA;IACzC,kDAA2B,CAAA;IAC3B,wEAAiD,CAAA;IACjD,kEAA2C,CAAA;IAC3C,gEAAyC,CAAA;IACzC,gEAAyC,CAAA;IACzC,oEAA6C,CAAA;IAC7C,sCAAe,CAAA;IACf,gDAAyB,CAAA;IACzB,gDAAyB,CAAA;IACzB,8CAAuB,CAAA;IACvB,wDAAiC,CAAA;IACjC,wDAAiC,CAAA;IACjC,sDAA+B,CAAA;IAC/B,8DAAuC,CAAA;IACvC,gEAAyC,CAAA;IACzC,gEAAyC,CAAA;IACzC,gEAAyC,CAAA;IACzC,gEAAyC,CAAA;IACzC,wEAAiD,CAAA;AACnD,CAAC,EA3CW,mBAAmB,mCAAnB,mBAAmB,QA2C9B;
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/types/index.ts"],"names":[],"mappings":";;;AAAA,UAAU;AACV,IAAY,SAKX;AALD,WAAY,SAAS;IACnB,8BAAiB,CAAA;IACjB,mDAAsC,CAAA;IACtC,2CAA8B,CAAA;IAC9B,oEAAuD,CAAA;AACzD,CAAC,EALW,SAAS,yBAAT,SAAS,QAKpB;AA8ED,IAAY,mBA2CX;AA3CD,WAAY,mBAAmB;IAC7B,0CAAmB,CAAA;IACnB,sCAAe,CAAA;IACf,gDAAyB,CAAA;IACzB,gDAAyB,CAAA;IACzB,0CAAmB,CAAA;IACnB,oDAA6B,CAAA;IAC7B,oDAA6B,CAAA;IAC7B,0CAAmB,CAAA;IACnB,2DAAoC,CAAA;IACpC,yCAAkB,CAAA;IAClB,+DAAwC,CAAA;IACxC,+DAAwC,CAAA;IACxC,+DAAwC,CAAA;IACxC,2EAAoD,CAAA;IACpD,iGAA0E,CAAA;IAC1E,qEAA8C,CAAA;IAC9C,2FAAoE,CAAA;IACpE,mDAA4B,CAAA;IAC5B,yEAAkD,CAAA;IAClD,gDAAyB,CAAA;IACzB,sEAA+C,CAAA;IAC/C,0CAAmB,CAAA;IACnB,gEAAyC,CAAA;IACzC,kDAA2B,CAAA;IAC3B,wEAAiD,CAAA;IACjD,kEAA2C,CAAA;IAC3C,gEAAyC,CAAA;IACzC,gEAAyC,CAAA;IACzC,oEAA6C,CAAA;IAC7C,sCAAe,CAAA;IACf,gDAAyB,CAAA;IACzB,gDAAyB,CAAA;IACzB,8CAAuB,CAAA;IACvB,wDAAiC,CAAA;IACjC,wDAAiC,CAAA;IACjC,sDAA+B,CAAA;IAC/B,8DAAuC,CAAA;IACvC,gEAAyC,CAAA;IACzC,gEAAyC,CAAA;IACzC,gEAAyC,CAAA;IACzC,gEAAyC,CAAA;IACzC,wEAAiD,CAAA;AACnD,CAAC,EA3CW,mBAAmB,mCAAnB,mBAAmB,QA2C9B;AA4DD,cAAc;AAEd,wBAAwB;AAExB,6EAA6E;AAC7E,IAAY,6BAqBX;AArBD,WAAY,6BAA6B;IACvC,kBAAkB;IAClB,wFAAuD,CAAA;IACvD,4FAA2D,CAAA;IAC3D,0FAAyD,CAAA;IAEzD,oBAAoB;IACpB,mGAAkE,CAAA;IAClE,mGAAkE,CAAA;IAClE,8FAA6D,CAAA;IAE7D,kBAAkB;IAClB,sEAAqC,CAAA;IACrC,kEAAiC,CAAA;IACjC,kFAAiD,CAAA;IAEjD,qBAAqB;IACrB,gGAA+D,CAAA;IAC/D,oGAAmE,CAAA;IACnE,sGAAqE,CAAA;IACrE,yGAAwE,CAAA;AAC1E,CAAC,EArBW,6BAA6B,6CAA7B,6BAA6B,QAqBxC;AAED,IAAY,2BAKX;AALD,WAAY,2BAA2B;IACrC,4CAAa,CAAA;IACb,8CAAe,CAAA;IACf,oDAAqB,CAAA;IACrB,0DAA2B,CAAA;AAC7B,CAAC,EALW,2BAA2B,2CAA3B,2BAA2B,QAKtC;AA0GD,YAAY;AAEZ,IAAY,qBAOX;AAPD,WAAY,qBAAqB;IAC/B,wEAA+C,CAAA;IAC/C,4EAAmD,CAAA;IACnD,4EAAmD,CAAA;IACnD,2FAAkE,CAAA;IAClE,+FAAsE,CAAA;IACtE,+FAAsE,CAAA;AACxE,CAAC,EAPW,qBAAqB,qCAArB,qBAAqB,QAOhC"}
|
|
@@ -1,10 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
// Ensure OpenAIMessage is the base type for all message variants
|
|
3
4
|
const openaiToLlamaMessage = (openaiMessages) => {
|
|
4
5
|
let llamaPrompt = "<|begin_of_text|>";
|
|
5
6
|
// Explicitly type updatedMessages as an array of OpenAIMessage
|
|
6
7
|
const updatedMessages = [];
|
|
7
|
-
openaiMessages.forEach(
|
|
8
|
+
openaiMessages.forEach(msg => {
|
|
8
9
|
const { role, content } = msg;
|
|
9
10
|
if (role === "function") {
|
|
10
11
|
// Add a user message with empty content
|
|
@@ -17,7 +18,7 @@ const openaiToLlamaMessage = (openaiMessages) => {
|
|
|
17
18
|
updatedMessages.push(msg);
|
|
18
19
|
}
|
|
19
20
|
});
|
|
20
|
-
updatedMessages.forEach(
|
|
21
|
+
updatedMessages.forEach(msg => {
|
|
21
22
|
const { role, content } = msg;
|
|
22
23
|
const validRoles = ["system", "user", "assistant"];
|
|
23
24
|
if (!validRoles.includes(role)) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openAIToLlamaMessage.js","sourceRoot":"","sources":["../../../src/utils/inputFormatAdapterUtils/openAIToLlamaMessage.ts"],"names":[],"mappings":";;
|
|
1
|
+
{"version":3,"file":"openAIToLlamaMessage.js","sourceRoot":"","sources":["../../../src/utils/inputFormatAdapterUtils/openAIToLlamaMessage.ts"],"names":[],"mappings":";;AACA,iEAAiE;AAEjE,MAAM,oBAAoB,GAAG,CAAC,cAA8B,EAAU,EAAE;IACtE,IAAI,WAAW,GAAG,mBAAmB,CAAC;IAEtC,+DAA+D;IAC/D,MAAM,eAAe,GAAoB,EAAE,CAAC;IAE5C,cAAc,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;QAC3B,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC;QAE9B,IAAI,IAAI,KAAK,UAAU,EAAE,CAAC;YACxB,wCAAwC;YACxC,eAAe,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,MAAM,EAAE,OAAO,EAAE,EAAE,EAAE,CAAC,CAAC;YAEpD,oEAAoE;YACpE,eAAe,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,WAAW,EAAE,OAAO,EAAE,CAAC,CAAC;QACvD,CAAC;aAAM,CAAC;YACN,2CAA2C;YAC3C,eAAe,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;QAC5B,CAAC;IACH,CAAC,CAAC,CAAC;IAEH,eAAe,CAAC,OAAO,CAAC,GAAG,CAAC,EAAE;QAC5B,MAAM,EAAE,IAAI,EAAE,OAAO,EAAE,GAAG,GAAG,CAAC;QAE9B,MAAM,UAAU,GAAG,CAAC,QAAQ,EAAE,MAAM,EAAE,WAAW,CAAC,CAAC;QACnD,IAAI,CAAC,UAAU,CAAC,QAAQ,CAAC,IAAI,CAAC,EAAE,CAAC;YAC/B,MAAM,IAAI,KAAK,CAAC,iBAAiB,IAAI,EAAE,CAAC,CAAC;QAC3C,CAAC;QAED,WAAW,IAAI,wBAAwB,IAAI,sBAAsB,OAAO,cAAc,CAAC;IACzF,CAAC,CAAC,CAAC;IAEH,MAAM,WAAW,GAAG,eAAe,CAAC,eAAe,CAAC,MAAM,GAAG,CAAC,CAAC,CAAC;IAChE,IAAI,CAAA,WAAW,aAAX,WAAW,uBAAX,WAAW,CAAE,IAAI,MAAK,MAAM,EAAE,CAAC;QACjC,WAAW,IAAI,iDAAiD,CAAC;IACnE,CAAC;IAED,OAAO,WAAW,CAAC;AACrB,CAAC,CAAC;AAEF,kBAAe,oBAAoB,CAAC"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "llm-proxy",
|
|
3
|
-
"version": "1.8.
|
|
3
|
+
"version": "1.8.3",
|
|
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",
|