如何用curl从Gemini 1.5 API获取JSON输出?遇字段错误求助
解决Gemini API返回JSON格式的问题
问题根源
- JSON结构错误:你把
generation_config错误嵌套在contents数组内部,它应该和contents处于同一层级的顶级字段 - 字段不存在:Gemini API的
generation_config中没有response_mime_type这个参数,这是触发400错误的直接原因
正确实现方式
要获取JSON格式的输出,有两种可靠方案:
方案1:在Prompt中明确指定输出格式
直接在提问里要求返回严格的JSON格式,同时修正请求的JSON结构:
curl -H 'Content-Type: application/json' -H "x-goog-api-key: ${API_KEY}" -d '{ "contents": [ {"role": "user", "parts": [{"text": "Give me five subcategories of jazz? Return your answer in strictly valid JSON format."}]} ] }' "https://generativelanguage.googleapis.com/v1/models/gemini-1.5-flash:generateContent"
方案2:使用结构化输出参数(推荐)
针对Gemini 1.5系列模型,可通过generation_config中的response_schema强制返回符合指定结构的JSON,确保输出格式完全可控:
curl -H 'Content-Type: application/json' -H "x-goog-api-key: ${API_KEY}" -d '{ "contents": [ {"role": "user", "parts": [{"text": "List five subcategories of jazz."}]} ], "generation_config": { "response_schema": { "type": "object", "properties": { "jazz_subcategories": { "type": "array", "items": {"type": "string"} } }, "required": ["jazz_subcategories"] } } }' "https://generativelanguage.googleapis.com/v1/models/gemini-1.5-flash:generateContent"
原错误代码修正说明
你之前的请求不仅错误嵌套了generation_config,还使用了API不支持的字段。修正后的核心是让contents和generation_config作为同级顶级字段,且仅使用API文档中定义的有效参数。
内容的提问来源于stack exchange,提问作者kpg
相关产品推荐
相关产品推荐

