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.6.1.tbz
sha256=cb3b82428abcda76c02ec92f8103a4db28edf3f42795794a37135e9a3c40af96
sha512=11be8889ee25bee67b2be00553c42a4692bc73e5ce23985e8bb87f8a07e9d8f556b5a63b219fe5fe30366c8b0d4edae494afa80ccfbfcb112f1fa1e458de55bf

doc/src/ocaml-ai-sdk.ai_core/ui_message_stream.ml.html

Source file ui_message_stream.ml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
let headers =
  [
    "content-type", "text/event-stream";
    "cache-control", "no-cache";
    "connection", "keep-alive";
    "x-vercel-ai-ui-message-stream", "v1";
    "x-accel-buffering", "no";
  ]

let chunk_to_sse chunk =
  let json = Ui_message_chunk.to_json chunk in
  Printf.sprintf "data: %s\n\n" (Yojson.Basic.to_string json)

let done_sse = "data: [DONE]\n\n"

let stream_to_sse chunks =
  let sse_stream, push = Lwt_stream.create () in
  Lwt.async (fun () ->
    try%lwt
      let%lwt () = Lwt_stream.iter (fun chunk -> push (Some (chunk_to_sse chunk))) chunks in
      push (Some done_sse);
      push None;
      Lwt.return_unit
    with _exn ->
      push (Some done_sse);
      push None;
      Lwt.return_unit);
  sse_stream