From 2ae583e9f36048c8993637d4cb301df8a635c917 Mon Sep 17 00:00:00 2001 From: Steve Dudenhoeffer Date: Mon, 7 Apr 2025 20:33:21 -0400 Subject: [PATCH] Add support for required fields in parameter generation Previously, required fields were not handled in OpenAI and Google parameter generation. This update adds logic to include a "required" list for both, ensuring mandatory fields are accurately captured in the schema outputs. --- schema/object.go | 24 ++++++++++++++++++++++-- 1 file changed, 22 insertions(+), 2 deletions(-) diff --git a/schema/object.go b/schema/object.go index a5828e7..3dd733d 100644 --- a/schema/object.go +++ b/schema/object.go @@ -18,28 +18,48 @@ type object struct { func (o object) OpenAIParameters() openai.FunctionParameters { var properties = map[string]openai.FunctionParameters{} + var required []string for k, v := range o.fields { properties[k] = v.OpenAIParameters() + if v.Required() { + required = append(required, k) + } } - return openai.FunctionParameters{ + var res = openai.FunctionParameters{ "type": "object", "description": o.Description(), "properties": properties, } + + if len(required) > 0 { + res["required"] = required + } + + return res } func (o object) GoogleParameters() *genai.Schema { var properties = map[string]*genai.Schema{} + var required []string for k, v := range o.fields { properties[k] = v.GoogleParameters() + if v.Required() { + required = append(required, k) + } } - return &genai.Schema{ + var res = &genai.Schema{ Type: genai.TypeObject, Description: o.Description(), Properties: properties, } + + if len(required) > 0 { + res.Required = required + } + + return res } func (o object) FromAny(val any) (reflect.Value, error) {