Skip to main content

Infimum core library: base, engine, database, AI (LLM/VLM/speech), utils

Project description

infimum-core

Infimum core library: base entities, engine (DI/context/startup), database layer (PostgreSQL, Milvus, Qdrant, MongoDB), AI (LLM, VLM, speech, embeddings), and utilities.

Documentation: From repo root run pip install -e ./core && pip install -r docs/requirements.txt && mkdocs serve, then open http://127.0.0.1:8000. Or run mkdocs build to output the static site to site/.

Publish

git tag v1.2.21
git push origin v1.2.21

# Install build tools if you haven't
pip install build twine

# Build wheel and source distribution
python -m build

# Option A: Upload directly
python -m twine upload dist/infimum-core-1.2.21*

# Option B: Upload to TestPyPI first (recommended for testing)
python -m twine upload --repository testpypi dist/infimum-core-1.2.21*

pip install infimum-core==1.2.21

Install

From PyPI:

pip install infimum-core

From GitHub (default branch):

pip install "git+https://github.com/inf-codebase/infimum.git#subdirectory=infimum"

From a GitHub release: use the release tag (e.g. v1.2.20) with @tag before #subdirectory:

pip install "git+https://github.com/inf-codebase/infimum.git@v1.2.20#subdirectory=infimum"

With optional extras:

# All database backends
pip install "infimum-core[all-db]"

# LLM/Agent stack
pip install "infimum-core[llm]"

# Security features
pip install "infimum-core[security]"

# All extras
pip install "infimum-core[all-db,security,llm]"

Local development: pip install -e . from the infimum directory. With uv: uv sync from the infimum directory.

Optional extras

Extra Description
mongo MongoDB support (pymongo, motor)
milvus Milvus vector database
qdrant Qdrant vector database
all-db All database backends (mongo, milvus, qdrant)
security JWT, password hashing (bcrypt, python-jose)
llm LLM/agent stack (LangChain, LangGraph)

Usage

Basic Imports

from infimum import Engine
from infimum.base.entity import BaseEntity, Document
from infimum.database import DatabaseManager, VectorIndexConfig
from infimum.engine import context, startup
from infimum.utils import string_utils, auto_config

Example 1: Define Entities

from infimum.base.entity import BaseEntity

class User(BaseEntity):
    """User entity with base fields."""
    name: str
    email: str
    age: int = None

# Create instance
user = User(name="John Doe", email="john@example.com", age=30)
print(user.model_dump())

Example 2: Initialize Engine with Dependency Injection

from infimum.engine import Engine

# Create engine instance
engine = Engine()

# Register services
engine.register("database", DatabaseManager(...))
engine.register("embedder", EmbeddingProvider(...))

# Retrieve services
db = engine.get("database")

Example 3: Database Operations

from infimum.database import DatabaseManager, VectorIndexConfig

# Create database manager
db = DatabaseManager(
    db_type="postgres",
    connection_string="postgresql://user:password@localhost/dbname"
)

# Create a table/collection
db.create_collection("users", User)

# Insert document
user = User(name="Alice", email="alice@example.com", age=28)
db.insert("users", user)

# Query
results = db.query("users", {"name": "Alice"})

Example 4: Vector Database (Embeddings)

from infimum.database import VectorIndexConfig
from infimum.ai.embeddings import OpenAIEmbeddingProvider

# Create embeddings
embedder = OpenAIEmbeddingProvider(api_key="sk-...")

# Create vector index
vector_config = VectorIndexConfig(
    collection_name="documents",
    dimension=1536,
    metric_type="cosine"
)

# Embed and search
text = "What is artificial intelligence?"
embedding = embedder.embed(text)

# Search similar vectors
results = db.search_vectors("documents", embedding, top_k=5)

Example 5: LLM Integration

from infimum.ai.llm import LLMProvider
from langchain_openai import ChatOpenAI

# Initialize LLM
llm = ChatOpenAI(model="gpt-4", api_key="sk-...")

# Simple generation
response = llm.invoke("What is the capital of France?")
print(response.content)

# With context from database
context = db.query("documents", {"topic": "France"})
prompt = f"Based on {context}, answer: What is the capital of France?"
response = llm.invoke(prompt)

Example 6: Speech Processing

from infimum.ai.speech.providers import MedASRProvider

# Initialize speech provider
speech_provider = MedASRProvider(api_key="...")

# Transcribe audio
audio_file = "speech.wav"
transcript = speech_provider.transcribe(audio_file)
print(f"Transcription: {transcript}")

Example 7: Auto Configuration

from infimum.utils.auto_config import AutoConfig

# Auto-load configuration from environment or config file
config = AutoConfig.from_env()

# Access config values
db_url = config.get("DATABASE_URL")
api_key = config.get("OPENAI_API_KEY")

Example 8: Context Management

from infimum.engine import context

# Set context values (useful for multi-tenant apps)
context.set("user_id", "user_123")
context.set("tenant_id", "tenant_456")

# Retrieve context values
user_id = context.get("user_id")

Example 9: Complete Application

from infimum import Engine
from infimum.base.entity import BaseEntity
from infimum.database import DatabaseManager
from infimum.ai.llm import LLMProvider
from langchain_openai import ChatOpenAI

# Define entity
class Article(BaseEntity):
    title: str
    content: str
    author: str

# Initialize components
engine = Engine()
db = DatabaseManager(db_type="postgres", connection_string="...")
llm = ChatOpenAI(model="gpt-4", api_key="...")

# Register with engine
engine.register("database", db)
engine.register("llm", llm)

# Use throughout app
db_service = engine.get("database")
db_service.insert("articles", Article(title="AI Guide", content="...", author="John"))

llm_service = engine.get("llm")
summary = llm_service.invoke("Summarize this article: ...")

Subpackages

  • infimum.base — Base entities, registry, repository interfaces
  • infimum.engine — Dependency injection, context management, startup hooks, security (optional)
  • infimum.database — Database managers and interfaces (PostgreSQL, Milvus, Qdrant, MongoDB)
  • infimum.ai — LLM, VLM, speech, embeddings, data loaders, preprocessing
  • infimum.utils — Configuration, validation, helpers, Redis client, etc.

Configuration

Set environment variables for database connections:

export DATABASE_URL="postgresql://user:password@localhost/dbname"
export OPENAI_API_KEY="sk-..."
export MILVUS_URL="http://localhost:19530"

Then load with auto_config:

from infimum.utils.auto_config import AutoConfig

config = AutoConfig.from_env()
db_url = config.get("DATABASE_URL")

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

infimum_core-1.2.21.tar.gz (206.1 kB view details)

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

infimum_core-1.2.21-py3-none-any.whl (270.7 kB view details)

Uploaded Python 3

File details

Details for the file infimum_core-1.2.21.tar.gz.

File metadata

  • Download URL: infimum_core-1.2.21.tar.gz
  • Upload date:
  • Size: 206.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.1

File hashes

Hashes for infimum_core-1.2.21.tar.gz
Algorithm Hash digest
SHA256 5659242a8a4294e9261123f773c386b531ec75c8245496495929cda64035269e
MD5 52ded6e520878d6ee5aa7eed79bdb9bb
BLAKE2b-256 95889478974ae92b48416d9d8fc331fb9865183842dfb6ca7b2936450c38c041

See more details on using hashes here.

File details

Details for the file infimum_core-1.2.21-py3-none-any.whl.

File metadata

  • Download URL: infimum_core-1.2.21-py3-none-any.whl
  • Upload date:
  • Size: 270.7 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.13.1

File hashes

Hashes for infimum_core-1.2.21-py3-none-any.whl
Algorithm Hash digest
SHA256 5586ba4f8d0cdd005aa56ad9668895e50e2ef0699bc15c4dd5d55a6122c9b288
MD5 3b9c86125461d49987fa616dc191f032
BLAKE2b-256 198d6793d41a2e72e62117cf2994736da3808e4674fdad6b4cbf49c73f17cd8e

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page