A Python package containing tools for working with various language models and AI services.
Project description
AIMU - AI Model Utilities
A Python package containing easy to use tools for working with various language models and AI services. AIMU is specifically designed for running models locally, using Ollama or Hugging Face Transformers. However, it can also be used with cloud models (OpenAI, Anthropic, Google, etc.) with aisuite support (in development).
Features
-
Model Clients: Support for multiple AI model providers including:
- Ollama (local models)
- Hugging Face Transformers (local models)
- aisuite supported models (cloud and local models), including OpenAI (others coming)
-
MCP Tools: Model Context Protocol (MCP) client for enhancing AI capabilities. Provides a simple(r) interface for FastMCP 2.0.
-
Chat Conversation (Memory) Storage/Management: Chat conversation history management using TinyDB.
-
Prompt Storage/Management: Prompt catalog for storing and versioning prompts using SQLAlchemy.
Components
In addition to the AIMU package in the 'aimu' directory, the AIMU code repository includes:
-
Jupyter notebooks demonstrating key AIMU features.
-
A example chat client, built with Streamlit, using AIMU Model Client, MCP tools support, and chat conversation management.
-
A full suite of Pytest tests.
Installation
AIMU can be installed with Ollama support, Hugging Face Transformers support, and/or aisuite (cloud models) support. For all features, run:
pip install aimu[all]
Alternatively, for Ollama-only support:
pip install aimu[ollama]
For Hugging Face Tranformers model support:
pip install aimu[hf]
For aisuite models (e.g. OpenAI):
pip install aimu[aisuite]
Development
Once you've cloned the repository, run the following command to install all model dependencies:
pip install -e '.[all]'
Additionally, run the following command to install development (testing, linting) and notebook dependencies:
pip install -e '.[dev,notebooks]'
If you have uv installed, you can get all model and development dependencies with:
uv sync --all-extras
Usage
Text Generation
from aimu.models import OllamaClient as ModelClient ## or HuggingFaceClient, or AisuiteClient
model_client = ModelClient(ModelClient.MODEL_LLAMA_3_1_8B)
response = model_client.generate("What is the capital of France?", {"temperature": 0.7})
Chat
from aimu.models import OllamaClient as ModelClient
model_client = ModelClient(ModelClient.MODELS.LLAMA_3_1_8B)
response = model_client.chat("What is the capital of France?")
Chat UI (Streamlit)
cd streamlit
streamlit run streamlit/chatbot_example.py
MCP Tool Usage
from aimu.tools import MCPClient
mcp_client = MCPClient({
"mcpServers": {
"mytools": {"command": "python", "args": ["tools.py"]},
}
})
mcp_client.call_tool("mytool", {"input": "hello world!"})
MCP Tool Usage with ModelClient
from aimu.models import OllamaClient as ModelClient
from aimu.tools import MCPClient
mcp_client = MCPClient({
"mcpServers": {
"mytools": {"command": "python", "args": ["tools.py"]},
}
})
model_client = ModelClient(ModelClient.MODEL_LLAMA_3_1_8B)
model_client.mcp_client = mcp_client
model_client.chat("use my tool please")
Chat Conversation Storage/Management
from aimu.models import OllamaClient as ModelClient
from aimu.memory import ConversationManager
chat_manager = ConversationManager("conversations.json", use_last_conversation=True) # loads the last saved convesation
model_client = new ModelClient(ModelClient.MODEL_LLAMA_3_1_8B)
model_client.messages = chat_manager.messages
model_client.chat("What is the capital of France?")
chat_manager.update_conversation(model_client.messages) # store the updated conversation
Prompt Storage/Management
from aimu.prompts import PromptCatalog, Prompt
prompt_catalog = PromptCatalog("prompts.db")
prompt = Prompt("You are a helpful assistant", model_id="llama3.1:8b", version=1)
prompt_catalog.store_prompt(prompt)
License
This project is licensed under the Apache 2.0 license.
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 aimu-0.1.6.tar.gz.
File metadata
- Download URL: aimu-0.1.6.tar.gz
- Upload date:
- Size: 29.9 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.7.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
5ec6df2634bd0e81dec6315fa272ec23277d46a88ba8a0352758f2a455fc2179
|
|
| MD5 |
29aba50276164a904f4b73f21a6aaf18
|
|
| BLAKE2b-256 |
8bf552c641f6c20548aff7d1e3f1bf3b7efcf40b4fe55564d188774e650806c8
|
File details
Details for the file aimu-0.1.6-py3-none-any.whl.
File metadata
- Download URL: aimu-0.1.6-py3-none-any.whl
- Upload date:
- Size: 26.4 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.7.3
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f67f7e1b98243462c009e13b7621013f3c1cd4c6bfcaf18e6582fc4f34159e16
|
|
| MD5 |
2fc3d5377216aec27cef16d8e22e6d24
|
|
| BLAKE2b-256 |
b355331b2683d41fabd447b04cdeb4e4015fba565d57af0329048e01ec215e6b
|