0 ) {
ob_end_flush();
}
$stream = new Mind_AI_Stream();
if ( ! $request ) {
$stream->send_stream_error( 'no_request', __( 'Provide request to receive AI response.', 'mind' ) );
exit;
}
$connected_model = Mind_AI_Settings::get_connected_model();
if ( ! $connected_model ) {
$stream->send_stream_error(
'no_model_connected',
__(
'Mind could not resolve an AI provider and model. Connect a provider in WordPress Connectors or choose one in Mind settings.',
'mind'
)
);
exit;
}
$messages = $this->prepare_messages( $request, $selected_blocks, $page_blocks, $page_context );
$stream->execute( $connected_model, $messages );
exit;
}
/**
* Prepare messages for request.
*
* @param string $user_query user query.
* @param string $selected_blocks selected blocks context.
* @param string $page_blocks page blocks context.
* @param string $page_context page context.
*/
public function prepare_messages( $user_query, $selected_blocks, $page_blocks, $page_context ) {
$user_query = '' . $user_query . '';
if ( $selected_blocks ) {
$user_query .= "\n";
$user_query .= '' . $selected_blocks . '';
}
if ( $page_blocks ) {
$user_query .= "\n";
$user_query .= '' . $page_blocks . '';
}
if ( $page_context ) {
$user_query .= "\n";
$user_query .= '' . $page_context . '';
}
return [
[
'role' => 'system',
'content' => Mind_Prompts::get_system_prompt(),
],
[
'role' => 'user',
'content' => $user_query,
],
];
}
}