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-2.0.0.tar.gz (342.0 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-2.0.0-py3-none-any.whl (111.1 kB view details)

Uploaded Python 3

File details

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

File metadata

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

File hashes

Hashes for substrai_lambdallm-2.0.0.tar.gz
Algorithm Hash digest
SHA256 a04c26cf7c71bfc0045eeb34381074b3e1e181779b4070e47cd603a168dc80c4
MD5 e9a6ecfc488efd8e24f2c93fd7429ccd
BLAKE2b-256 569937e3bd709feff1b5023800875a7ff2858ec26df4d8de46912b4864706d16

See more details on using hashes here.

File details

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

File metadata

File hashes

Hashes for substrai_lambdallm-2.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 4bae4ecd491206c297fafca30ba50b732a744a55e7c5ee7dd6f557b361528b60
MD5 fcfa431eea55076d93d33015a40d592e
BLAKE2b-256 b912fd68508aafc65e45c28610eec461f3ef7f96c6e8d88cef92e95e97fbefd8

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