本页面介绍如何使用 Vertex AI Studio 快速将文本从一种语言翻译成另一种语言。Vertex AI Studio 中的 Translation 提供了 Gemini 和两种专用翻译模型供您选择,包括 Cloud Translation 神经机器翻译 (NMT) 模型和经过微调的翻译 LLM。使用翻译 LLM 时,您可以通过提供示例翻译来定制回答,使其更符合您的风格、语气和行业领域。在翻译文本之前,模型会使用您的示例作为少样本上下文。
使用 Gemini 或 NMT 模型翻译文本时,您无法传递示例。但是,对于没有示例的直接翻译,您可以使用 Gemini 或任一专用翻译模型。
支持的语言
各个模型支持的语言可能有所不同。在请求翻译之前,请检查您使用的模型是否支持您的源语言和目标语言。
翻译 LLM
对于翻译 LLM,您可以在以下语言对之间进行翻译:
- 中文(简体)<-> 英语
- 法语 <-> 英语
- 德语 <-> 英语
- 意大利语 <-> 英语
- 日语 <-> 英语
- 韩语 <-> 英语
- 葡萄牙语 <-> 英语
- 西班牙语 <-> 英语
Gemini 和 NMT
如需了解 Gemini 和 NMT 模型支持的语言,请参阅以下文档:
翻译文本
您可以在 Google Cloud 控制台或 API 中,使用翻译 LLM、Gemini 或 NMT 模型来翻译文本。
控制台
在 Google Cloud 控制台的 Cloud Translation 部分中,进入 Vertex AI Studio 中的翻译页面。
在运行设置窗格的模型字段中,选择一个翻译模型。
如需更改模型设置(例如温度),请展开高级。
设置源语言和目标语言。
在输入字段中,输入要翻译的文本。
点击提交。
如需获取演示如何请求翻译的代码或 curl 命令,请点击
获取代码。
API
选择要用于翻译的模型。
翻译 LLM
REST
在使用任何请求数据之前,请先进行以下替换:
- PROJECT_NUMBER_OR_ID:您的 Google Cloud 项目的数字或字母数字 ID
- LOCATION:您要执行此操作的区域。例如
us-central1
。 - SOURCE_LANGUAGE:输入文本的语言代码。设置为自适应翻译中列出的某个语言代码。
- TARGET_LANGUAGE:要将输入文字翻译成的目标语言。设置为自适应翻译中列出的某个语言代码。
- SOURCE_TEXT:要翻译的源语言文本。
HTTP 方法和网址:
POST https://translation.googleapis.com/v3/projects/PROJECT_ID/locations/LOCATION:adaptiveMtTranslate
请求 JSON 正文:
{ "sourceLanguageCode": "SOURCE_LANGUAGE_CODE", "targetLanguageCode": "TARGET_LANGUAGE_CODE", "content": ["INPUT_TEXT"], "model": "projects/PROJECT_ID/locations/LOCATION/model/general/translation-llm", }
如需发送您的请求,请展开以下选项之一:
您应该收到类似以下内容的 JSON 响应:
{ "translations": [ { "translatedText": "TRANSLATED_TEXT" } ], "languageCode": "TARGET_LANGUAGE" }
Node.js
试用此示例之前,请按照 Cloud Translation 快速入门:使用客户端库中的 Node.js 设置说明进行操作。如需了解详情,请参阅 Cloud Translation Node.js API 参考文档。
如需向 Cloud Translation 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
const projectId = '<PROJECT_ID>'; const location = 'global'; const text = '<INPUT_TEXT>'; // Imports the Google Cloud Translation library const {TranslationServiceClient} = require('@google-cloud/translate'); // Instantiates a client const translationClient = new TranslationServiceClient(); async function translateText() { // Construct request const request = { parent: `projects/${projectId}/locations/${location}`, contents: [text], mimeType: 'text/plain', // mime types: text/plain, text/html sourceLanguageCode: '<SOURCE_LANGUAGE_CODE>', targetLanguageCode: '<TARGET_LANGUAGE_CODE>', model: `projects/${projectId}/locations/${location}/model/general/translation-llm` }; // Run request const [response] = await translationClient.translateText(request); for (const translation of response.translations) { console.log(`Translation: ${translation.translatedText}`); } } translateText();
Python
试用此示例之前,请按照 Cloud Translation 快速入门:使用客户端库中的 Python 设置说明进行操作。如需了解详情,请参阅 Cloud Translation Python API 参考文档。
如需向 Cloud Translation 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
# Imports the Google Cloud Translation library from google.cloud import translate # Initialize Translation client def translate_text( text: str = "YOUR_TEXT_TO_TRANSLATE", project_id: str = "YOUR_PROJECT_ID" ) -> translate.TranslationServiceClient: """Translating Text.""" client = translate.TranslationServiceClient() location = "global" parent = f"projects/{project_id}/locations/{location}" model = f"{parent}/models/general/translation-llm" # Translate text from English to French # Detail on supported types can be found here: # https://cloud.google.com/translate/docs/supported-formats response = client.translate_text( request={ "parent": parent, "contents": [text], "model": model "mime_type": "text/plain", # mime types: text/plain, text/html "source_language_code": "<SOURCE_LANGUAGE_CODE>", "target_language_code": "<TARGET_LANGUAGE_CODE>", } ) # Display the translation for each input text provided for translation in response.translations: print(f"Translated text: {translation.translated_text}") return response translate_text(<INPUT_TEXT>, <PROJECT_ID>)
Gemini
REST
在使用任何请求数据之前,请先进行以下替换:
- PROJECT_NUMBER_OR_ID:您的 Google Cloud 项目的数字或字母数字 ID。
- LOCATION:处理请求的区域。可用的选项包括:
点击即可展开可用的区域
us-central1
us-west4
northamerica-northeast1
us-east4
us-west1
asia-northeast3
asia-southeast1
asia-northeast1
- MODEL_ID:模型的 ID,例如
gemini-1.0-pro-002
- SOURCE_LANGUAGE_CODE:输入文本的语言。
- TARGET_LANGUAGE_CODE:要将输入文本翻译成的目标语言。
- SOURCE_TEXT:要翻译的文本。
- TEMPERATURE:温度 (temperature) 在生成回复期间用于采样,在应用
topP
和topK
时会生成回复。温度可以控制词元选择的随机性。 较低的温度有利于需要更少开放性或创造性回复的提示,而较高的温度可以带来更具多样性或创造性的结果。温度为0
表示始终选择概率最高的词元。在这种情况下,给定提示的回复大多是确定的,但可能仍然有少量变化。如果模型返回的回答过于笼统、过于简短,或者模型给出后备回答,请尝试提高温度。
- TOP_P:Top-P 可更改模型选择输出词元的方式。系统会按照概率从最高(见 top-K)到最低的顺序选择词元,直到所选词元的概率总和等于 top-P 的值。例如,如果词元 A、B 和 C 的概率分别为 0.3、0.2 和 0.1,并且 top-P 值为
0.5
,则模型将选择 A 或 B 作为下一个词元(通过温度确定),并会排除 C,将其作为候选词元。指定较低的值可获得随机程度较低的回答,指定较高的值可获得随机程度较高的回答。
- TOP_K:Top-K 可更改模型选择输出词元的方式。如果 top-K 设为
1
,表示所选词元是模型词汇表的所有词元中概率最高的词元(也称为贪心解码)。如果 top-K 设为3
,则表示系统将从 3 个概率最高的词元(通过温度确定)中选择下一个词元。在每个词元选择步骤中,系统都会对概率最高的 top-K 词元进行采样。然后,系统会根据 top-P 进一步过滤词元,并使用温度采样选择最终的词元。
指定较低的值可获得随机程度较低的回答,指定较高的值可获得随机程度较高的回答。
- MAX_OUTPUT_TOKENS:响应中可生成的词元数量上限。词元约为 4 个字符。100 个词元对应大约 60-80 个单词。
指定较低的值可获得较短的回答,指定较高的值可获得可能较长的回答。
- SAFETY_CATEGORY:要为其配置阈值的安全类别。可接受的值包括:
点击即可展开安全类别
HARM_CATEGORY_SEXUALLY_EXPLICIT
HARM_CATEGORY_HATE_SPEECH
HARM_CATEGORY_HARASSMENT
HARM_CATEGORY_DANGEROUS_CONTENT
- THRESHOLD:基于概率阻止属于指定安全类别的响应的阈值。可接受的值包括:
点击即可展开屏蔽阈值
BLOCK_NONE
BLOCK_ONLY_HIGH
BLOCK_MEDIUM_AND_ABOVE
(默认)BLOCK_LOW_AND_ABOVE
BLOCK_LOW_AND_ABOVE
屏蔽得最多,而BLOCK_ONLY_HIGH
屏蔽得最少。
HTTP 方法和网址:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/MODEL_ID:streamGenerateContent
请求 JSON 正文:
{ "contents": [ { "role": "user", "parts": [ { "text": "SOURCE_LANGUAGE_CODE: SOURCE_TEXT\nTARGET_LANGUAGE_CODE:" } ] } ], "generation_config": { "temperature": TEMPERATURE, "topP": TOP_P, "topK": TOP_K, "candidateCount": 1, "maxOutputTokens": MAX_OUTPUT_TOKENS } "safetySettings": [ { "category": "SAFETY_CATEGORY", "threshold": "THRESHOLD" } ] }
如需发送您的请求,请展开以下选项之一:
您应该会收到一个成功的状态代码 (2xx) 和一个空响应。
Node.js
试用此示例之前,请按照 Cloud Translation 快速入门:使用客户端库中的 Node.js 设置说明进行操作。如需了解详情,请参阅 Cloud Translation Node.js API 参考文档。
如需向 Cloud Translation 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
const {VertexAI} = require('@google-cloud/vertexai'); // Initialize Vertex with your Cloud project and location const vertex_ai = new VertexAI({project: '<PROJECT_ID>', location: '<LOCATION>'}); const model = 'gemini-1.0-pro'; // Instantiate the models const generativeModel = vertex_ai.preview.getGenerativeModel({ model: model, generationConfig: { 'candidate_count': 1, 'max_output_tokens': <MAX_OUTPUT_TOKENS>, 'temperature': <TEMPERATURE>, 'top_p': <TOP_P>, 'top_k': <TOP_K>, }, safetySettings: [ { 'category': 'HARM_CATEGORY_HATE_SPEECH', 'threshold': 'BLOCK_MEDIUM_AND_ABOVE' }, { 'category': 'HARM_CATEGORY_DANGEROUS_CONTENT', 'threshold': 'BLOCK_MEDIUM_AND_ABOVE' }, { 'category': 'HARM_CATEGORY_SEXUALLY_EXPLICIT', 'threshold': 'BLOCK_MEDIUM_AND_ABOVE' }, { 'category': 'HARM_CATEGORY_HARASSMENT', 'threshold': 'BLOCK_MEDIUM_AND_ABOVE' } ], }); async function generateContent() { const req = { contents: [ {role: 'user', parts: [{text: `<SOURCE_LANGUAGE_CODE>: <TEXT> <TARGET_LANGUAGE_CODE>:`}]} ], }; const streamingResp = await generativeModel.generateContentStream(req); for await (const item of streamingResp.stream) { process.stdout.write('stream chunk: ' + JSON.stringify(item) + '\n'); } process.stdout.write('aggregated response: ' + JSON.stringify(await streamingResp.response)); } generateContent();
Python
试用此示例之前,请按照 Cloud Translation 快速入门:使用客户端库中的 Python 设置说明进行操作。如需了解详情,请参阅 Cloud Translation Python API 参考文档。
如需向 Cloud Translation 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
import base64 import vertexai from vertexai.generative_models import GenerativeModel, Part, FinishReason import vertexai.preview.generative_models as generative_models def generate(): vertexai.init(project="<PROJECT_ID>", location="<LOCATION>") model = GenerativeModel("gemini-1.0-pro") responses = model.generate_content( ["""<SOURCE_LANGUAGE_CODE>: <TEXT> <TARGET_LANGUAGE_CODE>:"""], generation_config=generation_config, safety_settings=safety_settings, ) print(responses) generation_config = { "candidate_count": 1, "max_output_tokens": <MAX_OUTPUT_TOKENS>, "temperature": <TEMPERATURE>, "top_p": <TOP_P>, "top_k": <TOP_K>, } safety_settings = { generative_models.HarmCategory.HARM_CATEGORY_HATE_SPEECH: generative_models.HarmBlockThreshold.BLOCK_MEDIUM_AND_ABOVE, generative_models.HarmCategory.HARM_CATEGORY_DANGEROUS_CONTENT: generative_models.HarmBlockThreshold.BLOCK_MEDIUM_AND_ABOVE, generative_models.HarmCategory.HARM_CATEGORY_SEXUALLY_EXPLICIT: generative_models.HarmBlockThreshold.BLOCK_MEDIUM_AND_ABOVE, generative_models.HarmCategory.HARM_CATEGORY_HARASSMENT: generative_models.HarmBlockThreshold.BLOCK_MEDIUM_AND_ABOVE, } generate()
NMT
REST
在使用任何请求数据之前,请先进行以下替换:
- PROJECT_NUMBER_OR_ID:您的 Google Cloud 项目的数字或字母数字 ID。
- SOURCE_LANGUAGE:(可选)输入文字的语言代码。如需查看支持的语言代码,请参阅语言支持。
- TARGET_LANGUAGE:要将输入文字翻译成的目标语言。设置为某个受支持的语言代码。
- SOURCE_TEXT:要翻译的文本。
HTTP 方法和网址:
POST https://translation.googleapis.com/v3/projects/PROJECT_ID:translateText
请求 JSON 正文:
{ "sourceLanguageCode": "SOURCE_LANGUAGE", "targetLanguageCode": "TARGET_LANGUAGE", "contents": ["SOURCE_TEXT1", "SOURCE_TEXT2"] }
如需发送您的请求,请展开以下选项之一:
您应该收到类似以下内容的 JSON 响应:
{ "translations": [ { "translatedText": "TRANSLATED_TEXT1" }, { "translatedText": "TRANSLATED_TEXT2" } ] }
Node.js
试用此示例之前,请按照 Cloud Translation 快速入门:使用客户端库中的 Node.js 设置说明进行操作。如需了解详情,请参阅 Cloud Translation Node.js API 参考文档。
如需向 Cloud Translation 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
Python
试用此示例之前,请按照 Cloud Translation 快速入门:使用客户端库中的 Python 设置说明进行操作。如需了解详情,请参阅 Cloud Translation Python API 参考文档。
如需向 Cloud Translation 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
自定义翻译
通过提供您自己的示例翻译来自定义翻译 LLM 的回答。自定义翻译仅适用于翻译 LLM。
数据要求
示例翻译必须编写为句对形式,并保存为 TMX 或 TSV 文件。每个句对都包括一个源语言句段及其对应的译文句段。如需了解详情,请参阅 Cloud Translation 文档中的准备示例翻译。
为了获得最准确的结果,请提供各种各样场景的具体示例。您必须至少提供五个句对,但不得超过 10,000 个句对。此外,一个句对最多可以包含 512 个字符。
自定义翻译
控制台
在 Google Cloud 控制台的 Cloud Translation 部分中,进入 Vertex AI Studio 中的翻译页面。
在翻译文本卡片中,点击翻译。
在参数窗格中,配置翻译设置。
- 在模型字段中,选择翻译 LLM。
- 如需更改温度,请展开高级。
点击添加示例。
- 选择本地文件或 Cloud Storage 中的文件。Vertex AI Studio 会根据文件确定源语言和目标语言。
- 选择模型在生成回答之前要使用的示例数量。
您选择的示例数量会计入每个请求 3,000 个输入字符数的限制。
在输入字段中,输入要翻译的文本。
点击提交。
模型会尝试识别示例中的模式,并在生成回答时应用这些模式。每个请求的输出字符数限制为 3,000。超出此限制的所有文本都会被丢弃。
如需获取演示如何请求翻译的代码或 curl 命令,请点击
获取代码。
REST
创建数据集
创建用于导入示例翻译的数据集。源语言和目标语言必须与您要在翻译中使用的语言相匹配。
在使用任何请求数据之前,请先进行以下替换:
- PROJECT_NUMBER_OR_ID:您的 Google Cloud 项目的数字或字母数字 ID
- LOCATION:源数据集所在的区域,例如
us-central1
。 - DATASET_ID:数据集的唯一标识符。
- DISPLAY_NAME:数据集的描述性名称。
- SOURCE_LANGUAGE:输入文本的语言代码。如需了解支持的语言代码,请参阅支持的语言。
- TARGET_LANGUAGE:要将输入文字翻译成的目标语言。如需了解支持的语言代码,请参阅支持的语言。
HTTP 方法和网址:
POST https://translation.googleapis.com/v3/projects/PROJECT_ID/locations/LOCATION/adaptiveMtDatasets
请求 JSON 正文:
{ "name": "projects/PROJECT_ID/locations/LOCATION/adaptiveMtDatasets/DATASET_ID, "display_name": "DISPLAY_NAME", "source_language_code": "SOURCE_LANGUAGE", "target_language_code": "TARGET_LANGUAGE" }
如需发送您的请求,请展开以下选项之一:
您应该收到类似以下内容的 JSON 响应:
{ "name": "projects/PROJECT_ID/locations/LOCATION/adaptiveMtDatasets/DATASET_ID", "displayName": "DISPLAY_NAME", "sourceLanguageCode": "SOURCE_LANGUAGE", "targetLanguageCode": "TARGET_LANGUAGE" }
导入数据
使用 TSV 或 TMX 文件中的示例翻译来填充您的数据集。
在使用任何请求数据之前,请先进行以下替换:
- PROJECT_NUMBER_OR_ID:您的 Google Cloud 项目的数字或字母数字 ID
- LOCATION:数据集所在的区域,例如
us-central1
。 - DATASET_ID:要在其中导入数据的数据集的唯一标识符。
- GCS_FILE_PATH:Cloud Storage 中源数据文件的路径,例如
gs://example/data.tsv
。
HTTP 方法和网址:
POST https://translation.googleapis.com/v3/projects/PROJECT_ID/locations/LOCATION/adaptiveMtDatasets/DATASET_ID:importAdaptiveMtFile
请求 JSON 正文:
{ "gcs_input_source": { "input_uri": "GCS_FILE_PATH" } }
如需发送您的请求,请展开以下选项之一:
您应该收到类似以下内容的 JSON 响应:
{ "adaptiveMtFile": { "name": "DATASET_NAME", "displayName": "FILE_NAME", "entryCount": TOTAL_ENTRIES } }
翻译文本
提供要翻译的文本以及要用于翻译的数据集。
在使用任何请求数据之前,请先进行以下替换:
- PROJECT_NUMBER_OR_ID:您的 Google Cloud 项目的数字或字母数字 ID
- LOCATION:源数据集所在的区域,例如
us-central1
。 - DATASET_NAME:Cloud Translation 用于自定义翻译的数据集的名称,格式为
projects/PROJECT_ID/locations/LOCATION/adaptiveMtDatasets/DATASET_ID
。您可以通过列出项目中的所有数据集来获取数据集名称。 - SOURCE_TEXT:要翻译的文本。
HTTP 方法和网址:
POST https://translation.googleapis.com/v3/projects/PROJECT_ID/locations/LOCATION:adaptiveMtTranslate
请求 JSON 正文:
{ "dataset": "DATASET_NAME", "content": ["SOURCE_TEXT"] }
如需发送您的请求,请展开以下选项之一:
您应该收到类似以下内容的 JSON 响应:
{ "translations": [ { "translatedText": "TRANSLATED_TEXT" } ], "languageCode": "TARGET_LANGUAGE" }
Node.js
试用此示例之前,请按照 Cloud Translation 快速入门:使用客户端库中的 Node.js 设置说明进行操作。如需了解详情,请参阅 Cloud Translation Node.js API 参考文档。
如需向 Cloud Translation 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
const projectId = '<PROJECT_ID>'; const location = 'us-central1'; const text = '<INPUT_TEXT>'; async function createAdaptiveMtDataset() { // Construct request const request = { parent: `projects/${projectId}/locations/${location}`, adaptiveMtDataset: { name: `projects/${projectId}/locations/${location}/adaptiveMtDatasets/${ adaptiveMtDatasetName}`, displayName: 'DATASET_DISPLAY_NAME', sourceLanguageCode: <SOURCE_LANGUAGE_CODE>, targetLanguageCode: <TARGET_LANGUAGE_CODE>, } }; // Run request const [response] = await translationClient.createAdaptiveMtDataset(request); console.log('Created') console.log(response) } async function importAdaptiveMtFile() { const request = { parent: `projects/${projectId}/locations/${location}/adaptiveMtDatasets/${ adaptiveMtDatasetName}`, gcsInputSource: {inputUri: gcs_file_uri} } const [response] = await translationClient.importAdaptiveMtFile(request) console.log('Importing file') console.log(response) } async function translate() { const request = { parent: `projects/${projectId}/locations/${location}`, dataset: `projects/${projectId}/locations/${location}/adaptiveMtDatasets/${ adaptiveMtDatasetName}`, content: [text] } const [response] = await translationClient.adaptiveMtTranslate(request) console.log('Translating') console.log(response) }
Python
试用此示例之前,请按照 Cloud Translation 快速入门:使用客户端库中的 Python 设置说明进行操作。如需了解详情,请参阅 Cloud Translation Python API 参考文档。
如需向 Cloud Translation 进行身份验证,请设置应用默认凭据。如需了解详情,请参阅为本地开发环境设置身份验证。
# Imports the Google Cloud Translation library from google.cloud import translate def create_adaptive_mt_dataset(): # Create a client client = translate.TranslationServiceClient() # Initialize request argument(s) adaptive_mt_dataset = translate.AdaptiveMtDataset() adaptive_mt_dataset.name = "projects/<PROJECT_ID>/locations/us-central1/adaptiveMtDatasets/DATASET_ID" adaptive_mt_dataset.display_name = "DATASET_DISPLAY_NAME" adaptive_mt_dataset.source_language_code = "<SOURCE_LANGUAGE_CODE>" adaptive_mt_dataset.target_language_code = "<TARGET_LANGUAGE_CODE>" request = translate.CreateAdaptiveMtDatasetRequest( parent="projects/<PROJECT_ID>/locations/us-central1", adaptive_mt_dataset=adaptive_mt_dataset, ) # Make the request response = client.create_adaptive_mt_dataset(request=request) # Handle the response print(response) def import_adaptive_mt_file(): # Create a client client = translate.TranslationServiceClient() gcs_input_source = translate.GcsInputSource() gcs_input_source.input_uri = "gs://SOURCE_LOCATION/FILE.tsv" # Initialize the request request = translate.ImportAdaptiveMtFileRequest( parent="projects/<PROJECT_ID>/locations/us-central1/adaptiveMtDatasets/DATASET_ID", gcs_input_source=gcs_input_source ) # Make the request response = client.import_adaptive_mt_file(request) # Handle the response print(response) def adaptive_mt_translate(): # Create a client client = translate.TranslationServiceClient() # Initialize the request request = translate.AdaptiveMtTranslateRequest( parent="projects/<PROJECT_ID>/locations/us-central1", dataset="projects/<PROJECT_ID>/locations/us-central1/adaptiveMtDatasets/DATASET_ID", content=["<INPUT_TEXT>"], ) # Make the request response = client.adaptive_mt_translate(request) # Handle the response print(response)