|
Download docs/cli/generation-settings.md from SaylorTwift/gemini-cli: direct link, hf CLI and curl.
- Browser
- Download file 6.52 kB
-
https://huggingface.co/SaylorTwift/gemini-cli/resolve/main/docs/cli/generation-settings.md
- Command line
-
hf download hf://SaylorTwift/gemini-cli/docs/cli/generation-settings.md
-
curl -L -o generation-settings.md https://huggingface.co/SaylorTwift/gemini-cli/resolve/main/docs/cli/generation-settings.md
6.52 kB
| # Advanced Model Configuration | |
| This guide details the Model Configuration system within Gemini CLI. Designed | |
| for researchers, AI quality engineers, and advanced users, this system provides | |
| a rigorous framework for managing generative model hyperparameters and | |
| behaviors. | |
| <!-- prettier-ignore --> | |
| > [!WARNING] | |
| > This is a power-user feature. Configuration values are passed | |
| > directly to the model provider with minimal validation. Incorrect settings | |
| > (for example, incompatible parameter combinations) may result in runtime | |
| > errors from the API. | |
| ## 1. System Overview | |
| The Model Configuration system (`ModelConfigService`) enables deterministic | |
| control over model generation. It decouples the requested model identifier (for | |
| example, a CLI flag or agent request) from the underlying API configuration. | |
| This allows for: | |
| - **Precise Hyperparameter Tuning**: Direct control over `temperature`, `topP`, | |
| `thinkingBudget`, and other SDK-level parameters. | |
| - **Environment-Specific Behavior**: Distinct configurations for different | |
| operating contexts (for example, testing vs. production). | |
| - **Agent-Scoped Customization**: Applying specific settings only when a | |
| particular agent is active. | |
| The system operates on two core primitives: **Aliases** and **Overrides**. | |
| ## 2. Configuration Primitives | |
| These settings are located under the `modelConfigs` key in your configuration | |
| file. | |
| ### Aliases (`customAliases`) | |
| Aliases are named, reusable configuration presets. Users should define their own | |
| aliases (or override system defaults) in the `customAliases` map. | |
| - **Inheritance**: An alias can `extends` another alias (including system | |
| defaults like `chat-base`), inheriting its `modelConfig`. Child aliases can | |
| overwrite or augment inherited settings. | |
| - **Abstract Aliases**: An alias is not required to specify a concrete `model` | |
| if it serves purely as a base for other aliases. | |
| **Example Hierarchy**: | |
| ```json | |
| "modelConfigs": { | |
| "customAliases": { | |
| "base": { | |
| "modelConfig": { | |
| "generateContentConfig": { "temperature": 0.0 } | |
| } | |
| }, | |
| "chat-base": { | |
| "extends": "base", | |
| "modelConfig": { | |
| "generateContentConfig": { "temperature": 0.7 } | |
| } | |
| } | |
| } | |
| } | |
| ``` | |
| ### Overrides (`overrides`) | |
| Overrides are conditional rules that inject configuration based on the runtime | |
| context. They are evaluated dynamically for each model request. | |
| - **Match Criteria**: Overrides apply when the request context matches the | |
| specified `match` properties. | |
| - `model`: Matches the requested model name or alias. | |
| - `overrideScope`: Matches the distinct scope of the request (typically the | |
| agent name, for example, `codebaseInvestigator`). | |
| **Example Override**: | |
| ```json | |
| "modelConfigs": { | |
| "overrides": [ | |
| { | |
| "match": { | |
| "overrideScope": "codebaseInvestigator" | |
| }, | |
| "modelConfig": { | |
| "generateContentConfig": { "temperature": 0.1 } | |
| } | |
| } | |
| ] | |
| } | |
| ``` | |
| ## 3. Resolution Strategy | |
| The `ModelConfigService` resolves the final configuration through a two-step | |
| process: | |
| ### Step 1: Alias Resolution | |
| The requested model string is looked up in the merged map of system `aliases` | |
| and user `customAliases`. | |
| 1. If found, the system recursively resolves the `extends` chain. | |
| 2. Settings are merged from parent to child (child wins). | |
| 3. This results in a base `ResolvedModelConfig`. | |
| 4. If not found, the requested string is treated as the raw model name. | |
| ### Step 2: Override Application | |
| The system evaluates the `overrides` list against the request context (`model` | |
| and `overrideScope`). | |
| 1. **Filtering**: All matching overrides are identified. | |
| 2. **Sorting**: Matches are prioritized by **specificity** (the number of | |
| matched keys in the `match` object). | |
| - Specific matches (for example, `model` + `overrideScope`) override broad | |
| matches (for example, `model` only). | |
| - Tie-breaking: If specificity is equal, the order of definition in the | |
| `overrides` array is preserved (last one wins). | |
| 3. **Merging**: The configurations from the sorted overrides are merged | |
| sequentially onto the base configuration. | |
| ## 4. Configuration Reference | |
| The configuration follows the `ModelConfigServiceConfig` interface. | |
| ### `ModelConfig` Object | |
| Defines the actual parameters for the model. | |
| | Property | Type | Description | | |
| | :---------------------- | :------- | :------------------------------------------------------------------------ | | |
| | `model` | `string` | The identifier of the model to be called (for example, `gemini-2.5-pro`). | | |
| | `generateContentConfig` | `object` | The configuration object passed to the `@google/genai` SDK. | | |
| ### `GenerateContentConfig` (Common Parameters) | |
| Directly maps to the SDK's `GenerateContentConfig`. Common parameters include: | |
| - **`temperature`**: (`number`) Controls output randomness. Lower values (0.0) | |
| are deterministic; higher values (>0.7) are creative. | |
| - **`topP`**: (`number`) Nucleus sampling probability. | |
| - **`maxOutputTokens`**: (`number`) Limit on generated response length. | |
| - **`thinkingConfig`**: (`object`) Configuration for models with reasoning | |
| capabilities (for example, `thinkingBudget`, `includeThoughts`). | |
| ## 5. Practical Examples | |
| ### Defining a Deterministic Baseline | |
| Create an alias for tasks requiring high precision, extending the standard chat | |
| configuration but enforcing zero temperature. | |
| ```json | |
| "modelConfigs": { | |
| "customAliases": { | |
| "precise-mode": { | |
| "extends": "chat-base", | |
| "modelConfig": { | |
| "generateContentConfig": { | |
| "temperature": 0.0, | |
| "topP": 1.0 | |
| } | |
| } | |
| } | |
| } | |
| } | |
| ``` | |
| ### Agent-Specific Parameter Injection | |
| Enforce extended thinking budgets for a specific agent without altering the | |
| global default, for example for the `codebaseInvestigator`. | |
| ```json | |
| "modelConfigs": { | |
| "overrides": [ | |
| { | |
| "match": { | |
| "overrideScope": "codebaseInvestigator" | |
| }, | |
| "modelConfig": { | |
| "generateContentConfig": { | |
| "thinkingConfig": { "thinkingBudget": 4096 } | |
| } | |
| } | |
| } | |
| ] | |
| } | |
| ``` | |
| ### Experimental Model Evaluation | |
| Route traffic for a specific alias to a preview model for A/B testing, without | |
| changing client code. | |
| ```json | |
| "modelConfigs": { | |
| "overrides": [ | |
| { | |
| "match": { | |
| "model": "gemini-2.5-pro" | |
| }, | |
| "modelConfig": { | |
| "model": "gemini-2.5-pro-experimental-001" | |
| } | |
| } | |
| ] | |
| } | |
| ``` | |