USML 开放平台文档
USML (Unified Service Machine Learning) 提供了一套高性能的机器学习模型托管与推理服务。 本文档将指导您如何在私有环境中部署服务节点,并通过 RESTful API 进行业务集成。
当前环境: 您正在访问
https://usml.hetao.us 的官方文档。所有示例代码均基于此域名生成。
服务端部署配置
我们推荐使用 Docker Compose 进行一键编排。以下配置包含了核心服务、Redis 缓存以及 Prometheus 监控探针。
version: '3.8'
services:
usml-core:
image: usml/core-server:v2.4.0
container_name: usml_api
restart: always
ports:
- "8080:8080"
environment:
- NODE_ENV=production
- DB_HOST=postgres
- REDIS_URL=redis://redis:6379
depends_on:
- postgres
- redis
networks:
- usml-net
redis:
image: redis:6.2-alpine
command: redis-server --appendonly yes
volumes:
- redis_data:/data
networks:
- usml-net
networks:
usml-net:
driver: bridge
volumes:
redis_data:
Nginx 网关配置
生产环境请务必配置 SSL 证书,并开启 Gzip 压缩以提高传输效率。
server {
listen 443 ssl http2;
server_name usml.hetao.us;
# SSL 证书配置
ssl_certificate /etc/nginx/certs/usml.crt;
ssl_certificate_key /etc/nginx/certs/usml.key;
ssl_protocols TLSv1.2 TLSv1.3;
# 开启 Gzip
gzip on;
gzip_types application/json application/javascript text/css;
# API 反向代理
location /api/ {
proxy_pass http://127.0.0.1:8080;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# 增加超时时间以适应长连接推理任务
proxy_read_timeout 300s;
proxy_connect_timeout 75s;
}
}
身份认证 (Authentication)
平台采用标准的 OAuth 2.0 风格鉴权。所有受保护的接口都需要在 Header 中携带 Authorization: Bearer <token>。
POST /api/v1/auth/token
使用 AppID 和 Secret 换取访问令牌。
curl -X POST https://usml.hetao.us/api/v1/auth/token \
-H "Content-Type: application/json" \
-d '{
"app_id": "usml_8829102",
"secret": "sk_live_99283..."
}'
import requests
url = "https://usml.hetao.us/api/v1/auth/token"
payload = {
"app_id": "usml_8829102",
"secret": "sk_live_99283..."
}
response = requests.post(url, json=payload)
print(response.json())
const axios = require('axios');
async function getToken() {
const { data } = await axios.post('https://usml.hetao.us/api/v1/auth/token', {
app_id: 'usml_8829102',
secret: 'sk_live_99283...'
});
console.log(data);
}
响应参数
access_tokenstring |
用于接口调用的凭证,请妥善保管。 |
expires_inint |
Token 有效期(秒),默认 7200。 |
文件服务 (Object Storage)
POST /api/v1/files/upload
支持多文件上传,单文件最大限制 100MB。
import requests
url = "https://usml.hetao.us/api/v1/files/upload"
headers = {"Authorization": "Bearer eyJhbGciOi..."}
files = [
('files', ('data.csv', open('data.csv', 'rb'), 'text/csv')),
('files', ('model.onnx', open('model.onnx', 'rb'), 'application/octet-stream'))
]
resp = requests.post(url, headers=headers, files=files)
Webhooks 事件回调
当异步任务完成时,服务器会向您配置的 URL 发送 POST 请求。
Payload 数据结构 (TypeScript)
interface WebhookEvent {
event_id: string; // 事件唯一ID
event_type: "task.completed" | "task.failed";
timestamp: number; // 毫秒级时间戳
data: {
task_id: string;
result_url?: string; // 成功时返回结果下载链接
error_code?: number; // 失败时返回错误码
metrics: { // 性能指标
inference_time: number;
memory_usage: number;
}
}
}