$options, 'credentials' => $credentials, 'model' => $model, 'region_name' => isset( $regions[ $region ] ) ? $regions[ $region ] : '', 'requests' => (int) $today['requests'] + (int) $week['requests'], 'ability_sources' => AI_Chat_Bedrock_Abilities::available() ? ( new AI_Chat_Bedrock_Abilities() )->source_labels() : array(), ); $steps = AI_Chat_Bedrock_Setup_Steps::essential( $aicfab_state ); $aicfab_progress = AI_Chat_Bedrock_Setup_Steps::progress( $steps ); $aicfab_next = AI_Chat_Bedrock_Setup_Steps::next( $aicfab_state ); ?>

0 ? sprintf( /* translators: 1: requests today, 2: daily request limit. */ __( 'Daily limit: %1$s of %2$s used.', 'ai-chat-for-amazon-bedrock' ), number_format_i18n( (int) $today['requests'] ), number_format_i18n( (int) $daily_limit ) ) : __( 'No plugin-side daily limit.', 'ai-chat-for-amazon-bedrock' ); echo esc_html( AI_Chat_Bedrock_Translation::sentences( $limit_sentence, sprintf( /* translators: %s: requests in the last seven days. */ _n( 'Last 7 days: %s request.', 'Last 7 days: %s requests.', (int) $week['requests'], 'ai-chat-for-amazon-bedrock' ), number_format_i18n( (int) $week['requests'] ) ) ) ); ?>

_x( 'Throttled', 'failure category, starting a sentence', 'ai-chat-for-amazon-bedrock' ), 'access_denied' => _x( 'Access denied', 'failure category, starting a sentence', 'ai-chat-for-amazon-bedrock' ), 'validation' => _x( 'Rejected request', 'failure category, starting a sentence', 'ai-chat-for-amazon-bedrock' ), 'unavailable' => _x( 'Service unavailable', 'failure category, starting a sentence', 'ai-chat-for-amazon-bedrock' ), 'network' => _x( 'Network', 'failure category, starting a sentence', 'ai-chat-for-amazon-bedrock' ), 'other' => _x( 'Other', 'failure category, starting a sentence', 'ai-chat-for-amazon-bedrock' ), ); $aicfab_later_labels = array( 'throttled' => _x( 'throttled', 'failure category, inside a list', 'ai-chat-for-amazon-bedrock' ), 'access_denied' => _x( 'access denied', 'failure category, inside a list', 'ai-chat-for-amazon-bedrock' ), 'validation' => _x( 'rejected request', 'failure category, inside a list', 'ai-chat-for-amazon-bedrock' ), 'unavailable' => _x( 'service unavailable', 'failure category, inside a list', 'ai-chat-for-amazon-bedrock' ), 'network' => _x( 'network', 'failure category, inside a list', 'ai-chat-for-amazon-bedrock' ), 'other' => _x( 'other', 'failure category, inside a list', 'ai-chat-for-amazon-bedrock' ), ); /* translators: 1: failure category name, 2: number of failed chat requests in that category. */ $aicfab_item_format = _x( '%1$s %2$s', 'failure category and count', 'ai-chat-for-amazon-bedrock' ); $aicfab_failure_parts = array(); foreach ( $failed_week['by_category'] as $aicfab_category => $aicfab_count ) { $aicfab_labels = empty( $aicfab_failure_parts ) ? $aicfab_first_labels : $aicfab_later_labels; if ( (int) $aicfab_count > 0 && isset( $aicfab_labels[ $aicfab_category ] ) ) { $aicfab_failure_parts[] = sprintf( $aicfab_item_format, $aicfab_labels[ $aicfab_category ], number_format_i18n( (int) $aicfab_count ) ); } } $aicfab_count_sentence = sprintf( /* translators: %s: chat requests that reached Amazon Bedrock and failed in the last seven days. */ __( 'Failed chat requests, last 7 days: %s.', 'ai-chat-for-amazon-bedrock' ), number_format_i18n( (int) $failed_week['total'] ) ); if ( empty( $aicfab_failure_parts ) ) { echo esc_html( $aicfab_count_sentence ); } else { $aicfab_list_sentence = sprintf( /* translators: %s: failure categories with their counts, joined by the list separator. */ _x( '%s.', 'sentence listing failure categories', 'ai-chat-for-amazon-bedrock' ), implode( _x( ', ', 'failure category list separator', 'ai-chat-for-amazon-bedrock' ), $aicfab_failure_parts ) ); echo esc_html( sprintf( /* translators: 1: sentence with the failed request total, 2: sentence listing the failure categories. */ _x( '%1$s %2$s', 'failed request total then category list', 'ai-chat-for-amazon-bedrock' ), $aicfab_count_sentence, $aicfab_list_sentence ) ); } } ?>

_x( 'under 1 s', 'time to first text range', 'ai-chat-for-amazon-bedrock' ), '1to2s' => _x( '1 to 2 s', 'time to first text range', 'ai-chat-for-amazon-bedrock' ), '2to5s' => _x( '2 to 5 s', 'time to first text range', 'ai-chat-for-amazon-bedrock' ), '5to10s' => _x( '5 to 10 s', 'time to first text range', 'ai-chat-for-amazon-bedrock' ), 'gte10s' => _x( '10 s or more', 'time to first text range', 'ai-chat-for-amazon-bedrock' ), ); $aicfab_median_key = (string) $first_token['median_bucket']; $aicfab_median_label = isset( $aicfab_bucket_labels[ $aicfab_median_key ] ) ? $aicfab_bucket_labels[ $aicfab_median_key ] : __( 'unknown', 'ai-chat-for-amazon-bedrock' ); echo esc_html( sprintf( /* translators: 1: average milliseconds to the first streamed text, 2: number of streamed answers, 3: time range holding the median. */ _n( 'Time to first text (streamed, 7 days): average %1$s ms over %2$s answer, median %3$s.', 'Time to first text (streamed, 7 days): average %1$s ms over %2$s answers, median %3$s.', (int) $first_token['samples'], 'ai-chat-for-amazon-bedrock' ), number_format_i18n( (int) $first_token['average_ms'] ), number_format_i18n( (int) $first_token['samples'] ), $aicfab_median_label ) ); } else { esc_html_e( 'Time to first text (streamed, 7 days): unknown, no streamed answers recorded yet.', 'ai-chat-for-amazon-bedrock' ); } ?>

    $step ) : ?>

[ai_chat_bedrock]