BrainUs LogoBrainUs AI
SDKs

Python SDK

Official Python SDK for BrainUs API with full type hints

Official Python SDK with full type hints, async support, and automatic retry handling.

Installation

pip install brainus-ai

Quick Start

import asyncio
import os
from brainus_ai import BrainusAI

async def main():
    api_key = os.getenv("BRAINUS_API_KEY", "your_api_key_here")

    async with BrainusAI(api_key=api_key) as client:
        response = await client.query(
            query="What is Python programming?",
        )
        print(f"Answer: {response.answer}")
        print(f"Has citations: {response.has_citations}")

if __name__ == "__main__":
    asyncio.run(main())

Configuration

from brainus_ai import BrainusAI

# Base configuration
async with BrainusAI(api_key="your_key") as client:
    pass

Making Queries

Basic Query

response = await client.query(
    query="Explain Newton's laws of motion",
)

print(f"Answer: {response.answer}")

if response.citations:
    for citation in response.citations:
        print(citation)

With Filters

Using QueryFilters or simple dict:

from brainus_ai import QueryFilters

# Option 1: Using QueryFilters object
response = await client.query(
    query="Explain data structures",
    filters=QueryFilters(subject="ICT", grade="12"),
)

# Option 2: Using dictionary
response = await client.query(
    query="Explain OOP concepts",
    filters={"subject": "ICT", "grade": "11"},
)

With Model Selection

response = await client.query(
    query="What is machine learning?",
    model="gemini-2.5-flash-lite",
)

Store ID

response = await client.query(
    query="test",
    store_id="default",  # or your custom store ID
)

Usage Statistics

usage = await client.get_usage()

print(f"Total requests: {usage.total_requests}")
print(f"Total tokens: {usage.total_tokens or 'N/A'}")
print(f"Total cost: ${usage.total_cost_usd or 0.00}")
print(f"Quota remaining: {usage.quota_remaining or 'Unlimited'}")
print(f"Quota percentage: {usage.quota_percentage}%")

Available Plans

plans = await client.get_plans()

for plan in plans:
    print(f"\n{plan.name}:")
    print(f"  Rate limit: {plan.rate_limit_per_minute}/min")
    print(f"  Price: LKR {plan.price_lkr or 0}")
    print(f"  Models: {', '.join(plan.allowed_models)}")

Error Handling

from brainus_ai import AuthenticationError, RateLimitError

try:
    async with BrainusAI(api_key="invalid_key") as bad_client:
        await bad_client.query(query="test")
except AuthenticationError as e:
    print(f"Authentication failed: {e.message}")
except RateLimitError as e:
    print(f"Rate limited: {e}")
except Exception as e:
    print(f"Error: {e}")

Next Steps

On this page