Skip to content

fix(google): send tool schemas via parametersJsonSchema#18

Merged
sheepbox8646 merged 1 commit into
memohai:mainfrom
akazwz:fix/gemini-tool-schema-additional-properties
Jun 17, 2026
Merged

fix(google): send tool schemas via parametersJsonSchema#18
sheepbox8646 merged 1 commit into
memohai:mainfrom
akazwz:fix/gemini-tool-schema-additional-properties

Conversation

@akazwz

@akazwz akazwz commented Jun 15, 2026

Copy link
Copy Markdown
Member

背景

关联 issue:memohai/Memoh#620

Memoh 在使用 Gemini tool calling 时会遇到 400 报错。原因是 Twilight AI 旧实现把 sdk.Tool.Parameters 放到了 Gemini functionDeclarations[].parameters。但 Gemini 的 parameters 是 Schema 子集,不支持完整 JSON Schema 字段,例如 additionalProperties

当工具参数 schema 包含 additionalProperties: false 时,Gemini 会返回:

Unknown name "additionalProperties" at 'tools[0].function_declarations[0].parameters'

修改内容

  • Google Generative AI provider 改为通过 parametersJsonSchema 发送工具参数 schema
  • 保留完整 JSON Schema 语义,包括 additionalProperties: false
  • 增加真实 Gemini integration test,覆盖带 additionalProperties 的 tool schema
  • 加强 mock 单测,确保请求体:
    • 不再发送 parameters
    • 发送 parametersJsonSchema
    • 保留 additionalProperties: false

验证

已通过:

  • go test ./...
  • go vet ./...
  • golangci-lint run ./...
  • go build ./...
  • go test ./... -short -race -count=1
  • go test ./provider/google/generativeai -run TestIntegration_ToolCallWithAdditionalPropertiesSchema -count=1 -v

@sheepbox8646 sheepbox8646 merged commit 94281bb into memohai:main Jun 17, 2026
3 checks passed
@akazwz akazwz deleted the fix/gemini-tool-schema-additional-properties branch June 17, 2026 07:57
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants