Heroku MIA SDK for Python
A Python SDK for Heroku's Managed Inference API (MIA), providing easy access to AI models through a LangChain-compatible interface.
🚀 Quick Start
Installation
pip install heroku-mia-sdk
Basic Usage
import os
from heroku_mia_sdk import HerokuMia
# Set your environment variables
os.environ["HEROKU_API_KEY"] = "your-api-key"
os.environ["INFERENCE_MODEL_ID"] = "claude-3-7-sonnet"
os.environ["INFERENCE_URL"] = "https://us.inference.heroku.com"
# Create client and send message
client = HerokuMia()
response = client.invoke("What is the capital of France?")
print(response.content)
📋 Features
- LangChain Compatible: Works seamlessly with LangChain ecosystem
- Streaming Support: Real-time response streaming
- Tool Calling: Function calling capabilities
- Async Support: Full async/await support
- Type Safe: Built with Pydantic for type safety
🔧 Configuration
Environment Variables
| Variable | Description | Required |
|---|---|---|
HEROKU_API_KEY |
Your Heroku API key | Yes |
INFERENCE_MODEL_ID |
Model to use (e.g., claude-3-7-sonnet) |
Yes |
INFERENCE_URL |
Inference endpoint URL | Yes |
Getting Your API Key
- Log in to your Heroku account
- Navigate to Account Settings
- Generate an API key
- Use the format:
inf-xxxxxxxx-xxxx-xxxx-xxxx-xxxxxxxxxxxx
📖 Examples
Basic Chat
from heroku_mia_sdk import HerokuMia
client = HerokuMia()
response = client.invoke("Hello, how are you?")
print(response.content)
Streaming Chat
from heroku_mia_sdk import HerokuMia
client = HerokuMia()
for chunk in client.stream("Tell me a story"):
print(chunk.content, end="", flush=True)
Chat with Tools
from heroku_mia_sdk import HerokuMia
from langchain_core.tools import tool
@tool
def get_weather(city: str) -> str:
"""Get weather for a city."""
return f"The weather in {city} is sunny and 25°C"
client = HerokuMia()
client = client.bind_tools([get_weather])
response = client.invoke("What's the weather in Paris?")
Multiple Messages
from heroku_mia_sdk import HerokuMia
from langchain_core.messages import HumanMessage, SystemMessage
client = HerokuMia()
messages = [
SystemMessage(content="You are a helpful assistant."),
HumanMessage(content="What is Python?")
]
response = client.invoke(messages)
print(response.content)
🛠️ Development
Local Installation
git clone https://github.com/heroku/heroku-mia-sdk-python
cd heroku-mia-sdk-python/python
pip install -e .
Running Examples
# Set environment variables
export HEROKU_API_KEY="your-api-key"
export INFERENCE_MODEL_ID="claude-3-7-sonnet"
export INFERENCE_URL="https://us.inference.heroku.com"
# Run examples
python examples/example_chat_basic.py
python examples/example_chat_streaming.py
python examples/example_chat_tools.py
Development Dependencies
pip install -e ".[dev]"
📚 API Reference
HerokuMia Class
The main client class for interacting with Heroku's Managed Inference API.
Methods
invoke(input)- Send a message and get responsestream(input)- Stream response chunksbind_tools(tools)- Bind tools for function callingwith_config(config)- Configure client settings
Parameters
model_id(str): Model identifierapi_key(str): Heroku API keybase_url(str): API base URLtemperature(float): Response randomness (0.0-1.0)max_tokens(int): Maximum response tokens
🤝 Contributing
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests
- Submit a pull request
📄 License
MIT License - see LICENSE file for details.
🆘 Support
🔗 Related
Metadata
Release files for heroku-mia-sdk 0.1.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| heroku_mia_sdk-0.1.0.tar.gz | 25.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| heroku_mia_sdk-0.1.0-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 49.6 kB
Release files / heroku_mia_sdk-0.1.0.tar.gz
| Download URL | heroku_mia_sdk-0.1.0.tar.gz |
|---|---|
| Size | 25.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
5ecec641b399f75239b70a4029d550daa0a3362a4feeaee5d7f0f00888d46325
|
|
BLAKE2b-256 checksum How to use checksums |
fc0f68d50d7c2276e604e27038477a49d654a0494d14e9ab053288d4cfcd0e8b
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.9.6
|
Release files / heroku_mia_sdk-0.1.0-py3-none-any.whl
| Download URL | heroku_mia_sdk-0.1.0-py3-none-any.whl |
|---|---|
| Size | 23.7 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
b5873d0f77fa1f1921625188377baf724f6b0111abfcca4b6af186ed4256c802
|
|
BLAKE2b-256 checksum How to use checksums |
0c656db88f2088a8e40914f1bb8cd19452814abce8ac0660dc1b67377a6f9fdf
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.9.6
|