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.