
使用 Hugging Face Endpoints 和 FastAPI 构建 LLM 应用
作者 | Ideogram 提供图片
引言
FastAPI 是一个现代、高性能的合规 Web 框架,用于使用 Python 构建 API。它简化了高效构建 HTTP API 并将其与 AI 和机器学习模型(包括 Hugging Face Hub 上可用的语言模型)集成的任务。
本文基于 Hugging Face Endpoints 和 FastAPI 的组合,通过一个示例说明了如何使用 FastAPI 构建一个与 Hugging Face 中可访问的大型语言模型 (LLM) 交互的 API 端点。FastAPI 服务器设置为监听包含文本提示的传入请求,然后使用 Requests 库将这些请求转发到 Hugging Face 模型。语言模型处理输入提示并返回生成的响应,然后该响应被发送回客户端(我们的本地机器)。FastAPI 高效处理 HTTP 请求的能力与 Hugging Face 强大的 LLM 的结合,帮助开发人员快速构建能够根据自然语言生成响应的 AI 驱动型应用程序。
分步示例
首先,在您的本地环境中安装以下软件包
1 |
pip install fastapi uvicorn requests |
我们将逐一解释这些软件包
- FastAPI:如我们已知,FastAPI 基于 Python 通过 HTTP 服务实现 API 开发,并能很好地与 Hugging Face 的语言模型等 AI 模型集成。它提供了一个基于端点的基础设施,可以发送诸如提示之类的请求。
- Uvicorn:Uvicorn 是一个 ASGI(异步服务器网关接口)服务器,用于运行 FastAPI 应用程序。它可以高效地执行异步操作,非常适合管理多个并发请求,这在生产 AI 应用中很常见。
- Requests:一个方便的 HTTP 库,用于在 Python 中发出 Web 服务请求。它在一定程度上消除了 HTTP 交互的复杂性,简化了发送 GET、POST 等 HTTP 请求的过程。
下一步是创建一个名为 app.py
的 Python 脚本文件,其中包含一系列使用 Hugging Face API 和初始化 FastAPI 的指令。请注意,对于 HF_API_KEY
,您需要在注册 Hugging Face 网站后,将默认字符串替换为您自己的 Hugging Face API 令牌。
app.py
文件代码如下开始
1 2 3 4 5 6 7 8 9 10 11 |
import requests from fastapi import FastAPI from pydantic import BaseModel HF_API_URL = "https://api-inference.huggingface.co/models/facebook/opt-1.3b" HF_API_KEY = "your_huggingface_api_key" # 替换为您的实际 API 密钥 class PromptRequest(BaseModel): prompt: str app = FastAPI() |
HF_API_URL
变量指向 Hugging Face API 提供的示例语言模型,具体来说是 opt-1.3b
模型,这是由 Facebook AI Research (FAIR) 构建的大规模基于 Transformer 的模型。该模型可以通过 Hugging Face 的推理 API 访问,通过发送 HTTP 请求来促进交互。它可以通过 URL https://api-inference.huggingface.co/models/facebook/opt-1.3b
访问,该 URL 期望接收一个提示作为输入,并根据该提示生成文本响应,正如我们稍后将看到的。
让我们继续为我们的 app.py
脚本编写代码
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
@app.post("/generate") async def generate_text(request: PromptRequest): prompt = request.prompt headers = {"Authorization": f"Bearer {HF_API_KEY}"} payload = {"inputs": prompt} response = requests.post(HF_API_URL, json=payload, headers=headers) if response.status_code == 200: return {"response": response.json()} else: return {"error": response.text} if __name__ == "__main__": import uvicorn uvicorn.run(app, host="0.0.0.0", port=8000) |
现在是时候在本地运行 FastAPI 了。为此,我们需要在终端中执行以下命令,执行后,FastAPI 将在以下地址开始运行:http://127.0.0.1:8000
。
1 |
uvicorn app:app --reload |
现在我们准备在本地测试 API 了。请确保您正在从同一台本地计算机运行以下代码
1 2 3 4 5 6 7 8 |
import requests url = "http://127.0.0.1:8000/generate" data = {"prompt": "Once upon a time"} response = requests.post(url, json=data) # 打印响应 print(response.json()) |
此代码向 FastAPI 发送一个 POST 请求,其中包含文本为“Once upon a time”的提示。我们期望获得由指定的 Hugging Face 语言模型生成的响应,即根据提示生成的后续文本。
事实上,一旦一切设置正确,获得的输出应该如下所示
1 2 3 4 5 6 7 |
{ "response": [ { "generated_text": "Once upon a time, in a land far, far away..." } ] } |
总结
使用 Hugging Face 和 FastAPI 构建 LLM 应用是结合尖端 AI 模型和高效 Web 框架的强大方式。通过遵循本文概述的步骤,您可以为生成文本响应和部署 AI 驱动型 API 创建一个无缝的管道。无论您是进行原型设计还是扩展到生产环境,这种方法都为将自然语言生成集成到您的应用程序中提供了坚实的基础。
熟悉此设置后,下一步是使用 AWS、Heroku、GCP 或 Azure 等服务将 真实的语言模型应用程序部署到生产环境 中。
暂无评论。