langchainjs
langchainjs copied to clipboard
ChatGoogleGenerativeAI withStructuredOutputs does not bind the correct fields
Checked other resources
- [x] I added a very descriptive title to this issue.
- [x] I searched the LangChain.js documentation with the integrated search.
- [x] I used the GitHub search to find a similar question and didn't find it.
- [x] I am sure that this is a bug in LangChain.js rather than my code.
- [x] The bug is not resolved by updating to the latest stable version of LangChain (or the specific integration package).
Example Code
const llm = new ChatGoogleGenerativeAI({
model: 'gemini-2.0-pro-exp-02-05',
temperature: 0,
apiKey: env.get('GEMINI_API_KEY'),
})
llmWithStructuredOutput = llm.withStructuredOutput({
"type": "object",
"$defs": {},
"required": [
"location",
"type",
"name",
"description",
"startDate",
"startTime",
"endDate",
"endTime"
],
"properties": {
"name": {
"anyOf": [
{
"type": "null"
},
{
"type": "string"
}
]
},
"type": {
"anyOf": [
{
"type": "null"
},
{
"enum": [
"paid",
"free"
],
"type": "string"
}
]
},
"endDate": {
"anyOf": [
{
"type": "null"
},
{
"type": "string",
"description": "@format date"
}
]
},
"endTime": {
"anyOf": [
{
"type": "null"
},
{
"type": "string",
"description": "@format time"
}
]
},
"location": {
"anyOf": [
{
"type": "null"
},
{
"type": "string"
}
]
},
"startDate": {
"anyOf": [
{
"type": "null"
},
{
"type": "string",
"description": "@format date"
}
]
},
"startTime": {
"anyOf": [
{
"type": "null"
},
{
"type": "string",
"description": "@format time"
}
]
},
"description": {
"anyOf": [
{
"type": "null"
},
{
"type": "string"
}
]
}
},
"additionalProperties": false
});
Error Message and Stack Trace (if applicable)
[GoogleGenerativeAI Error]: Error fetching from https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-pro-exp-02-05:generateContent: [400 Bad Request] Invalid JSON payload received. Unknown name "$defs" at 'tools[0].function_declarations[0].parameters': Cannot find field. Invalid value at 'tools[0].function_declarations[0].parameters.properties[0].value.any_of[0].type' (type.googleapis.com/google.ai.generativelanguage.v1beta.Type), "null" Invalid value at 'tools[0].function_declarations[0].parameters.properties[1].value.any_of[0].type' (type.googleapis.com/google.ai.generativelanguage.v1beta.Type), "null" Invalid value at 'tools[0].function_declarations[0].parameters.properties[2].value.any_of[0].type' (type.googleapis.com/google.ai.generativelanguage.v1beta.Type), "null" Invalid value at 'tools[0].function_declarations[0].parameters.properties[3].value.any_of[0].type' (type.googleapis.com/google.ai.generativelanguage.v1beta.Type), "null" Invalid value at 'tools[0].function_declarations[0].parameters.properties[4].value.any_of[0].type' (type.googleapis.com/google.ai.generativelanguage.v1beta.Type), "null" Invalid value at 'tools[0].function_declarations[0].parameters.properties[5].value.any_of[0].type' (type.googleapis.com/google.ai.generativelanguage.v1beta.Type), "null" Invalid value at 'tools[0].function_declarations[0].parameters.properties[6].value.any_of[0].type' (type.googleapis.com/google.ai.generativelanguage.v1beta.Type), "null" Invalid value at 'tools[0].function_declarations[0].parameters.properties[7].value.any_of[0].type' (type.googleapis.com/google.ai.generativelanguage.v1beta.Type), "null" Invalid JSON payload received. Unknown name "additionalProperties" at 'tools[0].function_declarations[0].parameters': Cannot find field. Invalid JSON payload received. Unknown name "name" at 'tools[0].function_declarations[0].parameters': Cannot find field. [{"@type":"type.googleapis.com/google.rpc.BadRequest","fieldViolations":[{"field":"tools[0].function_declarations[0].parameters","description":"Invalid JSON payload received. Unknown name "$defs" at 'tools[0].function_declarations[0].parameters': Cannot find field."},{"field":"tools[0].function_declarations[0].parameters.properties[0].value.any_of[0].type","description":"Invalid value at 'tools[0].function_declarations[0].parameters.properties[0].value.any_of[0].type' (type.googleapis.com/google.ai.generativelanguage.v1beta.Type), "null""},{"field":"tools[0].function_declarations[0].parameters.properties[1].value.any_of[0].type","description":"Invalid value at 'tools[0].function_declarations[0].parameters.properties[1].value.any_of[0].type' (type.googleapis.com/google.ai.generativelanguage.v1beta.Type), "null""},{"field":"tools[0].function_declarations[0].parameters.properties[2].value.any_of[0].type","description":"Invalid value at 'tools[0].function_declarations[0].parameters.properties[2].value.any_of[0].type' (type.googleapis.com/google.ai.generativelanguage.v1beta.Type), "null""},{"field":"tools[0].function_declarations[0].parameters.properties[3].value.any_of[0].type","description":"Invalid value at 'tools[0].function_declarations[0].parameters.properties[3].value.any_of[0].type' (type.googleapis.com/google.ai.generativelanguage.v1beta.Type), "null""},{"field":"tools[0].function_declarations[0].parameters.properties[4].value.any_of[0].type","description":"Invalid value at 'tools[0].function_declarations[0].parameters.properties[4].value.any_of[0].type' (type.googleapis.com/google.ai.generativelanguage.v1beta.Type), "null""},{"field":"tools[0].function_declarations[0].parameters.properties[5].value.any_of[0].type","description":"Invalid value at 'tools[0].function_declarations[0].parameters.properties[5].value.any_of[0].type' (type.googleapis.com/google.ai.generativelanguage.v1beta.Type), "null""},{"field":"tools[0].function_declarations[0].parameters.properties[6].value.any_of[0].type","description":"Invalid value at 'tools[0].function_declarations[0].parameters.properties[6].value.any_of[0].type' (type.googleapis.com/google.ai.generativelanguage.v1beta.Type), "null""},{"field":"tools[0].function_declarations[0].parameters.properties[7].value.any_of[0].type","description":"Invalid value at 'tools[0].function_declarations[0].parameters.properties[7].value.any_of[0].type' (type.googleapis.com/google.ai.generativelanguage.v1beta.Type), "null""},{"field":"tools[0].function_declarations[0].parameters","description":"Invalid JSON payload received. Unknown name "additionalProperties" at 'tools[0].function_declarations[0].parameters': Cannot find field."},{"field":"tools[0].function_declarations[0].parameters","description":"Invalid JSON payload received. Unknown name "name" at 'tools[0].function_declarations[0].parameters': Cannot find field."}]}]
Description
The library sets the tools and tool_choice key instead of the generationConfig key
System Info
node -v v22.11.0
"@langchain/community": "^0.3.32", "@langchain/core": "^0.3.40", "@langchain/google-genai": "^0.1.9", "@langchain/langgraph": "^0.2.49",