Overview
The BAML agents module provides a unified implementation that works with any LLM provider through BAML (Boundary Agent Markup Language). This replaces provider-specific implementations with a single, clean interface. Key Features:- Automatic prompt templating and management
- Structured output parsing and validation
- Built-in error handling and retries
- Type-safe responses
- Support for 50+ models from multiple providers
BAMLModel
Enum of available BAML client models. All models are current as of December 2025.OpenAI Models
GPT-5.2 Series (Latest - December 2025)
GPT5
BAMLModel.GPT5 - Base GPT-5.2 modelGPT5Mini
BAMLModel.GPT5_MINI - Fast, cost-effective GPT-5.2GPT5Nano
BAMLModel.GPT5_NANO - Ultra-compact GPT-5.2GPT5Chat
BAMLModel.GPT5_CHAT - gpt-5.2-chat-latest (Instant)GPT5Pro
BAMLModel.GPT5_PRO - Most capable GPT-5.2GPT-4.1 Series (April 2025)
GPT41
BAMLModel.GPT41 - Base GPT-4.1 modelGPT41Mini
BAMLModel.GPT41_MINI - Fast GPT-4.1GPT41Nano
BAMLModel.GPT41_NANO - Compact GPT-4.1Reasoning Models (o-series)
O4Mini
BAMLModel.O4_MINI - Latest reasoning modelO3Mini
BAMLModel.O3_MINI - Reasoning modelO3
BAMLModel.O3 - Advanced reasoningO1
BAMLModel.O1 - Original reasoning modelO1Mini
BAMLModel.O1_MINI - Compact reasoningO1Preview
BAMLModel.O1_PREVIEW - Preview versionGPT-4o Series
GPT4o
BAMLModel.GPT4O - Latest GPT-4oGPT4oMini
BAMLModel.GPT4O_MINI - Fast, affordable GPT-4oGPT4o (8/6/24)
BAMLModel.GPT4O_20240806 - Specific snapshotGPT4oMini (7/18/24)
BAMLModel.GPT4O_MINI_20240718 - Specific snapshotGPT-4 Turbo Series (Legacy)
BAMLModel.GPT4_TURBO- GPT-4 TurboBAMLModel.GPT4_TURBO_PREVIEW- Preview versionBAMLModel.GPT4_0125_PREVIEW- January 2025 previewBAMLModel.GPT4_1106_PREVIEW- November preview
GPT-4 Base Series (Legacy)
BAMLModel.GPT4- Base GPT-4BAMLModel.GPT4_32K- 32k context windowBAMLModel.GPT4_0613- June snapshot
GPT-3.5 Series (Legacy)
BAMLModel.GPT35_TURBO- GPT-3.5 TurboBAMLModel.GPT35_TURBO_16K- 16k contextBAMLModel.GPT35_TURBO_INSTRUCT- Instruct variant
Anthropic Claude Models
Claude 4.5 Series (Latest - October/November 2025)
ClaudeSonnet45
BAMLModel.CLAUDE_SONNET_45 - 1M context availableClaudeHaiku45
BAMLModel.CLAUDE_HAIKU_45 - Fast, affordableClaude 4.x Series
ClaudeOpus41
BAMLModel.CLAUDE_OPUS_41 - Most capable (August 2025)ClaudeSonnet4
BAMLModel.CLAUDE_SONNET_4 - May 2025ClaudeOpus4
BAMLModel.CLAUDE_OPUS_4 - May 2025Claude 3.x Series (Legacy)
BAMLModel.CLAUDE_SONNET_37- Sonnet 3.7BAMLModel.CLAUDE_HAIKU_35- Haiku 3.5BAMLModel.CLAUDE_HAIKU_3- Haiku 3
Google Gemini Models
Gemini 2.5 Series
Gemini25Pro
BAMLModel.GEMINI_25_PRO - Most capable GeminiGemini25Flash
BAMLModel.GEMINI_25_FLASH - Fast Gemini 2.5Gemini25FlashLite
BAMLModel.GEMINI_25_FLASH_LITE - LightweightGemini 2.0 Series
Gemini20Flash
BAMLModel.GEMINI_20_FLASH - Fast Gemini 2.0Gemini20FlashLite
BAMLModel.GEMINI_20_FLASH_LITE - LightweightxAI Grok Models
Grok 4 Series
Grok4
BAMLModel.GROK4 - Latest GrokGrok4FastReasoning
BAMLModel.GROK4_FAST_REASONING - Fast reasoning modeGrok4FastNonReasoning
BAMLModel.GROK4_FAST_NON_REASONING - Fast non-reasoningGrok 3 Series
BAMLModel.GROK3- Base Grok 3BAMLModel.GROK3_FAST- Fast variantBAMLModel.GROK3_MINI- Compact versionBAMLModel.GROK3_MINI_FAST- Fast compact
DeepSeek Models
DeepSeek V3.2 (December 2025)
DeepSeekChat
BAMLModel.DEEPSEEK_CHAT - V3.2 non-thinking modeDeepSeekReasoner
BAMLModel.DEEPSEEK_REASONER - V3.2 thinking modeOpenRouter Free Models
OpenRouterDevstral
BAMLModel.OPENROUTER_DEVSTRAL - Mistral for developersOpenRouterMimoV2Flash
BAMLModel.OPENROUTER_MIMO_V2_FLASH - Fast Mimo V2OpenRouterNemotronNano
BAMLModel.OPENROUTER_NEMOTRON_NANO - Compact NemotronOpenRouterDeepSeekR1TChimera
BAMLModel.OPENROUTER_DEEPSEEK_R1T_CHIMERA - R1T variantOpenRouterDeepSeekR1T2Chimera
BAMLModel.OPENROUTER_DEEPSEEK_R1T2_CHIMERA - R1T2 variantOpenRouterGLM45Air
BAMLModel.OPENROUTER_GLM_45_AIR - GLM 4.5 AirOpenRouterLlama33_70B
BAMLModel.OPENROUTER_LLAMA_33_70B - Llama 3.3 70BOpenRouterOLMo3_32B
BAMLModel.OPENROUTER_OLMO3_32B - OLMo 3 32BOther Models
BAMLModel.LLAMA- Meta Llama (via Together AI or similar)
BAMLHintGiver
Universal BAML-based hint giver (spymaster) that works with any LLM provider. This single class replaces all provider-specific hint giver implementations with a unified BAML-based approach.Constructor
Team this agent plays for (Team.RED or Team.BLUE)
BAML model/client to use
Methods
get_model_name()
Return the model identifier. Returns:str - Model name (e.g., “OpenRouterDevstral”, “GPT4oMini”)
give_hint()
Generate hint using BAML. This method automatically handles:- Prompt templating
- Structured output parsing
- Error handling and retries
- Type validation
List of unrevealed words belonging to this agent’s team
List of unrevealed opponent words
List of unrevealed neutral words
List of bomb words (if not revealed)
List of already revealed words
All words on the board (for reference)
HintResponse - Contains validated hint word and count
BAMLGuesser
Universal BAML-based guesser (field operative) that works with any LLM provider. This single class replaces all provider-specific guesser implementations with a unified BAML-based approach.Constructor
Team this agent plays for (Team.RED or Team.BLUE)
BAML model/client to use
Attributes
Tracks guess results for analysis. Each entry contains:
word(str): The guessed wordcorrect(bool): Whether it was correctcolor(str): The actual color value
Methods
get_model_name()
Return the model identifier. Returns:str - Model name (e.g., “OpenRouterDevstral”, “GPT4oMini”)
make_guesses()
Make guesses using BAML. This method automatically handles:- Prompt templating
- Structured output parsing
- Error handling and retries
- Type validation
The hint word given by the hint giver
Number of words the hint relates to
All words on the board
List of already revealed words
List[str] - Validated list of guesses
process_result()
Track guess results for analysis.The word that was guessed
Whether it was the team’s word
The actual color of the word
reset()
Reset agent state between games to prevent memory leaks.Factory Functions
Convenience functions for creating agents with provider/model strings.create_hint_giver()
Factory function to create a hint giver with a specific provider/model.Provider name: “openai”, “anthropic”, “google”, “deepseek”, “grok”, “llama”
Specific model name (uses provider default if not provided)
Team for this agent
BAMLHintGiver - Configured hint giver
create_guesser()
Factory function to create a guesser with a specific provider/model.Provider name: “openai”, “anthropic”, “google”, “deepseek”, “grok”, “llama”
Specific model name (uses provider default if not provided)
Team for this agent
BAMLGuesser - Configured guesser
Complete Example
Supported Provider/Model Mappings
When using factory functions, these provider/model combinations are supported:| Provider | Model String | BAMLModel |
|---|---|---|
"openai" | "gpt-4o-mini" | GPT4O_MINI |
"openai" | "gpt-4o" | GPT4O |
"openai" | "gpt-4-turbo" | GPT4_TURBO |
"openai" | None (default) | GPT4O_MINI |
"anthropic" | "claude-sonnet-4-5-20250929" | CLAUDE_SONNET_45 |
"anthropic" | "claude-haiku-4-5-20251001" | CLAUDE_HAIKU_45 |
"anthropic" | None (default) | CLAUDE_HAIKU_45 |
"google" | "gemini-2.5-pro" | GEMINI_25_PRO |
"google" | "gemini-2.5-flash" | GEMINI_25_FLASH |
"google" | "gemini-2.5-flash-lite" | GEMINI_25_FLASH_LITE |
"google" | "gemini-2.0-flash" | GEMINI_20_FLASH |
"google" | "gemini-2.0-flash-lite" | GEMINI_20_FLASH_LITE |
"google" | None (default) | GEMINI_25_FLASH |
"deepseek" | None (default) | DEEPSEEK_REASONER |
"grok" | None (default) | GROK4 |
"llama" | None (default) | LLAMA |