Skip to content

Bug: adaptive discriminator is not registered for ThinkingConfigAdaptiveParam and BetaThinkingConfigAdaptiveParam types #279

@pawbana

Description

@pawbana

Repoduction steps

Unmarshaling following json into MessageNewParamsvariable:

input := `
{
  "messages": [
    {
      "role": "user",
      "content": "hello"
    }
  ],
  "model": "claude-opus-4-6",
  "thinking": {
    "type": "adaptive"
  }
}`

var msgParam anthropic.MessageNewParams
err := msgParam.UnmarshalJSON([]byte(input))

results in msgParam.Thinking.OfAdaptive field not being set.

Adding adaptive discriminator registration seems to help, missing here:

apijson.RegisterUnion[BetaThinkingConfigParamUnion](
"type",
apijson.Discriminator[BetaThinkingConfigEnabledParam]("enabled"),
apijson.Discriminator[BetaThinkingConfigDisabledParam]("disabled"),
)

anthropic-sdk-go/message.go

Lines 2786 to 2790 in a380414

apijson.RegisterUnion[ThinkingConfigParamUnion](
"type",
apijson.Discriminator[ThinkingConfigEnabledParam]("enabled"),
apijson.Discriminator[ThinkingConfigDisabledParam]("disabled"),
)

example patch: main...pawbana:anthropic-sdk-go:pb/ThinkingConfigAdaptiveParam-register-adaptive

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions