@langchain/openai 0.0.21 → 0.0.23
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/chat_models.cjs +29 -11
- package/dist/chat_models.js +29 -11
- package/dist/tests/chat_models.int.test.js +2 -0
- package/package.json +1 -1
package/dist/chat_models.cjs
CHANGED
|
@@ -106,14 +106,26 @@ delta, defaultRole) {
|
|
|
106
106
|
}
|
|
107
107
|
function convertMessagesToOpenAIParams(messages) {
|
|
108
108
|
// TODO: Function messages do not support array content, fix cast
|
|
109
|
-
return messages.map((message) =>
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
109
|
+
return messages.map((message) => {
|
|
110
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
111
|
+
const completionParam = {
|
|
112
|
+
role: messageToOpenAIRole(message),
|
|
113
|
+
content: message.content,
|
|
114
|
+
};
|
|
115
|
+
if (message.name != null) {
|
|
116
|
+
completionParam.name = message.name;
|
|
117
|
+
}
|
|
118
|
+
if (message.additional_kwargs.function_call != null) {
|
|
119
|
+
completionParam.function_call = message.additional_kwargs.function_call;
|
|
120
|
+
}
|
|
121
|
+
if (message.additional_kwargs.tool_calls != null) {
|
|
122
|
+
completionParam.tool_calls = message.additional_kwargs.tool_calls;
|
|
123
|
+
}
|
|
124
|
+
if (message.tool_call_id != null) {
|
|
125
|
+
completionParam.tool_call_id = message.tool_call_id;
|
|
126
|
+
}
|
|
127
|
+
return completionParam;
|
|
128
|
+
});
|
|
117
129
|
}
|
|
118
130
|
/**
|
|
119
131
|
* Wrapper around OpenAI large language models that use the Chat endpoint.
|
|
@@ -649,9 +661,15 @@ class ChatOpenAI extends chat_models_1.BaseChatModel {
|
|
|
649
661
|
count += await this.getNumTokens(openAIMessage.additional_kwargs.function_call?.name);
|
|
650
662
|
}
|
|
651
663
|
if (openAIMessage.additional_kwargs.function_call?.arguments) {
|
|
652
|
-
|
|
653
|
-
|
|
654
|
-
|
|
664
|
+
try {
|
|
665
|
+
count += await this.getNumTokens(
|
|
666
|
+
// Remove newlines and spaces
|
|
667
|
+
JSON.stringify(JSON.parse(openAIMessage.additional_kwargs.function_call?.arguments)));
|
|
668
|
+
}
|
|
669
|
+
catch (error) {
|
|
670
|
+
console.error("Error parsing function arguments", error, JSON.stringify(openAIMessage.additional_kwargs.function_call));
|
|
671
|
+
count += await this.getNumTokens(openAIMessage.additional_kwargs.function_call?.arguments);
|
|
672
|
+
}
|
|
655
673
|
}
|
|
656
674
|
totalCount += count;
|
|
657
675
|
return count;
|
package/dist/chat_models.js
CHANGED
|
@@ -102,14 +102,26 @@ delta, defaultRole) {
|
|
|
102
102
|
}
|
|
103
103
|
function convertMessagesToOpenAIParams(messages) {
|
|
104
104
|
// TODO: Function messages do not support array content, fix cast
|
|
105
|
-
return messages.map((message) =>
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
105
|
+
return messages.map((message) => {
|
|
106
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
107
|
+
const completionParam = {
|
|
108
|
+
role: messageToOpenAIRole(message),
|
|
109
|
+
content: message.content,
|
|
110
|
+
};
|
|
111
|
+
if (message.name != null) {
|
|
112
|
+
completionParam.name = message.name;
|
|
113
|
+
}
|
|
114
|
+
if (message.additional_kwargs.function_call != null) {
|
|
115
|
+
completionParam.function_call = message.additional_kwargs.function_call;
|
|
116
|
+
}
|
|
117
|
+
if (message.additional_kwargs.tool_calls != null) {
|
|
118
|
+
completionParam.tool_calls = message.additional_kwargs.tool_calls;
|
|
119
|
+
}
|
|
120
|
+
if (message.tool_call_id != null) {
|
|
121
|
+
completionParam.tool_call_id = message.tool_call_id;
|
|
122
|
+
}
|
|
123
|
+
return completionParam;
|
|
124
|
+
});
|
|
113
125
|
}
|
|
114
126
|
/**
|
|
115
127
|
* Wrapper around OpenAI large language models that use the Chat endpoint.
|
|
@@ -645,9 +657,15 @@ export class ChatOpenAI extends BaseChatModel {
|
|
|
645
657
|
count += await this.getNumTokens(openAIMessage.additional_kwargs.function_call?.name);
|
|
646
658
|
}
|
|
647
659
|
if (openAIMessage.additional_kwargs.function_call?.arguments) {
|
|
648
|
-
|
|
649
|
-
|
|
650
|
-
|
|
660
|
+
try {
|
|
661
|
+
count += await this.getNumTokens(
|
|
662
|
+
// Remove newlines and spaces
|
|
663
|
+
JSON.stringify(JSON.parse(openAIMessage.additional_kwargs.function_call?.arguments)));
|
|
664
|
+
}
|
|
665
|
+
catch (error) {
|
|
666
|
+
console.error("Error parsing function arguments", error, JSON.stringify(openAIMessage.additional_kwargs.function_call));
|
|
667
|
+
count += await this.getNumTokens(openAIMessage.additional_kwargs.function_call?.arguments);
|
|
668
|
+
}
|
|
651
669
|
}
|
|
652
670
|
totalCount += count;
|
|
653
671
|
return count;
|
|
@@ -521,6 +521,7 @@ test("Test ChatOpenAI token usage reporting for streaming function calls", async
|
|
|
521
521
|
},
|
|
522
522
|
],
|
|
523
523
|
}).bind({
|
|
524
|
+
seed: 42,
|
|
524
525
|
functions: [extractionFunctionSchema],
|
|
525
526
|
function_call: { name: "extractor" },
|
|
526
527
|
});
|
|
@@ -543,6 +544,7 @@ test("Test ChatOpenAI token usage reporting for streaming function calls", async
|
|
|
543
544
|
},
|
|
544
545
|
],
|
|
545
546
|
}).bind({
|
|
547
|
+
seed: 42,
|
|
546
548
|
functions: [extractionFunctionSchema],
|
|
547
549
|
function_call: { name: "extractor" },
|
|
548
550
|
});
|