Skip to main content

A Django-based library for seamless LLM integration

Project description

Django Chain

A Django library for seamless LangChain integration, making it easy to add LLM capabilities to your Django applications.

Python pre-commit License: MIT pre-commit Ruff documentation

codecov GitHub Actions Workflow Status


This is a reusable Django application that provides a robust framework for defining, managing, and executing multi-step Large Language Model (LLM) workflows. It offers a set of API endpoints to interact with prompts, workflows, and their execution, enabling dynamic LLM applications without direct code changes for each new workflow. You can find the documentation here.

[!WARNING] This project is currently in early alpha and is still a work in progress. You could possibly experience specific builds failing to run, loss of data between upgrades and a lot of bugs. It is highly encouraged you wait for a stable release.

Features

  • Dynamic prompt and workflow management out of the box
  • Easy integration with existing Django models and views
  • Built-in utilities for common LLM tasks
  • Type-safe and well-documented API
  • Comprehensive test coverage
  • Customizable LLM logging and telemetry
  • Production-ready with proper error handling

Core Concepts

  • Prompt: Represents a configurable template for generating LLM prompts. This can be a HumanMessagePromptTemplate, SystemMessagePromptTemplate, or ChatPromptTemplate.
  • Workflow: A sequence of ordered steps, each defining an action to be performed (e.g., format a prompt, call an LLM, parse JSON output, use a tool). Workflows orchestrate the flow of data through these steps.

Prerequisites

  1. Python 3.9+
  2. Django 4.0+

Installation

pip install django-chain

Add django_chain to your INSTALLED_APPS:

INSTALLED_APPS = [
    ...
    'django_chain',
    ...
]

Add you LLM model configurations:

DJANGO_LLM_SETTINGS = {
    "DEFAULT_LLM_PROVIDER": "fake",
    "DEFAULT_CHAT_MODEL": {
        "name": "fake-model",
        "temperature": 0.7,
        "max_tokens": 1024,
        "api_key": "fake key",
    },
    "DEFAULT_EMBEDDING_MODEL": {
        "provider": "fake",
        "name": "fake-embedding",
    },
    "VECTOR_STORE": {
        "TYPE": "pgvector",
        "PGVECTOR_COLLECTION_NAME": "test_documents",
    },
    "ENABLE_LLM_LOGGING": True,
    "LLM_LOGGING_LEVEL": "DEBUG",
    "MEMORY": {"PROVIDER": "django"},  # Use Django ChatHistory model as primary storage
    "CHAIN": {
        "DEFAULT_OUTPUT_PARSER": "str",
        "ENABLE_MEMORY": True,
    },
    "CACHE_LLM_RESPONSES": True,
    "CACHE_TTL_SECONDS": 3600,
}

Run migrations:

python manage.py makemigrations django_chain
python manage.py migrate django_chain

Quick Start

Add these urls to your app:

# your_project/urls.py
from django.contrib import admin
from django.urls import path, include

urlpatterns = [
    path('api/', include('django_chain.urls')), # Or your chosen app name
]

Development

  1. Clone the repository
  2. Install development dependencies:
    pip install -e ".[dev]"
    
  3. Install pre-commit hooks:
    pre-commit install
    
  4. Run tests:
    pytest
    

License

MIT License

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

django_chain-0.2.0a4.tar.gz (107.4 kB view details)

Uploaded Source

Built Distribution

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

django_chain-0.2.0a4-py3-none-any.whl (49.2 kB view details)

Uploaded Python 3

File details

Details for the file django_chain-0.2.0a4.tar.gz.

File metadata

  • Download URL: django_chain-0.2.0a4.tar.gz
  • Upload date:
  • Size: 107.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for django_chain-0.2.0a4.tar.gz
Algorithm Hash digest
SHA256 28b6c05975e1ada6b37cbec403125c607f527835e849cbca50f36250b771d80e
MD5 360ac267f5545daf45bc00c2f7dc1696
BLAKE2b-256 6f43d20aa699d0d155c5969ce0c9b8d0b8387be5579984f7b50ec77ca7d1d299

See more details on using hashes here.

Provenance

The following attestation bundles were made for django_chain-0.2.0a4.tar.gz:

Publisher: publish.yml on Brian-Kariu/django-chain

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

File details

Details for the file django_chain-0.2.0a4-py3-none-any.whl.

File metadata

  • Download URL: django_chain-0.2.0a4-py3-none-any.whl
  • Upload date:
  • Size: 49.2 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.12.9

File hashes

Hashes for django_chain-0.2.0a4-py3-none-any.whl
Algorithm Hash digest
SHA256 feb3c49c4bba45f956afd225f899021754a5adb3216967391001bdc866a1fb45
MD5 00ea6e86c7bbbdff3a52b5efbcf27cf9
BLAKE2b-256 43d36f7ce691c0086fddc60a63cea8ec50e7e425e56f57b0ad99c95a3b7b6dfd

See more details on using hashes here.

Provenance

The following attestation bundles were made for django_chain-0.2.0a4-py3-none-any.whl:

Publisher: publish.yml on Brian-Kariu/django-chain

Attestations: Values shown here reflect the state when the release was signed and may no longer be current.

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