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.tbz
sha256=44e7f6ebef6da2828ec2844dd5b38c8f37284c08e54a29e06f6a8822df6f8e10
sha512=ce31d0868abf28bcaef7b24a0ab09b37dcfc94db3de96b38ff36a03800ae59a19e8009a35314f93191b3c8f178c40f8569630d4389f56ddc2f2cc94fb7bffc3c

doc/src/ocaml-ai-sdk.ai_provider_openai/convert_tools.ml.html

Source file convert_tools.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
35
36
37
38
39
40
41
42
43
open Melange_json.Primitives

type openai_function_def = {
  name : string;
  description : string option; [@json.option] [@json.drop_default]
  parameters : Melange_json.t;
  strict : bool option; [@json.option] [@json.drop_default]
}
[@@deriving to_json]

type openai_tool = {
  type_ : string; [@json.key "type"]
  function_ : openai_function_def; [@json.key "function"]
}
[@@deriving to_json]

type tool_choice_function = { name : string } [@@deriving to_json]

type tool_choice_specific = {
  type_ : string; [@json.key "type"]
  function_ : tool_choice_function; [@json.key "function"]
}
[@@deriving to_json]

let convert_single_tool ~strict (tool : Ai_provider.Tool.t) : openai_tool =
  let strict_opt =
    match strict with
    | true -> Some true
    | false -> None
  in
  {
    type_ = "function";
    function_ = { name = tool.name; description = tool.description; parameters = tool.parameters; strict = strict_opt };
  }

let convert_tools ~strict tools = List.map (convert_single_tool ~strict) tools

let convert_tool_choice (tc : Ai_provider.Tool_choice.t) : Melange_json.t =
  match tc with
  | Auto -> `String "auto"
  | Required -> `String "required"
  | None_ -> `String "none"
  | Specific { tool_name } -> tool_choice_specific_to_json { type_ = "function"; function_ = { name = tool_name } }