aitelier 🎨🤖
An atelier for AI Agents running on your Mac thanks to mlx-llm.
How to install it
pip install aitelier
Why aitelier?
aitelier is not just another agent library — it’s my personal playground to learn how AI agents work
-
Learning by doing 🛠️: I want to understand every part of building AI agents. Instead of just using existing frameworks, I’m creating this library to figure out how things work from the ground up.
-
Exploration, not duplication 🧐:
aitelierisn’t meant to compete with other agent libraries. My goal is to learn, not to replace. Each update happens when I discover a new concept or method I want to explore. -
Deep understanding through practice 🧠: building from scratch helps me go beyond the surface. By recreating different paradigms, I can focus on truly understanding the details and improving my AI development skills.
aitelier will grow as I dive into new ideas and challenge myself to learn more. 🎯
I wrote an article about the motivation behind aitelier and how I implemented the first version of the library. You can read it here.
Agents as FSMs
In aitelier, agents are implemented as Finite State Machines (FSMs). Each agent has a set of states and transitions that define how the agent processes the input and produces the output.
Currently, aitelier supports two types of agents:
- Agent: A basic agent that takes a query and returns a response based on the available tools
- ReAct Agent: An agent the follows the Reasoning and Act paradigm paper with available tools
Agent Example
from aitelier.model import LLM
from aitelier.agents import Agent
from aitelier.tool import Tool
@Tool
def multiply(a: float, b: float) -> float:
return a * b
model = LLM("llama_3_2_3b_instruct")
agent = Agent(model=model, tools=[multiply])
agent("What is 3 multiplied by 4?")
ReAct Agent
The ReAct agent is a more advanced agent that follows the Reasoning and Act paradigm. The agent goes through the Think, Act, Observe states to produce the final answer based on a set of tools.
This is how you can use the ReAct Agent in aitelier:
from aitelier.model import LLM
from aitelier.agents import ReActAgent
from aitelier.tool import Tool
@Tool
def divide(a: float, b: float) -> float:
if b == 0:
return "Division by zero is not allowed"
return a / b
model = LLM("deepseek_r1_distill_llama_8b")
agent = ReActAgent(model=model, tools=[divide])
agent("What is 10 divided by 2?")
Supported Models
aitelier natively supports mlx-llm and Claude (with own API key)
Examples
Known Issues
aitelieris in active development, so expect bugs and breaking changes- The library is currently only tested on macOS
- All the agents depend on the LLM model - LLMs with fewer parameters are way more buggy than the larger ones since their behavior is less predictable - my advice is to use the largest models available
Metadata
Release files for aitelier 0.2.1
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Source distribution (sdist)
| File | Size | Uploaded | |
|---|---|---|---|
| aitelier-0.2.1.tar.gz | 17.3 kB | Details |
Built distribution (wheel)
| File | Interpreter | ABI | Platform | Reset |
|---|---|---|---|---|
| aitelier-0.2.1-py3-none-any.whl | Python 3 | none | any | Details |
Total release size: 38.4 kB
Release files / aitelier-0.2.1.tar.gz
| Download URL | aitelier-0.2.1.tar.gz |
|---|---|
| Size | 17.3 kB |
| Tags | Source |
|
SHA-256 checksum How to use checksums |
a4fc634a960ab3a32f396b0c92048eb2ec8180703e054eb74523e0733ad5bc8c
|
|
BLAKE2b-256 checksum How to use checksums |
1b3c3c3ef97fdb0396c265ef2754b0a38e80092fdb326b93deabe54ca8278264
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.10.6
|
Release files / aitelier-0.2.1-py3-none-any.whl
| Download URL | aitelier-0.2.1-py3-none-any.whl |
|---|---|
| Size | 21.1 kB |
| Tags | Python 3 |
|
SHA-256 checksum How to use checksums |
9ae2328bfed7442a05848cd8b416a841820c31bcfba45ea225af2b1bfdbd1519
|
|
BLAKE2b-256 checksum How to use checksums |
ee18587299ec92d2e391023d9a339ddecfc4e57e3e3a1ef89f1da9a854673d4c
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
No |
| Uploaded via |
twine/6.1.0 CPython/3.10.6
|