文本生成推理文档

HTTP API 参考

Hugging Face's logo
加入 Hugging Face 社区

并获取增强型文档体验

开始使用

HTTP API 参考

目录

HTTP API 是一个 RESTful API,允许您与文本生成推理组件交互。有两个端点可用

文本生成推理自定义 API

查看 API 文档,以获取有关如何与文本生成推理 API 交互的更多信息。

OpenAI 消息 API

文本生成推理 (TGI) 现在支持消息 API,该 API 与 OpenAI Chat Completion 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="http://localhost: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="http://localhost: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 的端点。以下是如何使用 IE 与 TGI 以及 OpenAI 的 Python 客户端库的示例。

注意:请确保将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 更新