> ## Documentation Index
> Fetch the complete documentation index at: https://openrouter-d02e98a0-mintlify-7021d5f4.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# ChatToolChoice - Go SDK

> ChatToolChoice type definition

<Warning>
  The Go SDK and docs are currently in beta.
  Report issues on [GitHub](https://github.com/OpenRouterTeam/go-sdk/issues).
</Warning>

Tool choice configuration

## Supported Types

### ChatToolChoiceNone

```go lines theme={null}
chatToolChoice := components.CreateChatToolChoiceChatToolChoiceNone(components.ChatToolChoiceNone{/* values here */})
```

### ChatToolChoiceAuto

```go lines theme={null}
chatToolChoice := components.CreateChatToolChoiceChatToolChoiceAuto(components.ChatToolChoiceAuto{/* values here */})
```

### ChatToolChoiceRequired

```go lines theme={null}
chatToolChoice := components.CreateChatToolChoiceChatToolChoiceRequired(components.ChatToolChoiceRequired{/* values here */})
```

### ChatNamedToolChoice

```go lines theme={null}
chatToolChoice := components.CreateChatToolChoiceChatNamedToolChoice(components.ChatNamedToolChoice{/* values here */})
```

### ChatServerToolChoice

```go lines theme={null}
chatToolChoice := components.CreateChatToolChoiceChatServerToolChoice(components.ChatServerToolChoice{/* values here */})
```

## Union Discrimination

Use the `Type` field to determine which variant is active, then access the corresponding field:

```go lines theme={null}
switch chatToolChoice.Type {
	case components.ChatToolChoiceTypeChatToolChoiceNone:
		// chatToolChoice.ChatToolChoiceNone is populated
	case components.ChatToolChoiceTypeChatToolChoiceAuto:
		// chatToolChoice.ChatToolChoiceAuto is populated
	case components.ChatToolChoiceTypeChatToolChoiceRequired:
		// chatToolChoice.ChatToolChoiceRequired is populated
	case components.ChatToolChoiceTypeChatNamedToolChoice:
		// chatToolChoice.ChatNamedToolChoice is populated
	case components.ChatToolChoiceTypeChatServerToolChoice:
		// chatToolChoice.ChatServerToolChoice is populated
}
```
