Official Python SDK for Blackman AI - The AI API proxy that optimizes token usage to reduce costs.
- 🚀 Drop-in replacement for OpenAI, Anthropic, and other LLM APIs
- 💰 Automatic token optimization (save 20-40% on costs)
- 📊 Built-in analytics and cost tracking
- 🔒 Enterprise-grade security with SSO support
- ⚡ Low latency overhead (<50ms)
- 🎯 Semantic caching for repeated queries
pip install blackman-clientOr with Poetry:
poetry add blackman-clientimport blackman_client
from blackman_client import CompletionRequest
configuration = blackman_client.Configuration(
host="https://app.useblackman.ai",
access_token="sk_your_blackman_api_key" # Get from https://app.useblackman.ai
)
with blackman_client.ApiClient(configuration) as api_client:
api = blackman_client.CompletionsApi(api_client)
response = api.completions(
CompletionRequest(
provider="OpenAI",
model="gpt-4o",
messages=[{"role": "user", "content": "Explain quantum computing in simple terms"}]
)
)
print(response.choices[0].message.content)
print(f"Tokens used: {response.usage.total_tokens}")
print(f"Prompt tokens: {response.usage.prompt_tokens}")Get your API key from the Blackman AI Dashboard.
configuration = blackman_client.Configuration(
host="https://app.useblackman.ai",
access_token="sk_your_blackman_api_key"
)The SDK supports async operations:
import asyncio
import blackman_client
from blackman_client import CompletionRequest
async def main():
configuration = blackman_client.Configuration(
host="https://app.useblackman.ai",
access_token="sk_your_blackman_api_key"
)
async with blackman_client.ApiClient(configuration) as api_client:
api = blackman_client.CompletionsApi(api_client)
response = await api.completions_async(
CompletionRequest(
provider="OpenAI",
model="gpt-4o",
messages=[{"role": "user", "content": "Hello!"}]
)
)
print(response.choices[0].message.content)
asyncio.run(main())# settings.py
BLACKMAN_API_KEY = os.environ.get("BLACKMAN_API_KEY")
BLACKMAN_HOST = "https://app.useblackman.ai"
# views.py
import blackman_client
from django.conf import settings
def chat_view(request):
configuration = blackman_client.Configuration(
host=settings.BLACKMAN_HOST,
access_token=settings.BLACKMAN_API_KEY
)
with blackman_client.ApiClient(configuration) as api_client:
api = blackman_client.CompletionsApi(api_client)
# ... use apifrom fastapi import FastAPI, Depends
import blackman_client
app = FastAPI()
def get_blackman_api():
configuration = blackman_client.Configuration(
host="https://app.useblackman.ai",
access_token=os.environ["BLACKMAN_API_KEY"]
)
with blackman_client.ApiClient(configuration) as api_client:
yield blackman_client.CompletionsApi(api_client)
@app.post("/chat")
async def chat(api: blackman_client.CompletionsApi = Depends(get_blackman_api)):
response = await api.completions_async(...)
return responseconfiguration = blackman_client.Configuration(
host="https://app.useblackman.ai",
access_token="sk_your_api_key"
)
configuration.timeout = 60 # 60 seconds
with blackman_client.ApiClient(configuration) as api_client:
api = blackman_client.CompletionsApi(api_client)
# ... use api with custom timeoutfrom blackman_client.exceptions import ApiException
try:
response = api.completions(request)
except ApiException as e:
print(f"API error: {e.status} - {e.reason}")
print(f"Response body: {e.body}")- Python 3.7+
- urllib3 >= 1.25.3
- python-dateutil
- pydantic >= 1.10.5, < 2
- 📧 Email: support@blackman.ai
- 💬 Discord: Join our community
- 🐛 Issues: GitHub Issues
MIT © Blackman AI