Ai_provider.PromptSourcePrompt messages with role-constrained content parts.
Each message role restricts which content parts are valid:
System: text onlyUser: text and filesAssistant: text, files, reasoning, and tool callsTool: tool results onlyHow file data is represented.
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;}A single part in a user message.
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;}A single part in an assistant message.
Content returned with a tool result.
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;}A tool execution result.
type message = | System of {}| User of {content : user_part list;}| Assistant of {content : assistant_part list;}| Tool of {content : tool_result list;}A prompt message. The role constrains valid content parts.