背景
通常用Cloudflare Workers来实现一个Function或者定时任务或者使用“Edge”模式运行Nextjs,但是如果直接想用Workers来部署“runtime”模式的Nextjs则需要进行一些调整。使用Nextjs的AppRoute来调用Huggingface的AI推理api。 并不是所有模型都可以通过推理sdk来调用的,我在后面会写如何找到支持的模型
OpenNext
OpenNext是一个开源项目,主要是把AWS Lambda,Cloudflare Workers,Netlify sites转换为“runtime”模式的nextjs项目
初始化
为了方便引用,我把两个页面都放一下:
网站 | 链接 |
---|---|
Cloudflare | https://developers.cloudflare.com/workers/framework-guides/web-apps/nextjs/ |
OpenNext | https://opennext.js.org/cloudflare |
HuggingFace | https://huggingface.co/docs/huggingface.js/en/inference/README |
初始化项目,并安装
npm create cloudflare@latest -- <project-name> --framework=next --platform=workers
过程中直接按Enter接受默认值即可,最后进入项目目录,并安装packages
cd <project-name>
npm i
安装huggingface
npm install @huggingface/inference
创建HF的Access token
注册并登陆Huggingface,进入右上角的用户菜单,选“Settings”,打开后,进入“Access Tokens”
这里可以新建一个只读token
注意妥善保管token,只有一次机会拷贝,最好用密码管理工具保存起来,这样就不会找不到。完全自托管的bitwarden教程在这里
添加一个api endpoint
现在可以为nextjs添加一个api endpoint了,因为我们创建App route模式,添加api端点非常容易,创建src/app/app/hfai/route.js
即可
该文件的实现为:
import { InferenceClient } from '@huggingface/inference';
import { NextResponse } from 'next/server';
import { getCloudflareContext } from "@opennextjs/cloudflare";
export async function POST(req) {
const ctx = await getCloudflareContext();
try {
let hf = new InferenceClient(ctx.env.HF_API_TOKEN || process.env.HF_API_TOKEN);
const response = await hf.chatCompletion({
// model: "Qwen/Qwen3-32B",
// provider: "cerebras",
// model: "deepseek-ai/DeepSeek-R1-0528",
// provider: "fireworks-ai",
model: "HuggingFaceTB/SmolLM3-3B",
provider: "hf-inference",
messages: [{ role: "user", content: "Hello, nice to meet you!" }],
max_tokens: 512,
temperature: 0.1,
});
return NextResponse.json(response);
} catch (error) {
console.error(error);
return NextResponse.json({ error: error.message }, { status: 500 });
}
}
这样通过Postman或者Bruno或者curl访问对应的api就可以得到模型的响应。
npm run dev
curl -X POST http://localhost:3000/api/hfai
注意点
找到对应的模型名称和provider
并不是所有HF上的模型都可以直接使用HF推理sdk,我们需要找出哪些模型支持。 首先进入HF首页找到最上面的Models,从左侧的面板找到Others,在下面会显示推理模型提供商Inference Providers,这里会列出所有支持推理sdk的模型,再通过其他的过滤器如task我们可以找到某个一个provider提供的某一类推理模型,比如图中为huggingface的一个文本生成模型
目前所有provider的名称:
Available providers: black-forest-labs,cerebras,cohere,fal-ai,featherless-ai,hf-inference,fireworks-ai,groq,hyperbolic,nebius,novita,nscale,openai,ovhcloud,replicate,sambanova,together
额度
免费用户每月有0.10美刀的额度,大概可以进行50-100次访问,升级为Pro用户后可以使用pay-as-you-go随时可以充值。
使用场景
虽然我把使用场景放到最后,但还是需要写一下。 HF推理模型可以快速地完成应用调用,而且HF上模型相对较多,相对,但不是所有。