SDK 与多语言接入
使用 Python、Java、JavaScript、Go 或 cURL 接入 Bambuk 四类模型能力。
选择接入方式
所有语言共用同一套 HTTP API 和开发者主密钥。服务端设置 BAMBUK_BASE_URL(包含 /api/v1)和 BAMBUK_APP_KEY,不要把密钥放进浏览器、移动端或代码仓库。
| 方式 | 适合场景 | 依赖 |
|---|---|---|
| Python SDK | 后端脚本、数据处理和快速验证 | requests |
| Java SDK 示例 | Spring Boot、企业后端 | JDK 11+ |
| JavaScript / Node.js | Node 服务、任务队列 | Node.js 18+ |
| Go SDK 示例 | 高并发服务和微服务 | Go 1.20+ |
| cURL | 命令行调试、CI/CD | cURL |
SDK 下载
下载列表来自当前部署的文档服务。SDK 包只包含请求封装,不包含平台密钥。
正在加载 SDK…
统一调用约定
| 能力 | 路径 | 请求格式 | 关键字段 |
|---|---|---|---|
| 多语言翻译 | /ai/bambuk/nmt | JSON | text、source_lang、target_lang |
| 语音识别 | /ai/bambuk/asr | multipart | file、lang |
| 图文识别 | /ai/bambuk/ocr | multipart | image、lang |
| 语音合成 | /ai/bambuk/tts | JSON | target_text、language、voice |
所有请求使用 AppKey。响应统一从 data.result 读取;TTS 返回音频二进制。
Python
python -m pip install requestsimport os
import requests
base = os.environ["BAMBUK_BASE_URL"].rstrip("/")
headers = {"AppKey": os.environ["BAMBUK_APP_KEY"]}
response = requests.post(
f"{base}/ai/bambuk/nmt",
headers={**headers, "Content-Type": "application/json"},
json={"text": ["你好"], "source_lang": "zh", "target_lang": "ug"},
timeout=300,
)
response.raise_for_status()
print(response.json()["data"]["result"]["translations"])上传 ASR/OCR 使用 files={"file": (...)} 或 files={"image": (...)}。TTS 的响应内容可直接写入 .wav 文件。
Java
以下示例使用 JDK 11 自带的 HttpClient,无需额外 SDK 依赖:
import java.net.URI;
import java.net.http.*;
var request = HttpRequest.newBuilder()
.uri(URI.create(System.getenv("BAMBUK_BASE_URL") + "/ai/bambuk/nmt"))
.header("Content-Type", "application/json")
.header("AppKey", System.getenv("BAMBUK_APP_KEY"))
.POST(HttpRequest.BodyPublishers.ofString(
"{\"text\":[\"你好\"],\"source_lang\":\"zh\",\"target_lang\":\"bo\"}"))
.build();
var response = HttpClient.newHttpClient().send(
request, HttpResponse.BodyHandlers.ofString());
if (response.statusCode() / 100 != 2) throw new RuntimeException(response.body());
System.out.println(response.body());JavaScript / Node.js
Node.js 18+ 可直接使用内置 fetch 或引用 Bambuk Node.js SDK:
const base = process.env.BAMBUK_BASE_URL.replace(/\/$/, '');
const response = await fetch(`${base}/ai/bambuk/nmt`, {
method: 'POST',
headers: {
'Content-Type': 'application/json',
'AppKey': process.env.BAMBUK_APP_KEY,
},
body: JSON.stringify({ text: ['你好'], source_lang: 'zh', target_lang: 'mn' }),
signal: AbortSignal.timeout(300_000),
});
if (!response.ok) throw new Error(`Bambuk HTTP ${response.status}`);
console.log((await response.json()).data.result.translations);Go
使用 Go 官方客户端或标准库直接调用:
package main
import (
"bytes"
"fmt"
"io"
"net/http"
"os"
)
func main() {
body := bytes.NewBufferString(`{"text":["你好"],"source_lang":"zh","target_lang":"ug"}`)
req, _ := http.NewRequest("POST", os.Getenv("BAMBUK_BASE_URL")+"/ai/bambuk/nmt", body)
req.Header.Set("Content-Type", "application/json")
req.Header.Set("AppKey", os.Getenv("BAMBUK_APP_KEY"))
res, err := http.DefaultClient.Do(req)
if err != nil {
panic(err)
}
defer res.Body.Close()
if res.StatusCode/100 != 2 {
panic(res.Status)
}
output, _ := io.ReadAll(res.Body)
fmt.Println(string(output))
}cURL
curl --fail-with-body --max-time 300 "$BAMBUK_BASE_URL/ai/bambuk/nmt" \
-H "AppKey: $BAMBUK_APP_KEY" \
-H 'Content-Type: application/json' \
-d '{"text":["你好"],"source_lang":"zh","target_lang":"kk"}'ASR 和 OCR 的文件上传示例:
curl --fail-with-body "$BAMBUK_BASE_URL/ai/bambuk/asr" \
-H "AppKey: $BAMBUK_APP_KEY" \
-F 'file=@sample.wav' \
-F 'lang=ug'
curl --fail-with-body "$BAMBUK_BASE_URL/ai/bambuk/ocr" \
-H "AppKey: $BAMBUK_APP_KEY" \
-F 'image=@sample.png' \
-F 'lang=chi_sim'错误与额度
收到 401 检查主密钥,403 检查套餐和接口授权,429 降低并发。调用会按所购套餐的规则扣减次数、token 或时长;超时后先查看调用记录,不要盲目重复提交。详见鉴权、计费与配额和错误处理。