Skip to main content

Serverless-native LLM orchestration framework for AWS Lambda

Project description

LambdaLLM

Serverless-native LLM orchestration framework for AWS Lambda.

Built by SubstrAI — Open-source GenAI frameworks for serverless infrastructure.

PyPI version Tests License: MIT Python 3.10+ Documentation codecov npm version

The Problem

Existing LLM frameworks (LangChain, LlamaIndex) assume long-running servers. They break on Lambda:

  • Cold starts: 500MB+ dependency trees add seconds
  • Stateless: No conversation memory between invocations
  • 15-min timeout: Long agent loops crash
  • 250MB limit: LangChain alone exceeds this

The Solution

LambdaLLM is purpose-built for Lambda's constraints:

from lambdallm import handler, Prompt, Model

summarize = Prompt(
    template="Summarize in {max_words} words:\n\n{document}",
    output_schema={"summary": str, "key_points": list}
)

@handler(model=Model.CLAUDE_3_HAIKU)
def lambda_handler(event, context):
    return summarize.invoke(
        _context=context,
        document=event["body"]["text"],
        max_words=100
    )

Features

  • < 5MB package size (vs 400MB+ for LangChain)
  • Cold-start optimized — lazy imports, connection pooling
  • DynamoDB-native state — conversation memory that survives stateless execution
  • Cost-aware routing — auto-select cheapest model that meets quality threshold
  • Multi-step chains — declarative pipelines with checkpoint/resume on timeout
  • AI Agents — ReAct-style agents with tool sandboxing and timeout awareness
  • One-command deploylambdallm deploy generates all AWS infrastructure
  • Timeout handling — checkpoint/resume for long chains
  • A/B testing — route traffic between prompt versions, compare metrics
  • Full observability — X-Ray tracing, CloudWatch metrics, cost tracking built-in

Installation

Python (primary)

pip install substrai-lambdallm

With AWS Bedrock support (recommended):

pip install "substrai-lambdallm[bedrock]"

With all optional dependencies:

pip install "substrai-lambdallm[all]"

npm

npm install substrai-lambdallm

Quick Start

Python (full CLI experience)

# Install
pip install "substrai-lambdallm[bedrock]"

# Scaffold a new project (creates handler, config, tests)
lambdallm init my-project --template basic
cd my-project

# Start local development server
lambdallm dev

# Test your handler
curl -X POST http://localhost:3000 -d '{"text": "Hello world"}'

# Run tests
lambdallm test

# Deploy to AWS
lambdallm deploy --env dev

TypeScript (runtime SDK)

# Install
npm install substrai-lambdallm @aws-sdk/client-bedrock-runtime

Create your handler:

// handler.ts
import { handler, Model } from 'substrai-lambdallm';

export const lambdaHandler = handler(
  { model: Model.CLAUDE_3_HAIKU, maxRetries: 3 },
  async (event, context) => {
    const body = JSON.parse(event.body || \'{}\');
    const result = await context.invoke('Summarize: {text}', { text: body.text });
    return { statusCode: 200, body: { result, cost: context.totalCost } };
  }
);

Deploy with SAM or CDK:

sam build && sam deploy --guided

Key Differences

Capability Python TypeScript
CLI (init, dev, deploy) \u2705 Included \u274c Use SAM/CDK directly
Project scaffolding lambdallm init Manual setup
Local dev server lambdallm dev sam local start-api
Runtime SDK \u2705 Full \u2705 Full
Chains + Agents \u2705 Full \u2705 Full
Observability \u2705 Full \u2705 Full

Available Templates

lambdallm init my-app --template basic   # Simple LLM handler
lambdallm init my-app --template chat    # Multi-turn chat with memory
lambdallm init my-app --template agent   # AI agent with tools
lambdallm init my-app --template rag     # Retrieval-augmented generation

Core Concepts

Handlers

from lambdallm import handler, Model

@handler(model=Model.CLAUDE_3_HAIKU, timeout_strategy="checkpoint")
def lambda_handler(event, context):
    result = context.invoke("Summarize: {text}", text=event["body"]["text"])
    return {"statusCode": 200, "body": result}

Chains

from lambdallm import Chain, Step

pipeline = Chain(
    name="analysis",
    steps=[
        Step("extract", prompt="Extract entities from: {input}"),
        Step("classify", prompt="Classify: {extract.output}"),
        Step("summarize", prompt="Summarize: {classify.output}"),
    ],
    timeout_strategy="checkpoint",
)

Agents

from lambdallm.agents import Agent, Tool

@Tool(description="Search the knowledge base")
def search(query: str, max_results: int = 5) -> list:
    # your implementation
    pass

agent = Agent(
    name="researcher",
    system_prompt="You are a research assistant.",
    tools=[search],
    max_iterations=5,
    timeout_buffer=30,
)

CLI Commands

Command Description
lambdallm init Scaffold a new project
lambdallm dev Start local development server
lambdallm deploy Deploy to AWS (SAM/CDK)
lambdallm test Run tests
lambdallm cost Show cost summary and forecast
lambdallm status Check deployment status
lambdallm rollback Rollback to previous version
lambdallm eject Export raw SAM/CDK templates
lambdallm logs Tail CloudWatch logs
lambdallm metrics Show key metrics

Documentation

License

MIT — see LICENSE

Author

Gaurav Kumar Sinha — Founder, SubstrAI

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

substrai_lambdallm-1.7.0.tar.gz (325.2 kB view details)

Uploaded Source

Built Distribution

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

substrai_lambdallm-1.7.0-py3-none-any.whl (98.4 kB view details)

Uploaded Python 3

File details

Details for the file substrai_lambdallm-1.7.0.tar.gz.

File metadata

  • Download URL: substrai_lambdallm-1.7.0.tar.gz
  • Upload date:
  • Size: 325.2 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.14.4

File hashes

Hashes for substrai_lambdallm-1.7.0.tar.gz
Algorithm Hash digest
SHA256 e917ebacfc3480a5d535f4df1272084dffecac91a0b5936c6f376e7875b945fd
MD5 235e7b965239f3685296c94144a738bc
BLAKE2b-256 bd00526e03b6345b5136c9bb8cfcb66fb6dc557b5f9ac7c03f47009ed1eb671b

See more details on using hashes here.

File details

Details for the file substrai_lambdallm-1.7.0-py3-none-any.whl.

File metadata

File hashes

Hashes for substrai_lambdallm-1.7.0-py3-none-any.whl
Algorithm Hash digest
SHA256 ae54d965c858de4d64078b0316ac70ac93184ecd261cc7aaa746097b00ee3fdc
MD5 58b80257964d711d31c89aac3e8df408
BLAKE2b-256 e64d10349ca83f8f502c895ad5c5d14bb3bcff3706d9ed33c97c0b314596b5c5

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