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.4.tbz
sha256=4f3f22ae61d360b994cd75323bcb6b6bf915f6755fd1e7bab6844ca8a240c1e7
sha512=3c52b17096da818f5d3bcf9fe16826c3bec4533d6a1681e8ba0f957f37ee4f425696017cb78f1a24732f8851010d436cf446f873b72b6a4f5004d6b492072abf

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

Module Ai_provider.Http_clientSource

HTTP client wrappers that apply Http_timeouts to cohttp calls.

These are the defence-in-depth layer around Cohttp_lwt_unix.Client.post and the response body stream. All provider implementations should use these instead of raw cohttp calls.

Sourceval post : timeouts:Http_timeouts.t -> provider:string -> headers:Cohttp.Header.t -> body:Cohttp_lwt.Body.t -> Uri.t -> (Cohttp.Response.t * Cohttp_lwt.Body.t) Lwt.t

Wraps Cohttp_lwt_unix.Client.post in Lwt_unix.with_timeout using timeouts.request_timeout. On expiry, fails with Provider_error.Provider_error (Timeout { phase = Request_headers; ... }) tagged with the given provider string.

Sourceval wrap_body_with_idle_timeout : timeouts:Http_timeouts.t -> provider:string -> Cohttp_lwt.Body.t -> string Lwt_stream.t

Converts a cohttp body into a line stream (splits on LF, strips CR), with an inter-chunk idle timer from timeouts.stream_idle_timeout. The returned stream:

  • Emits one line per LF-terminated segment.
  • Flushes any trailing buffered data on normal end-of-stream.
  • Is cleanly closed (consumers see end-of-stream) on idle timeout, body-stream exception, or normal completion — no consumer will hang.
  • On exception, the original exception is re-raised to Lwt.async_exception_hook after the stream is closed, so bugs stay visible in logs.
  • On abnormal termination (idle timeout or body-stream exception), the upstream cohttp body is drained so its socket is released.