diff --git a/globals/tools.go b/globals/tools.go index 6d66f1b..de941e0 100644 --- a/globals/tools.go +++ b/globals/tools.go @@ -21,16 +21,57 @@ type ToolParameters struct { type ToolProperties map[string]ToolProperty -type ToolProperty struct { - Type string `json:"type"` - Description string `json:"description"` - Enum *[]string `json:"enum,omitempty"` - Items *ToolItem `json:"items,omitempty"` - MinItems *int `json:"minItems,omitempty"` - MaxItems *int `json:"maxItems,omitempty"` -} +// https://github.com/openai/openai-node/blob/6175eca426b15990be5e5cdb0e8497e547f87d8a/src/lib/jsonschema.ts -type ToolItem map[string]string +type JsonSchemaType any +type JSONSchemaDefinition any +type ToolProperty struct { + Type *JsonSchemaType `json:"type,omitempty"` + Enum *[]JsonSchemaType `json:"enum,omitempty"` + Const *JsonSchemaType `json:"const,omitempty"` + + MultipleOf *int `json:"multipleOf,omitempty"` + Maximum *int `json:"maximum,omitempty"` + ExclusiveMaximum *int `json:"exclusiveMaximum,omitempty"` + Minimum *int `json:"minimum,omitempty"` + ExclusiveMinimum *int `json:"exclusiveMinimum,omitempty"` + MaxLength *int `json:"maxLength,omitempty"` + MinLength *int `json:"minLength,omitempty"` + Pattern *string `json:"pattern,omitempty"` + + Items *JSONSchemaDefinition `json:"items,omitempty"` + AdditionalItems *JSONSchemaDefinition `json:"additionalItems,omitempty"` + MaxItems *int `json:"maxItems,omitempty"` + MinItems *int `json:"minItems,omitempty"` + UniqueItems *bool `json:"uniqueItems,omitempty"` + Contains *JSONSchemaDefinition `json:"contains,omitempty"` + + MaxProperties *int `json:"maxProperties,omitempty"` + MinProperties *int `json:"minProperties,omitempty"` + Required *[]string `json:"required,omitempty"` + Properties *map[string]ToolProperty `json:"properties,omitempty"` + PatternProperties *map[string]ToolProperty `json:"patternProperties,omitempty"` + AdditionalProperties *JSONSchemaDefinition `json:"additionalProperties,omitempty"` + PropertyNames *JSONSchemaDefinition `json:"propertyNames,omitempty"` + + If *JSONSchemaDefinition `json:"if,omitempty"` + Then *JSONSchemaDefinition `json:"then,omitempty"` + Else *JSONSchemaDefinition `json:"else,omitempty"` + + AllOf *[]JSONSchemaDefinition `json:"allOf,omitempty"` + AnyOf *[]JSONSchemaDefinition `json:"anyOf,omitempty"` + OneOf *[]JSONSchemaDefinition `json:"oneOf,omitempty"` + Not *JSONSchemaDefinition `json:"not,omitempty"` + + Format *string `json:"format,omitempty"` + + Title *string `json:"title,omitempty"` + Description *string `json:"description,omitempty"` + Default *string `json:"default,omitempty"` + ReadOnly *bool `json:"readOnly,omitempty"` + WriteOnly *bool `json:"writeOnly,omitempty"` + Examples *JsonSchemaType `json:"examples,omitempty"` +} type ToolCallFunction struct { Name string `json:"name,omitempty"`