# How to Configure the Default LLM Model in Hiring Agent

> Easily configure the default LLM model in Hiring Agent by setting the DEFAULT_MODEL environment variable. Learn how to customize your AI hiring assistant quickly and efficiently.

- Repository: [HackerRank/hiring-agent](https://github.com/interviewstreet/hiring-agent)
- Tags: how-to-guide
- Published: 2026-07-11

---

**You can configure the default LLM model in Hiring Agent by setting the `DEFAULT_MODEL` environment variable, which overrides the fallback `gemma3:4b` defined in [`main/prompt.py`](https://github.com/interviewstreet/hiring-agent/blob/main/main/prompt.py) and automatically applies model-specific parameters from `MODEL_PARAMETERS`.**

The interviewstreet/hiring-agent repository centralizes all language model configuration in a single configuration module. Understanding how to configure the default LLM model in Hiring Agent allows you to switch between Ollama and Gemini providers without modifying application logic, as the system resolves providers dynamically at runtime.

## Configuration Architecture in [`main/prompt.py`](https://github.com/interviewstreet/hiring-agent/blob/main/main/prompt.py)

The configuration system initializes through a strict hierarchy when the application starts. At line 13 of [`main/prompt.py`](https://github.com/interviewstreet/hiring-agent/blob/main/main/prompt.py), the application calls `dotenv.load_dotenv()` to load environment variables from your `.env` file.

The resolution logic follows this sequence:

1. **Fallback definition**: Line 16 sets `DEFAULT_MODEL_NAME = "gemma3:4b"` as the hardcoded default.
2. **Environment resolution**: Line 20 reads `DEFAULT_MODEL = os.getenv("DEFAULT_MODEL", DEFAULT_MODEL_NAME)`, using the environment variable if present.
3. **Provider selection**: Lines 21-26 determine the backend via `LLM_PROVIDER`, defaulting to `ModelProvider.OLLAMA`.
4. **Parameter lookup**: Lines 27-44 define `MODEL_PARAMETERS`, a dictionary mapping each model to its `temperature` and `top_p` values.
5. **Provider mapping**: Lines 48-64 contain `MODEL_PROVIDER_MAPPING`, which associates model names with their respective providers (`OLLAMA` or `GEMINI`).

## Methods to Change the Default Model

### Using Environment Variables (Recommended)

Create or modify a `.env` file in your project root to persist configuration across restarts:

```bash

# .env

DEFAULT_MODEL=gemma3:12b
LLM_PROVIDER=ollama
GEMINI_API_KEY=your_key_here  # Required only for Gemini models

```

The application reads these values at startup via the logic at line 20 of [`main/prompt.py`](https://github.com/interviewstreet/hiring-agent/blob/main/main/prompt.py).

### Runtime Override

For temporary changes in Python sessions, set the environment variable before importing Hiring Agent components:

```python
import os
from main.prompt import DEFAULT_MODEL, MODEL_PARAMETERS

# Temporarily override the default model

os.environ["DEFAULT_MODEL"] = "gemini-2.5-pro"

# Import and instantiate after setting the variable

from main.evaluator import ResumeEvaluator
evaluator = ResumeEvaluator()  # Automatically uses the new DEFAULT_MODEL

```

### Verifying Active Configuration

Inspect the effective model and its parameters:

```python
from main.prompt import DEFAULT_MODEL, MODEL_PARAMETERS

params = MODEL_PARAMETERS.get(DEFAULT_MODEL)
print(f"Using model {DEFAULT_MODEL} with params {params}")

# Output: Using model gemma3:12b with params {'temperature': 0.1, 'top_p': 0.9}

```

## Provider Resolution in [`main/llm_utils.py`](https://github.com/interviewstreet/hiring-agent/blob/main/main/llm_utils.py)

When components like `ResumeEvaluator` in [`main/evaluator.py`](https://github.com/interviewstreet/hiring-agent/blob/main/main/evaluator.py) request an LLM, the system delegates to `initialize_llm_provider` in [`main/llm_utils.py`](https://github.com/interviewstreet/hiring-agent/blob/main/main/llm_utils.py) (lines 53-61). This function consults `MODEL_PROVIDER_MAPPING` from [`main/prompt.py`](https://github.com/interviewstreet/hiring-agent/blob/main/main/prompt.py) to determine whether to instantiate an Ollama client or a Google Gemini client based on the model name provided.

## Summary

- **Configure** the default LLM model in Hiring Agent by setting the `DEFAULT_MODEL` environment variable, which overrides the `gemma3:4b` fallback defined at line 16 of [`main/prompt.py`](https://github.com/interviewstreet/hiring-agent/blob/main/main/prompt.py).
- The system automatically selects the provider via `LLM_PROVIDER` (defaulting to Ollama) and validates it against `MODEL_PROVIDER_MAPPING` at lines 48-64.
- Model-specific inference parameters (`temperature`, `top_p`) are retrieved from `MODEL_PARAMETERS` at lines 27-44 of [`main/prompt.py`](https://github.com/interviewstreet/hiring-agent/blob/main/main/prompt.py).
- The `initialize_llm_provider` function in [`main/llm_utils.py`](https://github.com/interviewstreet/hiring-agent/blob/main/main/llm_utils.py) (lines 53-61) handles dynamic client instantiation based on the resolved model name and provider.

## Frequently Asked Questions

### What is the default LLM model if no environment variables are set?

If `DEFAULT_MODEL` is not configured, Hiring Agent defaults to `gemma3:4b` as specified by the `DEFAULT_MODEL_NAME` constant at line 16 of [`main/prompt.py`](https://github.com/interviewstreet/hiring-agent/blob/main/main/prompt.py). The provider defaults to Ollama via `ModelProvider.OLLAMA` as implemented at lines 21-26.

### Can I use Google Gemini models instead of Ollama?

Yes. Set `DEFAULT_MODEL` to a Gemini-specific identifier (such as `gemini-2.5-pro`) and ensure `LLM_PROVIDER` is set to `gemini` or that your model appears in the `MODEL_PROVIDER_MAPPING` at lines 48-64 of [`main/prompt.py`](https://github.com/interviewstreet/hiring-agent/blob/main/main/prompt.py). You must also provide a valid `GEMINI_API_KEY` in your environment variables.

### Where are the temperature and top_p parameters defined?

These inference parameters are stored in the `MODEL_PARAMETERS` dictionary at lines 27-44 of [`main/prompt.py`](https://github.com/interviewstreet/hiring-agent/blob/main/main/prompt.py). Each supported model name maps to a dictionary containing `temperature` and `top_p` values that the system passes to the provider client during initialization.

### How does the application know which provider API to call?

The `initialize_llm_provider` function in [`main/llm_utils.py`](https://github.com/interviewstreet/hiring-agent/blob/main/main/llm_utils.py) (lines 53-61) uses the `MODEL_PROVIDER_MAPPING` dictionary from [`main/prompt.py`](https://github.com/interviewstreet/hiring-agent/blob/main/main/prompt.py) to look up whether a given model name belongs to Ollama or Gemini, then instantiates the corresponding client class for API communication.