Dsxir.Adapter.Json (dsxir v0.1.0)

Copy Markdown

Json adapter: instructs the LM to return a structured object validated against the signature's output Zoi schema, and parses the returned map through that schema directly.

Unlike Dsxir.Adapter.Chat, this adapter consumes a map produced by the underlying provider's structured-output endpoint via Dsxir.LM.generate_object/3. Streaming is not supported with structured outputs; passing :stream in opts raises Dsxir.Errors.Invalid.Configuration.

Returns {:ok, map} on success or {:error, %Dsxir.Errors.Adapter.* {}} on schema validation failure. No fallback to other adapters happens here.

One-shot schema-mismatch retry

When the provider returns an object that fails Zoi validation, the adapter retries once with a corrective user message appended that quotes the validation error. A second failure surfaces a Dsxir.Errors.Adapter.FallbackExhausted{from: __MODULE__, to: __MODULE__, last_error: err} via format_and_call/4's {:fallback, err} return — the predictor's rescue path then raises it. Subscribers tell schema-retry exhaustion apart from Chat→Json exhaustion by reading from/to. The retry is internal to this module.

Summary

Functions

Build a Zoi.object/1 schema from the signature's declared outputs.

Functions

output_schema(signature)

@spec output_schema(Dsxir.Adapter.signature()) :: Zoi.schema()

Build a Zoi.object/1 schema from the signature's declared outputs.

Used by predictors to feed the schema into Dsxir.LM.generate_object/3.