Gemini: 可选的 JSON Schema 类型被序列化为 FunctionDeclaration.parameters 并被拒绝
□ 总结
Gemini 提供商发送通用 JSON Schema 工具参数通过 `功能宣言.参数 ' 。
当一个计划包含一个无效的JSON Schema类型,例如:
贾森 { "类型": ["弦","null"] {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?
Gemini拒绝请求,因为`功能声明.参数 ' 使用
Gemini的基于 OpenAPI 的 “ schema ” ,其中“类型”是一个 scalar enum 而不是一个
阵列。
请求在HTTP 400模型推断前失败 :
页:1
收到无效的JSON有效载荷 。 未知名称“ 类型 ” 。
工具 [0]. 函数 声明 [0]. 参数. 属性 [1]. 值. items. 属性 [3]. 值:
Proto 字段没有重复, 不能开始列表 。
以 LiteLLM v1.8.10 可复制, 当前的寄存器将执行 1d09e38ef9b756ab710c296350e551f6e178406d'.
□ 函数声明的来源
原始功能为: [`GitHub.com/voocel/ainovel-cli'](https://GitHub.com/voocel/ainovel-cli)。
函数声明在此定义:
https://GitHub.com/voocel/ainovel-cli/blob/fc1785818660da2d729616842fb475cbbccc0136e/内部/tools/audit foundation.go#L22-L48
特别是,`问题'被宣布为无效:
开始 计划 财产( E) "建议", {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}什么? 可忽略( N) 计划 字符串( “ Q; 无效 ) , , (中文(简体) ). 。 必需( )
将签订合同。 Nullable's 转换为 JSON Schema 联盟 :
https://GitHub.com/voocel/ainovel-cli/blob/fc1785818660da2d729616842fb475cbcc0136e/internal/llmcontract/contract.go#L158-L164
等效输出 :
贾森
{
"建议":{
"描述":"推荐修改方向;无需建议时为"无"".
"类型": ["弦","null"]
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?
{\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?
AINovel v0.7.9目前取决于`GitHub.com/voocel/litellm v1.8.10'。
□ 最小复制
开始 主软件包
导入( E) 内容 "日志" "欧"
"GitHub.com/voocel/litellm" (中文(简体) ). “GitHub.com/vocel/litellm/提供商/Gemini” (中文(简体) ).
func 主 () { apiKey := os.Getenv ("GEMINI API KEY") (中文(简体) ). 如果apiKey == ""{ 记录。 Fatal ("GEMINI API KEY是需要的"). {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?
型号 := os.Getenv ("GEMINI MODEL") 如果型号为"" { 型号 = “Gemini-3.8-flash” {\fn黑体\fs22\bord1\shad0\3aHBE\4aH00\fscx67\fscy66\2cHFFFFFF\3cH808080}你觉得呢?
工具,错误:=litellm.NewToole () "审计 成立", "审计坚持了语义一致性的基础数据", 地图 [字符串] 任何{ "类型":"对象", "财产":地图[字符串] 任何{ "指印":地图[字符串]任何{ "类型":"弦", {\fn华文楷体\fs16\1cHE0E0E0} "准备": 地图[字符串] any{ "类型":"boole", {\fn华文楷体\fs16\1cHE0E0E0} "摘要":地图[字符串] Any{ "类型":"弦", {\fn华文楷体\fs16\1cHE0E0E0} “ 问题” : 地图[ 字符串] any{ "类型":"阵", “项目”:地图[字符串] "类型":"对象", "财产":地图[字符串] 任何{ “ 艺术” : 地图 [字符串] 任何{ "类型":"弦", {\fn华文楷体\fs16\1cHE0E0E0} "说明":地图[字符串] any{ "类型":"弦", {\fn华文楷体\fs16\1cHE0E0E0} "证据": 地图[字符串] Any{ "类型":"弦", {\fn华文楷体\fs16\1cHE0E0E0} "建议":地图[字符串] "类型": []string{"string","null"}, {\fn华文楷体\fs16\1cHE0E0E0} {\fn华文楷体\fs16\1cHE0E0E0} "需要": [] 字符串{ "艺术", "描述", "证据" . . . . . . .
内容来源: voocel/litellm