LangExtract.WireFormat (LangExtract v0.8.0)

Copy Markdown View Source

Port between external LLM format and internal domain.

Serializes %Extraction{} structs to fenced dynamic-key JSON for prompts (matching upstream langextract's default — decided by the 2026-07-05 format A/B, see benchmark/decisions/), and normalizes raw LLM output back to canonical format for the parser. Decoding is JSON-only (since 0.7.0; the YAML tolerance path and its repair machinery were removed once JSON became the wire format).

Both directions of the wire format live here on purpose — they share the dynamic-key _attributes contract. Prompt.Builder uses the encode half; Pipeline uses the decode half.

Summary

Functions

format_extractions(extractions)

@spec format_extractions([LangExtract.Extraction.t()]) :: String.t()

normalize(raw)

@spec normalize(String.t()) :: {:ok, map()} | {:error, {:invalid_format, String.t()}}