← 返回文章列表 / Back to list
usage

Hugging Face Inference Client 使用

Using the Hugging Face Inference Client

⚠️ 待更新·2026-08-29核验 · 更新时间待核验 · 本文信息可能已过期,请以官方文档为准 更新时间:2026-08-29 · 核验状态:待更新 · 官方溯源待补

简介

Hugging Face Hub 托管了数十万个开源模型,通过 InferenceClient 你可以一行代码调用其中大部分,无需自己部署。免费层有 HF_INFERENCE 端点,适合原型与轻量任务。本篇演示文本、流式、跨模态、嵌入四种典型用法。

架构图

flowchart LR A[pip install huggingface_hub] --> B[InferenceClient init] B --> C[Pick any model from HF Hub] C --> D[Text generation] C --> E[Image generation] C --> F[Audio transcription] D --> G[One-line call] E --> G F --> G

安装

pip install -U huggingface_hub

https://huggingface.co/settings/tokens 创建一个 Read 权限的 token:

export HF_TOKEN="hf_..."

文本对话

import os
from huggingface_hub import InferenceClient

client = InferenceClient(token=os.environ["HF_TOKEN"])

answer = client.chat_completion(
    model="meta-llama/Llama-3.1-8B-Instruct",
    messages=[
        {"role": "system", "content": "你是简洁的中文助手"},
        {"role": "user", "content": "用一句话解释什么是反向索引"},
    ],
    max_tokens=128,
)
print(answer.choices[0].message.content)

流式输出

for chunk in client.chat_completion(
    model="meta-llama/Llama-3.1-8B-Instruct",
    messages=[{"role": "user", "content": "写一首关于秋天的五言绝句"}],
    stream=True,
):
    print(chunk.choices[0].delta.content or "", end="", flush=True)
print()

跨模态调用

InferenceClient 也封装了非文本任务,每个方法对应一类任务:

# 文生图
img = client.text_to_image(
    "a cyberpunk cat, neon, ultra-detailed",
    model="black-forest-labs/FLUX.1-dev",
)
img.save("cat.png")

# 语音合成
with open("hello.wav", "wb") as f:
    f.write(client.text_to_speech(
        "Hello world", model="facebook/mms-tts-eng"
    ))

文本嵌入

做 RAG 时需要把文本转向量:

vec = client.feature_extraction(
    "反向索引是搜索引擎的基础数据结构",
    model="intfloat/multilingual-e5-large",
)
print(vec.shape)  # (1, 1024)

进阶:用 Router 自动选择

不确定该用哪个模型?用 Router 让 HF 根据任务类型自动挑选:

# 不传 model 参数时,Router 会按任务类型自动选择当前最优
text = client.text_generation(
    "Once upon a time",
    model=None,
)

部署专用端点

免费 HF_INFERENCE 端点限速严格,生产场景建议升级到 Dedicated Endpoints:

任务路由建议

不同任务应选不同模型:对话与轻量问答用 meta-llama/Llama-3.1-8B-Instruct,推理与代码用 70B 系列,中文场景用 Qwen/Qwen2.5-7B-Instruct,多模态理解用 Qwen/Qwen2-VL-7B-Instruct。Hugging Face Hub 的 Model Card 页面通常标注了推荐任务类型,选型时可参考。

常见问题

  • 429 rate limited:免费 HF_INFERENCE 端点限速,降频或升级到 PRO($9/月)享 20 倍配额。
  • model not loaded:某些大模型不在免费推理列表,需用 Dedicated Endpoints(付费)。
  • 想本地推理:pip install transformers 直接加载模型权重,小模型在 CPU 也能跑。
  • Gateaway Timeout:免费端点冷启动可能 30 秒,重试一次即可。

InferenceClient 是体验开源模型最快的方式,适合选型阶段。

最佳实践

  • InferenceClient 单例:不要每次请求都 new 一个 client,连接池会被打爆。
  • timeout 设 60s:大模型推理慢,默认 30s 经常超时。
  • 冷启动要等:HF 免费层模型首次调用要 30-60s 加载到 GPU,第二次起就快了。
  • 图像模型单独 client:文本和图像 client 用不同参数(image_size, num_inference_steps),混用易报错。

相关文章 / Related

Gemini API 免费层调用在本地 IDE 中集成免费 APIOpenRouter API Key 申请与费率OpenCode 接入免费模型实战免费 OCR 与文档解析 API 实战