Open
Description
Describe the bug
I have schemas defined with effect
It seems schema definition using identifiers ("$ref": "#/$defs/ID" -> "$defs": {"ID": {...def}}
) is not supported.
To Reproduce
import { gemini20Flash, googleAI } from '@genkit-ai/googleai';
import { genkit } from 'genkit';
const schema = {
"$schema": "http://json-schema.org/draft-07/schema#",
"$defs": {
"Name": {
"type": "string",
"description": "a string",
"title": "string"
},
"Age": {
"type": "number",
"description": "a number",
"title": "number"
}
},
"type": "object",
"required": [
"name",
"age"
],
"properties": {
"name": {
"$ref": "#/$defs/Name"
},
"age": {
"$ref": "#/$defs/Age"
}
},
"additionalProperties": false
}
// configure a Genkit instance
const ai = genkit({
plugins: [googleAI({ apiKey: process.env.GEMINI_API_KEY! })],
model: gemini20Flash, // set default model
});
async function main() {
// make a generation request
const { text } = await ai.generate({
model: gemini20Flash,
system: `
You are a Person generator. Person has a name and a age
`,
prompt: `Create a new person`,
output: { jsonSchema: schema },
});
console.log(text);
}
main();
results in
genkit start -- pnpx tsx src/ai/generatePerson.ts
[Telemetry Server] initialized local file trace store at root: /home/christophe/Programming/preignition/app/app-survey/functions/.genkit/traces
Telemetry API running on http://localhost:4033
Error reading tools config Unexpected token 'T', "[Telemetry "... is not valid JSON
Error reading tools config Unexpected token 'T', "[Telemetry "... is not valid JSON
Error reading tools config ENOENT: no such file or directory, open '/home/christophe/Programming/preignition/app/app-survey/functions/.genkit/servers/tools-478984.json'
Project root: /home/christophe/Programming/preignition/app/app-survey/functions
Genkit Developer UI: http://localhost:4000
node:internal/process/promises:394
triggerUncaughtException(err, true /* fromPromise */);
^
GoogleGenerativeAIFetchError: [GoogleGenerativeAI Error]: Error fetching from https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent: [400 Bad Request] Invalid JSON payload received. Unknown name "$defs" at 'generation_config.response_schema': Cannot find field.
Invalid JSON payload received. Unknown name "$ref" at 'generation_config.response_schema.properties[0].value': Cannot find field.
Invalid JSON payload received. Unknown name "$ref" at 'generation_config.response_schema.properties[1].value': Cannot find field. [{"@type":"type.googleapis.com/google.rpc.BadRequest","fieldViolations":[{"field":"generation_config.response_schema","description":"Invalid JSON payload received. Unknown name \"$defs\" at 'generation_config.response_schema': Cannot find field."},{"field":"generation_config.response_schema.properties[0].value","description":"Invalid JSON payload received. Unknown name \"$ref\" at 'generation_config.response_schema.properties[0].value': Cannot find field."},{"field":"generation_config.response_schema.properties[1].value","description":"Invalid JSON payload received. Unknown name \"$ref\" at 'generation_config.response_schema.properties[1].value': Cannot find field."}]}]
at handleResponseNotOk (/home/christophe/Programming/preignition/app/app-survey/functions/node_modules/.pnpm/@google+generative-ai@0.24.1/node_modules/@google/generative-ai/dist/index.js:434:11)
at process.processTicksAndRejections (node:internal/process/task_queues:105:5)
at async makeRequest (/home/christophe/Programming/preignition/app/app-survey/functions/node_modules/.pnpm/@google+generative-ai@0.24.1/node_modules/@google/generative-ai/dist/index.js:403:9)
at async generateContent (/home/christophe/Programming/preignition/app/app-survey/functions/node_modules/.pnpm/@google+generative-ai@0.24.1/node_modules/@google/generative-ai/dist/index.js:867:22)
at async ChatSession.sendMessage (/home/christophe/Programming/preignition/app/app-survey/functions/node_modules/.pnpm/@google+generative-ai@0.24.1/node_modules/@google/generative-ai/dist/index.js:1210:9)
at async callGemini (/home/christophe/Programming/preignition/app/app-survey/functions/node_modules/.pnpm/@genkit-ai+googleai@1.7.0_genkit@1.7.0/node_modules/@genkit-ai/googleai/src/gemini.ts:1045:26)
at async <anonymous> (/home/christophe/Programming/preignition/app/app-survey/functions/node_modules/.pnpm/@genkit-ai+googleai@1.7.0_genkit@1.7.0/node_modules/@genkit-ai/googleai/src/gemini.ts:1102:11)
at async <anonymous> (/home/christophe/Programming/preignition/app/app-survey/functions/node_modules/.pnpm/@genkit-ai+core@1.7.0/node_modules/@genkit-ai/core/src/action.ts:438:14)
at async <anonymous> (/home/christophe/Programming/preignition/app/app-survey/functions/node_modules/.pnpm/@genkit-ai+core@1.7.0/node_modules/@genkit-ai/core/src/action.ts:334:26)
at async <anonymous> (/home/christophe/Programming/preignition/app/app-survey/functions/node_modules/.pnpm/@genkit-ai+core@1.7.0/node_modules/@genkit-ai/core/src/tracing/instrumentation.ts:73:16) {
status: 400,
statusText: 'Bad Request',
errorDetails: [
{
'@type': 'type.googleapis.com/google.rpc.BadRequest',
fieldViolations: [
{
field: 'generation_config.response_schema',
description: `Invalid JSON payload received. Unknown name "$defs" at 'generation_config.response_schema': Cannot find field.`
},
{
field: 'generation_config.response_schema.properties[0].value',
description: `Invalid JSON payload received. Unknown name "$ref" at 'generation_config.response_schema.properties[0].value': Cannot find field.`
},
{
field: 'generation_config.response_schema.properties[1].value',
description: `Invalid JSON payload received. Unknown name "$ref" at 'generation_config.response_schema.properties[1].value': Cannot find field.`
}
]
}
],
traceId: '7cb8aa986000cf63231fa47f234d40c0'
}
Node.js v23.6.1
/home/christophe/.local/share/pnpm/global/5/.pnpm/genkit-cli@1.7.0_encoding@0.1.13/node_modules/genkit-cli/dist/commands/start.js:95
reject(new Error(`app process exited with code ${code}`));
^
Error: app process exited with code 1
at ChildProcess.<anonymous> (/home/christophe/.local/share/pnpm/global/5/.pnpm/genkit-cli@1.7.0_encoding@0.1.13/node_modules/genkit-cli/dist/commands/start.js:95:28)
at ChildProcess.emit (node:events:507:28)
at ChildProcess._handle.onexit (node:internal/child_process:294:12)
Node.js v23.6.1
Expected behavior
Valid JSON schemas can be used
Runtime (please complete the following information):
- OS: Linux
- Version: genkit 1.7.0
** Node version
- 23.6.1
Additional context
Add any other context about the problem here.
Metadata
Metadata
Assignees
Labels
Type
Projects
Status
No status