package ocaml-ai-sdk
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>
OCaml AI SDK - Provider abstraction for AI models
Install
dune-project
Dependency
Authors
Maintainers
Sources
ocaml-ai-sdk-0.6.1.tbz
sha256=cb3b82428abcda76c02ec92f8103a4db28edf3f42795794a37135e9a3c40af96
sha512=11be8889ee25bee67b2be00553c42a4692bc73e5ce23985e8bb87f8a07e9d8f556b5a63b219fe5fe30366c8b0d4edae494afa80ccfbfcb112f1fa1e458de55bf
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.
Source
val 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.tWraps 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.
Source
val wrap_body_with_idle_timeout :
timeouts:Http_timeouts.t ->
provider:string ->
Cohttp_lwt.Body.t ->
string Lwt_stream.tConverts 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_hookafter 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.
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>