❤️ 写给 OpenAI 推理客户端的一封情书

社区文章 发布于 2025 年 2 月 28 日

毋庸置疑,我最喜欢的 OpenAI 库是 Python 推理客户端。主要原因在于它正在成为整个 AI 领域推理的通用接口。举几个例子,它兼容 vLLM、TGI、推理提供商、LlamaCPP、LlamaStudio 和云提供商。

它之所以被如此广泛使用,主要是因为其简洁性和兼容性。其他本地和远程推理服务器都可以公开与 OpenAI 客户端相同的 API 接口,并立即兼容。因此,如果您正在构建推理服务器,兼容 OpenAI 意义重大。

在这篇博客文章中,我想介绍一下 OpenAI 库的一些很酷的功能——不仅仅是调用 OpenAI 模型 😛。

Hugging Face 推理

Hub 上有一百五十万个模型,其中许多模型可由 Hugging Face 本身或其他提供商进行推理。如果您还没有听说过第三方推理提供商,请查看本指南

在这里,我可以调用在 Fireworks AI 上运行的 deepseek 的 R1 模型。请求通过 hub 路由,但从 OpenAI 客户端开始。您可以从 hub 上的任何模型页面复制此类代码片段。

from openai import OpenAI

client = OpenAI(
    base_url="https://router.huggingface.co/fireworks-ai",
    api_key="hf_xxxxxxxxxxxxxxxxxxxxxxxx"
)

messages = [
    {
        "role": "user",
        "content": "What is the capital of France?"
    }
]

completion = client.chat.completions.create(
    model="accounts/fireworks/models/deepseek-r1", 
    messages=messages, 
    max_tokens=500,
)

print(completion.choices[0].message)

然后,如果我进行这些更改,我就可以切换到 hyperbolic 作为推理提供商。

client = OpenAI(
-   base_url="https://router.huggingface.co/fireworks-ai",
+	base_url="https://router.huggingface.co/hyperbolic",
    api_key="hf_xxxxxxxxxxxxxxxxxxxxxxxx"
)

切换模型提供商时,我也需要更改模型。

completion = client.chat.completions.create(
-   model="accounts/fireworks/models/deepseek-r1", 
+ 	model="deepseek-ai/DeepSeek-R1", 
    messages=messages, 
    max_tokens=500,
)

请求由 Hugging Face 路由到正确的推理提供商。

文本生成推理

如果您使用在本地运行的模型,则可以使用文本生成推理容器。

docker run --gpus all --shm-size 1g -p 8080:80 -v $volume:/data \
    ghcr.io/huggingface/text-generation-inference:3.1.0 \
    --model-id deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B

然后您可以使用 OpenAI 客户端请求它,即使它在本地运行。

from openai import OpenAI

# init the client but point it to TGI
client = OpenAI(
    base_url="https://:8080/v1/",
    api_key="-"
)

chat_completion = client.chat.completions.create(
    model="tgi",
    messages=[
        {"role": "system", "content": "You are a helpful assistant." },
        {"role": "user", "content": "What is deep learning?"}
    ],
    stream=True
)

vLLM

本地模型爱好者喜欢使用 vLLM 进行推理,您也可以将 OpenAI 客户端与您的本地 vLLM 服务器一起使用。

vllm serve deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B --dtype auto --api-key token-abc123

在 Python 中,您可以像这样请求本地服务器

from openai import OpenAI
client = OpenAI(
    base_url="https://:8000/v1",
    api_key="token-abc123",
)

completion = client.chat.completions.create(
  model="deepseek-ai/DeepSeek-R1-Distill-Qwen-1.5B",
  messages=[
    {"role": "user", "content": "Hello!"}
  ]
)

print(completion.choices[0].message)

显然,这有替代方案。Hugging Face 自己在 Python 和 JS 中的推理客户端提供了大量与推理提供商的集成。大多数推理提供商都有自己的库,可以与他们的服务进行更深层次的集成。

如果您想看到它的实际应用,请查看模型页面上的 OpenAI 库代码片段。

社区

🔥 文章

拥有 OpenAI 兼容 API 非常方便,向 HF 团队致敬!

注册登录 发表评论