Packages

An Elixir framework for composing autonomous AI agent workflows, using a mixture of LLM backends.

Current section

Files

Jump to
shifts lib shifts.ex
Raw

lib/shifts.ex

defmodule Shifts do
@moduledoc """
![License](https://img.shields.io/github/license/lebrunel/shifts?color=informational)
Shifts is a framework for composing autonomous **agent** workflows, using a
mixture of LLM backends.
- πŸ€– **Automate your chores** - have AI agents handle the mundane so you can focus on the things you care about.
- πŸ’ͺ🏻 **Agents with superpowers** - create tools, so your agents can interact with the Web or internal APIs and systems.
- 🧩 **Flexible and adaptable** - easily compose and modify workflows to suit your specific needs.
- πŸ€— **Delightful simplicity** - pipe instructions together using just plain English and intuitive APIs.
- 🎨 **Mix and match** - Plug into different LLMs even within the same workflow so you are always using the right tool for job.
### Current dev status
| Version | Stability | Status |
| --------- | -----------------------------------------------------------| ------------------- |
| `0.0.x` | For the brave and adventurous - expect breaking changes. | **πŸ‘ˆπŸ» We are here!** |
| `0.x.0` | Focus on better docs with less frequent breaking changes. | |
| `1.0.0` + | πŸš€ Launched. Great docs, great dev experience, stable APIs. | |
### Currently supported LLMs
- Anthropic / Claude 3 - **Recommended**
- Ollama - Hermes Pro
## Installation
The package can be installed by adding `shifts` to your list of dependencies
in `mix.exs`.
```elixir
def deps do
[
{:shifts, "~> #{Keyword.fetch!(Mix.Project.config(), :version)}"}
]
end
```
Documentation to follow...
"""
alias Shifts.{Shift.Runner, ShiftResult}
@doc """
TODO
"""
@spec start_shift(module(), term(), keyword()) :: ShiftResult.t()
def start_shift(shift_mod, input, opts \\ []) do
shift_mod
|> Runner.init(input, opts)
|> Runner.run()
end
end