package ocaml-ai-sdk

  1. Overview
  2. Docs
OCaml AI SDK - Provider abstraction for AI models

Install

dune-project
 Dependency

Authors

Maintainers

Sources

ocaml-ai-sdk-0.3.tbz
sha256=636d458cb1564ed88ca8c0250c432e91c2f822fd49ad2b923819e762bda10be6
sha512=361e476423ebc0f9cf561cc28ccd4531cf08e424e95eea43a67d6b8dbb457a49a25b418625ffa99f6327fc5df14e540e502d1aa8ed606111c5c010fe498eec2a

doc/ocaml-ai-sdk.ai_provider/Ai_provider/Provider_options/index.html

Module Ai_provider.Provider_optionsSource

Provider-specific options using an extensible GADT. Each provider registers its own typed key without circular dependencies.

Implementation uses Obj.Extension_constructor.id for key identity and Obj.magic for type recovery — type-safe by construction since matching extension constructor IDs guarantee identical type parameters. This is the standard pattern used by Printexc and other stdlib modules. OCaml 5.1+ Type.eq would replace this with a first-class witness.

Sourcetype _ key = ..

Extensible GADT — each provider adds a constructor via +=.

Sourcetype entry =
  1. | Entry : 'a key * 'a -> entry

Existential wrapper: a typed key paired with its value.

Sourcetype t = entry list

A bag of provider-specific options.

Sourceval empty : t
Sourceval set : 'a key -> 'a -> t -> t

Add or replace an option keyed by the GADT constructor.

Sourceval find : 'a key -> t -> 'a option

Look up an option by key. Returns None if absent.

Sourceval find_exn : 'a key -> t -> 'a

Look up an option by key. Raises Not_found if absent.

Sourcetype key +=
  1. | Provider_metadata : Yojson.Basic.t key

GADT key for raw provider metadata from upstream re-submissions. Stores the upstream providerMetadata JSON blob (Record<string, Record<string, JsonValue>>). Each provider reads its own namespace (e.g. "anthropic").

Sourceval of_provider_metadata : Yojson.Basic.t -> t

Create a t containing only raw provider metadata.

Sourceval provider_metadata : t -> Yojson.Basic.t option

Extract raw provider metadata if present.