When you think about light weight LLMs, call brollm!
Project description
brollm
A lightweight Python library providing unified interfaces for LLM models, embeddings, and rerankers. Built for AI agent development with consistent APIs across different providers.
Features
- Unified Interface: Same API across AWS Bedrock and Ollama
- LLM Models: Chat completion with system prompts and message history
- Embeddings: Text embedding generation for semantic search
- Rerankers: Document reranking capabilities (base class ready)
- Lightweight: Minimal dependencies, maximum flexibility
Installation
pip install brollm
or
uv add brollm
Quick Start
AWS Bedrock
from brollm import BedrockChat, BedrockEmbedding
# Chat completion
chat = BedrockChat(model_name="us.meta.llama3-2-11b-instruct-v1:0")
messages = [
chat.UserMessage("What is machine learning?"),
chat.AIMessage("Machine learning is..."),
chat.UserMessage("Give me an example")
]
response = chat.run("You are a helpful AI assistant", messages)
print(response)
# Embeddings
embedding = BedrockEmbedding()
vector = embedding.embed_text("Hello world")
print(f"Embedding dimension: {len(vector)}")
Ollama
from brollm import OllamaChat, OllamaEmbedding
# Chat completion
chat = OllamaChat(model_name="qwen3:8b")
messages = [
chat.UserMessage("Explain quantum computing"),
chat.AIMessage("Quantum computing uses..."),
chat.UserMessage("What are the applications?")
]
response = chat.run("You are a physics expert", messages)
print(response)
# Embeddings
embedding = OllamaEmbedding(model_name="nomic-embed-text")
vectors = embedding.embed_texts(["Hello", "World", "AI"])
print(f"Generated {len(vectors)} embeddings")
Multimodal Support (Bedrock)
from brollm import BedrockChat
chat = BedrockChat()
with open("image.jpg", "rb") as f:
image_bytes = f.read()
messages = [
chat.UserMessage("Describe this image", image_bytes=image_bytes, image_format="jpeg")
]
response = chat.run("You are a vision AI assistant", messages)
print(response)
Provider Switching
Switch between providers without changing your code structure:
# Use Bedrock
llm = BedrockChat(temperature=0.7)
# Switch to Ollama
llm = OllamaChat(temperature=0.7)
# Same interface for both
messages = [llm.UserMessage("Hello AI!")]
response = llm.run("You are helpful", messages)
Configuration
Bedrock
chat = BedrockChat(
model_name="us.meta.llama3-2-11b-instruct-v1:0",
temperature=0.7,
region_name="us-west-2",
aws_access_key_id="your-key", # Optional, uses default AWS config
aws_secret_access_key="your-secret", # Optional
aws_session_token="your-token" # Optional
)
Ollama
chat = OllamaChat(
model_name="qwen3:8b",
temperature=0.7,
base_url="http://localhost:11434" # Default Ollama endpoint
)
License
MIT 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 brollm-0.1.2.tar.gz.
File metadata
- Download URL: brollm-0.1.2.tar.gz
- Upload date:
- Size: 4.5 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.8.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
535b33da9065aa827ee5ec1beb1953712e6cf1e1180a3ed531a329bfa62cb66e
|
|
| MD5 |
caa1c7395b861bbaea3abf07ab1c4267
|
|
| BLAKE2b-256 |
b8770cda5d443819a9297b73fd0ba566f1a297f6070f5da428a2b7d22377095b
|
File details
Details for the file brollm-0.1.2-py3-none-any.whl.
File metadata
- Download URL: brollm-0.1.2-py3-none-any.whl
- Upload date:
- Size: 5.7 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: uv/0.8.4
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f9658f449c0da0de7d2f052648713e1a7dc3bed53abb3dc65fa7efed76c1a20b
|
|
| MD5 |
a3ce970844413dff226d8b1452f4e539
|
|
| BLAKE2b-256 |
ae55f165df969d7b70c62e8ff77df864e97fe6b59a3cd0ed2390aea66ef57cc7
|