亚马逊AWS官方博客
在 Amazon SageMaker 上部署通用 LLM API 接口服务
![]() |
1. 概述
很多客户在使用 Amazon SageMaker 做推理端点的时候经常会遇到前端应用兼容 OpenAI 的 API,却无法兼容 SageMaker API 调用的情况。如果你想让这些应用可以快速地使用部署到 Amazon Sagemaker 推理端点的模型服务,而又不希望修改其应用代码,那么可以使用此项目所实现的与 OpenAI API 兼容的服务,使用 Amazon SageMaker 作为后端来生成文本响应。服务支持流式响应,可以实时将生成内容返回给客户端。
2. 整体架构
OpenAI Compatible API with Amazon SageMaker 的架构如下图所示:
![]() |
3. 方案部署
3.1 前提条件
Amazon SageMaker 端点
部署一个 Amazon SageMaker 推理端点,具体步骤可以参考 Jupyter Notebook。
AWS 服务权限:
- Amazon ECS 部署权限
- Amazon SageMaker 创建推理端点,调用推理端点权限
- Amazon EC2 ALB 创建权限
- Amazon ECR 推送权限
3.2 安装与部署
下载项目代码 https://github.com/leoou331/openai-compatible-api-streaming.git
环境变量配置
创建一个.env 文件,设置以下环境变量:
构建和推送 Docker 镜像
先加载环境变量,然后构建 Docker 镜像并推送到 ECR
- 更新 Dockerfile 中的环境变量,特别是 SAGEMAKER_ENDPOINT_NAME 将被设置为环境变量 MODEL 的值
- 构建 Docker 镜像
- 推送镜像到 Amazon ECR
部署服务
Aamazon ECS 部署涉及多个步骤,包括创建集群、任务定义、服务和负载均衡器设置。以下是完整的部署流程:
- 创建 Amazon ECS 集群
- 创建 ALB (Application Load Balancer),记下返回的 ALB ARN 和 DNS 名称
- 创建目标组,记下返回的目标组 ARN
- 创建监听器,TARGET-GROUP-ARN 为上一步记录的目标组 ARN
- 创建任务执行 IAM 角色,这个角色允许 ECS 任务拉取 ECR 镜像、访问 CloudWatch 日志等。如果还没有此角色,请创建:
- 创建任务定义:
创建一个名为`task-definition.json`的文件:
注册任务定义:
- 创建 ECS 服务
创建一个名为 service-definition.json 的文件:
- 获取 ALB DNS 名称
获取 ALB 的 DNS 名称,用于访问服务:
使用获得的 DNS 名称更新`.env`文件中的`OPENAI_BASE_URL`:
- 监控服务状态
这个命令会显示一个简洁的表格,包含服务名称、状态、期望任务数、运行中任务数和使用的任务定义版本,如下图所示:
![]() |
4. 测试与使用
本方案包含一个测试脚本 OpenAI_Client_Test.debug.py,可用于验证 API 的功能。
首先加载环境变量:
运行测试脚本:
脚本会使用环境变量中设置的`OPENAI_BASE_URL`、`OPENAI_API_KEY`和`MODEL`,发送一个简单的问候消息”Hello!”,并以流式方式接收和显示响应。输出如下所示:
5. 总结
本解决方案提供了兼容 OpenAI 的代理功能,帮助客户轻松将 OpenAI 应用轻松接入到 Amazon SageMaker 推理端点,主要具有如下特点:
- 与 OpenAI API 兼容,易于与现有工具集成
- 支持流式响应(Server-Sent Events)
- API 密钥认证
- 使用 Amazon SageMaker 作为后端推理服务
- 支持多种部署方式(Docker, ECS, EKS)
*前述特定亚马逊云科技生成式人工智能相关的服务仅在亚马逊云科技海外区域可用,亚马逊云科技中国仅为帮助您了解行业前沿技术和发展海外业务选择推介该服务。