Skip to content

provider_params

langroid/language_models/provider_params.py

Provider-specific parameter configurations for various LLM providers.

LangDBParams

Bases: BaseSettings

Parameters specific to LangDB integration.

PortkeyParams

Bases: BaseSettings

Parameters specific to Portkey integration.

Portkey is an AI gateway that provides a unified API for multiple LLM providers, with features like automatic retries, fallbacks, load balancing, and observability.

Example usage

Use Portkey with Anthropic

config = OpenAIGPTConfig( chat_model="portkey/anthropic/claude-3-sonnet-20240229", portkey_params=PortkeyParams( api_key="your-portkey-api-key", provider="anthropic" ) )

get_headers()

Generate Portkey-specific headers from parameters.

Source code in langroid/language_models/provider_params.py
def get_headers(self) -> Dict[str, str]:
    """Generate Portkey-specific headers from parameters."""
    import json
    import os

    headers = {}

    # API key - from params or environment
    if self.api_key and self.api_key != DUMMY_API_KEY:
        headers["x-portkey-api-key"] = self.api_key
    else:
        portkey_key = os.getenv("PORTKEY_API_KEY", "")
        if portkey_key:
            headers["x-portkey-api-key"] = portkey_key

    # Provider
    if self.provider:
        headers["x-portkey-provider"] = self.provider

    # Virtual key
    if self.virtual_key:
        headers["x-portkey-virtual-key"] = self.virtual_key

    # Trace ID
    if self.trace_id:
        headers["x-portkey-trace-id"] = self.trace_id

    # Metadata
    if self.metadata:
        headers["x-portkey-metadata"] = json.dumps(self.metadata)

    # Retry configuration
    if self.retry:
        headers["x-portkey-retry"] = json.dumps(self.retry)

    # Cache configuration
    if self.cache:
        headers["x-portkey-cache"] = json.dumps(self.cache)

    # Cache force refresh
    if self.cache_force_refresh is not None:
        headers["x-portkey-cache-force-refresh"] = str(
            self.cache_force_refresh
        ).lower()

    # User identifier
    if self.user:
        headers["x-portkey-user"] = self.user

    # Organization identifier
    if self.organization:
        headers["x-portkey-organization"] = self.organization

    # Add any custom headers
    if self.custom_headers:
        headers.update(self.custom_headers)

    return headers

parse_model_string(model_string)

Parse a model string like "portkey/anthropic/claude-3-sonnet" and extract provider and model name.

Returns:

Name Type Description
tuple tuple[str, str]

(provider, model_name)

Source code in langroid/language_models/provider_params.py
def parse_model_string(self, model_string: str) -> tuple[str, str]:
    """
    Parse a model string like "portkey/anthropic/claude-3-sonnet"
    and extract provider and model name.

    Returns:
        tuple: (provider, model_name)
    """
    parts = model_string.split("/", 2)
    if len(parts) >= 3 and parts[0] == "portkey":
        _, provider, model = parts
        return provider, model
    else:
        # Fallback: just remove "portkey/" prefix and return empty provider
        model = model_string.replace("portkey/", "")
        return "", model

get_provider_api_key(provider, default_key=DUMMY_API_KEY)

Get the API key for the provider from environment variables.

Parameters:

Name Type Description Default
provider str

The provider name (e.g., "anthropic", "openai")

required
default_key str

Default key to return if not found

DUMMY_API_KEY

Returns:

Type Description
str

The API key for the provider

Source code in langroid/language_models/provider_params.py
def get_provider_api_key(
    self, provider: str, default_key: str = DUMMY_API_KEY
) -> str:
    """
    Get the API key for the provider from environment variables.

    Args:
        provider: The provider name (e.g., "anthropic", "openai")
        default_key: Default key to return if not found

    Returns:
        The API key for the provider
    """
    import os

    # Common environment variable patterns for different providers
    env_patterns = [
        f"{provider.upper()}_API_KEY",
        f"{provider.upper()}_KEY",
    ]

    for pattern in env_patterns:
        key = os.getenv(pattern, "")
        if key:
            return key

    return default_key