BerriAI/litellm · error · ValueError

invalid fine_tuning config, expected a list is not a list

Error message

invalid fine_tuning config, expected a list is not a list

What it means

Raised by set_fine_tuning_config at proxy startup when the fine_tuning_settings block in config.yaml is not a YAML list. Each list element is supposed to be a per-provider dict whose os.environ/ values are resolved into secrets; a mapping or scalar at the top level cannot represent per-provider settings, so config loading is rejected.

Source

Thrown at litellm/proxy/fine_tuning_endpoints/endpoints.py:38

    validate_managed_id_requirement,
)
from litellm.proxy.utils import handle_exception_on_proxy
from litellm.types.utils import LiteLLMFineTuningJob

router: Final = APIRouter()

from litellm.types.llms.openai import LiteLLMFineTuningJobCreate

fine_tuning_config = None


def set_fine_tuning_config(config):
    if config is None:
        return

    global fine_tuning_config
    if not isinstance(config, list):
        raise ValueError("invalid fine_tuning config, expected a list is not a list")

    for element in config:
        if isinstance(element, dict):
            for key, value in element.items():
                if isinstance(value, str) and value.startswith("os.environ/"):
                    element[key] = litellm.get_secret(value)

    fine_tuning_config = config


# Function to search for specific custom_llm_provider and return its configuration
def get_fine_tuning_provider_config(
    custom_llm_provider: str,
):
    global fine_tuning_config
    if fine_tuning_config is None:
        raise ValueError("fine_tuning_config is not set, set it on your config.yaml file.")
    for setting in fine_tuning_config:

View on GitHub (pinned to 77b7c6c40c)

Solutions

  1. Define fine_tuning_config as a list in config.yaml.

Example fix

fine_tuning_config:
  - finetune_settings: {...}
Defensive patterns

Strategy: type-guard

When it happens

Trigger: Thrown at litellm/proxy/fine_tuning_endpoints/endpoints.py:38 when the library encounters an invalid state.

Common situations: fine_tuning_config in config.yaml is not a list (e.g. a dict or scalar).


AI-assisted analysis of BerriAI/litellm@77b7c6c40c (2026-08-18). Data as JSON: /api/errors/2591938584991544. Report an issue: GitHub.