Environment:PacktPublishing LLM Engineers Handbook API Credentials
| Knowledge Sources | |
|---|---|
| Domains | Infrastructure, Security |
| Last Updated | 2026-02-08 08:00 GMT |
Overview
Centralized credential management via `.env` file and Pydantic Settings for OpenAI, HuggingFace, Comet ML, AWS, and LinkedIn API access.
Description
This environment documents all API keys, tokens, and credentials required across the entire project. Credentials are loaded through Pydantic BaseSettings from a `.env` file (or ZenML secret store as fallback). Each workflow requires a different subset of credentials. No credentials have default values that are valid for production use; they must all be explicitly configured by the user.
Usage
Use this environment reference when setting up the project for the first time or when a workflow fails due to missing credentials. The settings module at `llm_engineering/settings.py` centralizes all credential loading with clear defaults and validation.
System Requirements
| Category | Requirement | Notes |
|---|---|---|
| File | `.env` in project root | Primary credential source |
| Alternative | ZenML Secret Store | Fallback if `.env` not available |
Dependencies
Python Packages
- `pydantic-settings` >= 2.1.0 (settings management)
- `python-dotenv` (transitive, for `.env` loading)
Credentials
Core API Keys
- `OPENAI_API_KEY`: OpenAI API key for GPT-4o-mini (used in dataset generation, RAG query expansion, self-query, LLM-as-judge evaluation)
- `OPENAI_MODEL_ID`: OpenAI model identifier (default: `gpt-4o-mini`)
- `HUGGINGFACE_ACCESS_TOKEN`: HuggingFace Hub token for model/dataset downloads and uploads
- `COMET_API_KEY`: Comet ML API key for experiment tracking during training
- `COMET_PROJECT`: Comet ML project name (default: `twin`)
AWS Credentials
- `AWS_REGION`: AWS region (default: `eu-central-1`)
- `AWS_ACCESS_KEY`: AWS IAM access key ID
- `AWS_SECRET_KEY`: AWS IAM secret access key
- `AWS_ARN_ROLE`: SageMaker execution role ARN
Database Credentials
- `DATABASE_HOST`: MongoDB connection URI (default: `mongodb://llm_engineering:llm_engineering@127.0.0.1:27017`)
- `DATABASE_NAME`: MongoDB database name (default: `twin`)
- `QDRANT_DATABASE_HOST`: Qdrant host (default: `localhost`)
- `QDRANT_DATABASE_PORT`: Qdrant port (default: `6333`)
- `USE_QDRANT_CLOUD`: Boolean for Qdrant Cloud usage (default: `False`)
- `QDRANT_CLOUD_URL`: Qdrant Cloud endpoint URL
- `QDRANT_APIKEY`: Qdrant Cloud API key
LinkedIn Credentials
- `LINKEDIN_USERNAME`: LinkedIn login email
- `LINKEDIN_PASSWORD`: LinkedIn login password
Credential Requirements by Workflow
| Workflow | Required Credentials |
|---|---|
| Digital Data ETL | `DATABASE_HOST`, `LINKEDIN_USERNAME`/`PASSWORD` (if crawling LinkedIn) |
| Feature Engineering | `DATABASE_HOST`, `QDRANT_*` |
| Dataset Generation | `OPENAI_API_KEY`, `HUGGINGFACE_ACCESS_TOKEN`, `QDRANT_*` |
| LLM Finetuning | `HUGGINGFACE_ACCESS_TOKEN`, `COMET_API_KEY`, `AWS_*` |
| Model Evaluation | `OPENAI_API_KEY`, `HUGGINGFACE_ACCESS_TOKEN`, `AWS_*` |
| RAG Inference | `OPENAI_API_KEY`, `AWS_*`, `QDRANT_*` |
Quick Install
# Create .env file from template
cat > .env << 'EOF'
OPENAI_API_KEY=sk-...
HUGGINGFACE_ACCESS_TOKEN=hf_...
COMET_API_KEY=...
AWS_REGION=eu-central-1
AWS_ACCESS_KEY=...
AWS_SECRET_KEY=...
AWS_ARN_ROLE=arn:aws:iam::...
EOF
Code Evidence
Settings class definition from `llm_engineering/settings.py:7-8`:
class Settings(BaseSettings):
model_config = SettingsConfigDict(env_file=".env", env_file_encoding="utf-8")
ZenML secret store fallback from `llm_engineering/settings.py:95-101`:
try:
# Try loading from ZenML secret store
...
except Exception:
logger.warning(
"Failed to load settings from the ZenML secret store. Defaulting to loading the settings from the '.env' file."
)
Credential validation assertions from `llm_engineering/model/finetuning/sagemaker.py:25-26`:
assert settings.HUGGINGFACE_ACCESS_TOKEN, "Hugging Face access token is required."
assert settings.AWS_ARN_ROLE, "AWS ARN role is required."
Evaluation credential assertions from `llm_engineering/model/evaluation/sagemaker.py:18-20`:
assert settings.HUGGINGFACE_ACCESS_TOKEN, "Hugging Face access token is required."
assert settings.OPENAI_API_KEY, "OpenAI API key is required."
assert settings.AWS_ARN_ROLE, "AWS ARN role is required."
Common Errors
| Error Message | Cause | Solution |
|---|---|---|
| `AssertionError: Hugging Face access token is required.` | `HUGGINGFACE_ACCESS_TOKEN` missing | Add token to `.env` file |
| `AssertionError: OpenAI API key is required.` | `OPENAI_API_KEY` missing | Add key to `.env` file |
| `AssertionError: AWS ARN role is required.` | `AWS_ARN_ROLE` missing | Run IAM role creation script, add ARN to `.env` |
| `Failed to load settings from ZenML secret store` | ZenML not configured | Create `.env` file (settings auto-fallback) |
Compatibility Notes
- ZenML Secrets: If ZenML is configured with a secret store, credentials can be loaded from there instead of `.env`.
- Security: The `.env` file is gitignored. Never commit credentials to version control.
- Defaults: Database credentials have working defaults for local Docker development. API keys have no functional defaults.
Related Pages
- Implementation:PacktPublishing_LLM_Engineers_Handbook_DatasetGenerator_Generate
- Implementation:PacktPublishing_LLM_Engineers_Handbook_OpenAI_Chat_Completions
- Implementation:PacktPublishing_LLM_Engineers_Handbook_TrainTestSplit_To_Huggingface
- Implementation:PacktPublishing_LLM_Engineers_Handbook_Run_Finetuning_On_Sagemaker
- Implementation:PacktPublishing_LLM_Engineers_Handbook_SagemakerHuggingfaceStrategy_Deploy
- Implementation:PacktPublishing_LLM_Engineers_Handbook_SelfQuery_Generate
- Implementation:PacktPublishing_LLM_Engineers_Handbook_HuggingFaceProcessor_Run
- Implementation:PacktPublishing_LLM_Engineers_Handbook_QueryExpansion_Generate
- Implementation:PacktPublishing_LLM_Engineers_Handbook_FastAPI_RAG_Endpoint