Support @Schema annotation for Object parameters in FunctionTool
@hemasekhar-p がすでに取り組んでいます。
2026年1月14日 から。
評価
この issue はまだ評価されていません。
説明
Is your feature request related to a problem? Please describe.
Currently, adk-java relies on Jackson's @JsonProperty for defining schema names and required fields for pojos used as FunctionTool parameters. This creates several friction points:
- Naming Conflicts: We may want the LLM-facing parameter name (e.g.,
snake_case) to differ from the Java field name (e.g.,camelCase) without affecting internal JSON serialization used for other purposes. - Missing Metadata: Standard Jackson annotations do not support a
descriptionfield, which is critical for FunctionTool schemas. - Ambiguous Optionality: Controlling whether a field is "required" or "optional" in the generated schema is difficult to decouple from Jackson's strict deserialization rules.
Describe the solution you'd like
I would like to extend the com.google.adk.tools.Annotations.Schema annotation to act as the highest source of truth for generating the FunctionTool schema in regards to pojo parameters, and deserialization. This includes:
- Name:
@Schema(name="...")should control the property name in the generated schema and during deserialization of the LLM response. - Description:
@Schema(description="...")should populate the schema description. - Optionality:
@Schema(optional=true/false)should explicitly control whether a field is marked as required, overriding Jackson's default behavior if necessary.
Describe alternatives you've considered
- Jackson Mixins: We could use Jackson Mixins to separate the LLM view from the internal view, but this adds significant boilerplate and complexity for developers.
- Custom Annotations: I considered creating a new set of annotations, but extending the existing
@Schemaannotation seems more idiomatic for the ADK.
Additional context
The Object FunctionTool parameter doesn't seem to have a direct 1-1 equivalent in adk-python, other than an issue requesting for pydantic models to be supported as FunctionTool parameters.
The precedence rules I believe align best with the rest of the library would be :
Name: @Schema(name) > @JsonProperty(value) > Field Name
Description: @Schema(description) > None
Required: @Schema(optional) > @JsonProperty(required) > Default (Optional)
These rules should not affect the way prior objects that have been passed without the @Schema annotation are treated.
- 主要言語
- Java
- スター
- 1.7k
- フォーク
- 421
- 平均マージ
- 3日 15時間
- マージ済み PR(30日)
- 32
コントリビューションガイド
はじめの一歩
- issue を最後まで読み、次にプロジェクトのコントリビューションガイドを読みます。
- 着手することを issue にコメントします — 二人が同じ作業をするのを防げます。
- リポジトリをフォークし、ブランチを切って変更します。
- issue 番号を参照したプルリクエストを送ります。
google/adk-java のほかの issue
-
needs review
-
needs review
-
needs review
難易度 5/5 1週間以上 初心者へのやさしさ 35/100
-
needs review
-
needs review
google/adk-java の issue をすべて見る
似ている issue
-
難易度 2/5 1〜3時間 初心者へのやさしさ 85/100
HL7/fhir-ig-publisher#1375 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 74/100
-
Flaky: a relaunched catch-up replay can still report catching up right after its marker is written オープンbug
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
johanhaleby/occurrent#1134 ·
-
bug
難易度 2/5 1〜3時間 初心者へのやさしさ 78/100
objectionary/jeo-maven-plugin#1811 ·
-
難易度 2/5 1〜3時間 初心者へのやさしさ 88/100