LLM interaction utilities for structured and unstructured outputs.
SVAR = Structured Validated Automated Reasoning
Scope: structured LLM output + provider routing. Main functions:
ask! - Structured output using the spec DSLask-code! - Plain-text completion + fenced code-block extractionmodels! - Fetch available models from the LLM APIRe-exports the spec DSL (field, spec, str->data, str->data-with-spec,
data->str, validate-data, spec->prompt, build-ref-registry) and
make-router so users can require only this namespace.
Configuration: LLM calls route automatically via the router.
Example: (ask! router {:spec my-spec :messages [(system "Help the user.") (user "What is 2+2?")] :model "gpt-4o"})
LLM interaction utilities for structured and unstructured outputs.
SVAR = Structured Validated Automated Reasoning
Scope: structured LLM output + provider routing. Main functions:
- `ask!` - Structured output using the spec DSL
- `ask-code!` - Plain-text completion + fenced code-block extraction
- `models!` - Fetch available models from the LLM API
Re-exports the spec DSL (`field`, `spec`, `str->data`, `str->data-with-spec`,
`data->str`, `validate-data`, `spec->prompt`, `build-ref-registry`) and
`make-router` so users can require only this namespace.
Configuration:
LLM calls route automatically via the router.
Example:
(ask! router {:spec my-spec
:messages [(system "Help the user.")
(user "What is 2+2?")]
:model "gpt-4o"})Asks the LLM and returns structured Clojure data with token usage and cost.
Asks the LLM and returns structured Clojure data with token usage and cost.
Plain-text completion + fenced code-block extraction. Sibling of ask!
for callers that want raw source (e.g. Clojure) instead of structured
JSON. Returns {:result :blocks :raw :reasoning :tokens :cost :duration-ms}.
Empty :result is a valid success.
Plain-text completion + fenced code-block extraction. Sibling of `ask!`
for callers that want raw source (e.g. Clojure) instead of structured
JSON. Returns {:result :blocks :raw :reasoning :tokens :cost :duration-ms}.
Empty `:result` is a valid success.Builds a registry of referenced specs.
Builds a registry of referenced specs.
Wraps text in a cacheable content block. On :anthropic api-style emits
cache_control: {type: "ephemeral"}; on other styles the marker is stripped.
Wraps text in a cacheable content block. On `:anthropic` api-style emits
`cache_control: {type: "ephemeral"}`; on other styles the marker is stripped.Cardinality: Vector of values.
Cardinality: Vector of values.
Serializes Clojure data to LLM-compatible string.
Serializes Clojure data to LLM-compatible string.
Field option: Human-readable field description.
Field option: Human-readable field description.
Parse fenced code blocks from raw text. Returns vec of {:lang <str-or-nil> :source <str>}. Lenient+: when no fences found, treats the whole input as one untagged block.
Parse fenced code blocks from raw text. Returns vec of
{:lang <str-or-nil> :source <str>}. Lenient+: when no fences found,
treats the whole input as one untagged block.Creates a field definition for a spec.
Creates a field definition for a spec.
Creates an image attachment for use with user messages.
Creates an image attachment for use with `user` messages.
Spec option: Namespace prefix to add to keys during parsing.
Spec option: Namespace prefix to add to keys during parsing.
Creates a router from a vector of provider maps.
Creates a router from a vector of provider maps.
Fetches available models from the LLM API.
Fetches available models from the LLM API.
Field option: Field name as Datomic-style keyword.
Field option: Field name as Datomic-style keyword.
Coerce any accepted spelling to canonical :quick|:balanced|:deep. Also accepts :low/:medium/:high aliases for OpenAI-style migrations.
Coerce any accepted spelling to canonical :quick|:balanced|:deep. Also accepts :low/:medium/:high aliases for OpenAI-style migrations.
Translate abstract level → provider-specific extra-body map (or nil). Returns nil for non-reasoning models; callers can merge the result into their own extra-body.
Translate abstract level → provider-specific extra-body map (or nil). Returns nil for non-reasoning models; callers can merge the result into their own extra-body.
Abstract reasoning depths translated per provider api-style.
See com.blockether.svar.internal.router/REASONING_LEVELS.
Abstract reasoning depths translated per provider api-style. See `com.blockether.svar.internal.router/REASONING_LEVELS`.
Field option: Whether field is required (default: true).
Field option: Whether field is required (default: true).
Resets the router's token/cost budget counters to zero.
Resets the router's token/cost budget counters to zero.
Manually resets a provider's circuit breaker to :closed.
Manually resets a provider's circuit breaker to :closed.
Returns cumulative + windowed stats for the router.
Returns cumulative + windowed stats for the router.
Creates a spec definition from field definitions.
Creates a spec definition from field definitions.
Generates LLM prompt from a spec.
Generates LLM prompt from a spec.
Parses LLM response string to Clojure data.
Parses LLM response string to Clojure data.
Parses LLM response with spec validation.
Parses LLM response with spec validation.
Field option: Reference target for :spec.type/ref fields.
Field option: Reference target for :spec.type/ref fields.
Type: Fixed-size double vector (1 element).
Type: Fixed-size double vector (1 element).
Type: Fixed-size double vector (10 elements).
Type: Fixed-size double vector (10 elements).
Type: Fixed-size double vector (11 elements).
Type: Fixed-size double vector (11 elements).
Type: Fixed-size double vector (12 elements).
Type: Fixed-size double vector (12 elements).
Type: Fixed-size double vector (2 elements).
Type: Fixed-size double vector (2 elements).
Type: Fixed-size double vector (3 elements).
Type: Fixed-size double vector (3 elements).
Type: Fixed-size double vector (4 elements).
Type: Fixed-size double vector (4 elements).
Type: Fixed-size double vector (5 elements).
Type: Fixed-size double vector (5 elements).
Type: Fixed-size double vector (6 elements).
Type: Fixed-size double vector (6 elements).
Type: Fixed-size double vector (7 elements).
Type: Fixed-size double vector (7 elements).
Type: Fixed-size double vector (8 elements).
Type: Fixed-size double vector (8 elements).
Type: Fixed-size double vector (9 elements).
Type: Fixed-size double vector (9 elements).
Type: Fixed-size int vector (1 element).
Type: Fixed-size int vector (1 element).
Type: Fixed-size int vector (10 elements).
Type: Fixed-size int vector (10 elements).
Type: Fixed-size int vector (11 elements).
Type: Fixed-size int vector (11 elements).
Type: Fixed-size int vector (12 elements).
Type: Fixed-size int vector (12 elements).
Type: Fixed-size int vector (2 elements).
Type: Fixed-size int vector (2 elements).
Type: Fixed-size int vector (3 elements).
Type: Fixed-size int vector (3 elements).
Type: Fixed-size int vector (4 elements).
Type: Fixed-size int vector (4 elements).
Type: Fixed-size int vector (5 elements).
Type: Fixed-size int vector (5 elements).
Type: Fixed-size int vector (6 elements).
Type: Fixed-size int vector (6 elements).
Type: Fixed-size int vector (7 elements).
Type: Fixed-size int vector (7 elements).
Type: Fixed-size int vector (8 elements).
Type: Fixed-size int vector (8 elements).
Type: Fixed-size int vector (9 elements).
Type: Fixed-size int vector (9 elements).
Type: Fixed-size string vector (1 element).
Type: Fixed-size string vector (1 element).
Type: Fixed-size string vector (10 elements).
Type: Fixed-size string vector (10 elements).
Type: Fixed-size string vector (11 elements).
Type: Fixed-size string vector (11 elements).
Type: Fixed-size string vector (12 elements).
Type: Fixed-size string vector (12 elements).
Type: Fixed-size string vector (2 elements).
Type: Fixed-size string vector (2 elements).
Type: Fixed-size string vector (3 elements).
Type: Fixed-size string vector (3 elements).
Type: Fixed-size string vector (4 elements).
Type: Fixed-size string vector (4 elements).
Type: Fixed-size string vector (5 elements).
Type: Fixed-size string vector (5 elements).
Type: Fixed-size string vector (6 elements).
Type: Fixed-size string vector (6 elements).
Type: Fixed-size string vector (7 elements).
Type: Fixed-size string vector (7 elements).
Type: Fixed-size string vector (8 elements).
Type: Fixed-size string vector (8 elements).
Type: Fixed-size string vector (9 elements).
Type: Fixed-size string vector (9 elements).
Field option: Set of allowed nil types.
Field option: Set of allowed nil types.
Creates a user message, optionally with images.
Creates a user message, optionally with images.
Validates parsed data against a spec.
Validates parsed data against a spec.
Field option: Enum values as map {value description}.
Field option: Enum values as map {value description}.
cljdoc builds & hosts documentation for Clojure/Script libraries
| Ctrl+k | Jump to recent docs |
| ← | Move to previous article |
| → | Move to next article |
| Ctrl+/ | Jump to the search field |