# config-dynamic-var (Dynamic Variable Generation)

Generate variable values at runtime using JavaScript or Python.

You can run this example with:

```bash
npx promptfoo@latest init --example config-dynamic-var
cd config-dynamic-var
```

## Environment Variables

This example requires:

- `OPENAI_API_KEY` - Your OpenAI API key

## How It Works

Reference a script with `file://` in your vars. The script runs at evaluation time and can access other variables:

```yaml
tests:
  - vars:
      role: support
      query: 'My order is late'
      system_prompt: file://load_prompt.py # Loads support-specific prompt
```

The script receives the test context and returns the value:

```python
def get_var(var_name, prompt, other_vars):
    role = other_vars.get("role")
    return {"output": PROMPTS[role]}
```

## Function Signatures

**Python** - Define `get_var(var_name, prompt, other_vars)`:

```python
def get_var(var_name, prompt, other_vars):
    return {"output": "value"}  # or {"error": "message"}
```

**JavaScript** - Export a function:

```javascript
module.exports = async function (varName, prompt, otherVars, provider) {
  return { output: 'value' }; // or { error: "message" }
};
```

## Running the Example

```bash
promptfoo eval
promptfoo view
```
