Official Python SDK for Mia21 Chat API - Build AI chatbots in minutes with tool calling support
Project description
🐍 Mia21 Python SDK
Official Python client library for the Mia21 Chat API.
🚀 Quick Start
Installation
pip install mia21
Basic Usage
from mia21 import Mia21Client
# Initialize client
client = Mia21Client(api_key="your-api-key-here")
# Start chat session
client.initialize(space_id="customer_support")
# Send a message
response = client.chat("How do I reset my password?")
print(response.message)
# Close session
client.close()
Streaming Chat
from mia21 import Mia21Client
client = Mia21Client(api_key="your-api-key-here")
client.initialize()
# Stream response in real-time
print("AI: ", end='', flush=True)
for chunk in client.stream_chat("Tell me a story"):
print(chunk, end='', flush=True)
print() # New line
client.close()
Context Manager (Auto-Close)
from mia21 import Mia21Client
with Mia21Client(api_key="your-api-key") as client:
client.initialize(space_id="sales_assistant")
response = client.chat("What are your pricing plans?")
print(response.message)
# Chat automatically closed
📚 API Reference
Mia21Client
Constructor
client = Mia21Client(
api_key: str, # Required: Your Mia21 API key
base_url: str = "...", # Optional: API base URL
user_id: str = None, # Optional: User ID (auto-generated if not provided)
timeout: int = 90 # Optional: Request timeout in seconds
)
Methods
list_spaces()
spaces = client.list_spaces()
# Returns: List[Space]
for space in spaces:
print(f"{space.id}: {space.name} - {space.description}")
initialize()
response = client.initialize(
space_id="customer_support", # Optional: Space to use
llm_type="openai", # Optional: "openai" or "gemini"
user_name="John", # Optional: User's name
language="en", # Optional: Force language
generate_first_message=True, # Optional: Generate greeting
incognito_mode=False # Optional: Privacy mode
)
# Returns: InitializeResponse
print(response.message) # AI's first message
chat()
response = client.chat(
message="Hello!", # Required: User message
space_id="customer_support", # Optional: Which space
temperature=0.7, # Optional: 0.0-2.0
max_tokens=1024 # Optional: Max response length
)
# Returns: ChatResponse
print(response.message) # AI's response
print(response.tool_calls) # Tools executed (if any)
stream_chat()
for chunk in client.stream_chat(
message="Tell me a story",
space_id="storyteller",
temperature=0.9
):
print(chunk, end='', flush=True)
# Yields: str (text chunks)
close()
client.close(
space_id="customer_support" # Optional: Which space to close
)
# Saves conversation to database
🎯 Advanced Examples
Multi-Space Conversation
from mia21 import Mia21Client
client = Mia21Client(api_key="your-api-key")
# Initialize multiple spaces
client.initialize(space_id="support")
client.initialize(space_id="sales")
client.initialize(space_id="technical")
# Chat with different spaces independently
support_response = client.chat("I have a bug", space_id="support")
sales_response = client.chat("Pricing info?", space_id="sales")
tech_response = client.chat("API docs?", space_id="technical")
# Each space maintains separate conversation history
Error Handling
from mia21 import Mia21Client, ChatNotInitializedError, APIError
client = Mia21Client(api_key="your-api-key")
try:
# This will raise ChatNotInitializedError
client.chat("Hello") # Forgot to initialize!
except ChatNotInitializedError as e:
print(f"Error: {e}")
client.initialize() # Fix it
client.chat("Hello") # Now works
try:
response = client.chat("What's the weather?")
except APIError as e:
print(f"API Error: {e}")
Async Integration (with asyncio)
import asyncio
from mia21 import Mia21Client
async def chat_async():
client = Mia21Client(api_key="your-api-key")
client.initialize()
# Run in executor to avoid blocking
loop = asyncio.get_event_loop()
response = await loop.run_in_executor(
None,
client.chat,
"Hello from async!"
)
print(response.message)
client.close()
asyncio.run(chat_async())
🛠️ Configuration
Environment Variables
# Set API key via environment
export MIA21_API_KEY="your-api-key-here"
export MIA21_BASE_URL="https://mia-api-staging-795279012747.us-central1.run.app"
import os
from mia21 import Mia21Client
# Reads from environment variables
client = Mia21Client(
api_key=os.getenv("MIA21_API_KEY"),
base_url=os.getenv("MIA21_BASE_URL")
)
🧪 Testing
# Install dev dependencies
pip install -e ".[dev]"
# Run tests
pytest tests/
# Run with coverage
pytest --cov=mia21 tests/
📄 License
MIT License - see LICENSE file for details.
🆘 Support
- Documentation: https://docs.mia21.com
- API Reference: https://docs.mia21.com/api
- GitHub Issues: https://github.com/mia21/python-sdk/issues
- Email: hello@mia21.com
🎉 Examples
See the examples/ directory for complete working examples:
basic_chat.py- Simple chat examplestreaming_chat.py- Streaming response examplemulti_space.py- Multiple spaces conversationasync_chat.py- Asyncio integration
Made with ❤️ by Mia21
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file mia21-1.2.1.tar.gz.
File metadata
- Download URL: mia21-1.2.1.tar.gz
- Upload date:
- Size: 15.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
229fa4b13ce72b3f1722f4a17551d85724cbdf2b7c5952b678d4149a82f6b514
|
|
| MD5 |
f23ac8ae1d40f7f353f889a214042d63
|
|
| BLAKE2b-256 |
d7417034d413c0a36a87fdc5a0eff4c758759f6a8deae5b632c16403d2f6816e
|
File details
Details for the file mia21-1.2.1-py3-none-any.whl.
File metadata
- Download URL: mia21-1.2.1-py3-none-any.whl
- Upload date:
- Size: 14.3 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
50fca4eea17075e0776027e6bdd27466a4a291526f006512a8ef2750369d6136
|
|
| MD5 |
7f707ad73a77ec986c2c687a20cdd526
|
|
| BLAKE2b-256 |
2c1f87c614f6aca0abc36de8d68d7cb6cf35d6944f6cc8e544549012a34c0298
|