[Enhancement]: Add Go (v2) example: Converse API with extended/adaptive thinking (Bedrock Runtime)

Open
#8,093 0 comments 0 reactions 1 assignee View on GitHub

Maintainers usually reply within 2 days

@brmur is already working on this.

Since Aug 24, 2026.

Assessment

This issue has not been assessed yet.

Description

Go-v2 New example request
Background story

The Bedrock Runtime docs for extended thinking and adaptive thinking
(https://docs.aws.amazon.com/bedrock/latest/userguide/claude-messages-extended-thinking.html
and .../claude-messages-adaptive-thinking.html) only include CLI, Python,
and TypeScript code snippets. There's no Go (v2) example anywhere in the
docs or in this repo's gov2/bedrock-runtime folder showing how to enable
thinking through the Converse API or how to parse the resulting
reasoningContent block from the response.

I had to reverse-engineer the correct approach from the generated SDK
type definitions on pkg.go.dev rather than from any example, which is
error-prone (union member names, pointer vs. value fields, etc. aren't
obvious without a working reference). A canonical Go example would save
other Go developers the same trial and error.

What does this example accomplish?

Shows how to call the Converse API with thinking enabled on a Claude
model on Bedrock, and how to read the reasoning content back out of the
response alongside the normal text block. Specifically it should cover:

  1. Setting additionalModelRequestFields via the bedrockruntime/document
    package to enable thinking (both the newer adaptive mode with an
    effort level, and the older manual mode with budget_tokens, since
    support differs by model).
  2. Setting InferenceConfig.MaxTokens appropriately alongside thinking.
  3. Parsing types.ContentBlockMemberReasoningContent out of the response
    message content, distinct from types.ContentBlockMemberText.
  4. A note on when ConverseStream is required instead of Converse (e.g.
    once MaxTokens exceeds the streaming threshold).
Which AWS service(s)?

Amazon Bedrock Runtime (Converse API)

Which AWS SDKs or tools?
  • All languages
  • .NET
  • C++
  • Go (v2)
  • Java
  • Java (v2)
  • JavaScript
  • JavaScript (v3)
  • Kotlin
  • PHP
  • Python
  • Ruby
  • Rust
  • Swift
  • Not applicable
Are there existing code examples to leverage?
Do you have any reference code?
thinkingConfig := document.NewLazyDocument(map[string]interface{}{
	"thinking": map[string]interface{}{
		"type":   "adaptive",
		"effort": "high",
	},
})

input := &bedrockruntime.ConverseInput{
	ModelId:  aws.String("us.anthropic.claude-opus-4-6-v1"),
	Messages: []types.Message{message},
	InferenceConfig: &types.InferenceConfiguration{
		MaxTokens: aws.Int32(16000),
	},
	AdditionalModelRequestFields: thinkingConfig,
}

response, err := client.Converse(ctx, input)
if err != nil {
	log.Fatalf("Error calling model: %v", err)
}

if msg, ok := response.Output.(*types.ConverseOutputMemberMessage); ok {
	for _, block := range msg.Value.Content {
		switch v := block.(type) {
		case *types.ContentBlockMemberReasoningContent:
			if rt, ok := v.Value.(*types.ReasoningContentBlockMemberReasoningText); ok {
				fmt.Println("--- Thinking ---")
				fmt.Println(aws.ToString(rt.Value.Text))
			}
		case *types.ContentBlockMemberText:
			fmt.Println(v.Value)
		}
	}
}
Dominant language
Java
Stars
10.5k
Forks
5.8k
Avg merge
2d 21h
Merged PRs (30d)
30

Getting set up

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

More from awsdocs/aws-doc-sdk-examples

All issues in awsdocs/aws-doc-sdk-examples

Similar issues

More Java issues

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.