Layered agents!
Project description
Lasagna AI
-
🥞 Layered agents!
- Agents for your agents!
- Tool-use and layering FTW 💪
- Ever wanted a recursive agent? Now you can have one! 🤯
- Parallel tool-calling by default.
- Fully asyncio.
- 100% Python type hints.
- Functional-style 😎
- (optional) Easy & pluggable caching! 🏦
-
🚣 Streamable!
- Event streams for everything.
- Asyncio generators are awesome.
-
🗃️ Easy database integration!
- Don't rage when trying to store raw messages and token counts. 😡 🤬
- Yes, you can have both streaming and easy database storage.
-
↔️ Provider/model agnostic and interoperable!
- Native support for OpenAI, Anthropic, NVIDIA NIM/NGC (+ 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
pip install -U lasagna-ai[openai,anthropic]
Used By
Lasagna is used in production by:
Quickstart
Here is the most simple agent (it doesn't add anything to the underlying model). More complex agents would add tools and/or use layers of agents, but not this one! Anyway, run it in your terminal and you can chat interactively with the model. 🤩
from lasagna import (
bind_model,
build_most_simple_agent,
)
from lasagna.tui import (
tui_input_loop,
)
from typing import List, Callable
import asyncio
from dotenv import load_dotenv; load_dotenv()
MODEL_BINDER = bind_model('openai', 'gpt-3.5-turbo-0125')
async def main() -> None:
system_prompt = "You are grumpy."
tools: List[Callable] = []
my_agent = build_most_simple_agent(tools)
my_bound_agent = MODEL_BINDER(my_agent)
await tui_input_loop(my_bound_agent, system_prompt)
if __name__ == '__main__':
asyncio.run(main())
Want to add your first tool? Cool! 😎 Let's do it:
TODO
Debug Logging
This library logs using Python's builtin logging
module. It logs mostly to INFO
, so here's a snippet of code you can put in your app to see those traces:
import logging
logging.basicConfig(
level=logging.INFO,
format='%(asctime)s - %(name)s - %(levelname)s - %(message)s',
)
# ... now use Lasagna as you normally would, but you'll see extra log traces!
Special Thanks
Special thanks to those who inspired this library:
- Numa Dhamani (buy her book: Introduction to Generative AI)
- Dave DeCaprio's voice-stream library
License
lasagna-ai
is distributed under the terms of the MIT license.
Joke Acronym
Layered Agents with toolS And aGeNts and Ai
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Hashes for lasagna_ai-0.7.0-py3-none-any.whl
Algorithm | Hash digest | |
---|---|---|
SHA256 | abdd8cfa49d4a2de76252b6e90816628a43531a11fe0d58dacfaaf8c88aedffc |
|
MD5 | ca5d365d82e03ae4539074d6b5b2ce82 |
|
BLAKE2b-256 | 3ed8dba8b6583d5c9347b7659ce87370397f504ea7d183e1643de7b912ae50b7 |