翻译 API 参考
Shisa 翻译 API 通过单个 multipart/form-data 请求在源语言和目标语言之间翻译文本。本页记录了端点、其表单字段、非流式响应和流式格式。
端点
POST https://api.shisa.ai/translate/
在 Authorization 标头中使用标准的 bearer 令牌进行认证:
Authorization: Bearer YOUR_API_KEY
注意
翻译使用标准的 bearer 令牌进行认证,与所有 Shisa 服务相同。缺失或格式错误的 token 将返回 401 错误。完整的约定请参阅 认证。
请求体为 multipart/form-data — 下面的字段作为表单字段发送,而非 JSON。
请求字段
| Field | Type | Required | 说明 |
|---|---|---|---|
text | string | Required | 要翻译的文本;最多10,000个Unicode码点。 |
source_lang | string | Required | 源语言代码(例如 ja)。 |
target_lang | string | Required | 目标语言代码(例如 en)。 |
stream | string | Optional | "false"(默认)返回单个 JSON 响应,或 "true" 返回 Server-Sent Events。 |
keywords | repeated string | Optional | 要保留的术语表。每个术语重复一个表单字段;最多20项,每项最多100字节。 |
context | string | Optional | 先前会话或其他上下文;最多2,000个Unicode码点。 |
model | string | Optional | 翻译模型覆盖值。默认:shisa-ai/chotto。 |
非流式响应
当 stream=false(默认)时,API 返回一个 OpenAI 风格的 JSON 对象。翻译后的文本位于 choices[0].message.content:
{
"id": "trans_20f537a6-da14-4c98-8ee3-063319c45072",
"object": "translation.completion",
"created": 1768299459,
"model": "shisa-v2.1-unphi4-14b",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "お腹が空いた。"
},
"finish_reason": "stop"
}
],
"transcription": "I am hungry",
"source_lang": "en",
"target_lang": "ja",
"usage": {
"prompt_tokens": 47,
"completion_tokens": 8,
"total_tokens": 55
}
}
| Field | 说明 |
|---|---|
id | 翻译的唯一标识符,以 trans_ 为前缀。 |
object | 对象类型。对于非流式响应,此值为 translation.completion。 |
created | 翻译创建时间的 Unix 时间戳(秒)。 |
model | 后端响应所报告的模型 ID,可能与请求使用的 shisa-ai/chotto 别名不同。 |
choices | 翻译选项数组。每个条目包含一个 index、一个带有 role 和 content 的 message,以及一个 finish_reason。 |
choices[0].message.content | 翻译后的文本。 |
transcription | 被翻译的原始源文本。 |
source_lang | 翻译所使用的源语言代码。 |
target_lang | 翻译所使用的目标语言代码。 |
usage | token 计量:prompt_tokens、completion_tokens 和 total_tokens。 |
流式响应
设置 stream=true 以 Server-Sent Events 形式接收翻译,实现实时传递:
curl -X POST "https://api.shisa.ai/translate/" \
-H "Authorization: Bearer YOUR_API_KEY" \
-F "text=I am hungry" \
-F "source_lang=en" \
-F "target_lang=ja" \
-F "stream=true"
每个块都是一个data:事件,其对象为translation.completion.chunk,文本(可能为空字符串)位于choices[0].delta.content中。同一请求的所有块使用相同的id。第一个块还包含transcription、source_lang和target_lang。后端提供用量时,相应块还包含usage,随后是data: [DONE]终止符。流式块不包含finish_reason:
data: {"id": "trans_446d7397-...", "object": "translation.completion.chunk", "transcription": "I am hungry", "source_lang": "en", "target_lang": "ja", "choices": [{"delta": {"content": ""}, "index": 0}]}
data: {"id": "trans_446d7397-...", "object": "translation.completion.chunk", "choices": [{"delta": {"content": "お"}, "index": 0}]}
data: {"id": "trans_446d7397-...", "object": "translation.completion.chunk", "choices": [{"delta": {"content": "腹が"}, "index": 0}]}
data: {"id": "trans_446d7397-...", "object": "translation.completion.chunk", "choices": [{"delta": {"content": "空いた"}, "index": 0}]}
data: {"id": "trans_446d7397-...", "object": "translation.completion.chunk", "choices": [{"delta": {"content": "。"}, "index": 0}]}
data: {"id": "trans_446d7397-...", "object": "translation.completion.chunk", "choices": [{"delta": {"content": ""}, "index": 0}], "usage": {"prompt_tokens": 47, "completion_tokens": 8, "total_tokens": 55}}
data: [DONE]