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-aiQuick 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:
passMaking 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}")