AI 与向量

Hugging Face 推理 API


Hugging Face 是一个开源的AI/ML模型和工具中心。该平台提供了超过10万个机器学习模型,是将专业AI和ML任务集成到应用程序中的理想选择。

在您的应用程序中使用Hugging Face模型有以下三种方式:

  1. 使用Transformers Python库在Python后端执行推理
  2. 通过Transformers.js直接在边缘函数中生成嵌入向量
  3. 使用Hugging Face托管的推理API在Hugging Face服务器上远程执行AI任务。本指南将详细介绍这种方法。

AI任务类型

以下是您可以使用Hugging Face执行的部分任务类型:

自然语言处理

计算机视觉

音频处理

查看完整任务列表

访问令牌

首先为您的应用生成一个 Hugging Face 访问令牌:

https://huggingface.co/settings/tokens

根据应用用途和环境命名您的令牌。例如,如果您正在构建一个图像生成应用,可以创建2个令牌:

  • "图像生成器 (开发环境)"
  • "图像生成器 (生产环境)"

由于我们将此令牌用于推理API,请选择read角色。

边缘函数

边缘函数是按需运行的服务器端TypeScript函数。由于边缘函数在服务器上运行,您可以安全地为其提供Hugging Face访问令牌。

要创建新的边缘函数,请导航至您的本地项目目录(如果尚未初始化Supabase):

1
supabase init

然后创建边缘函数:

1
supabase functions new text-to-image

创建.env.local文件存储Hugging Face访问令牌:

1
HUGGING_FACE_ACCESS_TOKEN=<your-token-here>

修改边缘函数代码,导入Hugging Face的推理客户端并执行text-to-image请求:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
import { 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)})
  1. 该函数使用HUGGING_FACE_ACCESS_TOKEN环境变量创建HfInference新实例

  2. 它期望接收包含JSON请求体的POST请求。JSON体中应包含名为prompt的参数,表示我们将传递给Hugging Face推理API的文本转图像提示词

  3. 接着调用textToImage()方法,传入用户提示词和用于图像生成的模型。当前Hugging Face推荐使用stabilityai/stable-diffusion-2,但您可以更改为其他文本转图像模型。可通过访问模型页面并按任务筛选查看支持的模型列表

  4. use_cache设为false,使相同提示词的重复查询生成新图像。如果您使用的任务和模型是确定性的(相同输入总是产生相同结果),考虑将use_cache设为true以获得更快的响应

  5. API返回的image结果将是Blob对象。我们可以直接将Blob传递给new Response(),它会自动从image设置响应内容类型和主体

最后本地运行边缘函数进行测试:

1
supabase functions serve --env-file .env.local --no-verify-jwt

记得使用--env-file参数传入.env.local文件,使边缘函数能访问HUGGING_FACE_ACCESS_TOKEN

此时,您可以使用您喜欢的前端框架(Next.js、React、Expo等)向边缘函数发起API请求。我们也可以使用curl在终端测试:

1
2
3
curl --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任务

相关资源