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.2.tbz
sha256=637f60398f673dfb2e661f6ed7da169b823a870d27b48e729d5b9200e46a52b2
sha512=5aec259473395025edb6689b544e57e821cfbef9352987f95eb2182034979ce898040e06e60a9d89a40a187b77fb5b1b7183c7ec4264da9d9a834864860a5fed
doc/src/ocaml-ai-sdk.ai_provider_anthropic/beta_headers.ml.html
Source file beta_headers.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 29 30 31 32 33 34 35let required_betas ~thinking ~has_pdf ~tool_streaming = List.concat [ (match thinking with | Some (Thinking.Enabled _) -> [ "interleaved-thinking-2025-05-14" ] | Some (Thinking.Adaptive _ | Thinking.Disabled) | None -> []); (if has_pdf then [ "pdfs-2024-09-25" ] else []); (if tool_streaming then [ "fine-grained-tool-streaming-2025-05-14" ] else []); ] let merge_beta_headers ~user_headers ~required = let existing_betas = List.filter_map (fun (k, v) -> if String.equal (String.lowercase_ascii k) "anthropic-beta" then Some v else None) user_headers in let existing_values = List.concat_map (fun s -> String.split_on_char ',' s |> List.map String.trim) existing_betas in let all_betas = existing_values @ required in let seen = Hashtbl.create 16 in let deduped = List.filter (fun b -> if Hashtbl.mem seen b then false else begin Hashtbl.replace seen b (); true end) all_betas in let other_headers = List.filter (fun (k, _) -> not (String.equal (String.lowercase_ascii k) "anthropic-beta")) user_headers in match deduped with | [] -> other_headers | betas -> other_headers @ [ "anthropic-beta", String.concat "," betas ]
sectionYPositions = computeSectionYPositions($el), 10)"
x-init="setTimeout(() => sectionYPositions = computeSectionYPositions($el), 10)"
>