{"record":{"id":"1971f2c71839d0ba","repo":"run-llama/llama_index","slug":"did-not-find-key-please-add-an-environment-vari","errorCode":null,"errorMessage":"Did not find {key}, please add an environment variable `{env_key}` which contains it, or pass  `{key}` as a named parameter.","messagePattern":"Did not find (.+?), please add an environment variable `(.+?)` which contains it, or pass  `(.+?)` as a named parameter\\.","errorType":"exception","errorClass":"ValueError","httpStatus":null,"severity":"critical","filePath":"llama-index-core/llama_index/core/base/llms/generic_utils.py","lineNumber":325,"sourceCode":"\n    return gen()\n\n\ndef get_from_param_or_env(\n    key: str,\n    param: Optional[str] = None,\n    env_key: Optional[str] = None,\n    default: Optional[str] = None,\n) -> str:\n    \"\"\"Get a value from a param or an environment variable.\"\"\"\n    if param is not None:\n        return param\n    elif env_key and env_key in os.environ and os.environ[env_key]:\n        return os.environ[env_key]\n    elif default is not None:\n        return default\n    else:\n        raise ValueError(\n            f\"Did not find {key}, please add an environment variable\"\n            f\" `{env_key}` which contains it, or pass\"\n            f\"  `{key}` as a named parameter.\"\n        )\n\n\ndef image_node_to_image_block(image_node: ImageNode) -> ImageBlock:\n    \"\"\"\n    Get an ImageBlock from an ImageNode.\n\n    Args:\n        image_node (ImageNode): ImageNode to convert.\n\n    Returns:\n        ImageBlock: block representation of the node.\n\n    Raises:\n        ValueError: when the image provided within the ImageNode is not correctly base64-encoded.","sourceCodeStart":307,"sourceCodeEnd":343,"githubUrl":"https://github.com/run-llama/llama_index/blob/afd0fef371831f9bda13e5af7167cf4e981278ab/llama-index-core/llama_index/core/base/llms/generic_utils.py#L307-L343","documentation":"Raised by get_from_param_or_env when a required value was not supplied as a parameter, not found (or empty) under the given environment variable, and no default was provided. This helper standardizes credential/config resolution across LLM and embedding client constructors (api_key, etc.).","triggerScenarios":"Instantiating a client (e.g. OpenAI-type LLM/embeddings) with api_key=None when the matching env var (e.g. OPENAI_API_KEY) is unset or set to an empty string, and no default passed.","commonSituations":"Missing/empty environment variable in a new shell, container, or CI; env var name typo; using a non-standard provider whose env key differs (e.g. passing api_base but forgetting api_key for an OpenAI-compatible endpoint); .env file not loaded.","solutions":["Export the expected environment variable with a non-empty value (e.g. export OPENAI_API_KEY=sk-...).","Pass the key directly as a named parameter (api_key=...) at construction.","Verify loading: check os.environ.get('OPENAI_API_KEY') is truthy before constructing the client; ensure your .env loader (python-dotenv) ran and the var name matches exactly."],"exampleFix":"# before\nllm = OpenAI(model=\"gpt-4o\")  # OPENAI_API_KEY unset -> ValueError\n\n# after\nllm = OpenAI(model=\"gpt-4o\", api_key=os.environ[\"OPENAI_API_KEY\"])\n# or: export OPENAI_API_KEY=sk-... in the shell/container","handlingStrategy":"validation","validationCode":"import os\napi_key = os.environ.get(\"OPENAI_API_KEY\") or os.environ.get(\"YOUR_PROVIDER_KEY\")\nif not api_key:\n    raise RuntimeError(\"Missing API key: set OPENAI_API_KEY or pass api_key=\")\nllm = OpenAI(model=\"gpt-4o\", api_key=api_key)","typeGuard":null,"tryCatchPattern":"try:\n    client = OpenAI(api_key=api_key)\nexcept ValueError as e:\n    if \"environment variable\" in str(e):\n        raise RuntimeError(f\"Config error: {e}\") from e\n    raise","preventionTips":["Validate required env vars at process startup, not at first LLM call.","Use a secrets manager or .env loader and fail fast with a clear message.","Never assume CI/containers inherit your local env."],"tags":["llama-index","config","environment","api-key","credentials"],"backgroundTag":null,"analyzedSha":"afd0fef371831f9bda13e5af7167cf4e981278ab","analyzedAt":"2026-08-15T05:42:58.429Z","schemaVersion":2},"datasetVersion":"2026-08-15T22:17:37.221Z"}