Official Python SDK for Mia21 Chat API - Build AI chatbots in minutes
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: support@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
mia21-1.0.1.tar.gz
(9.8 kB
view details)
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
mia21-1.0.1-py3-none-any.whl
(8.5 kB
view details)
File details
Details for the file mia21-1.0.1.tar.gz.
File metadata
- Download URL: mia21-1.0.1.tar.gz
- Upload date:
- Size: 9.8 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.2.0 CPython/3.12.11
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
7b767b21d86132e41c1171a9028b995c1fa34497b979dfc15257d6896b52e8af
|
|
| MD5 |
f60e86946e634b44c89255f0f2d1efef
|
|
| BLAKE2b-256 |
a247b70ac1ed7ae662a39d891ad8cc431e98e3a8a1b36d69144cd28f46942e12
|
File details
Details for the file mia21-1.0.1-py3-none-any.whl.
File metadata
- Download URL: mia21-1.0.1-py3-none-any.whl
- Upload date:
- Size: 8.5 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 |
b4c3b82d121ac06d97b8f51a33152775c02e1403a3ffaec540004c2375c0c483
|
|
| MD5 |
ff9e061b724a2e96401f7359eae64155
|
|
| BLAKE2b-256 |
db32e3a55d567087584651892fc320f226cda84b0910e51e9351eb44b3364fc4
|