1 line
116 KiB
JSON
1 line
116 KiB
JSON
{"repo": "avduarte333/sem-detect", "files": {"demo/templates/index.html": {"d97175a513fab1aa97b31cc9a06874bad79a21c0": {"t": 1785747172.8708665, "n": 25193, "h": "0cf1045b15795af4", "c": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <meta charset=\"UTF-8\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n <title>Sem-Detect — AI Review Detection</title>\n <link rel=\"preconnect\" href=\"https://fonts.googleapis.com\">\n <link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>\n <link href=\"https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap\" rel=\"stylesheet\">\n <link rel=\"stylesheet\" href=\"/static/style.css\">\n <script>\n // Apply saved theme immediately to prevent flash\n (function(){var t=localStorage.getItem(\"theme\");if(t)document.documentElement.setAttribute(\"data-theme\",t);})();\n </script>\n</head>\n<body>\n\n <header class=\"header\">\n <div class=\"header-inner\">\n <nav class=\"header-nav\">\n <a href=\"/\" class=\"nav-tab\" id=\"tab-credentials\" data-tab=\"credentials\">Credentials</a>\n <a href=\"/evaluate\" class=\"nav-tab\" id=\"tab-evaluate\" data-tab=\"evaluate\">Evaluate</a>\n <a href=\"/results\" class=\"nav-tab\" id=\"tab-results\" data-tab=\"results\">Pre-Computed Results</a>\n </nav>\n <div class=\"theme-dropdown\" id=\"theme-dropdown\">\n <button class=\"theme-dropdown-trigger\" type=\"button\">Theme</button>\n <div class=\"theme-dropdown-menu\">\n <button class=\"theme-dropdown-item\" data-theme=\"\">Solarized</button>\n <button class=\"theme-dropdown-item\" data-theme=\"light-blue\">Light Blue</button>\n </div>\n </div>\n </div>\n </header>\n\n <main class=\"main\">\n\n <!-- ═══════ Panel: Credentials ═══════ -->\n <div id=\"panel-credentials\" class=\"tab-panel\">\n\n <div class=\"cred-lock-message hidden\" id=\"cred-lock-message\">\n Analysis in progress. Credentials cannot be changed while a pipeline is running.\n </div>\n\n <div class=\"cred-intro\">\n <h1 class=\"cred-title\">Connect your services</h1>\n <p class=\"cred-subtitle\">Credentials are stored in-memory for this session only. Nothing is written to disk.</p>\n </div>\n\n <form id=\"credentials-form\" autocomplete=\"off\">\n\n <!-- Row 1: Gemini + OpenAI -->\n <div class=\"cred-row\">\n <div class=\"card cred-card\">\n <div class=\"cred-service-header\">\n <span class=\"key-dot key-dot--gemini\"></span>\n <h2>Gemini</h2>\n <span class=\"cred-status\" id=\"status-gemini\"></span>\n </div>\n <div class=\"form-group\">\n <label for=\"gemini-key\">API Key</label>\n <input type=\"password\" id=\"gemini-key\" name=\"gemini_key\"\n placeholder=\"AIza...\"\n value=\"{{ creds.gemini_key_masked or '' }}\">\n </div>\n </div>\n <div class=\"card cred-card\">\n <div class=\"cred-service-header\">\n <span class=\"key-dot key-dot--openai\"></span>\n <h2>OpenAI</h2>\n <span class=\"cred-status\" id=\"status-openai\"></span>\n </div>\n <div class=\"form-group\">\n <label for=\"openai-key\">API Key</label>\n <input type=\"password\" id=\"openai-key\" name=\"openai_key\"\n placeholder=\"sk-...\"\n value=\"{{ creds.openai_key_masked or '' }}\">\n </div>\n </div>\n </div>\n\n <!-- Row 2: LiteLLM + AWS -->\n <div class=\"cred-row\">\n <div class=\"card cred-card\">\n <div class=\"cred-service-header\">\n <span class=\"key-dot key-dot--litellm\"></span>\n <h2>LiteLLM Proxy</h2>\n <span class=\"cred-status\" id=\"status-litellm\"></span>\n </div>\n <div class=\"form-group\">\n <label for=\"litellm-key\">API Key</label>\n <input type=\"password\" id=\"litellm-key\" name=\"litellm_key\"\n placeholder=\"sk-...\"\n value=\"{{ creds.litellm_key_masked or '' }}\">\n </div>\n <div class=\"form-group\">\n <label for=\"litellm-base-url\">Base URL</label>\n <input type=\"text\" id=\"litellm-base-url\" name=\"litellm_base_url\"\n placeholder=\"https://ai-gateway.andrew.cmu.edu\"\n value=\"{{ creds.litellm_base_url or '' }}\">\n </div>\n </div>\n <div class=\"card cred-card\">\n <div class=\"cred-service-header\">\n <span class=\"key-dot key-dot--aws\"></span>\n <h2>AWS Bedrock</h2>\n <span class=\"cred-status\" id=\"status-aws\"></span>\n </div>\n <div class=\"form-group\">\n <label for=\"aws-access-key\">Access Key ID</label>\n <input type=\"password\" id=\"aws-access-key\" name=\"aws_access\"\n placeholder=\"AKIA...\"\n value=\"{{ creds.aws_access_masked or '' }}\">\n </div>\n <div class=\"form-group\">\n <label for=\"aws-secret-key\">Secret Access Key</label>\n <input type=\"password\" id=\"aws-secret-key\" name=\"aws_secret\"\n placeholder=\"wJalrXUtn...\"\n value=\"{{ creds.aws_secret_masked or '' }}\">\n </div>\n </div>\n </div>\n\n <!-- Row 3: OpenReview (full width, fields side by side) -->\n <div class=\"cred-row cred-row--full\">\n <div class=\"card cred-card\">\n <div class=\"cred-service-header\">\n <span class=\"key-dot key-dot--openreview\"></span>\n <h2>OpenReview</h2>\n <span class=\"cred-status\" id=\"status-openreview\"></span>\n </div>\n <div class=\"cred-fields-inline\">\n <div class=\"form-group\">\n <label for=\"openreview-user\">Username</label>\n <input type=\"text\" id=\"openreview-user\" name=\"openreview_user\"\n autocomplete=\"off\"\n placeholder=\"user@example.com\"\n value=\"{{ creds.openreview_user or '' }}\">\n </div>\n <div class=\"form-group\">\n <label for=\"openreview-pass\">Password</label>\n <input type=\"password\" id=\"openreview-pass\" name=\"openreview_pass\"\n autocomplete=\"new-password\"\n placeholder=\"password\"\n value=\"{{ creds.openreview_pass_masked or '' }}\">\n </div>\n </div>\n </div>\n </div>\n\n <!-- Actions -->\n <div class=\"cred-actions-row\">\n <button type=\"button\" class=\"env-load-btn\" id=\"load-env-btn\">Load from .env</button>\n <button type=\"submit\" class=\"submit-btn submit-btn--hidden\" id=\"save-btn\">\n SAVE & VALIDATE\n </button>\n </div>\n\n </form>\n </div>\n\n <!-- ═══════ Panel: Evaluate ═══════ -->\n <div id=\"panel-evaluate\" class=\"tab-panel\">\n\n <div class=\"cred-intro\">\n <h1 class=\"cred-title\">Run SEM-DETECT</h1>\n </div>\n\n <form id=\"analyze-form\" class=\"eval-form\">\n\n <div class=\"card eval-card\">\n\n <!-- Row 1: URL + Cutoff -->\n <div class=\"eval-grid\">\n <div class=\"form-group\">\n <label for=\"openreview-url\">OpenReview URL</label>\n <input type=\"text\" id=\"openreview-url\" name=\"openreview_url\" required\n placeholder=\"https://openreview.net/forum?id=**********\">\n </div>\n <div class=\"form-group\">\n <label for=\"cutoff-date\">Cutoff Date <span class=\"label-hint\">MM/DD/YYYY</span></label>\n <input type=\"text\" id=\"cutoff-date\" name=\"cutoff_date\"\n placeholder=\"01/15/2025\" maxlength=\"10\">\n </div>\n </div>\n <p class=\"card-note\">\n Some conferences allow authors to update blind submissions during the rebuttal period.<br>\n In these cases, use the cutoff date to ensure we fetch the same version that reviewers saw.\n </p>\n\n <div class=\"eval-divider\"></div>\n\n <!-- Row: Rating Scale -->\n <div class=\"eval-grid\">\n <div class=\"form-group\">\n <label for=\"rating-scale\">Rating Scale</label>\n <select id=\"rating-scale\" name=\"rating_scale\">\n <option value=\"1-6\" selected>1–6 (Ex: ICML 2026)</option>\n <option value=\"1-10\">1–10 (Ex: ICLR 2024)</option>\n <option value=\"arr\">1–5 w/ Half-Points (ACL Rolling Review)</option>\n <option value=\"custom\">Custom…</option>\n </select>\n </div>\n </div>\n <details id=\"custom-scale-builder\" class=\"custom-scale-details hidden\">\n <summary class=\"custom-scale-summary\">\n <span class=\"toggle-arrow\">▶</span>\n Custom Rating Scale\n </summary>\n <div class=\"custom-scale-body\">\n <div class=\"custom-scale-controls\">\n <div class=\"form-group\">\n <label for=\"scale-min\">Min Score</label>\n <input type=\"number\" id=\"scale-min\" value=\"1\" min=\"0\" max=\"100\" step=\"1\">\n </div>\n <div class=\"form-group\">\n <label for=\"scale-max\">Max Score</label>\n <input type=\"number\" id=\"scale-max\" value=\"10\" min=\"1\" max=\"100\" step=\"1\">\n </div>\n <div class=\"form-group custom-scale-check-group\">\n <label class=\"eval-check\">\n <input type=\"checkbox\" id=\"scale-half-points\">\n <span>Half-points</span>\n </label>\n </div>\n <div class=\"form-group custom-scale-build-group\">\n <button type=\"button\" class=\"submit-btn submit-btn--secondary custom-scale-build-btn\" id=\"build-scale-btn\">Build</button>\n </div>\n </div>\n <div id=\"custom-scale-rows\" class=\"custom-scale-rows\"></div>\n </div>\n </details>\n <p class=\"card-note\">\n Maps each numeric score from OpenReview to one of 5 classes used by the pipeline.\n </p>\n\n <div class=\"eval-divider\"></div>\n\n <!-- Row: PDF Processing Mode -->\n <div class=\"eval-grid\">\n <div class=\"form-group\" style=\"grid-column: 1 / -1;\">\n <label class=\"eval-check\">\n <input type=\"checkbox\" id=\"pdf-mode\" name=\"pdf_mode\">\n <span>Native PDF Mode</span>\n </label>\n <p class=\"card-note\">\n Send the original PDF directly to LLMs instead of extracting text with marker-pdf.<br>\n Faster but won't let you inspect the parsed pdf text. (Some models don't support this feature!)\n </p>\n </div>\n </div>\n\n <div class=\"eval-divider\"></div>\n\n <!-- Row 2: Reference Models (2x2) -->\n <div class=\"eval-grid\">\n <div class=\"form-group\">\n <label for=\"ref-model-1\">Reference Model 1</label>\n <select id=\"ref-model-1\" name=\"ref_model_1\" class=\"model-select\">\n <optgroup label=\"Google\">\n <option value=\"gemini:gemini-2.5-pro\" data-supports-pdf=\"true\" selected>Gemini 2.5 Pro</option>\n <option value=\"gemini:gemini-2.5-flash\" data-supports-pdf=\"true\">Gemini 2.5 Flash</option>\n </optgroup>\n <optgroup label=\"OpenAI\">\n <option value=\"openai:gpt-5.4\" data-supports-pdf=\"true\">GPT-5.4</option>\n </optgroup>\n <optgroup label=\"LiteLLM Proxy\">\n <option value=\"litellm:gemini-2.5-flash\" data-supports-pdf=\"false\">Gemini 2.5 Flash (proxy)</option>\n <option value=\"litellm:gemini-2.5-pro\" data-supports-pdf=\"false\">Gemini 2.5 Pro (proxy)</option>\n <option value=\"litellm:gpt-5.4\" data-supports-pdf=\"false\">GPT-5.4 (proxy)</option>\n </optgroup>\n <optgroup label=\"Anthropic (Bedrock)\">\n <option value=\"bedrock:us.anthropic.claude-sonnet-4-6\" data-supports-pdf=\"true\">Claude Sonnet 4.6</option>\n <option value=\"bedrock:us.anthropic.claude-opus-4-6-v1\" data-supports-pdf=\"true\">Claude Opus 4.6</option>\n </optgroup>\n <optgroup label=\"Other (Bedrock)\">\n <option value=\"bedrock:deepseek.v3-v1:0\" data-supports-pdf=\"false\">DeepSeek V3</option>\n <option value=\"bedrock:qwen.qwen3-235b-a22b-2507-v1:0\" data-supports-pdf=\"false\">Qwen3 235B</option>\n </optgroup>\n </select>\n </div>\n <div class=\"form-group\">\n <label for=\"ref-model-2\">Reference Model 2</label>\n <select id=\"ref-model-2\" name=\"ref_model_2\" class=\"model-select\">\n <optgroup label=\"Google\">\n <option value=\"gemini:gemini-2.5-pro\" data-supports-pdf=\"true\">Gemini 2.5 Pro</option>\n <option value=\"gemini:gemini-2.5-flash\" data-supports-pdf=\"true\">Gemini 2.5 Flash</option>\n </optgroup>\n <optgroup label=\"OpenAI\">\n <option value=\"openai:gpt-5.4\" data-supports-pdf=\"true\">GPT-5.4</option>\n </optgroup>\n <optgroup label=\"LiteLLM Proxy\">\n <option value=\"litellm:gemini-2.5-flash\" data-supports-pdf=\"false\">Gemini 2.5 Flash (proxy)</option>\n <option value=\"litellm:gemini-2.5-pro\" data-supports-pdf=\"false\">Gemini 2.5 Pro (proxy)</option>\n <option value=\"litellm:gpt-5.4\" data-supports-pdf=\"false\">GPT-5.4 (proxy)</option>\n </optgroup>\n <optgroup label=\"Anthropic (Bedrock)\">\n <option value=\"bedrock:us.anthropic.claude-sonnet-4-6\" data-supports-pdf=\"true\">Claude Sonnet 4.6</option>\n <option value=\"bedrock:us.anthropic.claude-opus-4-6-v1\" data-supports-pdf=\"true\">Claude Opus 4.6</option>\n </optgroup>\n <optgroup label=\"Other (Bedrock)\">\n <option value=\"bedrock:deepseek.v3-v1:0\" data-supports-pdf=\"false\" selected>DeepSeek V3</option>\n <option value=\"bedrock:qwen.qwen3-235b-a22b-2507-v1:0\" data-supports-pdf=\"false\">Qwen3 235B</option>\n </optgroup>\n </select>\n </div>\n <div class=\"form-group\">\n <label for=\"ref-model-3\">Reference Model 3</label>\n <select id=\"ref-model-3\" name=\"ref_model_3\" class=\"model-select\">\n <optgroup label=\"Google\">\n <option value=\"gemini:gemini-2.5-pro\" data-supports-pdf=\"true\">Gemini 2.5 Pro</option>\n <option value=\"gemini:gemini-2.5-flash\" data-supports-pdf=\"true\">Gemini 2.5 Flash</option>\n </optgroup>\n <optgroup label=\"OpenAI\">\n <option value=\"openai:gpt-5.4\" data-supports-pdf=\"true\">GPT-5.4</option>\n </optgroup>\n <optgroup label=\"LiteLLM Proxy\">\n <option value=\"litellm:gemini-2.5-flash\" data-supports-pdf=\"false\">Gemini 2.5 Flash (proxy)</option>\n <option value=\"litellm:gemini-2.5-pro\" data-supports-pdf=\"false\">Gemini 2.5 Pro (proxy)</option>\n <option value=\"litellm:gpt-5.4\" data-supports-pdf=\"false\">GPT-5.4 (proxy)</option>\n </optgroup>\n <optgroup label=\"Anthropic (Bedrock)\">\n <option value=\"bedrock:us.anthropic.claude-sonnet-4-6\" data-supports-pdf=\"true\">Claude Sonnet 4.6</option>\n <option value=\"bedrock:us.anthropic.claude-opus-4-6-v1\" data-supports-pdf=\"true\">Claude Opus 4.6</option>\n </optgroup>\n <optgroup label=\"Other (Bedrock)\">\n <option value=\"bedrock:deepseek.v3-v1:0\" data-supports-pdf=\"false\">DeepSeek V3</option>\n <option value=\"bedrock:qwen.qwen3-235b-a22b-2507-v1:0\" data-supports-pdf=\"false\" selected>Qwen3 235B</option>\n </optgroup>\n </select>\n </div>\n <p class=\"card-note grid-note\">We recommend using Gemini-2.5-Pro, DeepSeek and Qwen3.<br>(Models we used to tune Sem-Detect classifier).</p>\n </div>\n\n <div class=\"eval-divider\"></div>\n\n <!-- Row 3: Fixed models (2x2) -->\n <div class=\"eval-grid\">\n <div class=\"form-group\">\n <label>Cleaning & Claim Extraction</label>\n <div class=\"model-display\">Gemini 2.5 Flash</div>\n <input type=\"hidden\" id=\"cleaning-model\" name=\"cleaning_model\" value=\"gemini:gemini-2.5-flash\">\n </div>\n <div class=\"form-group\">\n <label>Embedding Model</label>\n <div class=\"model-display\">Qwen3-Embedding-0.6B</div>\n </div>\n <div class=\"form-group\">\n <label>Textual Features Model</label>\n <select id=\"textual-model\" name=\"textual_model\" class=\"model-select\">\n {% for model_id, info in textual_models.items() %}\n <option value=\"{{ model_id }}\"{% if loop.first %} selected{% endif %}>{{ info.label }}</option>\n {% endfor %}\n </select>\n <p class=\"card-note\" style=\"margin-top:4px; font-size:0.82em;\">Mistral-7B is our preferred model. Qwen3-1.7B is faster but less accurate.</p>\n </div>\n <p class=\"card-note grid-note\">The pipeline needs local Qwen3-0.6B and the selected textual model.<br>\n (GPU is recommended for speed)</p>\n </div>\n\n <div class=\"eval-divider\"></div>\n\n <!-- Row 4: Run -->\n <div class=\"eval-footer\" style=\"justify-content:flex-end\">\n <div class=\"eval-footer-right\">\n <div class=\"submit-error\" id=\"submit-error-analyze\"></div>\n <button type=\"submit\" class=\"submit-btn\" id=\"submit-btn\" disabled>Start</button>\n </div>\n </div>\n\n </div>\n\n </form>\n </div>\n\n <!-- ═══════ Panel: Results (pre-computed) ═══════ -->\n <div id=\"panel-results\" class=\"tab-panel\">\n\n <div class=\"cred-intro\">\n <h1 class=\"cred-title\">ICLR 2026 Results</h1>\n <p class=\"cred-subtitle\">Pre-computed Sem-Detect analysis on 677 ICLR 2026 papers (2,607 reviews).</p>\n </div>\n\n <div class=\"browse-controls card\">\n <div class=\"browse-search-row\">\n <input type=\"text\" id=\"browse-search\" class=\"browse-search\"\n placeholder=\"Search by paper title...\">\n <span class=\"browse-count\" id=\"browse-count\"></span>\n </div>\n <div class=\"browse-filters\" id=\"browse-filters\">\n <button class=\"browse-filter-btn browse-filter-btn--active\" data-filter=\"all\">All</button>\n <button class=\"browse-filter-btn\" data-filter=\"has-ai\">Has AI reviews</button>\n <button class=\"browse-filter-btn\" data-filter=\"has-rewrite\">Has Refined reviews</button>\n <button class=\"browse-filter-btn\" data-filter=\"all-human\">All Human</button>\n </div>\n </div>\n\n <div id=\"browse-list\" class=\"browse-list\"></div>\n <div id=\"browse-load-more\" class=\"browse-load-more hidden\">\n <button class=\"submit-btn submit-btn--secondary\" id=\"browse-more-btn\">Load more</button>\n </div>\n\n <!-- Single-paper detail view (reuses the same results section as progress page) -->\n <div id=\"browse-detail\" class=\"hidden\">\n <button class=\"browse-back-btn\" id=\"browse-back\">← Back to list</button>\n <div id=\"browse-paper-header\"></div>\n <div id=\"browse-summary-badges\"></div>\n <div id=\"browse-carousel-wrap\" class=\"carousel-wrap\">\n <button class=\"carousel-arrow carousel-arrow--left\" id=\"browse-carousel-prev\" aria-label=\"Previous review\">‹</button>\n <div id=\"browse-reviews-container\" class=\"carousel-track\"></div>\n <button class=\"carousel-arrow carousel-arrow--right\" id=\"browse-carousel-next\" aria-label=\"Next review\">›</button>\n </div>\n </div>\n\n </div>\n\n </main>\n\n <footer class=\"footer\">\n <p>Sem-Detect — Semantic Level Detection of AI Generated Peer-Reviews</p>\n <div class=\"footer-links\">\n <a href=\"https://github.com/LeiLiLab/ai-detection\" target=\"_blank\">GitHub</a>\n <a href=\"https://openreview.net\" target=\"_blank\">OpenReview</a>\n </div>\n </footer>\n\n <script>\n const INITIAL_TAB = {{ active_tab | tojson }};\n const INITIAL_VALIDATION = {{ creds.validation | tojson }};\n </script>\n <script src=\"/static/app.js\"></script>\n</body>\n</html>\n"}, "ca5058b454e24875c73fd98799bc6d0417f733f9": {"t": 1785770932.4388564, "n": 25193, "h": "0cf1045b15795af4", "c": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <meta charset=\"UTF-8\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n <title>Sem-Detect — AI Review Detection</title>\n <link rel=\"preconnect\" href=\"https://fonts.googleapis.com\">\n <link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>\n <link href=\"https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap\" rel=\"stylesheet\">\n <link rel=\"stylesheet\" href=\"/static/style.css\">\n <script>\n // Apply saved theme immediately to prevent flash\n (function(){var t=localStorage.getItem(\"theme\");if(t)document.documentElement.setAttribute(\"data-theme\",t);})();\n </script>\n</head>\n<body>\n\n <header class=\"header\">\n <div class=\"header-inner\">\n <nav class=\"header-nav\">\n <a href=\"/\" class=\"nav-tab\" id=\"tab-credentials\" data-tab=\"credentials\">Credentials</a>\n <a href=\"/evaluate\" class=\"nav-tab\" id=\"tab-evaluate\" data-tab=\"evaluate\">Evaluate</a>\n <a href=\"/results\" class=\"nav-tab\" id=\"tab-results\" data-tab=\"results\">Pre-Computed Results</a>\n </nav>\n <div class=\"theme-dropdown\" id=\"theme-dropdown\">\n <button class=\"theme-dropdown-trigger\" type=\"button\">Theme</button>\n <div class=\"theme-dropdown-menu\">\n <button class=\"theme-dropdown-item\" data-theme=\"\">Solarized</button>\n <button class=\"theme-dropdown-item\" data-theme=\"light-blue\">Light Blue</button>\n </div>\n </div>\n </div>\n </header>\n\n <main class=\"main\">\n\n <!-- ═══════ Panel: Credentials ═══════ -->\n <div id=\"panel-credentials\" class=\"tab-panel\">\n\n <div class=\"cred-lock-message hidden\" id=\"cred-lock-message\">\n Analysis in progress. Credentials cannot be changed while a pipeline is running.\n </div>\n\n <div class=\"cred-intro\">\n <h1 class=\"cred-title\">Connect your services</h1>\n <p class=\"cred-subtitle\">Credentials are stored in-memory for this session only. Nothing is written to disk.</p>\n </div>\n\n <form id=\"credentials-form\" autocomplete=\"off\">\n\n <!-- Row 1: Gemini + OpenAI -->\n <div class=\"cred-row\">\n <div class=\"card cred-card\">\n <div class=\"cred-service-header\">\n <span class=\"key-dot key-dot--gemini\"></span>\n <h2>Gemini</h2>\n <span class=\"cred-status\" id=\"status-gemini\"></span>\n </div>\n <div class=\"form-group\">\n <label for=\"gemini-key\">API Key</label>\n <input type=\"password\" id=\"gemini-key\" name=\"gemini_key\"\n placeholder=\"AIza...\"\n value=\"{{ creds.gemini_key_masked or '' }}\">\n </div>\n </div>\n <div class=\"card cred-card\">\n <div class=\"cred-service-header\">\n <span class=\"key-dot key-dot--openai\"></span>\n <h2>OpenAI</h2>\n <span class=\"cred-status\" id=\"status-openai\"></span>\n </div>\n <div class=\"form-group\">\n <label for=\"openai-key\">API Key</label>\n <input type=\"password\" id=\"openai-key\" name=\"openai_key\"\n placeholder=\"sk-...\"\n value=\"{{ creds.openai_key_masked or '' }}\">\n </div>\n </div>\n </div>\n\n <!-- Row 2: LiteLLM + AWS -->\n <div class=\"cred-row\">\n <div class=\"card cred-card\">\n <div class=\"cred-service-header\">\n <span class=\"key-dot key-dot--litellm\"></span>\n <h2>LiteLLM Proxy</h2>\n <span class=\"cred-status\" id=\"status-litellm\"></span>\n </div>\n <div class=\"form-group\">\n <label for=\"litellm-key\">API Key</label>\n <input type=\"password\" id=\"litellm-key\" name=\"litellm_key\"\n placeholder=\"sk-...\"\n value=\"{{ creds.litellm_key_masked or '' }}\">\n </div>\n <div class=\"form-group\">\n <label for=\"litellm-base-url\">Base URL</label>\n <input type=\"text\" id=\"litellm-base-url\" name=\"litellm_base_url\"\n placeholder=\"https://ai-gateway.andrew.cmu.edu\"\n value=\"{{ creds.litellm_base_url or '' }}\">\n </div>\n </div>\n <div class=\"card cred-card\">\n <div class=\"cred-service-header\">\n <span class=\"key-dot key-dot--aws\"></span>\n <h2>AWS Bedrock</h2>\n <span class=\"cred-status\" id=\"status-aws\"></span>\n </div>\n <div class=\"form-group\">\n <label for=\"aws-access-key\">Access Key ID</label>\n <input type=\"password\" id=\"aws-access-key\" name=\"aws_access\"\n placeholder=\"AKIA...\"\n value=\"{{ creds.aws_access_masked or '' }}\">\n </div>\n <div class=\"form-group\">\n <label for=\"aws-secret-key\">Secret Access Key</label>\n <input type=\"password\" id=\"aws-secret-key\" name=\"aws_secret\"\n placeholder=\"wJalrXUtn...\"\n value=\"{{ creds.aws_secret_masked or '' }}\">\n </div>\n </div>\n </div>\n\n <!-- Row 3: OpenReview (full width, fields side by side) -->\n <div class=\"cred-row cred-row--full\">\n <div class=\"card cred-card\">\n <div class=\"cred-service-header\">\n <span class=\"key-dot key-dot--openreview\"></span>\n <h2>OpenReview</h2>\n <span class=\"cred-status\" id=\"status-openreview\"></span>\n </div>\n <div class=\"cred-fields-inline\">\n <div class=\"form-group\">\n <label for=\"openreview-user\">Username</label>\n <input type=\"text\" id=\"openreview-user\" name=\"openreview_user\"\n autocomplete=\"off\"\n placeholder=\"user@example.com\"\n value=\"{{ creds.openreview_user or '' }}\">\n </div>\n <div class=\"form-group\">\n <label for=\"openreview-pass\">Password</label>\n <input type=\"password\" id=\"openreview-pass\" name=\"openreview_pass\"\n autocomplete=\"new-password\"\n placeholder=\"password\"\n value=\"{{ creds.openreview_pass_masked or '' }}\">\n </div>\n </div>\n </div>\n </div>\n\n <!-- Actions -->\n <div class=\"cred-actions-row\">\n <button type=\"button\" class=\"env-load-btn\" id=\"load-env-btn\">Load from .env</button>\n <button type=\"submit\" class=\"submit-btn submit-btn--hidden\" id=\"save-btn\">\n SAVE & VALIDATE\n </button>\n </div>\n\n </form>\n </div>\n\n <!-- ═══════ Panel: Evaluate ═══════ -->\n <div id=\"panel-evaluate\" class=\"tab-panel\">\n\n <div class=\"cred-intro\">\n <h1 class=\"cred-title\">Run SEM-DETECT</h1>\n </div>\n\n <form id=\"analyze-form\" class=\"eval-form\">\n\n <div class=\"card eval-card\">\n\n <!-- Row 1: URL + Cutoff -->\n <div class=\"eval-grid\">\n <div class=\"form-group\">\n <label for=\"openreview-url\">OpenReview URL</label>\n <input type=\"text\" id=\"openreview-url\" name=\"openreview_url\" required\n placeholder=\"https://openreview.net/forum?id=**********\">\n </div>\n <div class=\"form-group\">\n <label for=\"cutoff-date\">Cutoff Date <span class=\"label-hint\">MM/DD/YYYY</span></label>\n <input type=\"text\" id=\"cutoff-date\" name=\"cutoff_date\"\n placeholder=\"01/15/2025\" maxlength=\"10\">\n </div>\n </div>\n <p class=\"card-note\">\n Some conferences allow authors to update blind submissions during the rebuttal period.<br>\n In these cases, use the cutoff date to ensure we fetch the same version that reviewers saw.\n </p>\n\n <div class=\"eval-divider\"></div>\n\n <!-- Row: Rating Scale -->\n <div class=\"eval-grid\">\n <div class=\"form-group\">\n <label for=\"rating-scale\">Rating Scale</label>\n <select id=\"rating-scale\" name=\"rating_scale\">\n <option value=\"1-6\" selected>1–6 (Ex: ICML 2026)</option>\n <option value=\"1-10\">1–10 (Ex: ICLR 2024)</option>\n <option value=\"arr\">1–5 w/ Half-Points (ACL Rolling Review)</option>\n <option value=\"custom\">Custom…</option>\n </select>\n </div>\n </div>\n <details id=\"custom-scale-builder\" class=\"custom-scale-details hidden\">\n <summary class=\"custom-scale-summary\">\n <span class=\"toggle-arrow\">▶</span>\n Custom Rating Scale\n </summary>\n <div class=\"custom-scale-body\">\n <div class=\"custom-scale-controls\">\n <div class=\"form-group\">\n <label for=\"scale-min\">Min Score</label>\n <input type=\"number\" id=\"scale-min\" value=\"1\" min=\"0\" max=\"100\" step=\"1\">\n </div>\n <div class=\"form-group\">\n <label for=\"scale-max\">Max Score</label>\n <input type=\"number\" id=\"scale-max\" value=\"10\" min=\"1\" max=\"100\" step=\"1\">\n </div>\n <div class=\"form-group custom-scale-check-group\">\n <label class=\"eval-check\">\n <input type=\"checkbox\" id=\"scale-half-points\">\n <span>Half-points</span>\n </label>\n </div>\n <div class=\"form-group custom-scale-build-group\">\n <button type=\"button\" class=\"submit-btn submit-btn--secondary custom-scale-build-btn\" id=\"build-scale-btn\">Build</button>\n </div>\n </div>\n <div id=\"custom-scale-rows\" class=\"custom-scale-rows\"></div>\n </div>\n </details>\n <p class=\"card-note\">\n Maps each numeric score from OpenReview to one of 5 classes used by the pipeline.\n </p>\n\n <div class=\"eval-divider\"></div>\n\n <!-- Row: PDF Processing Mode -->\n <div class=\"eval-grid\">\n <div class=\"form-group\" style=\"grid-column: 1 / -1;\">\n <label class=\"eval-check\">\n <input type=\"checkbox\" id=\"pdf-mode\" name=\"pdf_mode\">\n <span>Native PDF Mode</span>\n </label>\n <p class=\"card-note\">\n Send the original PDF directly to LLMs instead of extracting text with marker-pdf.<br>\n Faster but won't let you inspect the parsed pdf text. (Some models don't support this feature!)\n </p>\n </div>\n </div>\n\n <div class=\"eval-divider\"></div>\n\n <!-- Row 2: Reference Models (2x2) -->\n <div class=\"eval-grid\">\n <div class=\"form-group\">\n <label for=\"ref-model-1\">Reference Model 1</label>\n <select id=\"ref-model-1\" name=\"ref_model_1\" class=\"model-select\">\n <optgroup label=\"Google\">\n <option value=\"gemini:gemini-2.5-pro\" data-supports-pdf=\"true\" selected>Gemini 2.5 Pro</option>\n <option value=\"gemini:gemini-2.5-flash\" data-supports-pdf=\"true\">Gemini 2.5 Flash</option>\n </optgroup>\n <optgroup label=\"OpenAI\">\n <option value=\"openai:gpt-5.4\" data-supports-pdf=\"true\">GPT-5.4</option>\n </optgroup>\n <optgroup label=\"LiteLLM Proxy\">\n <option value=\"litellm:gemini-2.5-flash\" data-supports-pdf=\"false\">Gemini 2.5 Flash (proxy)</option>\n <option value=\"litellm:gemini-2.5-pro\" data-supports-pdf=\"false\">Gemini 2.5 Pro (proxy)</option>\n <option value=\"litellm:gpt-5.4\" data-supports-pdf=\"false\">GPT-5.4 (proxy)</option>\n </optgroup>\n <optgroup label=\"Anthropic (Bedrock)\">\n <option value=\"bedrock:us.anthropic.claude-sonnet-4-6\" data-supports-pdf=\"true\">Claude Sonnet 4.6</option>\n <option value=\"bedrock:us.anthropic.claude-opus-4-6-v1\" data-supports-pdf=\"true\">Claude Opus 4.6</option>\n </optgroup>\n <optgroup label=\"Other (Bedrock)\">\n <option value=\"bedrock:deepseek.v3-v1:0\" data-supports-pdf=\"false\">DeepSeek V3</option>\n <option value=\"bedrock:qwen.qwen3-235b-a22b-2507-v1:0\" data-supports-pdf=\"false\">Qwen3 235B</option>\n </optgroup>\n </select>\n </div>\n <div class=\"form-group\">\n <label for=\"ref-model-2\">Reference Model 2</label>\n <select id=\"ref-model-2\" name=\"ref_model_2\" class=\"model-select\">\n <optgroup label=\"Google\">\n <option value=\"gemini:gemini-2.5-pro\" data-supports-pdf=\"true\">Gemini 2.5 Pro</option>\n <option value=\"gemini:gemini-2.5-flash\" data-supports-pdf=\"true\">Gemini 2.5 Flash</option>\n </optgroup>\n <optgroup label=\"OpenAI\">\n <option value=\"openai:gpt-5.4\" data-supports-pdf=\"true\">GPT-5.4</option>\n </optgroup>\n <optgroup label=\"LiteLLM Proxy\">\n <option value=\"litellm:gemini-2.5-flash\" data-supports-pdf=\"false\">Gemini 2.5 Flash (proxy)</option>\n <option value=\"litellm:gemini-2.5-pro\" data-supports-pdf=\"false\">Gemini 2.5 Pro (proxy)</option>\n <option value=\"litellm:gpt-5.4\" data-supports-pdf=\"false\">GPT-5.4 (proxy)</option>\n </optgroup>\n <optgroup label=\"Anthropic (Bedrock)\">\n <option value=\"bedrock:us.anthropic.claude-sonnet-4-6\" data-supports-pdf=\"true\">Claude Sonnet 4.6</option>\n <option value=\"bedrock:us.anthropic.claude-opus-4-6-v1\" data-supports-pdf=\"true\">Claude Opus 4.6</option>\n </optgroup>\n <optgroup label=\"Other (Bedrock)\">\n <option value=\"bedrock:deepseek.v3-v1:0\" data-supports-pdf=\"false\" selected>DeepSeek V3</option>\n <option value=\"bedrock:qwen.qwen3-235b-a22b-2507-v1:0\" data-supports-pdf=\"false\">Qwen3 235B</option>\n </optgroup>\n </select>\n </div>\n <div class=\"form-group\">\n <label for=\"ref-model-3\">Reference Model 3</label>\n <select id=\"ref-model-3\" name=\"ref_model_3\" class=\"model-select\">\n <optgroup label=\"Google\">\n <option value=\"gemini:gemini-2.5-pro\" data-supports-pdf=\"true\">Gemini 2.5 Pro</option>\n <option value=\"gemini:gemini-2.5-flash\" data-supports-pdf=\"true\">Gemini 2.5 Flash</option>\n </optgroup>\n <optgroup label=\"OpenAI\">\n <option value=\"openai:gpt-5.4\" data-supports-pdf=\"true\">GPT-5.4</option>\n </optgroup>\n <optgroup label=\"LiteLLM Proxy\">\n <option value=\"litellm:gemini-2.5-flash\" data-supports-pdf=\"false\">Gemini 2.5 Flash (proxy)</option>\n <option value=\"litellm:gemini-2.5-pro\" data-supports-pdf=\"false\">Gemini 2.5 Pro (proxy)</option>\n <option value=\"litellm:gpt-5.4\" data-supports-pdf=\"false\">GPT-5.4 (proxy)</option>\n </optgroup>\n <optgroup label=\"Anthropic (Bedrock)\">\n <option value=\"bedrock:us.anthropic.claude-sonnet-4-6\" data-supports-pdf=\"true\">Claude Sonnet 4.6</option>\n <option value=\"bedrock:us.anthropic.claude-opus-4-6-v1\" data-supports-pdf=\"true\">Claude Opus 4.6</option>\n </optgroup>\n <optgroup label=\"Other (Bedrock)\">\n <option value=\"bedrock:deepseek.v3-v1:0\" data-supports-pdf=\"false\">DeepSeek V3</option>\n <option value=\"bedrock:qwen.qwen3-235b-a22b-2507-v1:0\" data-supports-pdf=\"false\" selected>Qwen3 235B</option>\n </optgroup>\n </select>\n </div>\n <p class=\"card-note grid-note\">We recommend using Gemini-2.5-Pro, DeepSeek and Qwen3.<br>(Models we used to tune Sem-Detect classifier).</p>\n </div>\n\n <div class=\"eval-divider\"></div>\n\n <!-- Row 3: Fixed models (2x2) -->\n <div class=\"eval-grid\">\n <div class=\"form-group\">\n <label>Cleaning & Claim Extraction</label>\n <div class=\"model-display\">Gemini 2.5 Flash</div>\n <input type=\"hidden\" id=\"cleaning-model\" name=\"cleaning_model\" value=\"gemini:gemini-2.5-flash\">\n </div>\n <div class=\"form-group\">\n <label>Embedding Model</label>\n <div class=\"model-display\">Qwen3-Embedding-0.6B</div>\n </div>\n <div class=\"form-group\">\n <label>Textual Features Model</label>\n <select id=\"textual-model\" name=\"textual_model\" class=\"model-select\">\n {% for model_id, info in textual_models.items() %}\n <option value=\"{{ model_id }}\"{% if loop.first %} selected{% endif %}>{{ info.label }}</option>\n {% endfor %}\n </select>\n <p class=\"card-note\" style=\"margin-top:4px; font-size:0.82em;\">Mistral-7B is our preferred model. Qwen3-1.7B is faster but less accurate.</p>\n </div>\n <p class=\"card-note grid-note\">The pipeline needs local Qwen3-0.6B and the selected textual model.<br>\n (GPU is recommended for speed)</p>\n </div>\n\n <div class=\"eval-divider\"></div>\n\n <!-- Row 4: Run -->\n <div class=\"eval-footer\" style=\"justify-content:flex-end\">\n <div class=\"eval-footer-right\">\n <div class=\"submit-error\" id=\"submit-error-analyze\"></div>\n <button type=\"submit\" class=\"submit-btn\" id=\"submit-btn\" disabled>Start</button>\n </div>\n </div>\n\n </div>\n\n </form>\n </div>\n\n <!-- ═══════ Panel: Results (pre-computed) ═══════ -->\n <div id=\"panel-results\" class=\"tab-panel\">\n\n <div class=\"cred-intro\">\n <h1 class=\"cred-title\">ICLR 2026 Results</h1>\n <p class=\"cred-subtitle\">Pre-computed Sem-Detect analysis on 677 ICLR 2026 papers (2,607 reviews).</p>\n </div>\n\n <div class=\"browse-controls card\">\n <div class=\"browse-search-row\">\n <input type=\"text\" id=\"browse-search\" class=\"browse-search\"\n placeholder=\"Search by paper title...\">\n <span class=\"browse-count\" id=\"browse-count\"></span>\n </div>\n <div class=\"browse-filters\" id=\"browse-filters\">\n <button class=\"browse-filter-btn browse-filter-btn--active\" data-filter=\"all\">All</button>\n <button class=\"browse-filter-btn\" data-filter=\"has-ai\">Has AI reviews</button>\n <button class=\"browse-filter-btn\" data-filter=\"has-rewrite\">Has Refined reviews</button>\n <button class=\"browse-filter-btn\" data-filter=\"all-human\">All Human</button>\n </div>\n </div>\n\n <div id=\"browse-list\" class=\"browse-list\"></div>\n <div id=\"browse-load-more\" class=\"browse-load-more hidden\">\n <button class=\"submit-btn submit-btn--secondary\" id=\"browse-more-btn\">Load more</button>\n </div>\n\n <!-- Single-paper detail view (reuses the same results section as progress page) -->\n <div id=\"browse-detail\" class=\"hidden\">\n <button class=\"browse-back-btn\" id=\"browse-back\">← Back to list</button>\n <div id=\"browse-paper-header\"></div>\n <div id=\"browse-summary-badges\"></div>\n <div id=\"browse-carousel-wrap\" class=\"carousel-wrap\">\n <button class=\"carousel-arrow carousel-arrow--left\" id=\"browse-carousel-prev\" aria-label=\"Previous review\">‹</button>\n <div id=\"browse-reviews-container\" class=\"carousel-track\"></div>\n <button class=\"carousel-arrow carousel-arrow--right\" id=\"browse-carousel-next\" aria-label=\"Next review\">›</button>\n </div>\n </div>\n\n </div>\n\n </main>\n\n <footer class=\"footer\">\n <p>Sem-Detect — Semantic Level Detection of AI Generated Peer-Reviews</p>\n <div class=\"footer-links\">\n <a href=\"https://github.com/LeiLiLab/ai-detection\" target=\"_blank\">GitHub</a>\n <a href=\"https://openreview.net\" target=\"_blank\">OpenReview</a>\n </div>\n </footer>\n\n <script>\n const INITIAL_TAB = {{ active_tab | tojson }};\n const INITIAL_VALIDATION = {{ creds.validation | tojson }};\n </script>\n <script src=\"/static/app.js\"></script>\n</body>\n</html>\n"}, "4bbcbf7f4cfc1ce3dd15dab99dd004ce3bb82312": {"t": 1785770933.9810944, "n": 19071, "h": "0a369457743cc974", "c": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <meta charset=\"UTF-8\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n <title>Sem-Detect — AI Review Detection</title>\n <link rel=\"preconnect\" href=\"https://fonts.googleapis.com\">\n <link rel=\"preconnect\" href=\"https://fonts.gstatic.com\" crossorigin>\n <link href=\"https://fonts.googleapis.com/css2?family=Inter:wght@400;500;600;700&display=swap\" rel=\"stylesheet\">\n <link rel=\"stylesheet\" href=\"/static/style.css\">\n <script>\n // Apply saved theme immediately to prevent flash\n (function(){var t=localStorage.getItem(\"theme\");if(t)document.documentElement.setAttribute(\"data-theme\",t);})();\n </script>\n</head>\n<body>\n\n <header class=\"header\">\n <div class=\"header-inner\">\n <nav class=\"header-nav\">\n <a href=\"/\" class=\"nav-tab\" id=\"tab-credentials\" data-tab=\"credentials\">Credentials</a>\n <a href=\"/evaluate\" class=\"nav-tab\" id=\"tab-evaluate\" data-tab=\"evaluate\">Evaluate</a>\n <a href=\"/results\" class=\"nav-tab\" id=\"tab-results\" data-tab=\"results\">Pre-Computed Results</a>\n </nav>\n <div class=\"theme-dropdown\" id=\"theme-dropdown\">\n <button class=\"theme-dropdown-trigger\" type=\"button\">Theme</button>\n <div class=\"theme-dropdown-menu\">\n <button class=\"theme-dropdown-item\" data-theme=\"\">Solarized</button>\n <button class=\"theme-dropdown-item\" data-theme=\"light-blue\">Light Blue</button>\n </div>\n </div>\n </div>\n </header>\n\n <main class=\"main\">\n\n <!-- ═══════ Panel: Credentials ═══════ -->\n <div id=\"panel-credentials\" class=\"tab-panel\">\n\n <div class=\"cred-lock-message hidden\" id=\"cred-lock-message\">\n Analysis in progress. Credentials cannot be changed while a pipeline is running.\n </div>\n\n <div class=\"cred-intro\">\n <h1 class=\"cred-title\">Connect your services</h1>\n <p class=\"cred-subtitle\">Credentials are stored in-memory for this session only. Nothing is written to disk.</p>\n </div>\n\n <form id=\"credentials-form\" autocomplete=\"off\">\n\n <!-- Row 1: Gemini + OpenAI -->\n <div class=\"cred-row\">\n <div class=\"card cred-card\">\n <div class=\"cred-service-header\">\n <span class=\"key-dot key-dot--gemini\"></span>\n <h2>Gemini</h2>\n <span class=\"cred-status\" id=\"status-gemini\"></span>\n </div>\n <div class=\"form-group\">\n <label for=\"gemini-key\">API Key</label>\n <input type=\"password\" id=\"gemini-key\" name=\"gemini_key\"\n placeholder=\"AIza...\"\n value=\"{{ creds.gemini_key_masked or '' }}\">\n </div>\n </div>\n <div class=\"card cred-card\">\n <div class=\"cred-service-header\">\n <span class=\"key-dot key-dot--openai\"></span>\n <h2>OpenAI</h2>\n <span class=\"cred-status\" id=\"status-openai\"></span>\n </div>\n <div class=\"form-group\">\n <label for=\"openai-key\">API Key</label>\n <input type=\"password\" id=\"openai-key\" name=\"openai_key\"\n placeholder=\"sk-...\"\n value=\"{{ creds.openai_key_masked or '' }}\">\n </div>\n </div>\n </div>\n\n <!-- Row 2: AWS + OpenReview -->\n <div class=\"cred-row\">\n <div class=\"card cred-card\">\n <div class=\"cred-service-header\">\n <span class=\"key-dot key-dot--aws\"></span>\n <h2>AWS Bedrock</h2>\n <span class=\"cred-status\" id=\"status-aws\"></span>\n </div>\n <div class=\"form-group\">\n <label for=\"aws-access-key\">Access Key ID</label>\n <input type=\"password\" id=\"aws-access-key\" name=\"aws_access\"\n placeholder=\"AKIA...\"\n value=\"{{ creds.aws_access_masked or '' }}\">\n </div>\n <div class=\"form-group\">\n <label for=\"aws-secret-key\">Secret Access Key</label>\n <input type=\"password\" id=\"aws-secret-key\" name=\"aws_secret\"\n placeholder=\"wJalrXUtn...\"\n value=\"{{ creds.aws_secret_masked or '' }}\">\n </div>\n </div>\n <div class=\"card cred-card\">\n <div class=\"cred-service-header\">\n <span class=\"key-dot key-dot--openreview\"></span>\n <h2>OpenReview</h2>\n <span class=\"cred-status\" id=\"status-openreview\"></span>\n </div>\n <div class=\"form-group\">\n <label for=\"openreview-user\">Username</label>\n <input type=\"text\" id=\"openreview-user\" name=\"openreview_user\"\n autocomplete=\"off\"\n placeholder=\"user@example.com\"\n value=\"{{ creds.openreview_user or '' }}\">\n </div>\n <div class=\"form-group\">\n <label for=\"openreview-pass\">Password</label>\n <input type=\"password\" id=\"openreview-pass\" name=\"openreview_pass\"\n autocomplete=\"new-password\"\n placeholder=\"password\"\n value=\"{{ creds.openreview_pass_masked or '' }}\">\n </div>\n </div>\n </div>\n\n <!-- Actions -->\n <div class=\"submit-section\">\n <div class=\"env-load-group\">\n <button type=\"button\" class=\"env-load-btn\" id=\"load-env-btn\">Load from .env</button>\n <span class=\"env-load-status\" id=\"env-load-status\"></span>\n </div>\n <button type=\"submit\" class=\"submit-btn\" id=\"save-btn\">\n SAVE & VALIDATE\n </button>\n </div>\n\n </form>\n </div>\n\n <!-- ═══════ Panel: Evaluate ═══════ -->\n <div id=\"panel-evaluate\" class=\"tab-panel\">\n\n <div class=\"cred-intro\">\n <h1 class=\"cred-title\">Run SEM-DETECT</h1>\n </div>\n\n <form id=\"analyze-form\" class=\"eval-form\">\n\n <div class=\"card eval-card\">\n\n <!-- Row 1: URL + Cutoff -->\n <div class=\"eval-grid\">\n <div class=\"form-group\">\n <label for=\"openreview-url\">OpenReview URL</label>\n <input type=\"text\" id=\"openreview-url\" name=\"openreview_url\" required\n placeholder=\"https://openreview.net/forum?id=**********\">\n </div>\n <div class=\"form-group\">\n <label for=\"cutoff-date\">Cutoff Date <span class=\"label-hint\">MM/DD/YYYY</span></label>\n <input type=\"text\" id=\"cutoff-date\" name=\"cutoff_date\"\n placeholder=\"01/15/2025\" maxlength=\"10\">\n </div>\n </div>\n <p class=\"card-note\">\n Some conferences allow authors to update blind submissions during the rebuttal period.<br>\n In these cases, use the cutoff date to ensure we fetch the same version that reviewers saw.\n </p>\n\n <div class=\"eval-divider\"></div>\n\n <!-- Row: PDF Processing Mode -->\n <div class=\"eval-grid\">\n <div class=\"form-group\" style=\"grid-column: 1 / -1;\">\n <label class=\"eval-check\">\n <input type=\"checkbox\" id=\"pdf-mode\" name=\"pdf_mode\">\n <span>Native PDF Mode</span>\n </label>\n <p class=\"card-note\">\n Send the original PDF directly to LLMs instead of extracting text with marker-pdf.<br>\n Faster but won't let you inspect the parsed pdf text. (Some models don't support this feature!)\n </p>\n </div>\n </div>\n\n <div class=\"eval-divider\"></div>\n\n <!-- Row 2: Reference Models (2x2) -->\n <div class=\"eval-grid\">\n <div class=\"form-group\">\n <label for=\"ref-model-1\">Reference Model 1</label>\n <select id=\"ref-model-1\" name=\"ref_model_1\" class=\"model-select\">\n <optgroup label=\"Google\">\n <option value=\"gemini:gemini-2.5-pro\" data-supports-pdf=\"true\" selected>Gemini 2.5 Pro</option>\n <option value=\"gemini:gemini-2.5-flash\" data-supports-pdf=\"true\">Gemini 2.5 Flash</option>\n </optgroup>\n <optgroup label=\"OpenAI\">\n <option value=\"openai:gpt-5.4\" data-supports-pdf=\"true\">GPT-5.4</option>\n </optgroup>\n <optgroup label=\"Anthropic (Bedrock)\">\n <option value=\"bedrock:us.anthropic.claude-sonnet-4-6\" data-supports-pdf=\"true\">Claude Sonnet 4.6</option>\n <option value=\"bedrock:us.anthropic.claude-opus-4-6-v1\" data-supports-pdf=\"true\">Claude Opus 4.6</option>\n </optgroup>\n <optgroup label=\"Other (Bedrock)\">\n <option value=\"bedrock:deepseek.v3-v1:0\" data-supports-pdf=\"false\">DeepSeek V3</option>\n <option value=\"bedrock:qwen.qwen3-235b-a22b-2507-v1:0\" data-supports-pdf=\"false\">Qwen3 235B</option>\n </optgroup>\n </select>\n </div>\n <div class=\"form-group\">\n <label for=\"ref-model-2\">Reference Model 2</label>\n <select id=\"ref-model-2\" name=\"ref_model_2\" class=\"model-select\">\n <optgroup label=\"Google\">\n <option value=\"gemini:gemini-2.5-pro\" data-supports-pdf=\"true\">Gemini 2.5 Pro</option>\n <option value=\"gemini:gemini-2.5-flash\" data-supports-pdf=\"true\">Gemini 2.5 Flash</option>\n </optgroup>\n <optgroup label=\"OpenAI\">\n <option value=\"openai:gpt-5.4\" data-supports-pdf=\"true\">GPT-5.4</option>\n </optgroup>\n <optgroup label=\"Anthropic (Bedrock)\">\n <option value=\"bedrock:us.anthropic.claude-sonnet-4-6\" data-supports-pdf=\"true\">Claude Sonnet 4.6</option>\n <option value=\"bedrock:us.anthropic.claude-opus-4-6-v1\" data-supports-pdf=\"true\">Claude Opus 4.6</option>\n </optgroup>\n <optgroup label=\"Other (Bedrock)\">\n <option value=\"bedrock:deepseek.v3-v1:0\" data-supports-pdf=\"false\" selected>DeepSeek V3</option>\n <option value=\"bedrock:qwen.qwen3-235b-a22b-2507-v1:0\" data-supports-pdf=\"false\">Qwen3 235B</option>\n </optgroup>\n </select>\n </div>\n <div class=\"form-group\">\n <label for=\"ref-model-3\">Reference Model 3</label>\n <select id=\"ref-model-3\" name=\"ref_model_3\" class=\"model-select\">\n <optgroup label=\"Google\">\n <option value=\"gemini:gemini-2.5-pro\" data-supports-pdf=\"true\">Gemini 2.5 Pro</option>\n <option value=\"gemini:gemini-2.5-flash\" data-supports-pdf=\"true\">Gemini 2.5 Flash</option>\n </optgroup>\n <optgroup label=\"OpenAI\">\n <option value=\"openai:gpt-5.4\" data-supports-pdf=\"true\">GPT-5.4</option>\n </optgroup>\n <optgroup label=\"Anthropic (Bedrock)\">\n <option value=\"bedrock:us.anthropic.claude-sonnet-4-6\" data-supports-pdf=\"true\">Claude Sonnet 4.6</option>\n <option value=\"bedrock:us.anthropic.claude-opus-4-6-v1\" data-supports-pdf=\"true\">Claude Opus 4.6</option>\n </optgroup>\n <optgroup label=\"Other (Bedrock)\">\n <option value=\"bedrock:deepseek.v3-v1:0\" data-supports-pdf=\"false\">DeepSeek V3</option>\n <option value=\"bedrock:qwen.qwen3-235b-a22b-2507-v1:0\" data-supports-pdf=\"false\" selected>Qwen3 235B</option>\n </optgroup>\n </select>\n </div>\n <p class=\"card-note grid-note\">We recommend using Gemini-2.5-Pro, DeepSeek and Qwen3.<br>(Models we used to tune Sem-Detect classifier).</p>\n </div>\n\n <div class=\"eval-divider\"></div>\n\n <!-- Row 3: Fixed models (2x2) -->\n <div class=\"eval-grid\">\n <div class=\"form-group\">\n <label>Cleaning & Claim Extraction</label>\n <div class=\"model-display\">Gemini 2.5 Flash</div>\n <input type=\"hidden\" id=\"cleaning-model\" name=\"cleaning_model\" value=\"gemini:gemini-2.5-flash\">\n </div>\n <div class=\"form-group\">\n <label>Embedding Model</label>\n <div class=\"model-display\">Qwen3-Embedding-0.6B</div>\n </div>\n <div class=\"form-group\">\n <label>Textual Features Model</label>\n <div class=\"model-display\">Mistral-7B-Instruct-v0.3</div>\n </div>\n <p class=\"card-note grid-note\">The pipeline needs local Qwen3-0.6B and Mistral-7B.<br>\n (GPU is recommended for speed)</p>\n </div>\n\n <div class=\"eval-divider\"></div>\n\n <!-- Row 4: Run -->\n <div class=\"eval-footer\" style=\"justify-content:flex-end\">\n <div class=\"eval-footer-right\">\n <div class=\"submit-error\" id=\"submit-error-analyze\"></div>\n <button type=\"submit\" class=\"submit-btn\" id=\"submit-btn\" disabled>Start</button>\n </div>\n </div>\n\n </div>\n\n </form>\n </div>\n\n <!-- ═══════ Panel: Results (pre-computed) ═══════ -->\n <div id=\"panel-results\" class=\"tab-panel\">\n\n <div class=\"cred-intro\">\n <h1 class=\"cred-title\">ICLR 2026 Results</h1>\n <p class=\"cred-subtitle\">Pre-computed Sem-Detect analysis on 677 ICLR 2026 papers (2,607 reviews).</p>\n </div>\n\n <div class=\"browse-controls card\">\n <div class=\"browse-search-row\">\n <input type=\"text\" id=\"browse-search\" class=\"browse-search\"\n placeholder=\"Search by paper title...\">\n <span class=\"browse-count\" id=\"browse-count\"></span>\n </div>\n <div class=\"browse-filters\" id=\"browse-filters\">\n <button class=\"browse-filter-btn browse-filter-btn--active\" data-filter=\"all\">All</button>\n <button class=\"browse-filter-btn\" data-filter=\"has-ai\">Has AI reviews</button>\n <button class=\"browse-filter-btn\" data-filter=\"has-rewrite\">Has Refined reviews</button>\n <button class=\"browse-filter-btn\" data-filter=\"all-human\">All Human</button>\n </div>\n </div>\n\n <div id=\"browse-list\" class=\"browse-list\"></div>\n <div id=\"browse-load-more\" class=\"browse-load-more hidden\">\n <button class=\"submit-btn submit-btn--secondary\" id=\"browse-more-btn\">Load more</button>\n </div>\n\n <!-- Single-paper detail view (reuses the same results section as progress page) -->\n <div id=\"browse-detail\" class=\"hidden\">\n <button class=\"browse-back-btn\" id=\"browse-back\">← Back to list</button>\n <div id=\"browse-paper-header\"></div>\n <div id=\"browse-summary-badges\"></div>\n <div id=\"browse-carousel-wrap\" class=\"carousel-wrap\">\n <button class=\"carousel-arrow carousel-arrow--left\" id=\"browse-carousel-prev\" aria-label=\"Previous review\">‹</button>\n <div id=\"browse-reviews-container\" class=\"carousel-track\"></div>\n <button class=\"carousel-arrow carousel-arrow--right\" id=\"browse-carousel-next\" aria-label=\"Next review\">›</button>\n </div>\n </div>\n\n </div>\n\n </main>\n\n <footer class=\"footer\">\n <p>Sem-Detect — Semantic Level Detection of AI Generated Peer-Reviews</p>\n <div class=\"footer-links\">\n <a href=\"https://github.com/LeiLiLab/ai-detection\" target=\"_blank\">GitHub</a>\n <a href=\"https://openreview.net\" target=\"_blank\">OpenReview</a>\n </div>\n </footer>\n\n <script>\n const INITIAL_TAB = {{ active_tab | tojson }};\n const INITIAL_VALIDATION = {{ creds.validation | tojson }};\n </script>\n <script src=\"/static/app.js\"></script>\n</body>\n</html>\n"}, "e7c2bde13b67c811f35855d7bb9b04004e3e8755": {"t": 1785770935.1776774, "n": 15949, "h": "b5d2e612011d2aa6", "c": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <meta charset=\"UTF-8\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n <title>Sem-Detect — AI Review Detection</title>\n <link rel=\"stylesheet\" href=\"/static/style.css\">\n</head>\n<body>\n\n <header class=\"header\">\n <div class=\"header-inner\">\n <nav class=\"header-nav\">\n <a href=\"/\" class=\"nav-tab\" id=\"tab-credentials\" data-tab=\"credentials\">Credentials</a>\n <a href=\"/evaluate\" class=\"nav-tab\" id=\"tab-evaluate\" data-tab=\"evaluate\">Evaluate</a>\n </nav>\n </div>\n </header>\n\n <main class=\"main\">\n\n <!-- ═══════ Panel: Credentials ═══════ -->\n <div id=\"panel-credentials\" class=\"tab-panel\">\n\n <div class=\"cred-lock-message hidden\" id=\"cred-lock-message\">\n Analysis in progress. Credentials cannot be changed while a pipeline is running.\n </div>\n\n <div class=\"cred-intro\">\n <h1 class=\"cred-title\">Connect your services</h1>\n <p class=\"cred-subtitle\">Credentials are stored in-memory for this session only. Nothing is written to disk.</p>\n </div>\n\n <form id=\"credentials-form\" autocomplete=\"off\">\n\n <!-- Row 1: Gemini + OpenAI -->\n <div class=\"cred-row\">\n <div class=\"card cred-card\">\n <div class=\"cred-service-header\">\n <span class=\"key-dot key-dot--gemini\"></span>\n <h2>Gemini</h2>\n <span class=\"cred-status\" id=\"status-gemini\"></span>\n </div>\n <div class=\"form-group\">\n <label for=\"gemini-key\">API Key</label>\n <input type=\"password\" id=\"gemini-key\" name=\"gemini_key\"\n placeholder=\"AIza...\"\n value=\"{{ creds.gemini_key_masked or '' }}\">\n </div>\n </div>\n <div class=\"card cred-card\">\n <div class=\"cred-service-header\">\n <span class=\"key-dot key-dot--openai\"></span>\n <h2>OpenAI</h2>\n <span class=\"cred-status\" id=\"status-openai\"></span>\n </div>\n <div class=\"form-group\">\n <label for=\"openai-key\">API Key</label>\n <input type=\"password\" id=\"openai-key\" name=\"openai_key\"\n placeholder=\"sk-...\"\n value=\"{{ creds.openai_key_masked or '' }}\">\n </div>\n </div>\n </div>\n\n <!-- Row 2: AWS + OpenReview -->\n <div class=\"cred-row\">\n <div class=\"card cred-card\">\n <div class=\"cred-service-header\">\n <span class=\"key-dot key-dot--aws\"></span>\n <h2>AWS Bedrock</h2>\n <span class=\"cred-status\" id=\"status-aws\"></span>\n </div>\n <div class=\"form-group\">\n <label for=\"aws-access-key\">Access Key ID</label>\n <input type=\"password\" id=\"aws-access-key\" name=\"aws_access\"\n placeholder=\"AKIA...\"\n value=\"{{ creds.aws_access_masked or '' }}\">\n </div>\n <div class=\"form-group\">\n <label for=\"aws-secret-key\">Secret Access Key</label>\n <input type=\"password\" id=\"aws-secret-key\" name=\"aws_secret\"\n placeholder=\"wJalrXUtn...\"\n value=\"{{ creds.aws_secret_masked or '' }}\">\n </div>\n </div>\n <div class=\"card cred-card\">\n <div class=\"cred-service-header\">\n <span class=\"key-dot key-dot--openreview\"></span>\n <h2>OpenReview</h2>\n <span class=\"cred-status\" id=\"status-openreview\"></span>\n </div>\n <div class=\"form-group\">\n <label for=\"openreview-user\">Username</label>\n <input type=\"text\" id=\"openreview-user\" name=\"openreview_user\"\n autocomplete=\"off\"\n placeholder=\"user@example.com\"\n value=\"{{ creds.openreview_user or '' }}\">\n </div>\n <div class=\"form-group\">\n <label for=\"openreview-pass\">Password</label>\n <input type=\"password\" id=\"openreview-pass\" name=\"openreview_pass\"\n autocomplete=\"new-password\"\n placeholder=\"password\"\n value=\"{{ creds.openreview_pass_masked or '' }}\">\n </div>\n </div>\n </div>\n\n <!-- Actions -->\n <div class=\"submit-section\">\n <div class=\"env-load-group\">\n <button type=\"button\" class=\"env-load-btn\" id=\"load-env-btn\">Load from .env</button>\n <span class=\"env-load-status\" id=\"env-load-status\"></span>\n </div>\n <button type=\"submit\" class=\"submit-btn\" id=\"save-btn\">\n SAVE & VALIDATE\n </button>\n </div>\n\n </form>\n </div>\n\n <!-- ═══════ Panel: Evaluate ═══════ -->\n <div id=\"panel-evaluate\" class=\"tab-panel\">\n\n <div class=\"cred-intro\">\n <h1 class=\"cred-title\">Run SEM-DETECT</h1>\n </div>\n\n <form id=\"analyze-form\" class=\"eval-form\">\n\n <div class=\"card eval-card\">\n\n <!-- Row 1: URL + Cutoff -->\n <div class=\"eval-grid\">\n <div class=\"form-group\">\n <label for=\"openreview-url\">OpenReview URL</label>\n <input type=\"text\" id=\"openreview-url\" name=\"openreview_url\" required\n placeholder=\"https://openreview.net/forum?id=**********\">\n </div>\n <div class=\"form-group\">\n <label for=\"cutoff-date\">Cutoff Date <span class=\"label-hint\">MM/DD/YYYY</span></label>\n <input type=\"text\" id=\"cutoff-date\" name=\"cutoff_date\"\n placeholder=\"01/15/2025\" maxlength=\"10\">\n </div>\n </div>\n <p class=\"card-note\">\n Some conferences allow authors to update blind submissions during the rebuttal period.<br>\n In these cases, use the cutoff date to ensure we fetch the same version that reviewers saw.\n </p>\n\n <div class=\"eval-divider\"></div>\n\n <!-- Row: PDF Processing Mode -->\n <div class=\"eval-grid\">\n <div class=\"form-group\" style=\"grid-column: 1 / -1;\">\n <label class=\"eval-check\">\n <input type=\"checkbox\" id=\"pdf-mode\" name=\"pdf_mode\">\n <span>Native PDF Mode</span>\n </label>\n <p class=\"card-note\">\n Send the original PDF directly to LLMs instead of extracting text with marker-pdf.<br>\n Faster but won't let you inspect the parsed pdf text. (Some models don't support this feature!)\n </p>\n </div>\n </div>\n\n <div class=\"eval-divider\"></div>\n\n <!-- Row 2: Reference Models (2x2) -->\n <div class=\"eval-grid\">\n <div class=\"form-group\">\n <label for=\"ref-model-1\">Reference Model 1</label>\n <select id=\"ref-model-1\" name=\"ref_model_1\" class=\"model-select\">\n <optgroup label=\"Google\">\n <option value=\"gemini:gemini-2.5-pro\" data-supports-pdf=\"true\" selected>Gemini 2.5 Pro</option>\n <option value=\"gemini:gemini-2.5-flash\" data-supports-pdf=\"true\">Gemini 2.5 Flash</option>\n </optgroup>\n <optgroup label=\"OpenAI\">\n <option value=\"openai:gpt-5.4\" data-supports-pdf=\"true\">GPT-5.4</option>\n </optgroup>\n <optgroup label=\"Anthropic (Bedrock)\">\n <option value=\"bedrock:us.anthropic.claude-sonnet-4-6\" data-supports-pdf=\"true\">Claude Sonnet 4.6</option>\n <option value=\"bedrock:us.anthropic.claude-opus-4-6-v1\" data-supports-pdf=\"true\">Claude Opus 4.6</option>\n </optgroup>\n <optgroup label=\"Other (Bedrock)\">\n <option value=\"bedrock:deepseek.v3-v1:0\" data-supports-pdf=\"false\">DeepSeek V3</option>\n <option value=\"bedrock:qwen.qwen3-235b-a22b-2507-v1:0\" data-supports-pdf=\"false\">Qwen3 235B</option>\n </optgroup>\n </select>\n </div>\n <div class=\"form-group\">\n <label for=\"ref-model-2\">Reference Model 2</label>\n <select id=\"ref-model-2\" name=\"ref_model_2\" class=\"model-select\">\n <optgroup label=\"Google\">\n <option value=\"gemini:gemini-2.5-pro\" data-supports-pdf=\"true\">Gemini 2.5 Pro</option>\n <option value=\"gemini:gemini-2.5-flash\" data-supports-pdf=\"true\">Gemini 2.5 Flash</option>\n </optgroup>\n <optgroup label=\"OpenAI\">\n <option value=\"openai:gpt-5.4\" data-supports-pdf=\"true\">GPT-5.4</option>\n </optgroup>\n <optgroup label=\"Anthropic (Bedrock)\">\n <option value=\"bedrock:us.anthropic.claude-sonnet-4-6\" data-supports-pdf=\"true\">Claude Sonnet 4.6</option>\n <option value=\"bedrock:us.anthropic.claude-opus-4-6-v1\" data-supports-pdf=\"true\">Claude Opus 4.6</option>\n </optgroup>\n <optgroup label=\"Other (Bedrock)\">\n <option value=\"bedrock:deepseek.v3-v1:0\" data-supports-pdf=\"false\" selected>DeepSeek V3</option>\n <option value=\"bedrock:qwen.qwen3-235b-a22b-2507-v1:0\" data-supports-pdf=\"false\">Qwen3 235B</option>\n </optgroup>\n </select>\n </div>\n <div class=\"form-group\">\n <label for=\"ref-model-3\">Reference Model 3</label>\n <select id=\"ref-model-3\" name=\"ref_model_3\" class=\"model-select\">\n <optgroup label=\"Google\">\n <option value=\"gemini:gemini-2.5-pro\" data-supports-pdf=\"true\">Gemini 2.5 Pro</option>\n <option value=\"gemini:gemini-2.5-flash\" data-supports-pdf=\"true\">Gemini 2.5 Flash</option>\n </optgroup>\n <optgroup label=\"OpenAI\">\n <option value=\"openai:gpt-5.4\" data-supports-pdf=\"true\">GPT-5.4</option>\n </optgroup>\n <optgroup label=\"Anthropic (Bedrock)\">\n <option value=\"bedrock:us.anthropic.claude-sonnet-4-6\" data-supports-pdf=\"true\">Claude Sonnet 4.6</option>\n <option value=\"bedrock:us.anthropic.claude-opus-4-6-v1\" data-supports-pdf=\"true\">Claude Opus 4.6</option>\n </optgroup>\n <optgroup label=\"Other (Bedrock)\">\n <option value=\"bedrock:deepseek.v3-v1:0\" data-supports-pdf=\"false\">DeepSeek V3</option>\n <option value=\"bedrock:qwen.qwen3-235b-a22b-2507-v1:0\" data-supports-pdf=\"false\" selected>Qwen3 235B</option>\n </optgroup>\n </select>\n </div>\n <p class=\"card-note grid-note\">We recommend using Gemini-2.5-Pro, DeepSeek and Qwen3.<br>(Models we used to tune Sem-Detect classifier).</p>\n </div>\n\n <div class=\"eval-divider\"></div>\n\n <!-- Row 3: Fixed models (2x2) -->\n <div class=\"eval-grid\">\n <div class=\"form-group\">\n <label>Cleaning & Claim Extraction</label>\n <div class=\"model-display\">Gemini 2.5 Flash</div>\n <input type=\"hidden\" id=\"cleaning-model\" name=\"cleaning_model\" value=\"gemini:gemini-2.5-flash\">\n </div>\n <div class=\"form-group\">\n <label>Embedding Model</label>\n <div class=\"model-display\">Qwen3-Embedding-0.6B</div>\n </div>\n <div class=\"form-group\">\n <label>Textual Features Model</label>\n <div class=\"model-display\">Mistral-7B-Instruct-v0.3</div>\n </div>\n <p class=\"card-note grid-note\">The pipeline needs local Qwen3-0.6B and Mistral-7B.<br>\n (GPU is recommended for speed)</p>\n </div>\n\n <div class=\"eval-divider\"></div>\n\n <!-- Row 4: Test mode + Run -->\n <div class=\"eval-footer\">\n <label class=\"eval-check\">\n <input type=\"checkbox\" id=\"test-mode\" name=\"test_mode\">\n <span>Test Mode</span>\n </label>\n <div class=\"eval-footer-right\">\n <div class=\"submit-error\" id=\"submit-error-analyze\"></div>\n <button type=\"submit\" class=\"submit-btn\" id=\"submit-btn\" disabled>Start</button>\n </div>\n </div>\n\n </div>\n\n </form>\n </div>\n\n </main>\n\n <footer class=\"footer\">\n <p>Sem-Detect — Semantic Level Detection of AI Generated Peer-Reviews</p>\n <div class=\"footer-links\">\n <a href=\"https://github.com/LeiLiLab/ai-detection\" target=\"_blank\">GitHub</a>\n <a href=\"https://openreview.net\" target=\"_blank\">OpenReview</a>\n </div>\n </footer>\n\n <script>\n const INITIAL_TAB = {{ active_tab | tojson }};\n const INITIAL_VALIDATION = {{ creds.validation | tojson }};\n </script>\n <script src=\"/static/app.js\"></script>\n</body>\n</html>\n"}, "0ba41decf0616c50b68528d10f73cd716bc57fae": {"t": 1785770936.9752026, "n": 15672, "h": "9460a8af828e7729", "c": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <meta charset=\"UTF-8\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n <title>Sem-Detect — AI Review Detection</title>\n <link rel=\"stylesheet\" href=\"/static/style.css\">\n</head>\n<body>\n\n <header class=\"header\">\n <div class=\"header-inner\">\n <nav class=\"header-nav\">\n <a href=\"/\" class=\"nav-tab\" id=\"tab-credentials\" data-tab=\"credentials\">Credentials</a>\n <a href=\"/evaluate\" class=\"nav-tab\" id=\"tab-evaluate\" data-tab=\"evaluate\">Evaluate</a>\n </nav>\n </div>\n </header>\n\n <main class=\"main\">\n\n <!-- ═══════ Panel: Credentials ═══════ -->\n <div id=\"panel-credentials\" class=\"tab-panel\">\n\n <div class=\"cred-lock-message hidden\" id=\"cred-lock-message\">\n Analysis in progress. Credentials cannot be changed while a pipeline is running.\n </div>\n\n <div class=\"cred-intro\">\n <h1 class=\"cred-title\">Connect your services</h1>\n <p class=\"cred-subtitle\">Credentials are stored in-memory for this session only. Nothing is written to disk.</p>\n </div>\n\n <form id=\"credentials-form\" autocomplete=\"off\">\n\n <!-- Row 1: Gemini + OpenAI -->\n <div class=\"cred-row\">\n <div class=\"card cred-card\">\n <div class=\"cred-service-header\">\n <span class=\"key-dot key-dot--gemini\"></span>\n <h2>Gemini</h2>\n <span class=\"cred-status\" id=\"status-gemini\"></span>\n </div>\n <div class=\"form-group\">\n <label for=\"gemini-key\">API Key</label>\n <input type=\"password\" id=\"gemini-key\" name=\"gemini_key\"\n placeholder=\"AIza...\"\n value=\"{{ creds.gemini_key_masked or '' }}\">\n </div>\n </div>\n <div class=\"card cred-card\">\n <div class=\"cred-service-header\">\n <span class=\"key-dot key-dot--openai\"></span>\n <h2>OpenAI</h2>\n <span class=\"cred-status\" id=\"status-openai\"></span>\n </div>\n <div class=\"form-group\">\n <label for=\"openai-key\">API Key</label>\n <input type=\"password\" id=\"openai-key\" name=\"openai_key\"\n placeholder=\"sk-...\"\n value=\"{{ creds.openai_key_masked or '' }}\">\n </div>\n </div>\n </div>\n\n <!-- Row 2: AWS + OpenReview -->\n <div class=\"cred-row\">\n <div class=\"card cred-card\">\n <div class=\"cred-service-header\">\n <span class=\"key-dot key-dot--aws\"></span>\n <h2>AWS Bedrock</h2>\n <span class=\"cred-status\" id=\"status-aws\"></span>\n </div>\n <div class=\"form-group\">\n <label for=\"aws-access-key\">Access Key ID</label>\n <input type=\"password\" id=\"aws-access-key\" name=\"aws_access\"\n placeholder=\"AKIA...\"\n value=\"{{ creds.aws_access_masked or '' }}\">\n </div>\n <div class=\"form-group\">\n <label for=\"aws-secret-key\">Secret Access Key</label>\n <input type=\"password\" id=\"aws-secret-key\" name=\"aws_secret\"\n placeholder=\"wJalrXUtn...\"\n value=\"{{ creds.aws_secret_masked or '' }}\">\n </div>\n </div>\n <div class=\"card cred-card\">\n <div class=\"cred-service-header\">\n <span class=\"key-dot key-dot--openreview\"></span>\n <h2>OpenReview</h2>\n <span class=\"cred-status\" id=\"status-openreview\"></span>\n </div>\n <div class=\"form-group\">\n <label for=\"openreview-user\">Username</label>\n <input type=\"text\" id=\"openreview-user\" name=\"openreview_user\"\n autocomplete=\"off\"\n placeholder=\"user@example.com\"\n value=\"{{ creds.openreview_user or '' }}\">\n </div>\n <div class=\"form-group\">\n <label for=\"openreview-pass\">Password</label>\n <input type=\"password\" id=\"openreview-pass\" name=\"openreview_pass\"\n autocomplete=\"new-password\"\n placeholder=\"password\"\n value=\"{{ creds.openreview_pass_masked or '' }}\">\n </div>\n </div>\n </div>\n\n <!-- Actions -->\n <div class=\"submit-section\">\n <button type=\"submit\" class=\"submit-btn\" id=\"save-btn\">\n SAVE & VALIDATE\n </button>\n </div>\n\n </form>\n </div>\n\n <!-- ═══════ Panel: Evaluate ═══════ -->\n <div id=\"panel-evaluate\" class=\"tab-panel\">\n\n <div class=\"cred-intro\">\n <h1 class=\"cred-title\">Run SEM-DETECT</h1>\n </div>\n\n <form id=\"analyze-form\" class=\"eval-form\">\n\n <div class=\"card eval-card\">\n\n <!-- Row 1: URL + Cutoff -->\n <div class=\"eval-grid\">\n <div class=\"form-group\">\n <label for=\"openreview-url\">OpenReview URL</label>\n <input type=\"text\" id=\"openreview-url\" name=\"openreview_url\" required\n placeholder=\"https://openreview.net/forum?id=**********\">\n </div>\n <div class=\"form-group\">\n <label for=\"cutoff-date\">Cutoff Date <span class=\"label-hint\">MM/DD/YYYY</span></label>\n <input type=\"text\" id=\"cutoff-date\" name=\"cutoff_date\"\n placeholder=\"01/15/2025\" maxlength=\"10\">\n </div>\n </div>\n <p class=\"card-note\">\n Some conferences allow authors to update blind submissions during the rebuttal period.<br>\n In these cases, use the cutoff date to ensure we fetch the same version that reviewers saw.\n </p>\n\n <div class=\"eval-divider\"></div>\n\n <!-- Row: PDF Processing Mode -->\n <div class=\"eval-grid\">\n <div class=\"form-group\" style=\"grid-column: 1 / -1;\">\n <label class=\"eval-check\">\n <input type=\"checkbox\" id=\"pdf-mode\" name=\"pdf_mode\">\n <span>Native PDF Mode</span>\n </label>\n <p class=\"card-note\">\n Send the original PDF directly to LLMs instead of extracting text with marker-pdf.<br>\n Faster but won't let you inspect the parsed pdf text. (Some models don't support this feature!)\n </p>\n </div>\n </div>\n\n <div class=\"eval-divider\"></div>\n\n <!-- Row 2: Reference Models (2x2) -->\n <div class=\"eval-grid\">\n <div class=\"form-group\">\n <label for=\"ref-model-1\">Reference Model 1</label>\n <select id=\"ref-model-1\" name=\"ref_model_1\" class=\"model-select\">\n <optgroup label=\"Google\">\n <option value=\"gemini:gemini-2.5-pro\" data-supports-pdf=\"true\" selected>Gemini 2.5 Pro</option>\n <option value=\"gemini:gemini-2.5-flash\" data-supports-pdf=\"true\">Gemini 2.5 Flash</option>\n </optgroup>\n <optgroup label=\"OpenAI\">\n <option value=\"openai:gpt-5.4\" data-supports-pdf=\"true\">GPT-5.4</option>\n </optgroup>\n <optgroup label=\"Anthropic (Bedrock)\">\n <option value=\"bedrock:us.anthropic.claude-sonnet-4-6\" data-supports-pdf=\"true\">Claude Sonnet 4.6</option>\n <option value=\"bedrock:us.anthropic.claude-opus-4-6\" data-supports-pdf=\"true\">Claude Opus 4.6</option>\n </optgroup>\n <optgroup label=\"Other (Bedrock)\">\n <option value=\"bedrock:deepseek.v3-v1:0\" data-supports-pdf=\"false\">DeepSeek V3</option>\n <option value=\"bedrock:qwen.qwen3-235b-a22b-2507-v1:0\" data-supports-pdf=\"false\">Qwen3 235B</option>\n </optgroup>\n </select>\n </div>\n <div class=\"form-group\">\n <label for=\"ref-model-2\">Reference Model 2</label>\n <select id=\"ref-model-2\" name=\"ref_model_2\" class=\"model-select\">\n <optgroup label=\"Google\">\n <option value=\"gemini:gemini-2.5-pro\" data-supports-pdf=\"true\">Gemini 2.5 Pro</option>\n <option value=\"gemini:gemini-2.5-flash\" data-supports-pdf=\"true\">Gemini 2.5 Flash</option>\n </optgroup>\n <optgroup label=\"OpenAI\">\n <option value=\"openai:gpt-5.4\" data-supports-pdf=\"true\">GPT-5.4</option>\n </optgroup>\n <optgroup label=\"Anthropic (Bedrock)\">\n <option value=\"bedrock:us.anthropic.claude-sonnet-4-6\" data-supports-pdf=\"true\">Claude Sonnet 4.6</option>\n <option value=\"bedrock:us.anthropic.claude-opus-4-6\" data-supports-pdf=\"true\">Claude Opus 4.6</option>\n </optgroup>\n <optgroup label=\"Other (Bedrock)\">\n <option value=\"bedrock:deepseek.v3-v1:0\" data-supports-pdf=\"false\" selected>DeepSeek V3</option>\n <option value=\"bedrock:qwen.qwen3-235b-a22b-2507-v1:0\" data-supports-pdf=\"false\">Qwen3 235B</option>\n </optgroup>\n </select>\n </div>\n <div class=\"form-group\">\n <label for=\"ref-model-3\">Reference Model 3</label>\n <select id=\"ref-model-3\" name=\"ref_model_3\" class=\"model-select\">\n <optgroup label=\"Google\">\n <option value=\"gemini:gemini-2.5-pro\" data-supports-pdf=\"true\">Gemini 2.5 Pro</option>\n <option value=\"gemini:gemini-2.5-flash\" data-supports-pdf=\"true\">Gemini 2.5 Flash</option>\n </optgroup>\n <optgroup label=\"OpenAI\">\n <option value=\"openai:gpt-5.4\" data-supports-pdf=\"true\">GPT-5.4</option>\n </optgroup>\n <optgroup label=\"Anthropic (Bedrock)\">\n <option value=\"bedrock:us.anthropic.claude-sonnet-4-6\" data-supports-pdf=\"true\">Claude Sonnet 4.6</option>\n <option value=\"bedrock:us.anthropic.claude-opus-4-6\" data-supports-pdf=\"true\">Claude Opus 4.6</option>\n </optgroup>\n <optgroup label=\"Other (Bedrock)\">\n <option value=\"bedrock:deepseek.v3-v1:0\" data-supports-pdf=\"false\">DeepSeek V3</option>\n <option value=\"bedrock:qwen.qwen3-235b-a22b-2507-v1:0\" data-supports-pdf=\"false\" selected>Qwen3 235B</option>\n </optgroup>\n </select>\n </div>\n <p class=\"card-note grid-note\">We recommend using Gemini-2.5-Pro, DeepSeek and Qwen3.<br>(Models we used to tune Sem-Detect classifier).</p>\n </div>\n\n <div class=\"eval-divider\"></div>\n\n <!-- Row 3: Fixed models (2x2) -->\n <div class=\"eval-grid\">\n <div class=\"form-group\">\n <label>Cleaning & Claim Extraction</label>\n <div class=\"model-display\">Gemini 2.5 Flash</div>\n <input type=\"hidden\" id=\"cleaning-model\" name=\"cleaning_model\" value=\"gemini:gemini-2.5-flash\">\n </div>\n <div class=\"form-group\">\n <label>Embedding Model</label>\n <div class=\"model-display\">Qwen3-Embedding-0.6B</div>\n </div>\n <div class=\"form-group\">\n <label>Textual Features Model</label>\n <div class=\"model-display\">Mistral-7B-Instruct-v0.3</div>\n </div>\n <p class=\"card-note grid-note\">The pipeline needs local Qwen3-0.6B and Mistral-7B.<br>\n (GPU is recommended for speed)</p>\n </div>\n\n <div class=\"eval-divider\"></div>\n\n <!-- Row 4: Test mode + Run -->\n <div class=\"eval-footer\">\n <label class=\"eval-check\">\n <input type=\"checkbox\" id=\"test-mode\" name=\"test_mode\">\n <span>Test Mode</span>\n </label>\n <div class=\"eval-footer-right\">\n <div class=\"submit-error\" id=\"submit-error-analyze\"></div>\n <button type=\"submit\" class=\"submit-btn\" id=\"submit-btn\" disabled>Start</button>\n </div>\n </div>\n\n </div>\n\n </form>\n </div>\n\n </main>\n\n <footer class=\"footer\">\n <p>Sem-Detect — Semantic Level Detection of AI Generated Peer-Reviews</p>\n <div class=\"footer-links\">\n <a href=\"https://github.com/LeiLiLab/ai-detection\" target=\"_blank\">GitHub</a>\n <a href=\"https://openreview.net\" target=\"_blank\">OpenReview</a>\n </div>\n </footer>\n\n <script>\n const INITIAL_TAB = {{ active_tab | tojson }};\n const INITIAL_VALIDATION = {{ creds.validation | tojson }};\n </script>\n <script src=\"/static/app.js\"></script>\n</body>\n</html>\n"}, "5db962156f981e1306d466a7f1f4472ca5852755": {"t": 1785770938.4976122, "n": 11096, "h": "77f062105b8268d7", "c": "<!DOCTYPE html>\n<html lang=\"en\">\n<head>\n <meta charset=\"UTF-8\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n <title>Sem-Detect — AI Review Detection</title>\n <link rel=\"stylesheet\" href=\"/static/style.css\">\n</head>\n<body>\n\n <header class=\"header\">\n <div class=\"header-inner\">\n <nav class=\"header-nav\">\n <a href=\"/\" class=\"nav-tab\" id=\"tab-credentials\" data-tab=\"credentials\">Credentials</a>\n <a href=\"/evaluate\" class=\"nav-tab\" id=\"tab-evaluate\" data-tab=\"evaluate\">Evaluate</a>\n </nav>\n </div>\n </header>\n\n <main class=\"main\">\n\n <!-- ═══════ Panel: Credentials ═══════ -->\n <div id=\"panel-credentials\" class=\"tab-panel\">\n\n <div class=\"cred-lock-message hidden\" id=\"cred-lock-message\">\n Analysis in progress. Credentials cannot be changed while a pipeline is running.\n </div>\n\n <div class=\"cred-intro\">\n <h1 class=\"cred-title\">Connect your services</h1>\n <p class=\"cred-subtitle\">Credentials are stored in-memory for this session only. Nothing is written to disk.</p>\n </div>\n\n <form id=\"credentials-form\">\n\n <!-- Row 1: Gemini + OpenAI -->\n <div class=\"cred-row\">\n <div class=\"card cred-card\">\n <div class=\"cred-service-header\">\n <span class=\"key-dot key-dot--gemini\"></span>\n <h2>Gemini</h2>\n <span class=\"cred-status\" id=\"status-gemini\"></span>\n </div>\n <div class=\"form-group\">\n <label for=\"gemini-key\">API Key</label>\n <input type=\"password\" id=\"gemini-key\" name=\"gemini_key\"\n placeholder=\"AIza...\"\n value=\"{{ creds.gemini_key_masked or '' }}\">\n </div>\n </div>\n <div class=\"card cred-card\">\n <div class=\"cred-service-header\">\n <span class=\"key-dot key-dot--openai\"></span>\n <h2>OpenAI</h2>\n <span class=\"cred-status\" id=\"status-openai\"></span>\n </div>\n <div class=\"form-group\">\n <label for=\"openai-key\">API Key</label>\n <input type=\"password\" id=\"openai-key\" name=\"openai_key\"\n placeholder=\"sk-...\"\n value=\"{{ creds.openai_key_masked or '' }}\">\n </div>\n </div>\n </div>\n\n <!-- Row 2: AWS + OpenReview -->\n <div class=\"cred-row\">\n <div class=\"card cred-card\">\n <div class=\"cred-service-header\">\n <span class=\"key-dot key-dot--aws\"></span>\n <h2>AWS Bedrock</h2>\n <span class=\"cred-status\" id=\"status-aws\"></span>\n </div>\n <div class=\"form-group\">\n <label for=\"aws-access-key\">Access Key ID</label>\n <input type=\"password\" id=\"aws-access-key\" name=\"aws_access\"\n placeholder=\"AKIA...\"\n value=\"{{ creds.aws_access_masked or '' }}\">\n </div>\n <div class=\"form-group\">\n <label for=\"aws-secret-key\">Secret Access Key</label>\n <input type=\"password\" id=\"aws-secret-key\" name=\"aws_secret\"\n placeholder=\"wJalrXUtn...\"\n value=\"{{ creds.aws_secret_masked or '' }}\">\n </div>\n </div>\n <div class=\"card cred-card\">\n <div class=\"cred-service-header\">\n <span class=\"key-dot key-dot--openreview\"></span>\n <h2>OpenReview</h2>\n <span class=\"cred-status\" id=\"status-openreview\"></span>\n </div>\n <div class=\"form-group\">\n <label for=\"openreview-user\">Username</label>\n <input type=\"text\" id=\"openreview-user\" name=\"openreview_user\"\n placeholder=\"user@example.com\"\n value=\"{{ creds.openreview_user or '' }}\">\n </div>\n <div class=\"form-group\">\n <label for=\"openreview-pass\">Password</label>\n <input type=\"password\" id=\"openreview-pass\" name=\"openreview_pass\"\n placeholder=\"password\"\n value=\"{{ creds.openreview_pass_masked or '' }}\">\n </div>\n </div>\n </div>\n\n <!-- Actions -->\n <div class=\"submit-section\">\n <button type=\"submit\" class=\"submit-btn\" id=\"save-btn\">\n SAVE & VALIDATE <span class=\"btn-arrow\">→</span>\n </button>\n </div>\n\n </form>\n </div>\n\n <!-- ═══════ Panel: Evaluate ═══════ -->\n <div id=\"panel-evaluate\" class=\"tab-panel\">\n\n <div class=\"cred-intro\">\n <h1 class=\"cred-title\">Run SEM-DETECT</h1>\n <p class=\"cred-subtitle\">Note: Some conferences allow authors to update blind submissions during the rebuttal period!<br>Use the cutoff date to ensure we fetch the same version that reviewers saw.</p>\n </div>\n\n <form id=\"analyze-form\" class=\"eval-form\">\n\n <div class=\"card eval-card\">\n\n <!-- Row 1: URL + Cutoff -->\n <div class=\"eval-grid\">\n <div class=\"form-group\">\n <label for=\"openreview-url\">OpenReview URL</label>\n <input type=\"text\" id=\"openreview-url\" name=\"openreview_url\" required\n placeholder=\"https://openreview.net/forum?id=...\">\n </div>\n <div class=\"form-group\">\n <label for=\"cutoff-date\">Cutoff Date <span class=\"label-hint\">MM/DD/YYYY</span></label>\n <input type=\"text\" id=\"cutoff-date\" name=\"cutoff_date\"\n placeholder=\"01/15/2025\" maxlength=\"10\">\n </div>\n </div>\n\n <div class=\"eval-divider\"></div>\n\n <!-- Row 2: Models -->\n <div class=\"eval-grid\">\n <div class=\"form-group\">\n <label for=\"ref-model-1\">Reference Model 1</label>\n <select id=\"ref-model-1\" name=\"ref_model_1\">\n <option value=\"gemini:gemini-2.5-pro\" selected>gemini:gemini-2.5-pro</option>\n <option value=\"gemini:gemini-2.5-flash\">gemini:gemini-2.5-flash</option>\n <option value=\"bedrock:deepseek.v3-v1:0\">bedrock:deepseek.v3-v1:0</option>\n <option value=\"bedrock:qwen.qwen3-235b-a22b-2507-v1:0\">bedrock:qwen.qwen3-235b-a22b-2507-v1:0</option>\n </select>\n </div>\n <div class=\"form-group\">\n <label for=\"ref-model-2\">Reference Model 2</label>\n <select id=\"ref-model-2\" name=\"ref_model_2\">\n <option value=\"gemini:gemini-2.5-pro\">gemini:gemini-2.5-pro</option>\n <option value=\"gemini:gemini-2.5-flash\">gemini:gemini-2.5-flash</option>\n <option value=\"bedrock:deepseek.v3-v1:0\" selected>bedrock:deepseek.v3-v1:0</option>\n <option value=\"bedrock:qwen.qwen3-235b-a22b-2507-v1:0\">bedrock:qwen.qwen3-235b-a22b-2507-v1:0</option>\n </select>\n </div>\n <div class=\"form-group\">\n <label for=\"ref-model-3\">Reference Model 3</label>\n <select id=\"ref-model-3\" name=\"ref_model_3\">\n <option value=\"gemini:gemini-2.5-pro\">gemini:gemini-2.5-pro</option>\n <option value=\"gemini:gemini-2.5-flash\">gemini:gemini-2.5-flash</option>\n <option value=\"bedrock:deepseek.v3-v1:0\">bedrock:deepseek.v3-v1:0</option>\n <option value=\"bedrock:qwen.qwen3-235b-a22b-2507-v1:0\" selected>bedrock:qwen.qwen3-235b-a22b-2507-v1:0</option>\n </select>\n </div>\n <div class=\"form-group\">\n <label for=\"cleaning-model\">Cleaning Model</label>\n <select id=\"cleaning-model\" name=\"cleaning_model\">\n <option value=\"gemini:gemini-2.5-flash\" selected>gemini:gemini-2.5-flash</option>\n <option value=\"gemini:gemini-2.5-pro\">gemini:gemini-2.5-pro</option>\n </select>\n </div>\n </div>\n\n <div class=\"eval-divider\"></div>\n\n <!-- Row 3: Test mode + Run -->\n <div class=\"eval-footer\">\n <label class=\"eval-check\">\n <input type=\"checkbox\" id=\"test-mode\" name=\"test_mode\">\n <span>Test Mode</span>\n </label>\n <div class=\"eval-footer-right\">\n <div class=\"submit-error\" id=\"submit-error-analyze\"></div>\n <button type=\"submit\" class=\"submit-btn\" id=\"submit-btn\" disabled>Start <span class=\"btn-arrow\">→</span></button>\n </div>\n </div>\n\n </div>\n\n </form>\n </div>\n\n </main>\n\n <footer class=\"footer\">\n <p>Sem-Detect — Semantic Level Detection of AI Generated Peer-Reviews</p>\n <div class=\"footer-links\">\n <a href=\"https://github.com/LeiLiLab/ai-detection\" target=\"_blank\">GitHub</a>\n <a href=\"https://openreview.net\" target=\"_blank\">OpenReview</a>\n </div>\n </footer>\n\n <script>\n const INITIAL_TAB = {{ active_tab | tojson }};\n const INITIAL_VALIDATION = {{ creds.validation | tojson }};\n </script>\n <script src=\"/static/app.js\"></script>\n</body>\n</html>\n"}}}} |