parse_llm

Function parse_llm 

Source
pub fn parse_llm<T: LlmDeserialize>(input: &str) -> Result<T>
Expand description

Parses an LLM response using BAML’s deserialization algorithms.

This function uses the custom LlmDeserialize trait which provides:

  • Fuzzy field matching (camelCase ↔ snake_case)
  • Enum variant fuzzy matching
  • Union type scoring
  • Two-mode coercion (strict + lenient)
  • Circular reference detection

§Examples

use tryparse::parse_llm;

#[cfg(feature = "derive")]
use tryparse::deserializer::LlmDeserialize;

#[cfg(feature = "derive")]
use tryparse_derive::LlmDeserialize;

#[cfg(feature = "derive")]
#[derive(Debug, LlmDeserialize, PartialEq)]
struct User {
    name: String,
    age: i64,
}

#[cfg(feature = "derive")]
{
    // Type coercion: age as string → i64
    let response = r#"{"name": "Alice", "age": "30"}"#;
    let user: User = parse_llm(response).unwrap();
    assert_eq!(user.name, "Alice");
    assert_eq!(user.age, 30);
}

§Errors

Returns ParseError::NoCandidates if no valid JSON could be extracted. Returns ParseError::DeserializeFailed if deserialization fails for all candidates.