text-generation-inference 文档

消息 API

Hugging Face's logo
加入 Hugging Face 社区

并获得增强的文档体验

开始使用

消息 API

文本生成推理 (TGI) 现在支持消息 API,该 API 与 OpenAI 聊天补全 API 完全兼容。此功能从 1.4.0 版本开始可用。您可以使用 OpenAI 的客户端库或期望 OpenAI 模式的第三方库与 TGI 的消息 API 交互。下面是一些如何利用此兼容性的示例。

注意:消息 API 从 TGI 1.4.0 及更高版本开始支持。请确保您使用的是兼容版本才能访问此功能。

目录

发起请求

您可以使用 curl 向 TGI 的消息 API 发起请求。以下是一个示例

curl localhost:3000/v1/chat/completions \
    -X POST \
    -d '{
  "model": "tgi",
  "messages": [
    {
      "role": "system",
      "content": "You are a helpful assistant."
    },
    {
      "role": "user",
      "content": "What is deep learning?"
    }
  ],
  "stream": true,
  "max_tokens": 20
}' \
    -H 'Content-Type: application/json'

流式传输

您还可以使用 OpenAI 的 Python 客户端库发起流式请求。方法如下

from openai import OpenAI

# init the client but point it to TGI
client = OpenAI(
    base_url="https://:3000/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
)

# iterate and print stream
for message in chat_completion:
    print(message)

同步

如果您更喜欢同步请求,可以这样做

from openai import OpenAI

# init the client but point it to TGI
client = OpenAI(
    base_url="https://:3000/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=False
)

print(chat_completion)

Hugging Face 推理端点

消息 API 已集成到 推理端点 中。每个使用带有聊天模板的 LLM 的“文本生成推理”端点现在都可以使用。以下是如何使用 OpenAI 的 Python 客户端库与 TGI 结合使用 IE 的示例

注意:请确保将 base_url 替换为您的端点 URL,并在 URL 末尾包含 v1/api_key 应替换为您的 Hugging Face API 密钥。

from openai import OpenAI

# init the client but point it to TGI
client = OpenAI(
    # replace with your endpoint url, make sure to include "v1/" at the end
    base_url="https://vlzz10eq3fol3429.us-east-1.aws.endpoints.huggingface.cloud/v1/",
    # replace with your API key
    api_key="hf_XXX"
)

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
)

# iterate and print stream
for message in chat_completion:
    print(message.choices[0].delta.content, end="")

云提供商

TGI 可以部署在各种云提供商上,以实现可扩展且强大的文本生成。其中一个提供商是 Amazon SageMaker,它最近增加了对 TGI 的支持。以下是如何在 Amazon SageMaker 上部署 TGI 的方法

Amazon SageMaker

要在 Amazon SageMaker 中启用消息 API,您需要将环境变量 MESSAGES_API_ENABLED=true

这将修改 /invocations 路由以接受由角色和内容组成的消息字典。请参阅下面的示例,了解如何使用新的消息 API 部署 Llama。

import json
import sagemaker
import boto3
from sagemaker.huggingface import HuggingFaceModel, get_huggingface_llm_image_uri

try:
 role = sagemaker.get_execution_role()
except ValueError:
 iam = boto3.client('iam')
 role = iam.get_role(RoleName='sagemaker_execution_role')['Role']['Arn']

# Hub Model configuration. https://huggingface.co/models
hub = {
 'HF_MODEL_ID':'HuggingFaceH4/zephyr-7b-beta',
 'SM_NUM_GPUS': json.dumps(1),
 'MESSAGES_API_ENABLED': True
}

# create Hugging Face Model Class
huggingface_model = HuggingFaceModel(
 image_uri=get_huggingface_llm_image_uri("huggingface",version="1.4.0"),
 env=hub,
 role=role,
)

# deploy model to SageMaker Inference
predictor = huggingface_model.deploy(
 initial_instance_count=1,
 instance_type="ml.g5.2xlarge",
 container_startup_health_check_timeout=300,
  )

# send request
predictor.predict({
"messages": [
        {"role": "system", "content": "You are a helpful assistant." },
        {"role": "user", "content": "What is deep learning?"}
    ]
})
< > 在 GitHub 上更新