![Lasagna AI Logo](https://raw.githubusercontent.com/Rhobota/lasagna-ai/main/logos/lasagna-ai.png)

# Lasagna AI

[![PyPI - Version](https://img.shields.io/pypi/v/lasagna-ai.svg)](https://pypi.org/project/lasagna-ai)
[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/lasagna-ai.svg)](https://pypi.org/project/lasagna-ai)
![Test Status](https://github.com/Rhobota/lasagna-ai/actions/workflows/test.yml/badge.svg?branch=main)

- 🥞  **Layered agents!**
  - Agents for your agents!
  - Tool-use and layering FTW 💪
  - Built-in parallel tool-calling.
  - Fully asyncio.
  - Ever wanted a recursive agent? 🤯
  - Strongly typed (if you're into that).

- 🚣  **Streamable!**
  - Event streams for everything.

- 🗃️ **Easy database integration!**
  - Don't rage when trying to store raw messages and token counts. 😡 🤬

- ↔️ **Provider/model agnostic and interoperable!**
  - Native support for OpenAI, Anthropic, MistralAI (+ more to come).
  - Message representations are canonized. 😇
  - Supports vision!
  - Easily build committees!
  - Swap providers or models mid-conversation.
  - Delegate tasks among model providers or model sizes.
  - Parallelize all the things.

-----

## Table of Contents

- [Installation](#installation)
- [License](#license)

## Installation

```console
pip install -U lasagna-ai[openai,anthropic]
```

## License

`lasagna-ai` is distributed under the terms of the [MIT](https://spdx.org/licenses/MIT.html) license.
