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?"}
]
})