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 }