Skip to content

Commit d93e37f

Browse files
committed
At some point, Google stopped requiring "function" and switched to "user". Vertex requires this, now.
1 parent d0a193e commit d93e37f

File tree

1 file changed

+6
-11
lines changed
  • libs/providers/langchain-google/src/converters

1 file changed

+6
-11
lines changed

libs/providers/langchain-google/src/converters/messages.ts

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -394,8 +394,8 @@ function convertStandardContentMessageToGeminiContent(
394394
} else if (AIMessage.isInstance(message)) {
395395
role = "model";
396396
} else if (ToolMessage.isInstance(message)) {
397-
// Tool messages in Gemini are represented as function responses
398-
role = "function";
397+
// Tool messages in Gemini were represented as function responses, but now are "user"
398+
role = "user";
399399
} else if (ChatMessage.isInstance(message)) {
400400
// Map ChatMessage roles to Gemini roles
401401
const msgRole = message.role.toLowerCase();
@@ -408,7 +408,7 @@ function convertStandardContentMessageToGeminiContent(
408408
) {
409409
role = "model";
410410
} else if (msgRole === "function" || msgRole === "tool") {
411-
role = "function";
411+
role = "user";
412412
} else {
413413
// Default to user for unknown roles
414414
role = "user";
@@ -648,8 +648,8 @@ function convertLegacyContentMessageToGeminiContent(
648648
} else if (AIMessage.isInstance(message)) {
649649
return "model";
650650
} else if (ToolMessage.isInstance(message)) {
651-
// Tool messages in Gemini are represented as function responses
652-
return "function";
651+
// Tool messages in Gemini were represented as function responses, but now are "user"
652+
return "user";
653653
} else if (ChatMessage.isInstance(message)) {
654654
// Map ChatMessage roles to Gemini roles
655655
const msgRole = message.role.toLowerCase();
@@ -662,7 +662,7 @@ function convertLegacyContentMessageToGeminiContent(
662662
) {
663663
return "model";
664664
} else if (msgRole === "function" || msgRole === "tool") {
665-
return "function";
665+
return "user";
666666
} else {
667667
// Default to user for unknown roles
668668
return "user";
@@ -735,11 +735,6 @@ function convertLegacyContentMessageToGeminiContent(
735735
});
736736
}
737737

738-
// Remove non-functionResponse parts if this is a tool response
739-
if (role === "function") {
740-
parts = parts.filter((part) => "functionResponse" in part);
741-
}
742-
743738
// Only add content if we have parts
744739
if (parts.length > 0) {
745740
return { role, parts };

0 commit comments

Comments
 (0)