MODIHUB: A Unified Interface for Diverse LLMs
MODIHUB simplifies the way you interact with multiple Large Language Models (LLMs) by offering a streamlined, consistent interface. It abstracts the complexities of provider-specific APIs and configurations, making it easy to switch between models across different platforms.
🔑 Key Features
- Unified API: Seamlessly interact with models from OpenAI, Gemini, Anthropic, Ollama, Groq, and more using a consistent interface.
- Model Discovery: Effortlessly list and explore available models from each provider.
- Multimodal Support: Work with text, image, and mixed-modality prompts where supported.
- Built-in Evaluation Tools: Evaluate model performance with utilities for perplexity, lexical diversity, and more.
Installation
pip install -U modihub
Usage Examples
1. Listing Available Models
from modihub.llm import LLM
available_models = LLM.available_models()
for client, models in available_models.group_by("client"):
print(f"{client}:")
for model in models:
print(f" - {model.name}")
2. Text Generation
from modihub.llm import LLM
from dotenv import find_dotenv, load_dotenv
load_dotenv(find_dotenv()) # Loads API keys from .env file
# Replace with your desired model
llm = LLM.create("gpt-4o-mini")
# Generate text
response = llm("Tell me a joke about AI.")
print(response)
3. Multimodal Input (Image Description)
from PIL import Image
from modihub.llm import LLM
from dotenv import find_dotenv, load_dotenv
load_dotenv(find_dotenv())
# Replace with your desired model
llm = LLM.create("models/gemini-1.5-flash-8b")
# Load image
image = Image.open("image.png") # Replace with the path to your image
text = "Describe the following image"
# create multimodal prompt
prompt = [text, image]
response = llm(prompt)
print(response)
4. Model Evaluation (Pointwise Metrics)
from dotenv import find_dotenv, load_dotenv
from modihub.metrics import Perplexity, LexicalDiversity
from modihub.eval import Evaluator
load_dotenv(find_dotenv())
prompts = [
"What are LLMs?",
"Explain AI", "What is the meaning of life?"]
models = [
"gpt-4o-mini",
"llama3.1:latest",
"models/gemini-1.5-flash-latest"
]
metrics = [Perplexity(), LexicalDiversity()]
evaluator = Evaluator(models, metrics)
results = {prompt: evaluator.evaluate(prompt) for prompt in prompts}
for prompt, result in results.items():
print(f"Prompt: {prompt}")
for model, metrics in zip(models, result):
print(f"{model}: {metrics}")
print()
Configuration
- API Keys: Set your API keys for each LLM provider as environment variables (e.g.,
OPENAI_API_KEY,GEMINI_API_KEY,ANTHROPIC_API_KEY, orGROQ_API_KEY). A.envfile in your project directory is a good place to store these. - Support Clients: MODI currently supports OpenAI, Gemini, Anthropic, Ollama, and Groq models. You can add support for additional clients by implementing the
LLMClientinterface. - System Instructions: Use the
system_instructionparameter when creating an LLM instance to provide context or instructions to the model. This is supported by all clients.
Contributing
Contributions are welcome! Please feel free to submit pull requests or open issues.
License
MIT License (Include a LICENSE file in your repository containing the MIT License text.)
Metadata
Release files for modihub 1.0.2
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| modihub-1.0.2.tar.gz | 50.9 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| modihub-1.0.2-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 66.8 kB
Release files / modihub-1.0.2.tar.gz
| Download URL | modihub-1.0.2.tar.gz |
|---|---|
| Size | 50.9 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
6c00d2a1955b10213b7ea98b29249c817a48d7aa4ba8d4e3ba0ba7d1a1a42f8e
|
|
BLAKE2b-256 checksum How to use checksums |
1a0644510017cb9022807dcf01a02a9afd01cc8396dfd91fecc9032a7e6338ea
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.6.2
|
Release files / modihub-1.0.2-py3-none-any.whl
| Download URL | modihub-1.0.2-py3-none-any.whl |
|---|---|
| Size | 15.9 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
59cb9df8c55d6e25dcfdf764eacf33952e741bcdd105c1ef3b481fa74fafd4b9
|
|
BLAKE2b-256 checksum How to use checksums |
f4fa7a0113452cf08841e0962977f90769b3948dd87bdea92f483a7880a4cdca
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
uv/0.6.2
|