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.1.tbz
sha256=467ed85a42617ce399d0032d81f27f8dd2e8ca9b0753daeb2cbd84bf46761370
sha512=f5e96feea16c6ffdb45f49ee3e84e9cdb5426245c1ac32acc6434c15b949cc576c1007ed463bf1362dce507d10700eb96acf5a42fa7eed4e8e491ae0214a2e4a

doc/src/ocaml-ai-sdk.ai_provider_anthropic/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
open Melange_json.Primitives

type cc = Cache_control.t

let cc_to_json (cc : cc) = Cache_control.breakpoint_to_json cc.cache_type

type anthropic_tool = {
  name : string;
  description : string option; [@json.option] [@json.drop_default]
  input_schema : Melange_json.t;
  cache_control : cc option; [@json.option] [@json.drop_default]
}
[@@deriving to_json]

type tool_choice_type_json = { type_ : string [@json.key "type"] } [@@deriving to_json]

type tool_choice_specific_json = {
  type_ : string; [@json.key "type"]
  name : string;
}
[@@deriving to_json]

type anthropic_tool_choice =
  | Tc_auto
  | Tc_any
  | Tc_tool of { name : string }

let convert_single_tool (tool : Ai_provider.Tool.t) : anthropic_tool =
  { name = tool.name; description = tool.description; input_schema = tool.parameters; cache_control = None }

let convert_tools ~tools ~tool_choice =
  match tool_choice with
  | Some Ai_provider.Tool_choice.None_ -> [], None
  | None | Some Ai_provider.Tool_choice.Auto -> List.map convert_single_tool tools, Some Tc_auto
  | Some Ai_provider.Tool_choice.Required -> List.map convert_single_tool tools, Some Tc_any
  | Some (Ai_provider.Tool_choice.Specific { tool_name }) ->
    List.map convert_single_tool tools, Some (Tc_tool { name = tool_name })

let anthropic_tool_choice_to_json = function
  | Tc_auto -> tool_choice_type_json_to_json { type_ = "auto" }
  | Tc_any -> tool_choice_type_json_to_json { type_ = "any" }
  | Tc_tool { name } -> tool_choice_specific_json_to_json { type_ = "tool"; name }