diff --git a/python/.env.example b/python/.env.example
index a1bed2549..74e161700 100644
--- a/python/.env.example
+++ b/python/.env.example
@@ -9,6 +9,7 @@ BEEAI_LOG_LEVEL=INFO
########################
# OPENAI_API_KEY=your-openai-api-key
+# OPENAI_API_HEADERS="secret-header=1234"
########################
### watsonx specific configuration
@@ -47,17 +48,21 @@ BEEAI_LOG_LEVEL=INFO
########################
# GOOGLE_VERTEX_CHAT_MODEL=gemini-2.0-flash-lite-001
-# GOOGLE_VERTEX_PROJECT=""
-# GOOGLE_VERTEX_LOCATION=""
+# GOOGLE_VERTEX_PROJECT=your-vertexai-project
+# GOOGLE_VERTEX_LOCATION=your-vertexai-location
+# GOOGLE_VERTEX_API_HEADERS="secret-header=1234"
+
########################
### Amazon Bedrock specific configuration
########################
-# AWS_ACCESS_KEY_ID=
-# AWS_SECRET_ACCESS_KEY=
-# AWS_REGION=
-# AWS_CHAT_MODEL=
+# AWS_ACCESS_KEY_ID=your-aws-access-key
+# AWS_SECRET_ACCESS_KEY=your-secret-access-key
+# AWS_REGION=your-aws-region
+# AWS_CHAT_MODEL=llama-3.1-8b-instant
+# AWS_API_HEADERS="secret-header=1234"
+
########################
### Anthropic specific configuration
@@ -65,12 +70,16 @@ BEEAI_LOG_LEVEL=INFO
# ANTHROPIC_API_KEY=your-anthropic-api-key
# ANTHROPIC_CHAT_MODEL=claude-3-haiku-20240307"
+# ANTHROPIC_API_HEADERS="secret-header=1234"
+
########################
### Azure OpenAI specific configuration
########################
-# AZURE_OPENAI_API_KEY=
-# AZURE_OPENAI_API_BASE=
-# AZURE_OPENAI_API_VERSION=
-# AZURE_OPENAI_CHAT_MODEL=
+# AZURE_OPENAI_API_KEY=your-azure-api-key
+# AZURE_OPENAI_API_BASE=your-base-url
+# AZURE_OPENAI_API_VERSION=2024-10-21
+# AZURE_OPENAI_CHAT_MODEL=gpt-4o-mini
+# AZURE_OPENAI_API_HEADERS="secret-header=1234"
+
diff --git a/python/beeai_framework/adapters/amazon_bedrock/backend/chat.py b/python/beeai_framework/adapters/amazon_bedrock/backend/chat.py
index f99d5ac90..88feb09c8 100644
--- a/python/beeai_framework/adapters/amazon_bedrock/backend/chat.py
+++ b/python/beeai_framework/adapters/amazon_bedrock/backend/chat.py
@@ -16,6 +16,7 @@
import os
from typing import Any
+from beeai_framework.adapters.litellm import utils
from beeai_framework.adapters.litellm.chat import LiteLLMChatModel
from beeai_framework.backend.constants import ProviderName
from beeai_framework.logger import Logger
@@ -68,3 +69,6 @@ def __init__(self, model_id: str | None = None, settings: dict[str, Any] | None
"aws_region_name": aws_region_name,
},
)
+ self._settings["extra_headers"] = utils.parse_extra_headers(
+ self._settings.get("extra_headers"), os.getenv("AWS_API_HEADERS")
+ )
diff --git a/python/beeai_framework/adapters/anthropic/backend/chat.py b/python/beeai_framework/adapters/anthropic/backend/chat.py
index bf557d7ab..ec36d31ee 100644
--- a/python/beeai_framework/adapters/anthropic/backend/chat.py
+++ b/python/beeai_framework/adapters/anthropic/backend/chat.py
@@ -17,6 +17,7 @@
from dotenv import load_dotenv
+from beeai_framework.adapters.litellm import utils
from beeai_framework.adapters.litellm.chat import LiteLLMChatModel
from beeai_framework.backend.constants import ProviderName
from beeai_framework.logger import Logger
@@ -45,3 +46,6 @@ def __init__(self, model_id: str | None = None, settings: dict[str, Any] | None
provider_id="anthropic",
settings=_settings | {"api_key": api_key},
)
+ self._settings["extra_headers"] = utils.parse_extra_headers(
+ self._settings.get("extra_headers"), os.getenv("ANTHROPIC_API_HEADERS")
+ )
diff --git a/python/beeai_framework/adapters/azure_openai/backend/chat.py b/python/beeai_framework/adapters/azure_openai/backend/chat.py
index 8babed8fb..ac63faac7 100644
--- a/python/beeai_framework/adapters/azure_openai/backend/chat.py
+++ b/python/beeai_framework/adapters/azure_openai/backend/chat.py
@@ -17,6 +17,7 @@
from dotenv import load_dotenv
+from beeai_framework.adapters.litellm import utils
from beeai_framework.adapters.litellm.chat import LiteLLMChatModel
from beeai_framework.backend.constants import ProviderName
from beeai_framework.logger import Logger
@@ -123,3 +124,6 @@ def __init__(self, model_id: str | None = None, settings: dict[str, Any] | None
provider_id="azure", # LiteLLM uses 'azure' for Azure OpenAI
settings=config,
)
+ self._settings["extra_headers"] = utils.parse_extra_headers(
+ self._settings.get("extra_headers"), os.getenv("AZURE_OPENAI_API_HEADERS")
+ )
diff --git a/python/beeai_framework/adapters/vertexai/backend/chat.py b/python/beeai_framework/adapters/vertexai/backend/chat.py
index f75deea1c..721685b49 100644
--- a/python/beeai_framework/adapters/vertexai/backend/chat.py
+++ b/python/beeai_framework/adapters/vertexai/backend/chat.py
@@ -16,6 +16,7 @@
import os
from typing import Any
+from beeai_framework.adapters.litellm import utils
from beeai_framework.adapters.litellm.chat import LiteLLMChatModel
from beeai_framework.backend.constants import ProviderName
from beeai_framework.logger import Logger
@@ -44,7 +45,7 @@ def __init__(self, model_id: str | None = None, settings: dict[str, Any] | None
# Set GOOGLE_APPLICATION_CREDENTIALS / GOOGLE_CREDENTIALS / GOOGLE_APPLICATION_CREDENTIALS_JSON
super().__init__(
- model_id if model_id else os.getenv("VERTEXAI_CHAT_MODEL", "geminid-2.0-flash-lite-001"),
+ model_id if model_id else os.getenv("GOOGLE_VERTEX_CHAT_MODEL", "gemini-2.0-flash-lite-001"),
provider_id="vertex_ai",
settings=_settings
| {
@@ -52,3 +53,6 @@ def __init__(self, model_id: str | None = None, settings: dict[str, Any] | None
"vertex_location": vertexai_location,
},
)
+ self._settings["extra_headers"] = utils.parse_extra_headers(
+ self._settings.get("extra_headers"), os.getenv("GOOGLE_VERTEX_API_HEADERS")
+ )
diff --git a/python/docs/backend.md b/python/docs/backend.md
index 80bbc8b44..9bacb0585 100644
--- a/python/docs/backend.md
+++ b/python/docs/backend.md
@@ -47,10 +47,10 @@ The following table depicts supported providers. Each provider requires specific
| `OpenAI` | ✅ | | `openai` | OPENAI_CHAT_MODEL
OPENAI_API_BASE
OPENAI_API_KEY
OPENAI_ORGANIZATION
OPENAI_API_HEADERS |
| `Watsonx` | ✅ | | `@ibm-cloud/watsonx-ai` | WATSONX_CHAT_MODEL
WATSONX_API_KEY
WATSONX_PROJECT_ID
WATSONX_SPACE_ID
WATSONX_TOKEN
WATSONX_ZENAPIKEY
WATSONX_URL
WATSONX_REGION |
| `Groq` | ✅ | | | GROQ_CHAT_MODEL
GROQ_API_KEY |
-| `Amazon Bedrock` | ✅ | | `boto3`| AWS_CHAT_MODEL
AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
AWS_REGION |
-| `Google Vertex` | ✅ | | | VERTEXAI_CHAT_MODEL
GOOGLE_VERTEX_PROJECT
GOOGLE_APPLICATION_CREDENTIALS
GOOGLE_APPLICATION_CREDENTIALS_JSON
GOOGLE_CREDENTIALS |
-| `Azure OpenAI` | ✅ | | | AZURE_OPENAI_CHAT_MODEL
AZURE_OPENAI_API_KEY
AZURE_OPENAI_API_BASE
AZURE_OPENAI_API_VERSION
AZURE_AD_TOKEN
AZURE_API_TYPE |
-| `Anthropic` | ✅ | | | ANTHROPIC_CHAT_MODEL
ANTHROPIC_API_KEY |
+| `Amazon Bedrock` | ✅ | | `boto3`| AWS_CHAT_MODEL
AWS_ACCESS_KEY_ID
AWS_SECRET_ACCESS_KEY
AWS_REGION
AWS_API_HEADERS |
+| `Google Vertex` | ✅ | | | GOOGLE_VERTEX_CHAT_MODEL
GOOGLE_VERTEX_PROJECT
GOOGLE_APPLICATION_CREDENTIALS
GOOGLE_APPLICATION_CREDENTIALS_JSON
GOOGLE_CREDENTIALS
GOOGLE_VERTEX_API_HEADERS |
+| `Azure OpenAI` | ✅ | | | AZURE_OPENAI_CHAT_MODEL
AZURE_OPENAI_API_KEY
AZURE_OPENAI_API_BASE
AZURE_OPENAI_API_VERSION
AZURE_AD_TOKEN
AZURE_API_TYPE
AZURE_API_HEADERS |
+| `Anthropic` | ✅ | | | ANTHROPIC_CHAT_MODEL
ANTHROPIC_API_KEY
ANTHROPIC_API_HEADERS |
| `xAI` | ✅ | | | XAI_CHAT_MODEL
XAI_API_KEY |
> [!TIP]