Skip to main content

First-party AI/LLM companion to the Lauren web framework

Project description

lauren-ai

lauren-ai: the first-party AI/LLM companion to the Lauren web framework. Agents, tools, memory, workflows, RAG, and evaluation in the same decorator-first, DI-driven programming model.

Test Lint CodeQL Coverage Package version Supported Python versions Downloads License Ruff Checked with mypy prek Discussions GitHub Stars


Documentation: https://ai.lauren-py.dev

Source Code: https://github.com/lauren-framework/lauren-ai


For AI Agents & Coding Assistants

Install all skills in one command

# Claude Code, Cursor, Copilot, Continue, Codex CLI -- auto-detected
npx skills add lauren-framework/lauren-ai

This copies the repository's skill packs into your agent's global skills directory (~/.claude/skills/, ~/.cursor/skills/, etc.). The next time your agent opens a lauren-ai project it has pre-loaded guidance on agents, tools, memory, evaluation, workflows, and Lauren integration patterns.

Resource What it contains
llms.txt 2 KB overview -- start here
llms-full.txt Complete reference -- all decorators, memory, guardrails, teams, and common errors
AGENTS.md By-task lookup, common errors, skills index, definition of done
CLAUDE.md Architecture invariants, commands, pattern selection, codemap navigation
skills/ Copy-paste skill guides covering common lauren-ai tasks

Skills index: skills/


lauren-ai is the first-party AI/LLM companion to the Lauren web framework. It brings large language model agents into the same decorator-first, DI-driven, module-scoped programming model the rest of Lauren uses. It is built on these core ideas:

  • Decorator-first metadata. Agents, tools, teams, guardrails, prompt templates, and memory behaviors are declared with decorators and metadata rather than custom runtime glue.
  • Module-scoped integration. LLMModule.for_root() and AgentModule.for_root() plug into Lauren's module system so transports, runners, tools, and stores compose like the rest of your application.
  • Provider-agnostic execution. Anthropic, OpenAI, Ollama, LiteLLM, and MockTransport all flow through a unified transport layer and consistent agent runner API.
  • AI-ready by default. The public surface is mirrored in llms.txt, llms-full.txt, AGENTS.md, CLAUDE.md, and skills/ so both human and AI contributors can navigate the package quickly.

Features

  • Provider-agnostic transport - Anthropic, OpenAI, Ollama, LiteLLM, and MockTransport for zero-network-call tests.
  • @tool() decorator - Function-form and class-form (DI-injected), with JSON Schema auto-generated from type hints and docstrings.
  • @agent() decorator - Autonomous agentic loop with use_tools(), lifecycle hooks, retry/error policies, and budget guards.
  • Four memory tiers - ShortTermMemory, ConversationStore, UserMemoryStore plus @remember(), and vector-backed retrieval for RAG.
  • Typed extractors - Agent[T], Completion[T], Embed[T], and StreamCompletion[T] as Lauren handler parameters.
  • Module factories - LLMModule.for_root() and AgentModule.for_root() feel like the rest of Lauren's DI-first module configuration.
  • Knowledge Base and agentic RAG - KnowledgeBase with document loaders, hybrid retrieval, and kb.as_tool().
  • Structured workflows - Workflow, Step, Parallel, Condition, and Loop for deterministic multi-agent pipelines.
  • Tool enhancements - Human-in-the-loop confirmation, pre/post hooks, and result caching.
  • Extended thinking - First-class support for Claude extended thinking and OpenAI reasoning models.
  • Evaluation framework - AccuracyEval, AgentJudge, TrajectoryEval, and PerformanceEval.
  • Signals - ModelCallComplete, ToolCallComplete, and AgentRunComplete for observability.
  • Pre-built skills - WebSearchTool, CodeExecutionTool, and HttpFetchTool.
  • Testable - Zero API calls needed in unit tests via MockTransport.

Requirements

Python 3.11, 3.12, 3.13, and 3.14 are supported. Core dependencies:

  • Lauren - the host web framework and DI/module runtime.
  • Pydantic - structured models, schemas, and validation.
  • httpx - provider HTTP transport.
  • anyio - concurrency primitives and async portability.

Installation

# Core (no LLM provider extras)
pip install lauren-ai

# With Anthropic
pip install "lauren-ai[anthropic]"

# With OpenAI
pip install "lauren-ai[openai]"

# With everything
pip install "lauren-ai[all]"

Quick start

import os

from pydantic import BaseModel

from lauren import LaurenFactory, controller, module, post
from lauren.types import Json
from lauren_ai import (
    Agent,
    AgentModule,
    AgentRunner,
    InMemoryConversationStore,
    LLMConfig,
    LLMModule,
    agent,
    tool,
    use_tools,
)


@tool()
async def get_weather(city: str) -> dict:
    """Get current weather for a city.

    Args:
        city: The city name.
    """
    return {"city": city, "temperature_c": 18, "condition": "cloudy"}


# @agent() is outermost; @use_tools() is below it (applied first)
@agent(model="claude-opus-4-6", system="You are a helpful travel assistant.")
@use_tools(get_weather)
class TravelAgent: ...


class AskRequest(BaseModel):
    question: str


@controller("/travel")
class TravelController:
    def __init__(self, runner: AgentRunner) -> None:
        self._runner = runner

    @post("/ask")
    async def ask(self, body: Json[AskRequest], agent: Agent[TravelAgent]) -> dict:
        response = await self._runner.run(agent, body.question)
        return {"answer": response.content, "turns": response.turns}


LLMProviderModule = LLMModule.for_root(
    LLMConfig.for_anthropic(api_key=os.environ["ANTHROPIC_API_KEY"])
)
AIAgentModule = AgentModule.for_root(
    agents=[TravelAgent],
    tools=[get_weather],
    conversation_store=InMemoryConversationStore(),  # history persists across requests
)


@module(controllers=[TravelController], imports=[LLMProviderModule, AIAgentModule])
class AppModule: ...


app = LaurenFactory.create(AppModule)
uvicorn main:app --reload

Development

# Install with dev dependencies
uv sync --extra dev --extra anthropic

# Run tests
uv run nox -s tests

# Run linter
uv run nox -s lint

# Run typecheck
uv run nox -s typecheck

# Build docs
uv run nox -s docs

License

MIT - see 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

lauren_ai-1.0.0.tar.gz (1.3 MB view details)

Uploaded Source

Built Distribution

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

lauren_ai-1.0.0-py3-none-any.whl (194.0 kB view details)

Uploaded Python 3

File details

Details for the file lauren_ai-1.0.0.tar.gz.

File metadata

  • Download URL: lauren_ai-1.0.0.tar.gz
  • Upload date:
  • Size: 1.3 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for lauren_ai-1.0.0.tar.gz
Algorithm Hash digest
SHA256 3b0e9fc06da3d7064e46fe4c82bebe010eedf99927247aa6198e1eb92e2b11fd
MD5 217227ccd3aaf253b490d4eb3f0121db
BLAKE2b-256 9312d241d36dba0d5cd2cc32cb8c76472514ec958b5b9526f4c38a3de2cadf23

See more details on using hashes here.

Provenance

The following attestation bundles were made for lauren_ai-1.0.0.tar.gz:

Publisher: release.yml on lauren-framework/lauren-ai

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

File details

Details for the file lauren_ai-1.0.0-py3-none-any.whl.

File metadata

  • Download URL: lauren_ai-1.0.0-py3-none-any.whl
  • Upload date:
  • Size: 194.0 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? Yes
  • Uploaded via: twine/6.1.0 CPython/3.13.12

File hashes

Hashes for lauren_ai-1.0.0-py3-none-any.whl
Algorithm Hash digest
SHA256 06d8974c1eba09f251f31a07df080bce654b38990ba2a3020c5e19c8b43e917a
MD5 8de18a92b314387f841ae59a74de40f0
BLAKE2b-256 5225d8d9c1163fc02d994a6d72605312614cba071699c5271b67ee730bd28919

See more details on using hashes here.

Provenance

The following attestation bundles were made for lauren_ai-1.0.0-py3-none-any.whl:

Publisher: release.yml on lauren-framework/lauren-ai

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