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/.

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.20.tar.gz (205.0 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.20-py3-none-any.whl (270.2 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: infimum_core-1.2.20.tar.gz
  • Upload date:
  • Size: 205.0 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.20.tar.gz
Algorithm Hash digest
SHA256 54c4c0cb7b27b32a4a0b7ed768b1fd0b1c0d1cee097287fbf4e8364c21aa1ca6
MD5 65cdae79d19b80ae5eee258101c25083
BLAKE2b-256 5c6f8dfa1c2e551ddf5e7795dee672f490cf01f365e269f2fcafa8f24a0d9bdf

See more details on using hashes here.

File details

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

File metadata

  • Download URL: infimum_core-1.2.20-py3-none-any.whl
  • Upload date:
  • Size: 270.2 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.20-py3-none-any.whl
Algorithm Hash digest
SHA256 da43ae862b943a0a17586024118fcb7b378860b588c3921ddea057e7e382c9e0
MD5 a6aee00304827b2d58cfabdc0824b2cd
BLAKE2b-256 7c509581aa618b8e95d8b266c13ef39d4fba8f72ec9e4721dacc4a7053b4d186

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