Python client library for the Portkey API - Control Panel for AI Apps with unified API signature, automated fallbacks, retries, load balancing, semantic caching, virtual keys, and comprehensive observability features.
—
Primary client classes and configuration utilities for initializing and managing Portkey connections with comprehensive provider support and advanced routing capabilities.
Core synchronous and asynchronous client classes that provide the primary interface to Portkey's AI gateway and observability features.
class Portkey:
"""
Primary synchronous client for Portkey AI API.
Provides unified interface to 40+ AI providers with built-in fallbacks,
load balancing, caching, and comprehensive observability.
"""
def __init__(
self,
*,
api_key: Optional[str] = None,
base_url: Optional[str] = None,
virtual_key: Optional[str] = None,
websocket_base_url: Optional[Union[str, httpx.URL]] = None,
config: Optional[Union[Mapping, str]] = None,
provider: Optional[str] = None,
trace_id: Optional[str] = None,
metadata: Union[Optional[dict[str, str]], str] = None,
cache_namespace: Optional[str] = None,
debug: Optional[bool] = None,
cache_force_refresh: Optional[bool] = None,
custom_host: Optional[str] = None,
forward_headers: Optional[List[str]] = None,
instrumentation: Optional[bool] = None,
openai_project: Optional[str] = None,
openai_organization: Optional[str] = None,
aws_secret_access_key: Optional[str] = None,
aws_access_key_id: Optional[str] = None,
aws_session_token: Optional[str] = None,
aws_region: Optional[str] = None,
vertex_project_id: Optional[str] = None,
vertex_region: Optional[str] = None,
workers_ai_account_id: Optional[str] = None,
azure_resource_name: Optional[str] = None,
azure_deployment_id: Optional[str] = None,
azure_api_version: Optional[str] = None,
azure_endpoint_name: Optional[str] = None,
huggingface_base_url: Optional[str] = None,
http_client: Optional[httpx.Client] = None,
request_timeout: Optional[int] = None,
strict_open_ai_compliance: Optional[bool] = False,
anthropic_beta: Optional[str] = None,
anthropic_version: Optional[str] = None,
mistral_fim_completion: Optional[str] = None,
vertex_storage_bucket_name: Optional[str] = None,
provider_file_name: Optional[str] = None,
provider_model: Optional[str] = None,
aws_s3_bucket: Optional[str] = None,
aws_s3_object_key: Optional[str] = None,
aws_bedrock_model: Optional[str] = None,
fireworks_account_id: Optional[str] = None,
calculate_audio_duration: Optional[bool] = True,
**kwargs
) -> None: ...
class AsyncPortkey:
"""
Asynchronous client for Portkey AI API.
Async version of Portkey client with identical API surface
supporting concurrent operations and async/await patterns.
"""
def __init__(self, **kwargs) -> None: ...# Basic initialization
from portkey_ai import Portkey
portkey = Portkey(
api_key="PORTKEY_API_KEY",
virtual_key="VIRTUAL_KEY"
)
# Advanced configuration with provider-specific settings
portkey = Portkey(
api_key="PORTKEY_API_KEY",
config={
"strategy": {
"mode": "fallback"
},
"targets": [
{
"provider": "openai",
"api_key": "OPENAI_API_KEY"
},
{
"provider": "anthropic",
"api_key": "ANTHROPIC_API_KEY"
}
]
},
metadata={
"environment": "production",
"user_id": "user123"
},
trace_id="trace-abc-123",
debug=True
)
# Async client usage
import asyncio
from portkey_ai import AsyncPortkey
async def main():
portkey = AsyncPortkey(
api_key="PORTKEY_API_KEY",
virtual_key="VIRTUAL_KEY"
)
response = await portkey.chat.completions.create(
messages=[{"role": "user", "content": "Hello"}],
model="gpt-4"
)
print(response)
asyncio.run(main())Utility functions for creating and managing Portkey-specific request headers.
def createHeaders(
api_key: Optional[str] = None,
provider: Optional[str] = None,
trace_id: Optional[str] = None,
metadata: Optional[dict] = None,
config: Optional[Union[str, dict]] = None,
cache_namespace: Optional[str] = None,
cache_force_refresh: Optional[bool] = None,
virtual_key: Optional[str] = None,
custom_host: Optional[str] = None,
forward_headers: Optional[List[str]] = None,
openai_project: Optional[str] = None,
openai_organization: Optional[str] = None,
aws_secret_access_key: Optional[str] = None,
aws_access_key_id: Optional[str] = None,
aws_session_token: Optional[str] = None,
aws_region: Optional[str] = None,
vertex_project_id: Optional[str] = None,
vertex_region: Optional[str] = None,
workers_ai_account_id: Optional[str] = None,
azure_resource_name: Optional[str] = None,
azure_deployment_id: Optional[str] = None,
azure_api_version: Optional[str] = None,
azure_endpoint_name: Optional[str] = None,
anthropic_beta: Optional[str] = None,
anthropic_version: Optional[str] = None,
**kwargs
) -> dict:
"""
Create Portkey-specific headers for API requests.
Returns:
Dictionary of headers for HTTP requests
"""Module-level configuration variables for default settings.
api_key: Optional[str]
"""Global API key from environment variable PORTKEY_API_KEY"""
base_url: Optional[str]
"""Global base URL from environment variable PORTKEY_PROXY_ENV or default"""
config: Optional[Union[Mapping, str]]
"""Global configuration object"""
mode: Optional[Union[Modes, ModesLiteral]]
"""Global mode setting"""PORTKEY_BASE_URL: str
"""Default Portkey API base URL"""
PORTKEY_API_KEY_ENV: str
"""Environment variable name for API key"""
PORTKEY_PROXY_ENV: str
"""Environment variable name for proxy URL"""
PORTKEY_GATEWAY_URL: str
"""Gateway URL constant"""Install with Tessl CLI
npx tessl i tessl/pypi-portkey-aidocs