Skip to main content

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, or GROQ_API_KEY). A .env file 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 LLMClient interface.
  • System Instructions: Use the system_instruction parameter 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)

Source distribution for modihub 1.0.2
File Size Uploaded
modihub-1.0.2.tar.gz 50.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for modihub 1.0.2
File Interpreter ABI Platform
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

Release history Release notifications | RSS feed

This release

1.0.2 This release

2 release files

1.0.1

2 release files

1.0.0

2 release files

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page