尧图网站设计 尧图网站设计YAOTU DESIGN
ARTICLE DETAIL

资讯详情

深耕网站设计与一线实操的经验洞察。

Cloudflare Workers AI实战:边缘计算部署Kimi与GLM大模型指南

Cloudflare Workers AI实战:边缘计算部署Kimi与GLM大模型指南 如果你最近在尝试部署或调用大模型大概率会遇到这几个头疼的问题模型太大本地跑不动推理太慢响应等半天API调用又贵又不稳定还担心数据安全。这几乎是每个开发者从“玩一玩”到“用起来”过程中必须跨过的坎。但你可能没注意到一个看似“传统”的CDN和网络安全公司——Cloudflare正在用一种全新的方式解决这些问题。它没有去卷千亿参数的大模型而是选择了一条更务实的路把像Kimi、GLM这样的优秀模型变得更小、更快、更安全并且通过其全球网络让开发者能像调用一个普通API那样轻松使用。这背后的核心就是Cloudflare Workers AI。它不是一个简单的模型托管服务而是一个在Cloudflare全球边缘网络上运行的无服务器GPU计算平台。最近它正式集成了智谱AI的GLM系列和月之暗面的Kimi模型这意味着什么这意味着你不再需要关心服务器、GPU驱动、CUDA版本或者模型量化。你写几行JavaScript或Python代码就能在离用户最近的Cloudflare数据中心以极低的延迟调用一个优化后的高性能模型。成本按请求计算没有冷启动自动扩展并且承诺数据不会用于训练不会离开它的网络。本文将为你彻底拆解Cloudflare Workers AI是如何实现“更小、更快、更安全”这三大承诺的并提供一个从零开始的实战指南。无论你是想为应用快速添加AI能力的前端开发者还是厌倦了复杂运维的后端工程师或是正在寻找低成本、高可控性AI方案的技术决策者这篇文章都将给你一个清晰、可落地的答案。1. 为什么是Cloudflare Workers AI解决开发者的核心痛点在深入技术细节之前我们必须先回答一个根本问题市面上已经有OpenAI API、Azure AI、各种开源模型自托管方案为什么还要关注Cloudflare Workers AI答案不在于它提供了某个独一无二的模型而在于它重新定义了AI推理服务的交付模式精准击中了传统方案的几个软肋痛点一基础设施的复杂性。自建GPU服务器涉及硬件采购、驱动安装、环境配置、模型优化、服务部署和监控告警。一个nvrm: gpu 0000:00:08.0: rminitadapter failed这样的错误就足以让非专业运维人员调试半天。Workers AI将这一切抽象为一行代码。痛点二成本与效率的失衡。公有云API按Token收费对于高频或长文本场景成本不可控而自建服务器则面临资源闲置GPU利用率低和突发流量无法应对的双重问题。Workers AI的无服务器模式实现了真正的按需付费和毫秒级弹性伸缩。痛点三延迟与全球用户体验。AI模型的推理延迟本身就高如果服务端再远离用户总延迟可能超过数秒体验极差。Cloudflare拥有全球300多个边缘节点能将模型推理推到离用户最近的地方这是其作为CDN巨头的天然优势。痛点四数据隐私与合规焦虑。将业务数据发送给第三方AI服务商总存在隐私泄露和合规风险。Cloudflare明确承诺通过Workers AI处理的数据不会用于训练其模型并且在其网络内处理这为许多受严格监管的行业如金融、医疗提供了可能性。因此Cloudflare Workers AI的定位非常清晰它不是一个模型研发平台而是一个AI推理的“边缘计算网络”。它的目标客户就是广大的Web开发者、应用开发者让他们能以最小的认知负担和工程成本将先进的AI能力集成到产品中。集成Kimi和GLM正是为了提供更符合中文场景、长文本理解和代码生成等特定需求的模型选择。2. 核心概念拆解Workers、AI、无服务器与边缘计算要理解Workers AI需要先厘清几个关键概念。它们组合在一起才构成了这个独特的产品。Cloudflare Workers你可以把它理解为一个全球分布的无服务器JavaScript执行环境。传统上它用于运行轻量级的函数类似AWS Lambda处理HTTP请求、实现AB测试、修改响应头等。它的特点是启动极快无冷启动、在全球边缘节点运行。Workers AI这是建立在Workers平台之上的AI推理服务。Cloudflare在其部分边缘数据中心部署了GPU集群目前主要使用NVIDIA A100、L40S等。Workers AI允许你的Worker脚本直接调用这些GPU上预先部署和优化好的AI模型而无需管理底层基础设施。无服务器Serverless模式对你而言没有“服务器”的概念。你不用选择GPU型号不用配置虚拟机不用关心集群扩缩容。你只为每次模型推理所消耗的计算资源付费具体是每1000次推理请求的定价。这彻底改变了AI服务的消费模式。边缘AI推理这是与传统“中心化AI云服务”最大的区别。当美国纽约的用户请求你的服务时模型推理可能在纽约本地的Cloudflare节点完成东京的用户请求则由东京的节点处理。这最大程度减少了网络传输延迟对于交互式AI应用如聊天、实时翻译体验提升巨大。模型优化更小、更快这是Cloudflare工程能力的体现。原始的Kimi或GLM模型可能参数巨大。Cloudflare会使用模型量化如INT8、FP16、算子融合、特定硬件优化等技术在保证精度可接受的前提下大幅减少模型体积和提升推理速度。这也是其承诺“更小、更快”的技术基础。把这些概念串联起来你写一段部署在Cloudflare Workers上的代码一个简单的HTTP接口这段代码可以调用Cloudflare边缘GPU上的、经过优化的Kimi模型来处理用户输入并将结果快速返回给用户。整个过程你只写了业务逻辑代码。3. 环境准备与前置条件开始实战之前你需要准备好以下几样东西。整个过程不需要你本地有GPU甚至不需要很强的开发机器。一个Cloudflare账户。如果你没有去 Cloudflare官网 免费注册即可。Workers AI目前有免费的每日限额足够用于学习和测试。Node.js环境。建议安装最新的LTS版本如18.x, 20.x用于运行Wrangler命令行工具。Cloudflare Wrangler CLI。这是管理Cloudflare Workers的官方命令行工具。通过npm全局安装npm install -g wrangler登录并配置Wrangler。在终端中运行以下命令它会打开浏览器引导你完成Cloudflare账号授权wrangler login一个可用的模型。登录Cloudflare Dashboard进入“Workers Pages” - “AI”页面查看当前可用的模型列表。确保你看到cf/qwen/qwen-2.5-32b-instruct-awqKimi的优化版本或cf/glm/glm-4-9b-chat-awq等GLM系列模型。这些就是我们可以调用的模型名称。重要提醒虽然Workers AI简化了部署但它不是一个“万能”的AI平台。它主要专注于推理不支持模型训练、微调或大规模数据预处理。如果你的需求是训练自定义模型仍需考虑其他方案。4. 创建并配置你的第一个AI Worker让我们从创建一个最简单的Worker开始它暴露一个HTTP API接收用户的问题调用Kimi模型并返回回答。第一步初始化Worker项目打开终端创建一个新目录并进入然后使用Wrangler初始化项目mkdir my-ai-worker cd my-ai-worker wrangler init初始化过程中Wrangler会交互式地询问一些配置。对于本教程你可以选择“What type of application do you want to create?”:Hello WorldWorker“Do you want to use TypeScript?”:Yes(推荐以获得更好的类型提示)“Do you want to deploy your application?”:No(我们先在本地开发)完成后你会得到一个基本的项目结构核心文件是src/index.ts。第二步安装AI绑定依赖Workers AI通过“绑定”Binding的方式将AI服务注入到你的Worker代码中。首先我们需要在wrangler.toml配置文件中声明这个绑定。 打开项目根目录下的wrangler.toml文件添加ai绑定配置。你的文件内容应该类似这样name my-ai-worker compatibility_date 2024-12-01 compatibility_flags [ nodejs_compat ] # 关键配置声明一个名为 AI 的绑定指向 Workers AI 服务 ai { binding AI } [[ai.models]] model_id cf/qwen/qwen-2.5-32b-instruct-awq # 这是Kimi模型的标识 alias kimi # 给你的模型起一个简短的别名方便在代码中调用这里我们绑定了Kimi模型并给它起了个别名kimi。你也可以绑定多个模型比如同时加上GLM。第三步编写AI推理代码现在打开src/index.ts文件将其替换为以下内容// src/index.ts export interface Env { // 这里对应 wrangler.toml 中 ai { binding AI } 的配置 // TypeScript 类型系统会识别出 AI 绑定并给出智能提示 AI: any; } export default { async fetch(request: Request, env: Env, ctx: ExecutionContext): PromiseResponse { // 1. 设置CORS头部方便前端调用 const corsHeaders { Access-Control-Allow-Origin: *, Access-Control-Allow-Methods: GET, POST, OPTIONS, Access-Control-Allow-Headers: Content-Type, }; // 处理预检请求 if (request.method OPTIONS) { return new Response(null, { headers: corsHeaders }); } // 2. 只处理POST请求 if (request.method ! POST) { return new Response(Method Not Allowed, { status: 405, headers: corsHeaders }); } try { // 3. 从请求体中获取用户输入 const { messages } await request.json{ messages: Array{ role: string; content: string } }(); if (!messages || !Array.isArray(messages)) { return new Response(JSON.stringify({ error: Invalid request body. Expected messages array. }), { status: 400, headers: { ...corsHeaders, Content-Type: application/json }, }); } // 4. 调用 Workers AI 服务使用别名 kimi 指定的模型 // 这是最核心的一行代码 const response await env.AI.run(cf/qwen/qwen-2.5-32b-instruct-awq, { messages, // 你可以在这里添加更多的模型参数例如 // max_tokens: 1024, // stream: true, // 如果需要流式响应 }); // 5. 返回模型的响应 return new Response(JSON.stringify({ response }), { headers: { ...corsHeaders, Content-Type: application/json }, }); } catch (error: any) { // 6. 错误处理 console.error(AI Worker Error:, error); return new Response(JSON.stringify({ error: error.message }), { status: 500, headers: { ...corsHeaders, Content-Type: application/json }, }); } }, };这段代码做了以下几件事创建了一个支持CORS的HTTP端点。接收一个包含对话历史 (messages) 的JSON POST请求。通过env.AI.run()调用我们配置的Kimi模型。将模型的输出包装成JSON返回。第四步本地开发测试在部署到云端之前先在本地测试。Cloudflare提供了完善的本地开发环境。首先你需要将你的Cloudflare账户ID配置到项目中。运行以下命令查看你的账户IDwrangler whoami然后在wrangler.toml文件中添加account_id 你的账户ID。启动本地开发服务器wrangler dev终端会输出一个本地地址例如http://localhost:8787。使用curl或 Postman 等工具测试你的APIcurl -X POST http://localhost:8787 \ -H Content-Type: application/json \ -d { messages: [ {role: system, content: 你是一个乐于助人的AI助手。}, {role: user, content: 用Python写一个快速排序函数。} ] }如果一切正常你将收到一个包含Kimi模型生成的Python代码的JSON响应。5. 部署到Cloudflare全球网络本地测试通过后部署到生产环境简单得不可思议。在项目根目录下运行wrangler deployWrangler会自动打包你的代码上传到Cloudflare并将其部署到全球边缘网络。部署成功后它会给你一个唯一的.workers.dev子域名例如https://my-ai-worker.你的用户名.workers.dev。现在你的AI助手API已经全球可用了你可以将上一步测试命令中的localhost:8787替换成这个新的URL进行测试。6. 进阶使用流式响应、多模型切换与成本控制基础的API搭建好了但在实际项目中我们往往有更复杂的需求。6.1 实现流式响应 (Streaming)对于长文本生成让用户等待整个响应完成体验很差。Workers AI支持Server-Sent Events (SSE) 流式输出。修改你的src/index.ts中的核心调用部分// ... 之前的CORS和请求处理代码 ... // 设置响应头表明这是一个流式响应 const streamHeaders { ...corsHeaders, Content-Type: text/event-stream, Cache-Control: no-cache, Connection: keep-alive, }; // 调用模型启用流式输出 const stream await env.AI.run( cf/qwen/qwen-2-5-32b-instruct-awq, { messages, stream: true, // 关键参数启用流式 } ); // 返回一个ReadableStream return new Response(stream, { headers: streamHeaders });前端可以通过EventSourceAPI 来接收并实时显示这些数据块。6.2 在Kimi和GLM等多模型间动态切换你可能希望根据任务类型代码生成 vs 中文对话或成本来选择模型。这可以通过请求参数来实现。首先在wrangler.toml中配置多个模型[[ai.models]] model_id cf/qwen/qwen-2.5-32b-instruct-awq alias kimi [[ai.models]] model_id cf/glm/glm-4-9b-chat-awq alias glm然后在代码中根据请求参数决定使用哪个模型export default { async fetch(request, env, ctx) { const { messages, model kimi } await request.json(); let modelId; switch (model) { case glm: modelId cf/glm/glm-4-9b-chat-awq; break; case kimi: default: modelId cf/qwen/qwen-2.5-32b-instruct-awq; } const response await env.AI.run(modelId, { messages }); // ... 返回响应 ... } }6.3 成本控制与用量监控无服务器虽好但防止意外开销至关重要。设置用量限制在Cloudflare Dashboard中进入你的Worker设置可以配置“每日请求次数”限制防止因恶意攻击或程序BUG导致无限调用。请求验证与限流在你的Worker代码开头实现简单的API密钥验证或基于IP的限流。const API_KEY env.API_KEY; // 通过wrangler.toml secrets设置 const requestKey request.headers.get(X-API-Key); if (requestKey ! API_KEY) { return new Response(Unauthorized, { status: 401 }); }监控与日志Cloudflare Dashboard提供了详细的请求次数、错误率和CPU时间图表。结合console.log输出业务日志便于排查问题。7. 常见问题与排查思路在实际使用中你可能会遇到以下问题。这里提供一个快速排查指南。问题现象可能原因排查方式解决方案部署失败Error: No account id foundWrangler未找到Cloudflare账户配置。运行wrangler whoami检查登录状态。查看wrangler.toml是否有account_id。运行wrangler login重新登录。在wrangler.toml中手动添加account_id。运行时错误Binding ‘AI’ not found.Worker配置中未正确声明AI绑定。检查wrangler.toml文件是否有ai { binding “AI” }这一行。确保wrangler.toml配置正确并与src/index.ts中Env接口的属性名匹配。API请求返回400或模型未找到请求体格式错误或模型ID拼写错误。1. 检查POST请求的Content-Type: application/json。2. 核对env.AI.run中的模型ID与Dashboard中显示的完全一致。使用标准的{“messages”: […]}格式。直接从Dashboard复制模型ID。请求超时或响应缓慢模型首次加载冷启动或输入token过长。查看Cloudflare Dashboard的Worker请求日志观察响应时间。Workers AI冷启动通常很快毫秒级。对于超长文本考虑分块处理或检查模型是否支持该长度。本地开发(wrangler dev) 无法调用AI本地开发环境可能未完全模拟AI绑定。尝试运行wrangler dev –remote命令该模式会连接远程的AI服务进行开发。使用–remote标志进行开发测试或直接部署到预览环境测试。前端调用遇到CORS错误Worker响应头未正确设置CORS。浏览器开发者工具查看Network标签下错误信息。确保你的fetch函数返回的Response包含了正确的Access-Control-Allow-Origin等头部。达到每日免费限额Workers AI免费套餐有每日请求次数限制。登录Dashboard查看AI服务部分的用量统计。等待限额重置或升级到付费套餐。在代码中增加用量监控和提醒。8. 最佳实践与工程建议将Workers AI用于生产环境除了跑通Demo还需要考虑更多工程化因素。输入验证与清理永远不要信任用户输入。对传入的messages内容进行长度检查、敏感词过滤防止提示词注入攻击。function sanitizeInput(content: string): string { // 实现你的清理逻辑如截断过长文本、过滤非法字符等 if (content.length 8192) { content content.substring(0, 8192) ‘…’; } return content; }实现重试与降级机制网络和边缘服务也可能出现暂时性失败。为AI调用添加指数退避重试。可以配置一个更小更快的模型作为降级选项。async function callAIWithRetry(env, modelId, options, maxRetries 2) { for (let i 0; i maxRetries; i) { try { return await env.AI.run(modelId, options); } catch (error) { if (i maxRetries) throw error; // 等待一段时间后重试 await new Promise(r setTimeout(r, 100 * Math.pow(2, i))); } } }结构化输出与后处理让模型输出JSON等结构化数据便于你的程序处理。可以通过System Prompt来约束模型输出格式。const systemPrompt 你是一个天气信息提取器。用户会输入一段文本你需要从中提取地点和天气现象。请严格按照以下JSON格式输出{“location”: “城市名”, “weather”: “天气描述”};敏感信息处理即使Cloudflare承诺数据安全也应避免将用户密码、密钥、个人身份信息等敏感数据直接发送给AI模型。考虑在发送前进行脱敏处理。性能与成本监控除了使用Dashboard可以将关键指标如请求延迟、Token消耗估算发送到你自己的监控系统如Prometheus、Datadog以便设置告警和进行成本分析。版本管理与回滚使用Wrangler的版本管理功能。在部署重大更改前先部署到预览环境wrangler deploy –env staging。如果新版本有问题可以快速回滚到旧版本。9. 总结何时选择Cloudflare Workers AI经过以上详细的拆解和实践我们可以对Cloudflare Workers AI做出一个清晰的定位判断你应该优先考虑使用 Workers AI如果你的应用是面向全球用户的Web应用或API服务对响应延迟敏感。你的团队是前端或全栈团队缺乏GPU运维经验想快速集成AI功能。你的使用场景是中小规模、间歇性的推理请求无服务器模式比预留GPU实例更划算。你对数据隐私有较高要求希望数据不出特定网络边界。你需要快速原型验证希望几分钟内就让一个AI应用上线。你可能需要谨慎评估或寻找替代方案如果你需要进行大规模的批量推理如一次性处理数百万文档按请求计费可能成本过高。你需要训练或微调自定义模型Workers AI目前不提供此功能。你必须使用某个Cloudflare尚未支持的特定模型或版本。你的应用需要极致的模型推理性能如超高吞吐量、超低P99延迟需要对底层硬件和软件栈有完全控制权。Cloudflare通过Workers AI正在将强大的AI模型变成像CDN缓存、防火墙规则一样易于使用的“基础设施”。集成Kimi和GLM只是开始随着更多优化模型和硬件的加入这个边缘AI网络的能力会越来越强。对于开发者而言这意味着我们终于可以抛开复杂的pytorch安装教程gpu、nvrm gpu failed错误和gpu租用成本核算将精力重新聚焦于利用AI创造有价值的应用逻辑本身。这或许才是AI平民化进程中最关键的一步。
返回列表