kind-openai 0.3.10

Highly opinionated OpenAI API wrapper crate. By Kindness Inc.
Documentation
use kind_openai_schema::OpenAISchema;
use serde::Deserialize;

#[test]
#[allow(dead_code)]
fn it_generates_complex_schema_correctly() {
    #[derive(Deserialize, OpenAISchema)]
    /// Hello friends
    struct SuperComplexSchema {
        /// The first one.
        optional_string: Option<String>,
        regular_string: String,
        int: i32,
        basic_enum: BasicEnum,
    }

    #[derive(Deserialize, OpenAISchema)]
    enum BasicEnum {
        #[serde(rename = "variant1")]
        Variant1,
        Variant2,
        #[serde(
            rename = "this-has-a-really-really-long-name-that-strangely-broke-some-thing-with-this-maybe-the-attrs-have-a-max-len-i-dont-really-know"
        )]
        ReallyLong,
    }

    assert_eq!(
        SuperComplexSchema::openai_schema().to_string(),
        String::from(
            r#"{"name":"SuperComplexSchema","description":"Hello friends","strict":true,"schema":{"type":"object","additionalProperties":false,"properties":{"optional_string":{"description":"The first one.","type":["string","null"]},"regular_string":{"type":"string"},"int":{"type":"integer"},"basic_enum":{"enum":["variant1","Variant2","this-has-a-really-really-long-name-that-strangely-broke-some-thing-with-this-maybe-the-attrs-have-a-max-len-i-dont-really-know"],"type":"string"}},"required":["optional_string","regular_string","int","basic_enum"]}}"#
        )
    );
}