{"id":229,"date":"2026-01-10T22:02:00","date_gmt":"2026-01-10T14:02:00","guid":{"rendered":"https:\/\/blog.bexonbai.com\/?p=229"},"modified":"2026-03-09T12:39:54","modified_gmt":"2026-03-09T04:39:54","slug":"ai-on-chrome-%e8%a9%a6%e7%94%a8","status":"publish","type":"post","link":"https:\/\/blog.bexonbai.com\/?p=229","title":{"rendered":"AI on Chrome \u8a66\u7528"},"content":{"rendered":"\n<p>Google \u5f9e Chrome 138 \u7248\u672c\u958b\u59cb\u5c07 Gemini Nano \u6a21\u578b\u76f4\u63a5\u5d4c\u5165\u684c\u9762\u5ba2\u6236\u7aef\u3002\u9019\u662f\u4e00\u7a2e\u8f15\u91cf\u7d1a\u7684\u5927\u8a9e\u8a00\u6a21\u578b\uff0c\u5728\u4f7f\u7528\u8005\u88dd\u7f6e\u672c\u5730\u57f7\u884c\uff0c\u6240\u6709\u8cc7\u6599\u8655\u7406\u90fd\u5728\u7aef\u5074\u5b8c\u6210\uff0c\u7121\u9700\u4e0a\u50b3\u81f3\u4f3a\u670d\u5668\u3002\u700f\u89bd\u5668\u6703\u81ea\u52d5\u7ba1\u7406\u6a21\u578b\u7684\u5206\u767c\u3001\u66f4\u65b0\uff0c\u4e26\u5145\u5206\u5229\u7528\u88dd\u7f6e\u7684 GPU\u3001NPU \u6216 CPU \u9032\u884c\u786c\u9ad4\u52a0\u901f\u3002<\/p>\n\n<h2 id=\"\u6e96\u5099\">\u6e96\u5099<\/h2>\n\n<h3 id=\"\u8edf\u9ad4\">\u8edf\u9ad4<\/h3>\n\n<p>\u652f\u6301 AI \u529f\u80fd\u7684 Chrome \u9700\u8981 138 \u7248\u672c\u4ee5\u4e0a\u3002<\/p>\n\n<pre><code id=\"browser-ua\"><\/code><\/pre>\n\n<div>\u700f\u89bd\u5668\u76f8\u5bb9\u6027\uff1a<span id=\"browser-ai-compatibility\"><\/span><\/div>\n\n<h3 id=\"\u786c\u9ad4\">\u786c\u9ad4<\/h3>\n\n<p>\u8a9e\u8a00\u5075\u6e2c\u5668\u548c\u7ffb\u8b6f\u5668 API \u9069\u7528\u65bc Chrome \u96fb\u8166\u7248\u3002\u9019\u4e9b API \u7121\u6cd5\u5728\u884c\u52d5\u88dd\u7f6e\u4e0a\u904b\u4f5c\u3002\u5728 Chrome \u4e2d\uff0c\u53ea\u8981\u7b26\u5408\u4e0b\u5217\u689d\u4ef6\uff0c\u5373\u53ef\u4f7f\u7528 Prompt API\u3001Summarizer API\u3001Writer API\u3001Rewriter API \u548c Proofreader API\uff1a<\/p>\n\n<ul>\n  <li>\u4f5c\u696d\u7cfb\u7d71\uff1aWindows 10 \u6216 11\uff1bmacOS 13 \u4ee5\u4e0a\u7248\u672c (Ventura \u4ee5\u4e0a\u7248\u672c)\uff1b Linux\uff1b\u6216 Chromebook Plus \u88dd\u7f6e\u4e0a\u7684 ChromeOS (\u5f9e Platform 16389.0.0 \u4ee5\u4e0a\u7248\u672c\u958b\u59cb)\u3002 \u4f7f\u7528 Gemini Nano \u7684 API \u76ee\u524d\u4e0d\u652f\u63f4 Android \u7248\u3001iOS \u7248 Chrome\uff0c\u4ee5\u53ca\u975e Chromebook Plus \u88dd\u7f6e\u4e0a\u7684 ChromeOS\u3002<\/li>\n  <li>\u5132\u5b58\u7a7a\u9593\uff1a\u5305\u542b Chrome \u8a2d\u5b9a\u6a94\u7684\u78c1\u789f\u5340\u81f3\u5c11\u8981\u6709 22 GB \u7684\u53ef\u7528\u7a7a\u9593\u3002<\/li>\n  <li>GPU \u6216 CPU\uff1a\u5167\u5efa\u6a21\u578b\u53ef\u900f\u904e GPU \u6216 CPU \u57f7\u884c\u3002<\/li>\n  <li>GPU\uff1aVRAM \u5fc5\u9808\u8d85\u904e 4 GB\u3002<\/li>\n  <li>CPU\uff1aRAM 16 GB \u4ee5\u4e0a\uff0cCPU \u6838\u5fc3 4 \u500b\u4ee5\u4e0a\u3002<\/li>\n  <li>\u7db2\u8def\uff1a\u7121\u9650\u91cf\u6578\u64da\u6216\u4e0d\u8a08\u91cf\u7684\u9023\u7dda\uff0c\u4e0b\u8f09\u6a21\u578b\u6703\u6d88\u8017\u5927\u91cf\u6578\u64da\u3002<\/li>\n<\/ul>\n\n<h3 id=\"\u555f\u7528\">\u555f\u7528<\/h3>\n\n<ul>\n  <li>\n    <p>\u8a2d\u88dd\u7f6e\u578b\u865f\u512a\u5316\u70ba <code class=\"language-plaintext highlighter-rouge\">Enabled<\/code><\/p>\n\n    <p><code class=\"language-plaintext highlighter-rouge\">chrome:\/\/flags\/#optimization-guide-on-device-model<\/code><\/p>\n  <\/li>\n  <li>\n    <p>\u8a2d Gemini Nano \u63d0\u793a API \u70ba <code class=\"language-plaintext highlighter-rouge\">Enabled<\/code><\/p>\n\n    <p><code class=\"language-plaintext highlighter-rouge\">chrome:\/\/flags\/#prompt-api-for-gemini-nano<\/code><\/p>\n  <\/li>\n<\/ul>\n\n<p>\u8907\u88fd\u5230\u5730\u5740\u6b04\u6253\u958b\u3002<\/p>\n\n<h3 id=\"\u72c0\u614b\">\u72c0\u614b<\/h3>\n\n<p>Language Detector: <span class=\"language-detector\" style=\"color: red;\">Disable<\/span><\/p>\n\n<p>Translator: <span class=\"translator\" style=\"color: red;\">Disable<\/span><\/p>\n\n<p>Summarizer: <span class=\"summarizer\" style=\"color: red;\">Disable<\/span><\/p>\n\n<h3 id=\"\u8a9e\u8a00\u5075\u6e2c-language-detector\">\u8a9e\u8a00\u5075\u6e2c Language Detector<\/h3>\n<p>\n<textarea id=\"language-detector-text\">Guten Tag, mein Name ist Bexon Bai. Ich bin Mobile-Entwickle und spezialisiere mich auf Android- und iOS-Technologie.<\/textarea>\n<\/p>\n<div>\n    <button onclick=\"detection()\">\u6aa2\u6e2c<\/button>\n    <span style=\"width: 40px; display:inline-block\"><\/span>\n    <span class=\"language-detector-status-label\">\u6a21\u578b\u72c0\u614b\uff1a<span class=\"language-detector-status\" style=\"color: red;\"><\/span><\/span>\n<\/div>\n\n<p>\n<textarea id=\"language-detector-result\" disabled=\"\" style=\"margin-top: 8px;display:none\"><\/textarea>\n<\/p>\n\n<h3 id=\"\u8b6f\u8005-translator\">\u8b6f\u8005 Translator<\/h3>\n\n<p>\n<textarea id=\"translator-text\">Guten Tag, mein Name ist Bexon Bai. Ich bin Mobile-Entwickle und spezialisiere mich auf Android- und iOS-Technologie.<\/textarea>\n<\/p>\n<div>\n    <div>\n        <select id=\"source-language\"><\/select>\n        <span style=\"margin-left: 8px;margin-right: 8px;\"> \u2192 <\/span>\n        <select id=\"target-language\"><\/select>\n    <\/div>\n    <button onclick=\"translation()\">\u7ffb\u8b6f<\/button>\n    <span style=\"width: 40px; display:inline-block\"><\/span>\n    <span class=\"translator-status-label\" style=\"margin-top: 8px;display:inline-block\">\u6a21\u578b\u72c0\u614b\uff1a<span class=\"translator-status\" style=\"color: red;\"><\/span><\/span>\n<\/div>\n<p>\n<textarea id=\"translator-result\" style=\"margin-top: 8px;\"><\/textarea>\n<\/p>\n\n<h3 id=\"\u6458\u8981-summarizer\">\u6458\u8981 Summarizer<\/h3>\n\n<p>\u622a\u6b62\u81f3 Chrome 138 \u7248\u672c\uff0c\u50c5\u652f\u6301 <code class=\"language-plaintext highlighter-rouge\">[en, es, ja]<\/code><\/p>\n<p>\n<textarea id=\"summarizer-text\" style=\"margin-top: 8px;\"><\/textarea>\n<\/p>\n<div>\n    <select id=\"summarizer-type\">\n        <option value=\"key-points\">Key Points<\/option>\n        <option value=\"tldr\">TL;DR<\/option>\n        <option value=\"teaser\">Teaser<\/option>\n        <option value=\"headline\" selected=\"\">Headline<\/option>\n    <\/select>\n    <select id=\"summarizer-length\">\n        <option value=\"short\" selected=\"\">Short<\/option>\n        <option value=\"medium\">Medium<\/option>\n        <option value=\"long\">Long<\/option>\n    <\/select>\n    <select id=\"summarizer-format\">\n        <option value=\"markdown\" selected=\"\">Markdown<\/option>\n        <option value=\"plain-text\">Plain text<\/option>\n    <\/select>\n    <select id=\"summarizer-language\">\n        <option value=\"en\" selected=\"\">English<\/option>\n        <option value=\"es\">Spanish<\/option>\n        <option value=\"ja\">Japanese<\/option>\n    <\/select>\n<\/div>\n<div style=\"margin-top: 8px\">\n    <button onclick=\"summaryGeneration()\">\u6458\u8981\u751f\u6210<\/button><span style=\"width: 40px; display:inline-block\"><\/span>\n    <span class=\"summarizer-status-label\" style=\"margin-top: 8px;display:inline-block\">\u6a21\u578b\u72c0\u614b\uff1a<span class=\"summarizer-status\" style=\"color: red;\"><\/span><\/span>\n<\/div>\n<p>\n<textarea id=\"summarizer-result\" style=\"margin-top: 8px;\"><\/textarea>\n<\/p>\n\n<h4 id=\"\u6280\u8853\u6587\u6a94\">\u6280\u8853\u6587\u6a94<\/h4>\n\n<ul>\n  <li><a href=\"https:\/\/developer.chrome.com\/docs\/ai\/summarizer-api?hl=zh-tw#demo\">\u958b\u59cb\u4f7f\u7528\u5167\u5efa AI \u6280\u8853 AI on Chrome Chrome for Developers<\/a><\/li>\n  <li><a href=\"https:\/\/developer.mozilla.org\/en-US\/docs\/Web\/API\/Translator_and_Language_Detector_APIs\">MDN: Translator and Language Detector APIs<\/a><\/li>\n<\/ul>\n\n<script language=\"javascript\">\n    const languages = {\"ar\":\"Arabic\",\"bg\":\"Bulgarian\",\"bn\":\"Bengali\",\"cs\":\"Czech\",\"da\":\"Danish\",\"de\":\"German\",\"el\":\"Greek\",\"en\":\"English\",\"en-US\":\"English (United States)\",\"en-GB\":\"English (United Kingdom)\",\"en-CA\":\"English (Canada)\",\"en-AU\":\"English (Australia)\",\"en-IN\":\"English (India)\",\"es\":\"Spanish\",\"es-ES\":\"Spanish (Spain)\",\"es-MX\":\"Spanish (Mexico)\",\"es-AR\":\"Spanish (Argentina)\",\"es-CO\":\"Spanish (Colombia)\",\"fi\":\"Finnish\",\"fr\":\"French\",\"fr-FR\":\"French (France)\",\"fr-CA\":\"French (Canada)\",\"fr-CH\":\"French (Switzerland)\",\"fr-BE\":\"French (Belgium)\",\"he\":\"Hebrew\",\"hi\":\"Hindi\",\"hr\":\"Croatian\",\"hu\":\"Hungarian\",\"id\":\"Indonesian\",\"it\":\"Italian\",\"it-CH\":\"Italian (Switzerland)\",\"ja\":\"Japanese\",\"kn\":\"Kannada\",\"ko\":\"Korean\",\"lt\":\"Lithuanian\",\"mr\":\"Marathi\",\"nl\":\"Dutch\",\"nl-BE\":\"Dutch (Belgium)\",\"no\":\"Norwegian\",\"pl\":\"Polish\",\"pt\":\"Portuguese\",\"pt-BR\":\"Portuguese (Brazil)\",\"pt-PT\":\"Portuguese (Portugal)\",\"ro\":\"Romanian\",\"ru\":\"Russian\",\"sk\":\"Slovak\",\"sl\":\"Slovenian\",\"sv\":\"Swedish\",\"ta\":\"Tamil\",\"te\":\"Telugu\",\"th\":\"Thai\",\"tr\":\"Turkish\",\"uk\":\"Ukrainian\",\"vi\":\"Vietnamese\",\"zh\":\"Chinese\",\"zh-Hans\":\"Chinese (Simplified)\",\"zh-Hant\":\"Chinese (Traditional)\",\"zh-CN\":\"Chinese (China)\",\"zh-HK\":\"Chinese (Hong Kong)\",\"zh-MO\":\"Chinese (Macao)\",\"zh-SG\":\"Chinese (Singapore)\",\"zh-TW\":\"Chinese (Taiwan)\"}\n    document.getElementById('browser-ua').innerText = navigator.userAgent\n    Object.assign(document.getElementById('browser-ua').style, {\n        whiteSpace: 'pre-wrap',\n        wordWrap: 'break-word'\n    });\n    function isAIOnChromeSupported() {\n        return 'LanguageDetector' in self\n    }\n    if (isAIOnChromeSupported()) { \n        document.getElementById('browser-ai-compatibility').innerText = \"\u53ef\u7528\"\n        document.getElementById('browser-ai-compatibility').style.color = 'green'\n    } else {\n        document.getElementById('browser-ai-compatibility').innerText = \"\u4e0d\u53ef\u7528\"\n        document.getElementById('browser-ai-compatibility').style.color = 'red'\n    }\n    window.onload = function(e) {\n        console.log(\"Translator\", 'Translator' in self)\n        if ('Translator' in self) {\n            document.getElementsByClassName('translator')[0].innerText = 'Enabled'\n            document.getElementsByClassName('translator')[0].style.color = 'green'\n        } else {\n            document.getElementsByClassName('translator')[0].innerText = 'Disable'\n            document.getElementsByClassName('translator')[0].style.color = 'red'\n        }\n        console.log(\"Language Detector\", 'LanguageDetector' in self)\n        if ('LanguageDetector' in self) {\n            document.getElementsByClassName('language-detector')[0].innerText = 'Enabled'\n            document.getElementsByClassName('language-detector')[0].style.color = 'green'\n        } else {\n            document.getElementsByClassName('language-detector')[0].innerText = 'Disable'\n            document.getElementsByClassName('language-detector')[0].style.color = 'red'\n        }\n        if ('Summarizer' in self) {\n            document.getElementsByClassName('summarizer')[0].innerText = 'Enabled'\n            document.getElementsByClassName('summarizer')[0].style.color = 'green'\n        }\n        if ('LanguageDetector' in self) {\n            checkLanguageDetector()\n        }\n        perTranslate()\n        initSummarizer()\n    }\nfunction initSummarizer() {\n    var demoText =\n`Extracting WARP to generate a WireGuard\nAug 23, 2023 develop\n\n\ud83d\udca1 If you just want to use WARP, just install the [official client 1.1.1.1](https:\/\/1.1.1.1) directly\n\u26a0\ufe0f Since my computer is a MacBook, this post is based on macOS, if you are using Windows or Linux, some of the steps may be different.\nPreparatory steps:\nInstall the official client\nUse wgcf to convert to a WireGuard profile\nSettings WireGuard client\nOther: Find endpoints in CN \ud83c\udde8\ud83c\uddf3\nInstall the official client\nClient download: \ud83d\udd17 Link\n\nUse wgcf to convert to a WireGuard profile\nInstall a warp unofficial, cross-platform CLI wgcf\n\nwgcf project: https:\/\/github.com\/ViRb3\/wgcf\n\nI\u2019m using the Mac, so just use \ud83c\udf7a Homebrew to install it.\n\nbrew install wgcf\nUse cd to enter the directory where you want to store the config file (in case you can\u2019t find it\ud83d\ude1e\n\nRegister wgcf\n\nwgcf register\nThe command mentioned above will generate a wgcf-account.toml file in the current directory.\n\nRun the following command in a terminal:\n\nwgcf generate\nThe WireGuard profile will be saved under wgcf-profile.conf.\n\nGetting the License Key in CloudFlare WARP\n\n\u2699\ufe0e \u2192 Preferences \u2192 Account \u2192 License Key\n\nUntitled\n\nUntitled\n\nEdit wgcf-account.toml directly with the new license key and run:\n\nwgcf update\nor, using an environment variable:\n\nWGCF_LICENSE_KEY=\"Your License Key\" wgcf update\nThe license will be applied, and a new private key will be created for your account.\n\nOkay, now you have all the setup content you need to use. \u2705\n\nSettings WireGuard client\nopen the wgcf-profile.conf file.\n\n[Interface]\nPrivateKey = ***\nAddress = 172.16.0.2\/32\nAddress = 2606:4700:110:8804:f095:3189:b06c:f68f\/128\nDNS = 1.1.1.1\nMTU = 1280\n[Peer]\nPublicKey = ***\nAllowedIPs = 0.0.0.0\/0\nAllowedIPs = ::\/0\nEndpoint = engage.cloudflareclient.com:2408\nI set on Shadowrocket app\n\nUntitled\n\nFill the text field with the values in wgcf-profile.conf\n\nDone! \ud83d\ude80\n\nOther: Find endpoints in CN \ud83c\udde8\ud83c\uddf3\nThe official domain name used at CN has been affected by DNS pollution.\n\nengage.cloudflareclient.com:2408\nTo access it properly, you need to find an endpoint.\n\nHere we use MisakaNo\u2019s method to find the Endpoint.\n\nmacOS\/Linux:\n\nRun this command\n\nwget -N https:\/\/gitlab.com\/Misaka-blog\/warp-script\/-\/raw\/main\/files\/warp-yxip\/warp-yxip.sh && bash warp-yxip.sh\nWindows:\n\nDownload this file\nUnzip it (7zip)\nRun warp-yxip.bat\nYou\u2019ll get a list and a csv document for Endpoint, just pick the one that works.\n\nGood luck \ud83c\udf40\n`\n        document.getElementById('summarizer-text').value = demoText\n    }\n\n    async function detection() {\n        console.log(\"Start detection.\")\n        const detector = await LanguageDetector.create({\n            monitor(m) {\n                m.addEventListener('downloadprogress', (e) => {\n                    console.log(`Downloaded ${e.loaded * 100}%`);\n                    document.getElementsByClassName('language-detector-status')[0].style.color = 'var(--minima-text-color)'\n                    document.getElementsByClassName('language-detector-status')[0].innerText = `${e.loaded * 100}%`\n                });\n            },\n        });\n        const text = document.getElementById('language-detector-text').value\n        const results = await detector.detect(text);\n        console.log(\"Language detector results:\", results)\n        document.getElementById('language-detector-result').style.display = 'block'\n        document.getElementById('language-detector-result').value = ''\n        for (const result of results) {\n            document.getElementById('language-detector-result').value += `language: ${result.detectedLanguage}, confidence: ${result.confidence * 100}%\\n`\n        }\n    }\n    async function checkLanguageDetector() {\n        const state = await LanguageDetector.availability()\n        document.getElementsByClassName('language-detector-status')[0].innerText = state\n        console.log(\"Check language detector:\", state)\n        if (state == 'available') {\n            document.getElementsByClassName('language-detector-status')[0].style.color = 'green'\n        } else {\n            document.getElementsByClassName('language-detector-status')[0].style.color = 'red'\n        }\n    }\n    async function translation() {\n        console.log(\"Start translate.\")\n        const sourceLanguageValue = document.getElementById('source-language').value\n        const targetLanguageValue = document.getElementById('target-language').value\n        const targetLanguageLabel = document.getElementById('target-language').selectedOptions[0].text;\n        const translator = await Translator.create({\n            sourceLanguage: sourceLanguageValue,\n            targetLanguage: targetLanguageValue,\n            monitor(m) {\n                m.addEventListener('downloadprogress', (e) => {\n                    console.log(`Downloaded ${sourceLanguageValue} ${targetLanguageValue} ${e.loaded * 100}%`);\n                    document.getElementsByClassName('translator-status')[0].style.color = 'var(--minima-text-color)'\n                    document.getElementsByClassName('translator-status')[0].innerText = `Download ${targetLanguageLabel} ${e.loaded * 100}%`\n                });\n            },\n        });\n        const text = document.getElementById('translator-text').value\n        const result = await translator.translate(text);\n        document.getElementById('translator-result').value = result\n    }\n    async function perTranslate() {\n        Object.entries(languages).forEach(([code, name]) => {\n            if (code == 'de') {\n                document.getElementById('source-language').innerHTML += `<option value=\"${code}\" selected>${name}<\/option>`\n            } else {\n                document.getElementById('source-language').innerHTML += `<option value=\"${code}\">${name}<\/option>`\n            }\n            if (code == 'zh-Hant') {\n                document.getElementById('target-language').innerHTML += `<option value=\"${code}\" selected>${name}<\/option>`\n            } else {\n                document.getElementById('target-language').innerHTML += `<option value=\"${code}\">${name}<\/option>`\n            }\n        })\n    }\n    async function summaryGeneration() {\n        if ('Summarizer' in self == false) {\n            return;\n        }\n        const summarizerText = document.getElementById('summarizer-text').value\n        const summarizerType = document.getElementById('summarizer-type').value\n        const summarizerFormat = document.getElementById('summarizer-format').value\n        const summarizerLength = document.getElementById('summarizer-length').value\n        const summarizerLanguage = document.getElementById('summarizer-language').value\n        const options = {\n            type: summarizerType,\n            format: summarizerFormat,\n            length: summarizerLength,\n            outputLanguage: summarizerLanguage,\n            monitor(m) {\n            m.addEventListener('downloadprogress', (e) => {\n                console.log(`Downloaded ${e.loaded * 100}%`);\n                document.getElementsByClassName('summarizer-status')[0].style.color = 'var(--minima-text-color)'\n                document.getElementsByClassName('summarizer-status')[0].innerText = `Download ${e.loaded * 100}%`\n            });\n          }\n        };\n        const availability = await Summarizer.availability();\n        if (availability === 'unavailable') {\n            return;\n        }\n        if (navigator.userActivation.isActive) {\n            document.getElementById('summarizer-result').placeholder = \"\u751f\u6210\u4e2d\u2026\u2026\"\n            const summarizer = await Summarizer.create(options);\n            const summary = await summarizer.summarize(summarizerText, { });\n            document.getElementById('summarizer-result').value = summary\n            console.log(`Summary ${summary}`);\n            document.getElementById('summarizer-result').placeholder = \"\"\n        }\n    }\n<\/script>\n<\/div><a class=\"u-url\" href=\"\/develop\/2026\/01\/10\/AI-on-Chrome-shih4-yung4.html\" hidden><\/a>\n","protected":false},"excerpt":{"rendered":"<p>Google \u5f9e Chrome 138 \u7248\u672c\u958b\u59cb\u5c07 Gemini Nano \u6a21\u578b\u76f4\u63a5\u5d4c\u5165\u684c\u9762\u5ba2\u6236\u7aef\u3002\u9019\u662f\u4e00\u7a2e\u8f15\u91cf\u7d1a\u7684\u5927\u8a9e\u8a00\u6a21\u578b\uff0c\u5728\u4f7f\u7528\u8005\u88dd\u7f6e\u672c\u5730\u57f7\u884c\uff0c\u6240\u6709\u8cc7\u6599\u8655\u7406\u90fd\u5728\u7aef\u5074\u5b8c\u6210\uff0c\u7121\u9700\u4e0a\u50b3\u81f3\u4f3a\u670d\u5668\u3002\u700f\u89bd\u5668\u6703\u81ea\u52d5\u7ba1\u7406\u6a21\u578b\u7684\u5206\u767c\u3001\u66f4\u65b0\uff0c\u4e26\u5145\u5206\u5229\u7528\u88dd\u7f6e\u7684 GPU\u3001NPU \u6216 CPU \u9032\u884c\u786c\u9ad4\u52a0\u901f\u3002\u900f\u904e Chrome \u5167\u5efa\u7684 AI API\uff0c\u7db2\u9801\u61c9\u7528\u7a0b\u5f0f\u53ef\u4ee5\u57f7\u884c AI \u8f14\u52a9\u5de5\u4f5c\uff0c\u7121\u9808\u90e8\u7f72\u6216\u7ba1\u7406\u81ea\u5df1\u7684 AI \u6a21\u578b\uff0c\u90e8\u5206\u529f\u80fd\u5df2\u5728 Chrome \u7a69\u5b9a\u7248\u63a8\u51fa\u3002<\/p>\n","protected":false},"author":1,"featured_media":230,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[7],"tags":[],"class_list":["post-229","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-develop"],"_links":{"self":[{"href":"https:\/\/blog.bexonbai.com\/index.php?rest_route=\/wp\/v2\/posts\/229","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/blog.bexonbai.com\/index.php?rest_route=\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/blog.bexonbai.com\/index.php?rest_route=\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/blog.bexonbai.com\/index.php?rest_route=\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/blog.bexonbai.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcomments&post=229"}],"version-history":[{"count":7,"href":"https:\/\/blog.bexonbai.com\/index.php?rest_route=\/wp\/v2\/posts\/229\/revisions"}],"predecessor-version":[{"id":241,"href":"https:\/\/blog.bexonbai.com\/index.php?rest_route=\/wp\/v2\/posts\/229\/revisions\/241"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/blog.bexonbai.com\/index.php?rest_route=\/wp\/v2\/media\/230"}],"wp:attachment":[{"href":"https:\/\/blog.bexonbai.com\/index.php?rest_route=%2Fwp%2Fv2%2Fmedia&parent=229"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/blog.bexonbai.com\/index.php?rest_route=%2Fwp%2Fv2%2Fcategories&post=229"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/blog.bexonbai.com\/index.php?rest_route=%2Fwp%2Fv2%2Ftags&post=229"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}