# `TypeSafeSDK`
[🔗](https://github.com/nshkrdotcom/typesafe_sdk/blob/v0.4.0/lib/typesafe_sdk.ex#L1)

Elixir client for the TypeSafe AI API.

Use `evaluate/4` for validated questions, caller-key preservation and enriched
answers, or `system_one/4` for the existing wire-oriented parity interface.
Both execute through the same generated operations and Pristine runtime.

# `choice`

Strict ordered Choice constructor.

# `evaluate`

Evaluate with caller-key restoration and request-relative answer validation.

# `evaluate!`

Evaluate or raise the normalized SDK error.

# `evaluate_many`

Collect the bounded evaluation stream.

# `evaluate_stream`

Lazy, bounded evaluation. See `TypeSafeSDK.Batch`.

# `list_models`

```elixir
@spec list_models(TypeSafeSDK.Client.t(), keyword()) ::
  {:ok, TypeSafeSDK.ListModelsResponse.t()} | {:error, term()}
```

# `new_client`

```elixir
@spec new_client(keyword()) :: TypeSafeSDK.Client.t()
```

# `noul`

Strict Noul constructor. Raises on invalid locally defined questions.

# `prepare`

Validate and prepare questions once, returning a tuple.

# `prepare!`

Validate and prepare questions or raise.

# `score`

Strict ordered Score constructor.

# `system_one`

```elixir
@spec system_one(TypeSafeSDK.Client.t(), term(), map(), keyword()) ::
  {:ok, TypeSafeSDK.SystemOneResponse.t()} | {:error, term()}
```

# `system_one!`

Legacy wire-oriented system_one call, raising on error.

# `version`

```elixir
@spec version() :: String.t()
```

---

*Consult [api-reference.md](api-reference.md) for complete listing*
