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]