5 releases
0.1.0 | Sep 27, 2024 |
---|---|
0.0.10 | Sep 24, 2024 |
0.0.9 | Sep 23, 2024 |
0.0.2 | Sep 22, 2024 |
0.0.1 | Sep 16, 2024 |
#242 in Command line utilities
55 downloads per month
67KB
1.5K
SLoC
devai - Command Agent File Runner
# install
cargo install devai
# Will fix all code comment in all matching file
devai run proof-comments -f "./src/m*.rs"
# How: It will run the installed Command Agent file ".devai/defaults/proof-comments.md" on all source files matching "./src/m*.rs"
# IMPORTANT: Make sure everything is committed before usage.
ONE Command Agent Markdown File that defines the full agent flow:
items
get expanded from the-f
file matches (more ways to generate items later).-> Data
scripting for getting full control over what data to put in the context.-> Instruction
templating (Handlebars) to have full control over the prompt layout.-> Output
scripting to get full control over how to manage the AI output.
Data
, Instruction
, Output
(and more later) are all defined in a single file (see below), which is called the Command Agent File
Supports all models/providers supported by the genai crate (see below for more information).
You can customize the model and concurrency in .devai/config.toml
.
IMPORTANT: Make sure to run this command line when everything is committed, so that overwritten files can be reverted easily.
STILL IN HEAVY DEVELOPMENT... But it's starting to get pretty cool.
P.S. If possible, try to refrain from publishing devai-custom
type crates, as this might be more confusing than helpful. However, any other name is great.
API Keys
devai uses the genai crate, and therefore the simplest way to provide the API keys for each provider is via environment variables in the terminal when running devai.
Here are the environment variable names used:
OPENAI_API_KEY
ANTHROPIC_API_KEY
MODEL_GEMINI
GEMINI_API_KEY
GROQ_API_KEY
COHERE_API_KEY
Usage & Concept
Usage: devai run proof-comments -f "./src/main.rs"
(or have any glob like -f "./src/**/*.rs"
)
- This will initialize the
.devai/defaults
folder with the "Command Agent Markdown"proof-comments.md
(see .devai/defaults/proof-comments.md`) and run it with genai as follows:-f "./src/**/*.rs"
: The-f
command line argument takes a glob and will create an "item" for each file, which can then be accessed in the# Data
scripting section.# Data
, which contains arhai
block that will get executed with theitem
value (the file reference in our example above).- With
rhai
, there are some utility functions to list files, load file content, and such that can then be used in the instruction section.
- With
# Instruction
, which is a Handlebars template section, has access toitem
as well as the output of the# Data
section, accessible as thedata
variable.- This will be sent to the AI.
# Output
, which now executes anotherrhai
block, using theitem
,data
, andai_output
, which is the string returned by the AI.- It can save files in place or create new files.
- Later, it will even be able to queue new devai work.
- By default, this will run with
gpt-4o-mini
and look for theOPENAI_API_KEY
environment variable. - It supports all AI providers supported by the genai crate.
- Here are the environment variable names per provider:
OPENAI_API_KEY
,ANTHROPIC_API_KEY
,COHERE_API_KEY
,GEMINI_API_KEY
,GROQ_API_KEY
. - On Mac, if the environment variable is not present, it will attempt to prompt and get/save it from the keychain, under the devai group.
- Here are the environment variable names per provider:
Example of a Agent Command File
.devai/defaults/proof-comments.md
(see .devai/defaults/proof-comments.md`)
Config
On devai run
or devai init
a .devai/config.toml
will be created with the following:
[genai]
# Required (any model rust genai crate support).
model = "gpt-4o-mini"
[runtime]
# Default to 1 if absent. Great way to increase speed when remote AI services.
items_concurrency = 1
Future Plan
- Support for the
# Items
section withyaml
orRhai
. - More
Rhai
modules/functions. - Support for
# Before All
,# Before
,# After
, and# After All
(allRhai
). --dry-req
will perform a dry run of the request by just saving the content of the request in a file.--dry-res
will perform a real AI request but just capture the AI response in a file (the request will be captured as well).--capture
will perform the normal run but capture the request and response in the request/response file.
Dependencies
~20–33MB
~503K SLoC