sanitize_text_field( $post_data['ai_provider'] ?? 'gemini' ), 'openai_api_key' => sanitize_text_field( $post_data['openai_api_key'] ?? '' ), 'openai_chat_model' => sanitize_text_field( $post_data['openai_chat_model'] ?? 'gpt-4o-mini' ), 'openai_embedding_model' => sanitize_text_field( $post_data['openai_embedding_model'] ?? 'text-embedding-3-small' ), 'gemini_api_key' => sanitize_text_field( $post_data['gemini_api_key'] ?? '' ), 'gemini_chat_model' => sanitize_text_field( $post_data['gemini_chat_model'] ?? 'gemini-3.1-flash-lite' ), 'gemini_embedding_model' => sanitize_text_field( $post_data['gemini_embedding_model'] ?? 'gemini-embedding-001' ), 'vector_store' => 'mysql', 'temperature' => floatval( $post_data['temperature'] ?? 0.2 ), 'max_tokens' => intval( $post_data['max_tokens'] ?? 1000 ), 'top_k' => intval( $post_data['top_k'] ?? 5 ), 'chunk_size' => intval( $post_data['chunk_size'] ?? 700 ), 'chunk_overlap' => intval( $post_data['chunk_overlap'] ?? 100 ), 'enable_streaming' => isset( $post_data['enable_streaming'] ) ? 1 : 0, 'enable_chat_history' => isset( $post_data['enable_chat_history'] ) ? 1 : 0, 'enable_citations' => isset( $post_data['enable_citations'] ) ? 1 : 0, 'show_powered_by' => isset( $post_data['show_powered_by'] ) ? 1 : 0, 'chat_widget_title' => ! empty( trim( $post_data['chat_widget_title'] ?? '' ) ) ? sanitize_text_field( $post_data['chat_widget_title'] ) : 'AI Support Assistant', 'chat_widget_greeting' => sanitize_textarea_field( $post_data['chat_widget_greeting'] ?? '' ), 'ai_system_instruction' => sanitize_textarea_field( $post_data['ai_system_instruction'] ?? '' ), 'chat_fallback_message' => sanitize_text_field( $post_data['chat_fallback_message'] ?? '' ), ); try { $settings->save( $input_settings ); echo '

' . esc_html__( 'Settings saved successfully.', 'ai-support-assistant' ) . '

'; } catch ( \Exception $e ) { echo '

' . esc_html( $e->getMessage() ) . '

'; } } $all_settings = $settings->get_all(); // phpcs:ignore WordPress.Security.NonceVerification.Recommended $active_tab = isset( $_POST['active_tab'] ) ? sanitize_key( $_POST['active_tab'] ) : ( isset( $_GET['tab'] ) ? sanitize_key( $_GET['tab'] ) : 'ai' ); $allowed_tabs = array( 'ai', 'vector', 'features', 'shortcode' ); if ( ! in_array( $active_tab, $allowed_tabs, true ) ) { $active_tab = 'ai'; } ?>

[ai_support_assistant]
title
theme light
width 450px
height 600px
[ai_support_assistant]

[ai_support_assistant title="Support Helpdesk" theme="dark" height="520px"]