#language-model #procedural #proc-macro #definition #i32 #ai #string

macro ai_functions

Procedural macro for creating text from a function for use in Large Language Models

2 releases

0.1.1 Jun 7, 2023
0.1.0 Jun 7, 2023

#1102 in Procedural macros

Download history 105/week @ 2024-03-25 151/week @ 2024-04-01 77/week @ 2024-04-08 107/week @ 2024-04-15 110/week @ 2024-04-22 90/week @ 2024-04-29 126/week @ 2024-05-06 121/week @ 2024-05-13 109/week @ 2024-05-20 97/week @ 2024-05-27 89/week @ 2024-06-03 74/week @ 2024-06-10 136/week @ 2024-06-17 108/week @ 2024-06-24 6/week @ 2024-07-01 47/week @ 2024-07-08

311 downloads per month

MIT license

5KB

AI Function Crate

The ai_function crate provides a Rust procedural macro that allows you to transform any function into a function that returns its own definition as a string. This is useful for sending the function's code to a large language model for further processing.

Installation

Add the following to your Cargo.toml file:

[dependencies]
ai_function = "0.1.0"

Then run cargo build to download and compile the ai_function crate.

Usage

To use the ai_function macro, simply annotate your function with #[ai_function].

use ai_function::ai_function;

#[ai_function]
fn example_function(arg: i32) -> i32 {
  arg \* 2
}

When you call example_function(), instead of returning arg * 2, it will return a string containing the source code of the example_function.

Limitations

The #[ai_function] macro currently does not support functions with complex control flow like loops or conditionals. It only supports simple function definitions.

use ai_functions::ai_function;

#[ai_function]
fn add(a: i32, b: i32) -> i32 {
    a + b
}

fn main() {
    assert_eq!(add(2, 3), "fn add(a: i32, b: i32) -> i32 {\n    a + b\n}");
}

Dependencies

~310–770KB
~18K SLoC