❤️ 写给 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 库代码片段。