From b9f45226b7fdc54e431af836b0bde7b462a31ba3 Mon Sep 17 00:00:00 2001 From: Sam Lijin Date: Thu, 1 Aug 2024 12:09:58 -0700 Subject: [PATCH] try to fix image array serialization --- engine/Cargo.lock | 18 ++++++++++++++++-- engine/baml-lib/baml-types/Cargo.toml | 6 +++--- engine/baml-lib/baml-types/src/minijinja.rs | 16 +++++++++++++++- engine/baml-lib/jinja/src/lib.rs | 2 +- 4 files changed, 35 insertions(+), 7 deletions(-) diff --git a/engine/Cargo.lock b/engine/Cargo.lock index 42b3255e11..414240cd61 100644 --- a/engine/Cargo.lock +++ b/engine/Cargo.lock @@ -904,7 +904,7 @@ name = "baml-types" version = "0.52.1" dependencies = [ "indexmap 2.2.6", - "minijinja", + "minijinja 2.1.1", "serde", "serde_json", ] @@ -2357,7 +2357,7 @@ dependencies = [ "env_logger", "indexmap 2.2.6", "log", - "minijinja", + "minijinja 1.0.21", "serde", "serde_json", "strsim 0.11.1", @@ -2680,6 +2680,20 @@ dependencies = [ "unicode-ident", ] +[[package]] +name = "minijinja" +version = "2.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "f4bf71af278c578cbcc91d0b1ff092910208bc86f7b3750364642bd424e3dcd3" +dependencies = [ + "aho-corasick", + "indexmap 1.9.3", + "serde", + "serde_json", + "unicase", + "unicode-ident", +] + [[package]] name = "minimal-lexical" version = "0.2.1" diff --git a/engine/baml-lib/baml-types/Cargo.toml b/engine/baml-lib/baml-types/Cargo.toml index 9214fcf0cf..a9209ea045 100644 --- a/engine/baml-lib/baml-types/Cargo.toml +++ b/engine/baml-lib/baml-types/Cargo.toml @@ -15,8 +15,8 @@ workspace = true optional = true [dependencies.minijinja] -optional = true -version = "1.0.16" +#optional = true +version = "2.1.1" default-features = false features = [ "macros", @@ -39,4 +39,4 @@ features = [ [features] default = ["stable_sort"] stable_sort = ["indexmap"] -mini-jinja = ["minijinja"] +mini-jinja = [] diff --git a/engine/baml-lib/baml-types/src/minijinja.rs b/engine/baml-lib/baml-types/src/minijinja.rs index c6c2314f1f..1ec40ab6f2 100644 --- a/engine/baml-lib/baml-types/src/minijinja.rs +++ b/engine/baml-lib/baml-types/src/minijinja.rs @@ -1,3 +1,5 @@ +use std::sync::Arc; + use crate::{BamlMedia, BamlValue}; impl From for minijinja::Value { @@ -56,8 +58,12 @@ impl std::fmt::Display for MinijinjaBamlImage { } impl minijinja::value::Object for MinijinjaBamlImage { + fn repr(self: &Arc) -> minijinja::value::ObjectRepr { + minijinja::value::ObjectRepr::Plain + } + fn call( - &self, + self: &Arc, _state: &minijinja::State<'_, '_>, args: &[minijinja::value::Value], ) -> Result { @@ -66,4 +72,12 @@ impl minijinja::value::Object for MinijinjaBamlImage { format!("BamlImage has no callable attribute '{:#?}'", args), )) } + + fn render(self: &Arc, f: &mut std::fmt::Formatter) -> std::fmt::Result { + write!( + f, + "{MAGIC_IMAGE_DELIMITER}:baml-start-image:{}:baml-end-image:{MAGIC_IMAGE_DELIMITER}", + serde_json::json!(self.image) + ) + } } diff --git a/engine/baml-lib/jinja/src/lib.rs b/engine/baml-lib/jinja/src/lib.rs index ca87bbe87b..ddeb9a804a 100644 --- a/engine/baml-lib/jinja/src/lib.rs +++ b/engine/baml-lib/jinja/src/lib.rs @@ -429,7 +429,7 @@ pub fn render_prompt( anyhow::bail!("args must be a map"); } - let minijinja_args: Value = args.clone().into(); + let minijinja_args: minijinja::Value = args.clone().into(); let default_role = ctx.client.default_role.clone(); let rendered = render_minijinja( template,