text-generation-inference 文档

使用文本生成推理

Hugging Face's logo
加入 Hugging Face 社区

并获得增强文档体验的访问权限

开始使用

使用文本生成推理

在您的应用程序中使用文本生成推理 (TGI) 服务器有多种方法。启动服务器后,您可以使用 消息 API/v1/chat/completions 路由并发出 POST 请求以从服务器获取结果。如果您希望 TGI 返回标记流,还可以将 "stream": true 传递给调用。

有关 API 的更多信息,请参阅 此处 提供的 text-generation-inference 的 OpenAPI 文档。

您可以使用任何您喜欢的工具(例如 curl、Python 或 TypeScript)发出请求。为了获得端到端体验,我们开源了 ChatUI,这是一个用于开放访问模型的聊天界面。

curl

服务器成功启动后,您可以使用 v1/chat/completions 路由查询模型,以获取符合 OpenAI 聊天完成规范的响应

curl localhost:8080/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'

对于非聊天用例,您还可以使用 /generate/generate_stream 路由。

curl 127.0.0.1:8080/generate \
    -X POST \
    -d '{
  "inputs":"What is Deep Learning?",
  "parameters":{
    "max_new_tokens":20
  }
}' \
    -H 'Content-Type: application/json'

Python

推理客户端

huggingface_hub 是一个用于与 Hugging Face Hub(包括其端点)交互的 Python 库。它提供了一个高级类 huggingface_hub.InferenceClient,它使对 TGI 的消息 API 发出调用变得容易。InferenceClient 还负责参数验证并提供了一个易于使用的界面。

通过 pip 安装 huggingface_hub 包。

pip install huggingface_hub

现在您可以像在 Python 中使用 OpenAI 客户端一样使用 InferenceClient

from huggingface_hub import InferenceClient

client = InferenceClient(
    base_url="http://localhost:8080/v1/",
)

output = client.chat.completions.create(
    model="tgi",
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "Count to 10"},
    ],
    stream=True,
    max_tokens=1024,
)

for chunk in output:
    print(chunk.choices[0].delta.content)

您可以在 此处 查看有关 OpenAI 兼容性的更多详细信息。

客户端还有一个基于 `asyncio` 和 `aiohttp` 的异步版本,即 `AsyncInferenceClient`。您可以在 此处 找到其文档。

OpenAI 客户端

您可以直接使用 OpenAI 的 PythonJS 客户端与 TGI 交互。

通过 pip 安装 OpenAI Python 包。

pip install openai
from openai import OpenAI

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

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

用户界面

Gradio

Gradio 是一个 Python 库,它可以帮助您用几行代码为机器学习模型构建 Web 应用程序。它有一个 `ChatInterface` 包装器,可以帮助创建简洁的聊天机器人 UI。让我们看看如何使用 TGI 和 Gradio 创建一个带有流模式的聊天机器人。首先,让我们安装 Gradio 和 Hub Python 库。

pip install huggingface-hub gradio

假设您在 8080 端口上提供模型服务,我们将通过 InferenceClient 进行查询。

import gradio as gr
from huggingface_hub import InferenceClient

client = InferenceClient(base_url="http://127.0.0.1:8080")

def inference(message, history):
    partial_message = ""
    output = client.chat.completions.create(
        messages=[
            {"role": "system", "content": "You are a helpful assistant."},
            {"role": "user", "content": message},
        ],
        stream=True,
        max_tokens=1024,
    )

    for chunk in output:
        partial_message += chunk.choices[0].delta.content
        yield partial_message

gr.ChatInterface(
    inference,
    chatbot=gr.Chatbot(height=300),
    textbox=gr.Textbox(placeholder="Chat with me!", container=False, scale=7),
    description="This is the demo for Gradio UI consuming TGI endpoint.",
    title="Gradio 🤝 TGI",
    examples=["Are tomatoes vegetables?"],
    retry_btn="Retry",
    undo_btn="Undo",
    clear_btn="Clear",
).queue().launch()

您可以直接查看此处👇的用户界面并试用演示。

您可以在 此处 阅读更多关于如何自定义 `ChatInterface` 的信息。

聊天 UI

ChatUI 是一个为使用大型语言模型而构建的开源界面。它提供了许多自定义选项,例如带有 SERP API 的网络搜索等等。ChatUI 可以自动使用 TGI 服务器,甚至提供在不同的 TGI 端点之间切换的选项。您可以在 Hugging Chat 中试用它,或者使用 ChatUI Docker 空间 将您自己的 Hugging Chat 部署到 Spaces。

要在同一个环境中提供 ChatUI 和 TGI 服务,只需将您自己的端点添加到 `chat-ui` 存储库中 `env.local` 文件内的 `MODELS` 变量中。提供指向 TGI 提供服务的端点。

{
// rest of the model config here
"endpoints": [{"url": "https://HOST:PORT/generate_stream"}]
}

ChatUI

< > 在 GitHub 上更新