@n8n/n8n-nodes-langchain
Version:
40 lines • 1.93 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.normalizeEmptyToolCallContent = normalizeEmptyToolCallContent;
exports.wrapChatModelMessageInput = wrapChatModelMessageInput;
const messages_1 = require("@langchain/core/messages");
const wrappedChatModelMessageInput = Symbol('wrappedChatModelMessageInput');
function normalizeEmptyToolCallContent(messages) {
return messages.map((message) => {
if (messages_1.AIMessage.isInstance(message) &&
Array.isArray(message.content) &&
message.content.length === 0 &&
message.tool_calls?.length) {
return new messages_1.AIMessage({
id: message.id,
name: message.name,
content: '',
additional_kwargs: message.additional_kwargs,
response_metadata: message.response_metadata,
tool_calls: message.tool_calls,
invalid_tool_calls: message.invalid_tool_calls,
usage_metadata: message.usage_metadata,
});
}
return message;
});
}
function wrapChatModelMessageInput(model, wrapMessages = normalizeEmptyToolCallContent) {
const patchableModel = model;
if (patchableModel[wrappedChatModelMessageInput])
return model;
const originalGenerate = patchableModel._generate.bind(model);
const originalStreamResponseChunks = patchableModel._streamResponseChunks.bind(model);
patchableModel._generate = async (messages, options, runManager) => await originalGenerate(wrapMessages(messages), options, runManager);
patchableModel._streamResponseChunks = async function* (messages, options, runManager) {
yield* originalStreamResponseChunks(wrapMessages(messages), options, runManager);
};
patchableModel[wrappedChatModelMessageInput] = true;
return model;
}
//# sourceMappingURL=chatModelMessageWrapper.js.map