Source file prompt.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
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
type file_data =
  | Bytes of bytes
  | Base64 of string
  | Url of string

type user_part =
  | Text of {
      text : string;
      provider_options : Provider_options.t;
    }
  | File of {
      data : file_data;
      media_type : string;
      filename : string option;
      provider_options : Provider_options.t;
    }

type assistant_part =
  | Text of {
      text : string;
      provider_options : Provider_options.t;
    }
  | File of {
      data : file_data;
      media_type : string;
      filename : string option;
      provider_options : Provider_options.t;
    }
  | Reasoning of {
      text : string;
      provider_options : Provider_options.t;
    }
  | Tool_call of {
      id : string;
      name : string;
      args : Yojson.Basic.t;
      provider_options : Provider_options.t;
    }

type tool_result_content =
  | Result_text of string
  | Result_image of {
      data : string;
      media_type : string;
    }

type tool_result = {
  tool_call_id : string;
  tool_name : string;
  result : Yojson.Basic.t;
  is_error : bool;
  content : tool_result_content list;
  provider_options : Provider_options.t;
}

type message =
  | System of { content : string }
  | User of { content : user_part list }
  | Assistant of { content : assistant_part list }
  | Tool of { content : tool_result list }