11 个版本
0.2.2 | 2024 年 2 月 12 日 |
---|---|
0.2.1 | 2024 年 2 月 5 日 |
0.1.7 | 2024 年 2 月 4 日 |
#429 在 机器学习
每月下载量 97
45KB
726 行
魔法实例化
快速入门
use openai_magic_instantiate::*;
#[derive(MagicInstantiate)]
struct Person {
// Descriptions can help the LLM understand how to generate the value
#[magic(description = "The person's name without any titles or honorifics")]
name: String,
// Validators can be used to enforce constraints on the generated value
#[magic(validator = Min(1800))]
#[magic(validator = Max(2100))]
year_of_birth: u32,
}
let client = async_openai::Client::new();
let person: Person = client.instantiate("The president of the USA in 1954").await?;
// For even more ergonomics, use the `make_magic` macro to create the `magic!` macro
make_magic!(client);
let person: Person = magic!("The prime minister of the UK in 1954");
描述和验证器可以应用于字段级别,或者结构体/枚举级别。
提供了一些基本的验证器,但您也可以通过实现 Validator
特性来自定义。
这里发生的事情是,派生的 MagicInstantiate
特性允许此结构体以 TypeScript 类型定义的形式表示。
此类型定义和一些指令用作对 LLM 的提示。验证 LLM 的输出并将其打包回 Rust 类型。尝试重新提示 LLM 以修复任何验证错误。
使用这种简单机制,您可以编写包含 AI 的整个程序。
依赖项
~9–25MB
~346K SLoC