Hugging Face 推理 API
Hugging Face 是一个开源的AI/ML模型和工具中心。该平台提供了超过10万个机器学习模型,是将专业AI和ML任务集成到应用程序中的理想选择。
在您的应用程序中使用Hugging Face模型有以下三种方式:
- 使用Transformers Python库在Python后端执行推理
- 通过Transformers.js直接在边缘函数中生成嵌入向量
- 使用Hugging Face托管的推理API在Hugging Face服务器上远程执行AI任务。本指南将详细介绍这种方法。
AI任务类型
以下是您可以使用Hugging Face执行的部分任务类型:
自然语言处理
计算机视觉
音频处理
查看完整任务列表。
访问令牌
首先为您的应用生成一个 Hugging Face 访问令牌:
https://huggingface.co/settings/tokens
根据应用用途和环境命名您的令牌。例如,如果您正在构建一个图像生成应用,可以创建2个令牌:
- "图像生成器 (开发环境)"
- "图像生成器 (生产环境)"
由于我们将此令牌用于推理API,请选择read
角色。
虽然目前不使用访问令牌也可以调用 Hugging Face 推理API,但可能会受到速率限制。
为避免意外停机或错误,我们建议创建访问令牌。
边缘函数
边缘函数是按需运行的服务器端TypeScript函数。由于边缘函数在服务器上运行,您可以安全地为其提供Hugging Face访问令牌。
您需要安装supabase
CLI命令行工具才能使以下命令正常工作。
要创建新的边缘函数,请导航至您的本地项目目录(如果尚未初始化Supabase):
1supabase init
然后创建边缘函数:
1supabase functions new text-to-image
创建.env.local
文件存储Hugging Face访问令牌:
1HUGGING_FACE_ACCESS_TOKEN=<your-token-here>
修改边缘函数代码,导入Hugging Face的推理客户端并执行text-to-image
请求:
1234567891011121314151617181920import { serve } from 'https://deno.land/std@0.168.0/http/server.ts'import { HfInference } from 'https://esm.sh/@huggingface/inference@2.3.2'const hf = new HfInference(Deno.env.get('HUGGING_FACE_ACCESS_TOKEN'))serve(async (req) => { const { prompt } = await req.json() const image = await hf.textToImage( { inputs: prompt, model: 'stabilityai/stable-diffusion-2', }, { use_cache: false, } ) return new Response(image)})
-
该函数使用
HUGGING_FACE_ACCESS_TOKEN
环境变量创建HfInference
新实例 -
它期望接收包含JSON请求体的POST请求。JSON体中应包含名为
prompt
的参数,表示我们将传递给Hugging Face推理API的文本转图像提示词 -
接着调用
textToImage()
方法,传入用户提示词和用于图像生成的模型。当前Hugging Face推荐使用stabilityai/stable-diffusion-2
,但您可以更改为其他文本转图像模型。可通过访问模型页面并按任务筛选查看支持的模型列表 -
将
use_cache
设为false
,使相同提示词的重复查询生成新图像。如果您使用的任务和模型是确定性的(相同输入总是产生相同结果),考虑将use_cache
设为true
以获得更快的响应 -
API返回的
image
结果将是Blob
对象。我们可以直接将Blob
传递给new Response()
,它会自动从image
设置响应内容类型和主体
最后本地运行边缘函数进行测试:
1supabase functions serve --env-file .env.local --no-verify-jwt
记得使用--env-file
参数传入.env.local
文件,使边缘函数能访问HUGGING_FACE_ACCESS_TOKEN
。
出于演示目的,我们设置--no-verify-jwt
以便在不传入JWT令牌的情况下轻松测试边缘函数。实际应用中,您需要在Authorization
头中以Bearer
令牌形式传递JWT。
此时,您可以使用您喜欢的前端框架(Next.js、React、Expo等)向边缘函数发起API请求。我们也可以使用curl
在终端测试:
123curl --output result.jpg --location --request POST 'http://localhost:54321/functions/v1/text-to-image' \ --header 'Content-Type: application/json' \ --data '{"prompt":"Llama wearing sunglasses"}'
在这个例子中,生成的图像将保存为result.jpg
:

后续步骤
现在您可以创建一个边缘函数,使用您选择的模型来调用Hugging Face任务。
尝试运行其他AI任务。
相关资源
- 官方Hugging Face网站
- 官方Hugging Face JS文档
- 使用Hugging Face生成图片描述