Page
Library
Module
Module type
Parameter
Class
Class type
Source
Type-safe, provider-agnostic AI model abstraction for OCaml, inspired by the Vercel AI SDK. Targets wire compatibility with AI SDK v6 so you can pair an OCaml backend with @ai-sdk/react frontends.
Library | opam lib | Description |
|---|---|---|
|
| Provider abstraction — language model module types, tool definitions, prompt types, GADT-based provider options |
|
| Anthropic Messages API — streaming SSE, thinking, cache control, full Claude model catalog |
|
| OpenAI Chat Completions API — streaming SSE, tool calling with strict mode, GPT-4o/o1/o3/o4-mini catalog |
|
| Core SDK — |
|
| Melange bindings for |
opam install ocaml-ai-sdkopen Ai_core
open Ai_provider_anthropic
let () =
Lwt_main.run @@
let model = Anthropic.create_model "claude-sonnet-4-20250514" in
let%lwt result = Generate_text.generate ~model ~prompt:"Say hello" () in
Lwt_io.printl result.textlet () =
Lwt_main.run @@
let model = Anthropic.create_model "claude-sonnet-4-20250514" in
let%lwt result = Stream_text.stream ~model ~prompt:"Tell me a joke" () in
Lwt_stream.iter_s Lwt_io.printl result.text_streamlet handler = Server_handler.create ~model ()
(* Serves SSE responses compatible with useChat() from @ai-sdk/react *)See examples/ for complete runnable demos including tool use, thinking, structured output, and full-stack Melange apps.
ai_provider Provider abstraction (module types, GADT options)
├── ai_provider_anthropic Anthropic implementation
├── ai_provider_openai OpenAI implementation
└── ai_core Core SDK (generate, stream, UIMessage protocol)Key design choices:
type _ key = ..) for compile-time type-safe provider-specific settings (e.g. thinking budget, cache control)System accepts only strings, User accepts text + files, etc.Lwt_stream.t — stream_text returns synchronously with streams populated by a background Lwt taskai@6 Zod schemas exactly, so useChat() works without adaptationThe UIMessage stream protocol (x-vercel-ai-ui-message-stream: v1) is wire-compatible with:
@ai-sdk/react 3.x (useChat, useCompletion)ai 6.x (core SDK)All chunk types are supported: text, reasoning, tool call (start/delta/result), source, file, data, error, finish message/step.
melange >= 4.0.0make build # Build all libraries
make test # Run test suites
make dev # Watch modeMIT