{"id":6711,"date":"2024-09-28T14:48:47","date_gmt":"2024-09-28T06:48:47","guid":{"rendered":"https:\/\/www.aisharenet.com\/?p=6711"},"modified":"2024-09-28T16:33:50","modified_gmt":"2024-09-28T08:33:50","slug":"cloudflare-workers-ai","status":"publish","type":"post","link":"https:\/\/www.kdjingpai.com\/pt\/cloudflare-workers-ai\/","title":{"rendered":"Cloudflare Workers AI \u514d\u8d39\u6a21\u578b\u98df\u7528\u6307\u5357"},"content":{"rendered":"<h2>\u7b80\u4ecb<\/h2>\n<p>Cloudflare Workers AI \u5141\u8bb8\u4f60\u5728 Cloudflare \u7684\u5168\u7403\u7f51\u7edc\u4e0a\u4f7f\u7528\u65e0\u670d\u52a1\u5668 GPU \u8fd0\u884c\u673a\u5668\u5b66\u4e60\u6a21\u578b\u3002\u4f60\u53ef\u4ee5\u901a\u8fc7 Workers\u3001Pages \u6216 Cloudflare API \u5c06\u8fd9\u4e9b\u6a21\u578b\u96c6\u6210\u5230\u81ea\u5df1\u7684\u4ee3\u7801\u4e2d\u3002\u8be5\u5e73\u53f0\u652f\u6301\u5404\u79cd AI \u4efb\u52a1\uff0c\u5305\u62ec\u56fe\u50cf\u5206\u7c7b\u3001\u6587\u672c\u751f\u6210\u548c\u7269\u4f53\u68c0\u6d4b\u3002<\/p>\n<p>&nbsp;<\/p>\n<p><strong>\u4e3b\u8981\u7279\u70b9:<\/strong><\/p>\n<p><strong>\u6a21\u578b:<\/strong> \u7cbe\u9009\u7684\u591a\u79cd\u5f00\u6e90\u6a21\u578b\u7528\u4e8e\u4e0d\u540c\u7684 AI \u4efb\u52a1\u3002<br \/>\n<strong>\u8ba1\u8d39:<\/strong> \u4ece 2024 \u5e74 4 \u6708 1 \u65e5\u8d77\uff0c\u975e\u6d4b\u8bd5\u6a21\u578b\u7684\u4f7f\u7528\u5c06\u5f00\u59cb\u8ba1\u8d39\u3002<br \/>\n<strong>\u8d44\u6e90:<\/strong> \u53ef\u8bbf\u95ee\u76f8\u5173\u4ea7\u54c1\u5982 Vectorize\u3001R2\u3001D1 \u7b49\u3002<br \/>\n<a href=\"https:\/\/playground.ai.cloudflare.com\/\">\u70b9\u51fb<\/a> \u8bbf\u95ee\u5b98\u65b9\u5927\u6a21\u578b\u5e7f\u573a<\/p>\n<p>&nbsp;<\/p>\n<h2>\u8ba1\u8d39<\/h2>\n<p>\u514d\u8d39\u8ba1\u5212 \u6bcf\u5929 \u6709 10000 \u725b\u989d\u5ea6\uff08\u725b\u662f cf \u7684AI\u8d27\u5e01\u5355\u4f4d\uff0c\u53ef\u4f7f\u7528 <a href=\"https:\/\/ai.cloudflare.com\/#pricing-calculator\">\u5b98\u65b9\u8ba1\u7b97\u5668<\/a> \u8ba1\u7b97\uff09\uff0c10000\u725b \u53ef\u7528\u6765\uff1a<\/p>\n<ul>\n<li>100-200 \u6b21\u5bf9\u8bdd<\/li>\n<li>500 \u6b21\u7ffb\u8bd1<\/li>\n<li>500 \u79d2\u8bed\u97f3\u8f6c\u6587\u5b57<\/li>\n<li>10,000 \u4e2a\u6587\u672c\u5206\u7c7b<\/li>\n<li>1,500-15,000 \u4e2a\u5d4c\u5165<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p>\u81ea 2024 \u5e74 4 \u6708 1 \u65e5 \u8d77\uff0c\u4ee5\u4e0b\u6a21\u578b\u6bcf\u5929\u8d85\u8fc7 10000\u725b \u540e\uff0c\u8d85\u51fa\u7684\u90e8\u5206\u6309\u7167 0.011\u5200\/ \u5343\u725b \u8ba1\u8d39<\/p>\n<ul>\n<li>bge-small-en-v1.5<\/li>\n<li>bge-base-en-v1.5<\/li>\n<li>bge-large-en-v1.5<\/li>\n<li>distilbert-sst-2-int8<\/li>\n<li>llama-2-7b-chat-int8<\/li>\n<li>llama-2-7b-chat-fp16<\/li>\n<li>mistral-7b-instruct-v0.1<\/li>\n<li>m2m100-1.2b<\/li>\n<li>resnet-50<\/li>\n<li><a href=\"https:\/\/www.kdjingpai.com\/ja\/crisperwhisper\/\">whisper<\/a><\/li>\n<\/ul>\n<p>\u53ef\u5728 cf \u9762\u677f AI \u6807\u7b7e\u67e5\u770b\u989d\u5ea6\u4f7f\u7528\u60c5\u51b5\uff0c\u5177\u4f53\u8ba1\u8d39\u6807\u51c6\u8bf7\u53c2\u8003\uff1a<a href=\"https:\/\/developers.cloudflare.com\/workers-ai\/platform\/pricing\/\">Pricing | Cloudflare Workers AI docs<\/a><\/p>\n<p>&nbsp;<\/p>\n<p><strong>\u6700\u65b0 Workers AI \u514d\u8d39\u8ba1\u5212\u9650\u5236<\/strong>\uff08\u6211\u4eec\u5c06\u4ece 2024 \u5e74 11 \u6708 1 \u65e5\u8d77\u5f00\u59cb\u6309\u7167\u65b0\u7684\u5b9a\u4ef7\u7ed3\u6784\u5bf9\u6240\u6709\u6a21\u578b\u8fdb\u884c\u6536\u8d39\u3002\uff09<\/p>\n<table data-immersive-translate-walked=\"06361fa5-39dd-4d30-a504-3b9b7e832d2c\">\n<thead data-immersive-translate-walked=\"06361fa5-39dd-4d30-a504-3b9b7e832d2c\">\n<tr data-immersive-translate-walked=\"06361fa5-39dd-4d30-a504-3b9b7e832d2c\">\n<th>Model<\/th>\n<th data-immersive-translate-paragraph=\"1\" data-immersive-translate-walked=\"06361fa5-39dd-4d30-a504-3b9b7e832d2c\"><span class=\"notranslate immersive-translate-target-wrapper\" lang=\"zh-CN\" data-immersive-translate-translation-element-mark=\"1\"><span class=\"notranslate immersive-translate-target-translation-theme-none immersive-translate-target-translation-inline-wrapper-theme-none immersive-translate-target-translation-inline-wrapper\" data-immersive-translate-translation-element-mark=\"1\"><span class=\"notranslate immersive-translate-target-inner immersive-translate-target-translation-theme-none-inner\" data-immersive-translate-translation-element-mark=\"1\">\u514d\u8d39\u5c42\u5927\u5c0f<\/span><\/span><\/span><\/th>\n<\/tr>\n<\/thead>\n<tbody data-immersive-translate-walked=\"06361fa5-39dd-4d30-a504-3b9b7e832d2c\">\n<tr data-immersive-translate-walked=\"06361fa5-39dd-4d30-a504-3b9b7e832d2c\">\n<td data-immersive-translate-paragraph=\"1\" data-immersive-translate-walked=\"06361fa5-39dd-4d30-a504-3b9b7e832d2c\"><span class=\"notranslate immersive-translate-target-wrapper\" lang=\"zh-CN\" data-immersive-translate-translation-element-mark=\"1\"><span class=\"notranslate immersive-translate-target-translation-theme-none immersive-translate-target-translation-inline-wrapper-theme-none immersive-translate-target-translation-inline-wrapper\" data-immersive-translate-translation-element-mark=\"1\"><span class=\"notranslate immersive-translate-target-inner immersive-translate-target-translation-theme-none-inner\" data-immersive-translate-translation-element-mark=\"1\">\u6587\u672c\u751f\u6210 &#8211; LLM<\/span><\/span><\/span><\/td>\n<td data-immersive-translate-paragraph=\"1\" data-immersive-translate-walked=\"06361fa5-39dd-4d30-a504-3b9b7e832d2c\"><span class=\"notranslate immersive-translate-target-wrapper\" lang=\"zh-CN\" data-immersive-translate-translation-element-mark=\"1\"><span class=\"notranslate immersive-translate-target-translation-theme-none immersive-translate-target-translation-block-wrapper-theme-none immersive-translate-target-translation-block-wrapper\" data-immersive-translate-translation-element-mark=\"1\"><span class=\"notranslate immersive-translate-target-inner immersive-translate-target-translation-theme-none-inner\" data-immersive-translate-translation-element-mark=\"1\">\u6bcf\u5929 10,000 \u4e2a token\uff0c\u9002\u7528\u4e8e\u4efb\u4f55\u6a21\u578b\u5927\u5c0f<\/span><\/span><\/span><\/td>\n<\/tr>\n<tr data-immersive-translate-walked=\"06361fa5-39dd-4d30-a504-3b9b7e832d2c\">\n<td data-immersive-translate-paragraph=\"1\" data-immersive-translate-walked=\"06361fa5-39dd-4d30-a504-3b9b7e832d2c\"><span class=\"notranslate immersive-translate-target-wrapper\" lang=\"zh-CN\" data-immersive-translate-translation-element-mark=\"1\"><span class=\"notranslate immersive-translate-target-translation-theme-none immersive-translate-target-translation-inline-wrapper-theme-none immersive-translate-target-translation-inline-wrapper\" data-immersive-translate-translation-element-mark=\"1\"><span class=\"notranslate immersive-translate-target-inner immersive-translate-target-translation-theme-none-inner\" data-immersive-translate-translation-element-mark=\"1\">\u5d4c\u5165<\/span><\/span><\/span><\/td>\n<td data-immersive-translate-paragraph=\"1\" data-immersive-translate-walked=\"06361fa5-39dd-4d30-a504-3b9b7e832d2c\"><span class=\"notranslate immersive-translate-target-wrapper\" lang=\"zh-CN\" data-immersive-translate-translation-element-mark=\"1\"><span class=\"notranslate immersive-translate-target-translation-theme-none immersive-translate-target-translation-block-wrapper-theme-none immersive-translate-target-translation-block-wrapper\" data-immersive-translate-translation-element-mark=\"1\"><span class=\"notranslate immersive-translate-target-inner immersive-translate-target-translation-theme-none-inner\" data-immersive-translate-translation-element-mark=\"1\">\u6bcf\u5929 10,000 \u4e2a token\uff0c\u9002\u7528\u4e8e\u4efb\u4f55\u6a21\u578b\u5927\u5c0f<\/span><\/span><\/span><\/td>\n<\/tr>\n<tr data-immersive-translate-walked=\"06361fa5-39dd-4d30-a504-3b9b7e832d2c\">\n<td data-immersive-translate-paragraph=\"1\" data-immersive-translate-walked=\"06361fa5-39dd-4d30-a504-3b9b7e832d2c\"><span class=\"notranslate immersive-translate-target-wrapper\" lang=\"zh-CN\" data-immersive-translate-translation-element-mark=\"1\"><span class=\"notranslate immersive-translate-target-translation-theme-none immersive-translate-target-translation-inline-wrapper-theme-none immersive-translate-target-translation-inline-wrapper\" data-immersive-translate-translation-element-mark=\"1\"><span class=\"notranslate immersive-translate-target-inner immersive-translate-target-translation-theme-none-inner\" data-immersive-translate-translation-element-mark=\"1\">\u56fe\u7247<\/span><\/span><\/span><\/td>\n<td data-immersive-translate-paragraph=\"1\" data-immersive-translate-walked=\"06361fa5-39dd-4d30-a504-3b9b7e832d2c\"><span class=\"notranslate immersive-translate-target-wrapper\" lang=\"zh-CN\" data-immersive-translate-translation-element-mark=\"1\"><span class=\"notranslate immersive-translate-target-translation-theme-none immersive-translate-target-translation-block-wrapper-theme-none immersive-translate-target-translation-block-wrapper\" data-immersive-translate-translation-element-mark=\"1\"><span class=\"notranslate immersive-translate-target-inner immersive-translate-target-translation-theme-none-inner\" data-immersive-translate-translation-element-mark=\"1\">250 \u6b65\u4e4b\u548c\uff0c\u6700\u9ad8 1024&#215;1024 \u5206\u8fa8\u7387<\/span><\/span><\/span><\/td>\n<\/tr>\n<tr data-immersive-translate-walked=\"06361fa5-39dd-4d30-a504-3b9b7e832d2c\">\n<td data-immersive-translate-paragraph=\"1\" data-immersive-translate-walked=\"06361fa5-39dd-4d30-a504-3b9b7e832d2c\"><span class=\"notranslate immersive-translate-target-wrapper\" lang=\"zh-CN\" data-immersive-translate-translation-element-mark=\"1\"><span class=\"notranslate immersive-translate-target-translation-theme-none immersive-translate-target-translation-inline-wrapper-theme-none immersive-translate-target-translation-inline-wrapper\" data-immersive-translate-translation-element-mark=\"1\"><span class=\"notranslate immersive-translate-target-inner immersive-translate-target-translation-theme-none-inner\" data-immersive-translate-translation-element-mark=\"1\">\u8bed\u97f3\u8f6c\u6587\u5b57<\/span><\/span><\/span><\/td>\n<td data-immersive-translate-paragraph=\"1\" data-immersive-translate-walked=\"06361fa5-39dd-4d30-a504-3b9b7e832d2c\"><span class=\"notranslate immersive-translate-target-wrapper\" lang=\"zh-CN\" data-immersive-translate-translation-element-mark=\"1\"><span class=\"notranslate immersive-translate-target-translation-theme-none immersive-translate-target-translation-block-wrapper-theme-none immersive-translate-target-translation-block-wrapper\" data-immersive-translate-translation-element-mark=\"1\"><span class=\"notranslate immersive-translate-target-inner immersive-translate-target-translation-theme-none-inner\" data-immersive-translate-translation-element-mark=\"1\">\u6bcf\u5929 10 \u5206\u949f\u97f3\u9891<\/span><\/span><\/span><\/td>\n<\/tr>\n<\/tbody>\n<\/table>\n<p>&nbsp;<\/p>\n<h2>\u7b80\u5355\u4e0a\u624b<\/h2>\n<p>\u5f00\u59cb\u4e4b\u524d\uff0c\u9700\u8981\u60a8\u5148\u81ea\u884c\u6ce8\u518c\u8d26\u53f7\u5e76\u767b\u5f55<\/p>\n<p>&nbsp;<\/p>\n<p><strong>\u83b7\u53d6 AccountID<\/strong><\/p>\n<p>\u6253\u5f00 <a href=\"https:\/\/dash.cloudflare.com\/\">\u9762\u677f\u9875<\/a>\uff0c\u5730\u5740\u680f\u7684\u6700\u540e\u4e00\u4e2a \/ \u540e\u7684\u5b57\u7b26\u4e32\u5373\u4f60\u7684 AccountID<\/p>\n<p>&nbsp;<\/p>\n<p><strong>\u83b7\u53d6\u4ee4\u724c<\/strong><\/p>\n<p>\u6253\u5f00 <a href=\"https:\/\/dash.cloudflare.com\/profile\/api-tokens\">\u4ee4\u724c\u9875<\/a> \u521b\u5efa\u4ee4\u724c\uff0c\u6ce8\u610f\u9009\u62e9 Workers AI<\/p>\n<p>&nbsp;<\/p>\n<h2>OneAPI \u8bbe\u7f6e<\/h2>\n<p><strong>\u5bf9\u8bdd\u6a21\u578b<\/strong><\/p>\n<p><img loading=\"lazy\" decoding=\"async\" class=\"aligncenter wp-image-6712\" title=\"Cloudflare Workers AI \u98df\u7528\u6307\u5357-1\" src=\"https:\/\/www.kdjingpai.com\/wp-content\/uploads\/2024\/09\/20d5dea340a3401.jpg\" alt=\"Cloudflare Workers AI \u98df\u7528\u6307\u5357-1\" width=\"555\" height=\"548\" srcset=\"https:\/\/www.kdjingpai.com\/wp-content\/uploads\/2024\/09\/20d5dea340a3401.jpg 759w, https:\/\/www.kdjingpai.com\/wp-content\/uploads\/2024\/09\/20d5dea340a3401-300x296.jpg 300w\" sizes=\"auto, (max-width: 555px) 100vw, 555px\" \/><\/p>\n<p>&nbsp;<\/p>\n<p>key\uff1a \u83b7\u53d6\u7684\u4ee4\u724c<br \/>\nbase_url\uff1ahttps:\/\/api.cloudflare.com\/client\/v4\/accounts\/AccountID\/ai\uff0c\u66ff\u6362AccountID<br \/>\n<strong>model<\/strong>\uff1a<\/p>\n<ul>\n<li><span class=\"mention\">@cf<\/span>\/deepseek-ai\/deepseek-math-7b-instruct<\/li>\n<li><span class=\"mention\">@cf<\/span>\/defog\/sqlcoder-7b-2<\/li>\n<li><span class=\"mention\">@cf<\/span>\/fblgit\/una-cybertron-7b-v2-awq<\/li>\n<li><span class=\"mention\">@cf<\/span>\/fblgit\/una-cybertron-7b-v2-bf16<\/li>\n<li><span class=\"mention\">@cf<\/span>\/google\/gemma-2b-it-lora<\/li>\n<li><span class=\"mention\">@cf<\/span>\/google\/gemma-7b-it-lora<\/li>\n<li><span class=\"mention\">@cf<\/span>\/meta-llama\/llama-2-7b-chat-hf-lora<\/li>\n<li><span class=\"mention\">@cf<\/span>\/meta\/llama-2-7b-chat-fp16<\/li>\n<li><span class=\"mention\">@cf<\/span>\/meta\/llama-2-7b-chat-int8<\/li>\n<li><span class=\"mention\">@cf<\/span>\/meta\/llama-3-8b-instruct<\/li>\n<li><span class=\"mention\">@cf<\/span>\/meta\/llama-3-8b-instruct-awq<\/li>\n<li><span class=\"mention\">@cf<\/span>\/microsoft\/phi-2<\/li>\n<li><span class=\"mention\">@cf<\/span>\/mistral\/mistral-7b-instruct-v0.1<\/li>\n<li><span class=\"mention\">@cf<\/span>\/mistral\/mistral-7b-instruct-v0.1-vllm<\/li>\n<li><span class=\"mention\">@cf<\/span>\/mistral\/mistral-7b-instruct-v0.2-lora<\/li>\n<li><span class=\"mention\">@cf<\/span>\/openchat\/openchat-3.5-0106<\/li>\n<li><span class=\"mention\">@cf<\/span>\/qwen\/qwen1.5-0.5b-chat<\/li>\n<li><span class=\"mention\">@cf<\/span>\/qwen\/qwen1.5-1.8b-chat<\/li>\n<li><span class=\"mention\">@cf<\/span>\/qwen\/qwen1.5-14b-chat-awq<\/li>\n<li><span class=\"mention\">@cf<\/span>\/qwen\/qwen1.5-7b-chat-awq<\/li>\n<li><span class=\"mention\">@cf<\/span>\/thebloke\/discolm-german-7b-v1-awq<\/li>\n<li><span class=\"mention\">@cf<\/span>\/tiiuae\/falcon-7b-instruct<\/li>\n<li><span class=\"mention\">@cf<\/span>\/tinyllama\/tinyllama-1.1b-chat-v1.0<\/li>\n<li><span class=\"mention\">@hf<\/span>\/google\/gemma-7b-it<\/li>\n<li><span class=\"mention\">@hf<\/span>\/mistral\/mistral-7b-instruct-v0.2<\/li>\n<li><span class=\"mention\">@hf<\/span>\/nexusflow\/starling-lm-7b-beta<\/li>\n<li><span class=\"mention\">@hf<\/span>\/nousresearch\/hermes-2-pro-mistral-7b<\/li>\n<li><span class=\"mention\">@hf<\/span>\/thebloke\/codellama-7b-instruct-awq<\/li>\n<li><span class=\"mention\">@hf<\/span>\/thebloke\/deepseek-coder-6.7b-base-awq<\/li>\n<li><span class=\"mention\">@hf<\/span>\/thebloke\/deepseek-coder-6.7b-instruct-awq<\/li>\n<li><span class=\"mention\">@hf<\/span>\/thebloke\/llama-2-13b-chat-awq<\/li>\n<li><span class=\"mention\">@hf<\/span>\/thebloke\/llamaguard-7b-awq<\/li>\n<li><span class=\"mention\">@hf<\/span>\/thebloke\/mistral-7b-instruct-v0.1-awq<\/li>\n<li><span class=\"mention\">@hf<\/span>\/thebloke\/neural-chat-7b-v3-1-awq<\/li>\n<li><span class=\"mention\">@hf<\/span>\/thebloke\/openhermes-2.5-mistral-7b-awq<\/li>\n<li><span class=\"mention\">@hf<\/span>\/thebloke\/zephyr-7b-beta-awq<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p><strong>POST \u793a\u4f8b\uff1a<\/strong><\/p>\n<pre>curl --request POST \\\r\n--url https:\/\/api.cloudflare.com\/client\/v4\/accounts\/${AccountID}\/\/ai\/v1\/chat\/completions \\\r\n--header 'Authorization: Bearer \u4ee4\u724c' \\\r\n--header 'Content-Type: application\/json' \\\r\n--data '\r\n{\r\n\"model\": \"@cf\/meta\/llama-3-8b-instruct\",\r\n\"messages\": [\r\n{\r\n\"role\": \"user\",\r\n\"content\": \"how to build a wooden spoon in 3 short steps? give as short as answer as possible\"\r\n}\r\n]\r\n}\r\n'<\/pre>\n<p>&nbsp;<\/p>\n<h4>\u5d4c\u5165\u6a21\u578b<\/h4>\n<p>\u9664\u6a21\u578b\u4e0d\u540c\u5916\u4e0e\u5bf9\u8bdd\u5b8c\u5168\u4e00\u6837\uff0c\u53ef\u4ee5\u548c\u5bf9\u8bdd\u653e\u5728\u4e00\u4e2a\u6e20\u9053\u91cc<\/p>\n<p><strong>key<\/strong>\uff1a \u83b7\u53d6\u7684\u4ee4\u724c<br \/>\n<strong>base_url<\/strong>\uff1a<code>https:\/\/api.cloudflare.com\/client\/v4\/accounts\/AccountID\/ai<\/code>\uff0c\u66ff\u6362AccountID<br \/>\n<strong>model<\/strong>\uff1a<\/p>\n<ul>\n<li><span class=\"mention\">@cf<\/span>\/baai\/bge-base-en-v1.5<\/li>\n<li><span class=\"mention\">@cf<\/span>\/baai\/bge-large-en-v1.5<\/li>\n<li><span class=\"mention\">@cf<\/span>\/baai\/bge-small-en-v1.5<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<h4>\u6587\u751f\u56fe\u6a21\u578b<\/h4>\n<p><strong>key<\/strong>\uff1a \u83b7\u53d6\u7684\u4ee4\u724c<br \/>\n<strong>base_url<\/strong>\uff1a\u4f60\u7684worker\u5730\u5740\uff0c\u9ed8\u8ba4\u5730\u5740\u88ab\u5899\u5fc5\u987b\u5b9a\u4e49\u8def\u7531<br \/>\n<strong>model<\/strong>\uff1a<\/p>\n<ul>\n<li><span class=\"mention\">@cf<\/span>\/bytedance\/stable-diffusion-xl-lightning<\/li>\n<li><span class=\"mention\">@cf<\/span>\/lykon\/dreamshaper-8-lcm<\/li>\n<li><span class=\"mention\">@cf<\/span>\/runwayml\/stable-diffusion-v1-5-img2img<\/li>\n<li><span class=\"mention\">@cf<\/span>\/runwayml\/stable-diffusion-v1-5-inpainting<\/li>\n<li><span class=\"mention\">@cf<\/span>\/stabilityai\/stable-diffusion-xl-base-1.0<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p><strong>worker.js\u4ee3\u7801<\/strong>\uff08\u6ce8\u610f\u66ff\u6362 AccountID\uff09<\/p>\n<pre>addEventListener('fetch', event =&gt; {\r\nevent.respondWith(handleRequest(event.request));\r\n});\r\n\r\nasync function handleRequest(request) {\r\nif (request.method === \"OPTIONS\") {\r\nreturn new Response(\"\", {\r\nheaders: {\r\n'Access-Control-Allow-Origin': '*',\r\n\"Access-Control-Allow-Headers\": '*'\r\n}, status: 204\r\n});\r\n}\r\n\r\nif (\/^(https?:\\\/\\\/[^\\\/]*?)\\\/file\\\/\/i.test(request.url)) {\r\nif (request.headers.get(\"if-modified-since\")) {\r\nreturn new Response(\"\", { status: 304, headers: {\r\n'Access-Control-Allow-Origin': '*',\r\n\"Access-Control-Allow-Headers\": '*',\r\n\"Last-Modified\": request.headers.get(\"If-Modified-Since\")\r\n}});\r\n}\r\n\r\nconst img = await fetch(request.url.replace(\/^(https?:\\\/\\\/[^\\\/]*?)\\\/\/, \"https:\/\/telegra.ph\/\"));\r\nreturn new Response(img.body, { status: img.status, headers: {\r\n\"content-type\": img.headers.get(\"content-type\"),\r\n'Access-Control-Allow-Origin': '*',\r\n\"Access-Control-Allow-Headers\": '*',\r\n\"Last-Modified\": (new Date()).toUTCString(),\r\n\"Cache-Control\": \"public, max-age=31536000\"\r\n}});\r\n}\r\n\r\nconst url = new URL(request.url);\r\nconst search = url.searchParams;\r\n\r\nif (!search.get(\"debug\")) {\r\nif (url.pathname !== \"\/v1\/chat\/completions\" || request.method !== \"POST\") {\r\nreturn new Response(\"Not Found or Method Not Allowed\", {\r\nstatus: 404,\r\nheaders: {\r\n\"Content-Type\": \"application\/json\",\r\n'Access-Control-Allow-Origin': '*',\r\n\"Access-Control-Allow-Headers\": '*'\r\n}\r\n});\r\n}\r\n}\r\n\r\nconst authHeader = request.headers.get(\"Authorization\") || \"Bearer \" + search.get(\"key\");\r\nif (!authHeader || !authHeader.startsWith(\"Bearer \")) {\r\nreturn new Response(\"Unauthorized: Missing or invalid Authorization header\", {\r\nstatus: 401,\r\nheaders: {\r\n\"Content-Type\": \"application\/json\",\r\n'Access-Control-Allow-Origin': '*',\r\n\"Access-Control-Allow-Headers\": '*'\r\n}\r\n});\r\n}\r\n\r\nconst apiKey = authHeader.slice(7);\r\nlet data;\r\ntry {\r\ndata = await request.json();\r\n} catch (error) {\r\nif (!search.get(\"debug\")) return new Response(\"Bad Request: Invalid JSON\", { status: 400 });\r\ndata = { model: search.get(\"model\") || \"@cf\/stabilityai\/stable-diffusion-xl-base-1.0\", messages: [{ role: \"user\", content: search.get(\"prompt\") || \"cat\" }] };\r\n}\r\n\r\nif (!data || !data.model || !data.messages || data.messages.length === 0) {\r\nreturn new Response(\"Bad Request: Missing required fields\", { status: 400 });\r\n}\r\n\r\nconst prompt = data.messages[data.messages.length - 1].content;\r\nconst cloudflareUrl = `https:\/\/api.cloudflare.com\/client\/v4\/AccountID\/ai\/run\/${data.model}`;\r\n\r\nconst requestBody = JSON.stringify({\r\nprompt: prompt,\r\nnum_inference_steps: 20,\r\nguidance_scale: 7.5,\r\nstrength: 1\r\n});\r\n\r\nconst currentTimestamp = Math.floor(Date.now() \/ 1000);\r\nconst uniqueId = `imggen-${currentTimestamp}`;\r\n\r\ntry {\r\nconst apiResponse = await fetch(cloudflareUrl, {\r\nmethod: 'POST',\r\nheaders: {\r\n'Authorization': authHeader,\r\n'Content-Type': 'application\/json',\r\n},\r\nbody: requestBody,\r\n});\r\n\r\nif (!apiResponse.ok) {\r\nthrow new Error(\"Request error: \" + apiResponse.status);\r\n}\r\n\r\nconst imageBlob = await apiResponse.blob();\r\nconst formData = new FormData();\r\nformData.append(\"file\", imageBlob, \"image.jpg\");\r\n\r\nconst uploadResponse = await fetch(\"https:\/\/telegra.ph\/upload\", {\r\nmethod: 'POST',\r\nbody: formData,\r\n});\r\n\r\nif (!uploadResponse.ok) {\r\nthrow new Error(\"Failed to upload image\");\r\n}\r\n\r\nconst uploadResult = await uploadResponse.json();\r\nconst imageUrl = request.url.match(\/^(https?:\\\/\\\/[^\\\/]*?)\\\/\/)[1] + uploadResult[0].src;\r\n\r\nconst responsePayload = {\r\nid: uniqueId,\r\nobject: \"chat.completion.chunk\",\r\ncreated: currentTimestamp,\r\nmodel: data.model,\r\nchoices: [\r\n{\r\nindex: 0,\r\ndelta: {\r\ncontent: `![](${imageUrl})`,\r\n},\r\nfinish_reason: \"stop\",\r\n},\r\n],\r\n};\r\n\r\nconst dataString = JSON.stringify(responsePayload);\r\n\r\nreturn new Response(`data: ${dataString}\\n\\n`, {\r\nstatus: 200,\r\nheaders: {\r\n\"Content-Type\": \"text\/event-stream\",\r\n'Access-Control-Allow-Origin': '*',\r\n\"Access-Control-Allow-Headers\": '*',\r\n},\r\n});\r\n} catch (error) {\r\nreturn new Response(\"Internal Server Error: \" + error.message, {\r\nstatus: 500,\r\nheaders: {\r\n\"Content-Type\": \"application\/json\",\r\n'Access-Control-Allow-Origin': '*',\r\n\"Access-Control-Allow-Headers\": '*',\r\n},\r\n});\r\n}\r\n}<\/pre>\n<p>&nbsp;<\/p>\n<h4>\u97f3\u8f6c\u6587\u6a21\u578b<\/h4>\n<p><strong>key<\/strong>\uff1a \u83b7\u53d6\u7684\u4ee4\u724c<br \/>\n<strong>base_url<\/strong>\uff1a\u4f60\u7684worker\u5730\u5740<br \/>\n<strong>model<\/strong>\uff1a<\/p>\n<ul>\n<li><span class=\"mention\">@cf<\/span>\/openai\/whisper<\/li>\n<li><span class=\"mention\">@cf<\/span>\/openai\/whisper-sherpa<\/li>\n<li><span class=\"mention\">@cf<\/span>\/openai\/whisper-tiny-en<\/li>\n<\/ul>\n<p><strong>POST \u793a\u4f8b\uff1a<\/strong><\/p>\n<p>\u6ce8\u610f\u66ff\u6362 domain.com \u4e3a\u4f60\u7684worker\u5730\u5740<\/p>\n<pre>curl -X POST https:\/\/domain.com\/v1\/audio\/transcriptions \\\r\n-H \"Authorization: Bearer \u4ee4\u724c\" \\\r\n-F file=@C:\\Users\\Folders\\audio.mp3 \\\r\n-F model=\"@cf\/openai\/whisper\"<\/pre>\n<p>&nbsp;<\/p>\n<p><strong>worker.js\u4ee3\u7801<\/strong>\uff08\u6ce8\u610f\u66ff\u6362 AccountID\uff09<\/p>\n<pre>addEventListener('fetch', event =&gt; {\r\nevent.respondWith(handleRequest(event.request))\r\n})\r\n\r\nasync function handleRequest(request) {\r\nconst url = new URL(request.url)\r\nconst { pathname } = url\r\n\r\nif (request.method === 'POST' &amp;&amp; pathname === '\/v1\/audio\/transcriptions') {\r\nconst formData = await request.formData()\r\nconst file = formData.get('file')\r\nconst model = formData.get('model')\r\n\r\nif (!file || !model) {\r\nreturn new Response('File or model not provided', { status: 400 })\r\n}\r\n\r\nconst apiUrl = `https:\/\/api.cloudflare.com\/client\/v4\/accounts\/AccountID\/ai\/run\/${model}`\r\n\r\nconst apiResponse = await fetch(apiUrl, {\r\nmethod: 'POST',\r\nheaders: {\r\n'Authorization': request.headers.get('Authorization'),\r\n'Content-Type': 'application\/octet-stream'\r\n},\r\nbody: file.stream()\r\n})\r\n\r\nconst apiResult = await apiResponse.json()\r\n\r\nconst textResult = apiResult.result.text\r\n\r\nconst formattedResult = JSON.stringify({ text: textResult })\r\n\r\nreturn new Response(formattedResult, {\r\nheaders: { 'Content-Type': 'application\/json' }\r\n})\r\n} else {\r\nreturn new Response('Not Found', { status: 404 })\r\n}\r\n}<\/pre>\n<p>&nbsp;<\/p>\n<h4 dir=\"auto\">\u7ffb\u8bd1\u6a21\u578b<\/h4>\n<p dir=\"auto\"><strong>model<\/strong>\uff1a<\/p>\n<ul>\n<li>@cf\/meta\/m2m100-1.2b<\/li>\n<\/ul>\n<p>\u652f\u6301\u7684\u8bed\u8a00\uff0csource_lang \u4e0e target_lang \u8303\u56f4\u4e00\u81f4<\/p>\n<ul>\n<li>\u82f1\u8bed (en)<\/li>\n<li>\u4e2d\u6587 (zh)<\/li>\n<li>\u6cd5\u8bed (fr)<\/li>\n<li>\u5fb7\u8bed (de)<\/li>\n<li>\u897f\u73ed\u7259\u8bed (es)<\/li>\n<li>\u610f\u5927\u5229\u8bed (it)<\/li>\n<li>\u65e5\u8bed (ja)<\/li>\n<li>\u97e9\u8bed (ko)<\/li>\n<li>\u8461\u8404\u7259\u8bed (pt)<\/li>\n<li>\u4fc4\u8bed (ru)<\/li>\n<li>\u8377\u5170\u8bed (nl)<\/li>\n<li>\u745e\u5178\u8bed (sv)<\/li>\n<li>\u632a\u5a01\u8bed (no)<\/li>\n<li>\u4e39\u9ea6\u8bed (da)<\/li>\n<li>\u82ac\u5170\u8bed (fi)<\/li>\n<li>\u6ce2\u5170\u8bed (pl)<\/li>\n<li>\u571f\u8033\u5176\u8bed (tr)<\/li>\n<li>\u963f\u62c9\u4f2f\u8bed (ar)<\/li>\n<li>\u5e0c\u4f2f\u6765\u8bed (he)<\/li>\n<li>\u5370\u5ea6\u5c3c\u897f\u4e9a\u8bed (id)<\/li>\n<li>\u6cf0\u8bed (th)<\/li>\n<li>\u8d8a\u5357\u8bed (vi)<\/li>\n<li>\u5370\u5730\u8bed (hi)<\/li>\n<li>\u9a6c\u6765\u8bed (ms)<\/li>\n<li>\u5e0c\u814a\u8bed (el)<\/li>\n<li>\u6377\u514b\u8bed (cs)<\/li>\n<li>\u65af\u6d1b\u4f10\u514b\u8bed (sk)<\/li>\n<li>\u7f57\u9a6c\u5c3c\u4e9a\u8bed (ro)<\/li>\n<li>\u5308\u7259\u5229\u8bed (hu)<\/li>\n<li>\u4fdd\u52a0\u5229\u4e9a\u8bed (bg)<\/li>\n<li>\u514b\u7f57\u5730\u4e9a\u8bed (hr)<\/li>\n<li>\u585e\u5c14\u7ef4\u4e9a\u8bed (sr)<\/li>\n<li>\u4e4c\u514b\u5170\u8bed (uk)<\/li>\n<\/ul>\n<p>&nbsp;<\/p>\n<p><strong>POST \u793a\u4f8b\uff1a<\/strong><\/p>\n<pre>curl --request POST \\\r\n--url https:\/\/api.cloudflare.com\/client\/v4\/accounts\/account_id\/ai\/run\/${model}\\\r\n--header 'Authorization: Bearer \u4ee4\u724c' \\\r\n--header 'Content-Type: application\/json' \\\r\n--data '{\r\n\"source_lang\": \"en\",\r\n\"target_lang\": \"zh\",\r\n\"text\": \"I love you.\"\r\n}'<\/pre>\n<p>&nbsp;<\/p>\n<p><strong>\u6c89\u6d78\u5f0f\u7ffb\u8bd1<\/strong><\/p>\n<p>\u6c89\u6d78\u5f0f\u7ffb\u8bd1\u6253\u5f00\u5f00\u53d1\u8005\u8bbe\u7f6e\u4e2d\u7684Beta\uff0c\u7136\u540e\u9009\u62e9 DeepLX(Beta) \u5730\u5740\u8f93\u5165\uff1a<code>https:\/\/\u4f60\u7684worker\u5730\u5740\/translate?password=${authKey}<\/code><\/p>\n<p><strong>worker.js<\/strong><\/p>\n<pre>addEventListener('fetch', event =&gt; event.respondWith(handleRequest(event.request)));\r\n\r\nconst model = '@cf\/meta\/m2m100-1.2b';\r\nconst authKey = 'YOUR_PASSWORD';\r\nconst accountId = 'YOUR_ACCOUNT_ID';\r\nconst <a href=\"https:\/\/www.kdjingpai.com\/ja\/tokenization\/\">token<\/a> = 'YOUR_TOKEN';\r\n\r\nasync function handleRequest(request) {\r\nconst url = new URL(request.url);\r\n\r\nif (request.method === 'OPTIONS') return new Response(null, { status: 204, headers: { 'Access-Control-Allow-Origin': '*', 'Access-Control-Allow-Methods': 'POST, OPTIONS', 'Access-Control-Allow-Headers': 'Content-Type, Authorization' } });\r\n\r\nif (request.method !== 'POST' || url.pathname !== '\/translate' || url.searchParams.get('password') !== authKey) return new Response(request.method !== 'POST' || url.pathname !== '\/translate' ? 'Not Found' : 'Unauthorized', { status: request.method !== 'POST' || url.pathname !== '\/translate' ? 404 : 401 });\r\n\r\nconst data = await request.json();\r\nif (!data.text || !data.source_lang || !data.target_lang) return new Response('Bad Request', { status: 400 });\r\n\r\nconst cloudflareUrl = `https:\/\/api.cloudflare.com\/client\/v4\/accounts\/${accountId}\/ai\/run\/${model}`;\r\nconst init = {\r\nmethod: 'POST',\r\nheaders: { 'Authorization': `Bearer ${token}`, 'Content-Type': 'application\/json' },\r\nbody: JSON.stringify({ source_lang: data.source_lang.toLowerCase(), target_lang: data.target_lang.toLowerCase(), text: data.text })\r\n};\r\n\r\ntry {\r\nconst response = await fetch(cloudflareUrl, init);\r\nconst responseData = await response.json();\r\n\r\nreturn new Response(JSON.stringify({\r\nalternatives: [], code: 200, data: responseData.result.translated_text, id: Math.floor(Math.random() * 10000000000), source_lang: data.source_lang, target_lang: data.target_lang\r\n}), { headers: { 'Content-Type': 'application\/json' } });\r\n} catch (error) {\r\nconsole.error('Translation failed:', error);\r\nreturn new Response(JSON.stringify({ error: 'Translation failed' }), { headers: { 'Content-Type': 'application\/json' }, status: 500 });\r\n}\r\n}<\/pre>\n<p>&nbsp;<\/p>\n","protected":false},"excerpt":{"rendered":"<p>\u7b80\u4ecb Cloudflare Workers AI \u5141\u8bb8\u4f60\u5728 Cloudflare \u7684\u5168\u7403\u7f51\u7edc\u4e0a\u4f7f\u7528\u65e0\u670d\u52a1\u5668 GPU \u8fd0\u884c\u673a\u5668\u5b66\u4e60\u6a21\u578b\u3002\u4f60\u53ef\u4ee5\u901a\u8fc7 Workers\u3001Pages \u6216 Cloudflare API \u5c06\u8fd9\u4e9b\u6a21\u578b\u96c6\u6210\u5230\u81ea\u5df1\u7684\u4ee3\u7801\u4e2d\u3002\u8be5&#8230;<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[182],"tags":[],"class_list":["post-6711","post","type-post","status-publish","format-standard","hentry","category-shicao"],"_links":{"self":[{"href":"https:\/\/www.kdjingpai.com\/pt\/wp-json\/wp\/v2\/posts\/6711","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.kdjingpai.com\/pt\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.kdjingpai.com\/pt\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.kdjingpai.com\/pt\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/www.kdjingpai.com\/pt\/wp-json\/wp\/v2\/comments?post=6711"}],"version-history":[{"count":0,"href":"https:\/\/www.kdjingpai.com\/pt\/wp-json\/wp\/v2\/posts\/6711\/revisions"}],"wp:attachment":[{"href":"https:\/\/www.kdjingpai.com\/pt\/wp-json\/wp\/v2\/media?parent=6711"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.kdjingpai.com\/pt\/wp-json\/wp\/v2\/categories?post=6711"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.kdjingpai.com\/pt\/wp-json\/wp\/v2\/tags?post=6711"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}