> ## Documentation Index > Fetch the complete documentation index at: https://openrouter.ai/docs/llms.txt > Use this file to discover all available pages before exploring further. # ChatToolChoice Tool choice configuration ## Supported Types ### ChatToolChoiceNone ```go theme={null} chatToolChoice := components.CreateChatToolChoiceChatToolChoiceNone(components.ChatToolChoiceNone{/* values here */}) ``` ### ChatToolChoiceAuto ```go theme={null} chatToolChoice := components.CreateChatToolChoiceChatToolChoiceAuto(components.ChatToolChoiceAuto{/* values here */}) ``` ### ChatToolChoiceRequired ```go theme={null} chatToolChoice := components.CreateChatToolChoiceChatToolChoiceRequired(components.ChatToolChoiceRequired{/* values here */}) ``` ### ChatNamedToolChoice ```go theme={null} chatToolChoice := components.CreateChatToolChoiceChatNamedToolChoice(components.ChatNamedToolChoice{/* values here */}) ``` ### ChatServerToolChoice ```go 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 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 } ```