このページでは、Vertex AI Studio を使用してテキストをある言語から別の言語に迅速に翻訳する方法について説明します。Vertex AI Studio の翻訳では、Gemini と 2 つの特殊な翻訳モデル(Cloud Translation のニューラル機械翻訳(NMT)モデルと、翻訳用にファインチューニングされた LLM(翻訳 LLM とも呼ばれます))のどちらかを選択できます。
翻訳 LLM を使用すると、スタイル、トーン、業界ドメインに近い翻訳例を指定することで、レスポンスを調整できます。モデルは、テキストを翻訳する前に、少量のサンプルをコンテキストとして使用します。Vertex AI Studio では、このカスタマイズは翻訳 LLM でのみ機能します。たとえば、Gemini または NMT モデルを使用しているときにサンプルを渡すことはできません。
サポートされている言語
各モデルがサポートする言語は異なります。翻訳をリクエストする前に、使用しているモデルが目的のソース言語とターゲット言語をサポートしていることを確認してください。
翻訳 LLM
翻訳 LLM では、次の言語ペア間で翻訳できます。
- アラビア語 <-> 英語
- 中国語(簡体)<-> 英語
- フランス語 <-> 英語
- ドイツ語 <-> 英語
- ヒンディー語 <-> 英語
- イタリア語 <-> 英語
- 日本語 <-> 英語
- 韓国語 <-> 英語
- ポルトガル語 <-> 英語
- ロシア語 <-> 英語
- スペイン語 <-> 英語
Gemini と NMT
Gemini と NMT モデルでサポートされている言語については、次のドキュメントをご覧ください。
テキストを翻訳する
Google Cloud コンソールまたは API を使用して、翻訳 LLM、Gemini、または NMT モデルを使用してテキストを翻訳します。
コンソール
Google Cloud コンソールの [Cloud Translation] セクションで、[Vertex AI Studio] の [Translate text] ページに移動します。
[実行設定] ペインの [モデル] フィールドで、翻訳モデルを選択します。
モデルの設定(温度など)を変更するには、[詳細] を開きます。
原文の言語と訳文の言語を設定します。
入力フィールドに、翻訳するテキストを入力します。
[送信] をクリックします。
翻訳のリクエスト方法を示すコードまたは curl コマンドを取得するには、[
コードを取得] をクリックします。
API
翻訳に使用するモデルを選択します。
翻訳 LLM
Vertex AI API と翻訳 LLM を使用してテキストを翻訳します。
REST
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_NUMBER_OR_ID: Google Cloud プロジェクトの数字または英数字の ID
- LOCATION: このオペレーションを実行するロケーション。例:
us-central1
- SOURCE_LANGUAGE_CODE: 入力テキストの言語コード。適応型翻訳に記載されているいずれかの言語コードを設定します。
- TARGET_LANGUAGE_CODE: 入力テキストを翻訳する言語。適応型翻訳に記載されているいずれかの言語コードを設定します。
- SOURCE_TEXT: 翻訳対象のソース言語のテキスト。
- MIME_TYPE(省略可): ソーステキストの形式(
text/html
、text/plain
など)。デフォルトでは、MIME タイプはtext/plain
に設定されます。
HTTP メソッドと URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/cloud-translate-text:predict
リクエストの本文(JSON):
"instances": [{ "source_language_code": "SOURCE_LANGUAGE_CODE", "target_language_code": "TARGET_LANGUAGE_CODE", "contents": ["SOURCE_TEXT"], "mimeType": "MIME_TYPE", "model": "projects/PROJECT_ID/locations/LOCATION/models/general/translation-llm" }]
リクエストを送信するには、次のいずれかのオプションを開きます。
次のような JSON レスポンスが返されます。
{ "translations": [ { "translatedText": "TRANSLATED_TEXT" } ], "languageCode": "TARGET_LANGUAGE" }
Node.js
このサンプルを試す前に、Cloud Translation クイックスタート: クライアント ライブラリの使用にある Node.js の設定手順を完了してください。詳細については、Cloud Translation Node.js API リファレンス ドキュメントをご覧ください。
Cloud Translation に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
async function translate() { const request = { instances: [{ source_language_code: SOURCE_LANGUAGE_CODE, target_language_code: TARGET_LANGUAGE_CODE, contents: [SOURCE_TEXT], model: "projects/PROJECT_ID/locations/LOCATION/models/general/translation-llm" }] }; const {google} = require('googleapis'); const aiplatform = google.cloud('aiplatform'); const endpoint = aiplatform.predictionEndpoint('projects/PROJECT_ID/locations/LOCATION/publishers/google/models/cloud-translate-text'); const [response] = await endpoint.predict(request) console.log('Translating') console.log(response) }
Python
このサンプルを試す前に、Cloud Translation クイックスタート: クライアント ライブラリの使用にある Python の設定手順を完了してください。 詳細については、Cloud Translation Python API リファレンス ドキュメントをご覧ください。
Cloud Translation に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
from google.cloud import aiplatform def translate(): # Create a client endpoint = aiplatform.Endpoint('projects/PROJECT_ID/locations/LOCATION/publishers/google/models/cloud-translate-text') # Initialize the request instances=[{ "source_language_code": 'SOURCE_LANGUAGE_CODE', "target_language_code": 'TARGET_LANGUAGE_CODE', "contents": ["SOURCE_TEXT"], "model": "projects/PROJECT_ID/locations/LOCATION/models/general/translation-llm" }] # Make the request response = endpoint.predict(instances=instances) # Handle the response print(response)
Gemini
Vertex AI API と Gemini を使用してテキストを翻訳します。
オープン プロンプトとプロンプト エンジニアリングにより、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: 温度は、
topP
とtopK
が適用された場合に発生するレスポンス生成時のサンプリングに使用されます。温度は、トークン選択のランダム性の度合いを制御します。温度が低いほど、確定的で自由度や創造性を抑えたレスポンスが求められるプロンプトに適しています。一方、温度が高いと、より多様で創造的な結果を導くことができます。温度が0
の場合、確率が最も高いトークンが常に選択されます。この場合、特定のプロンプトに対するレスポンスはほとんど確定的ですが、わずかに変動する可能性は残ります。モデルが返すレスポンスが一般的すぎる、短すぎる、あるいはフォールバック(代替)レスポンスが返ってくる場合は、温度を高く設定してみてください。
- TOP_P: Top-P は、モデルが出力用にトークンを選択する方法を変更します。トークンは、確率の合計が Top-P 値に等しくなるまで、確率の高いもの(Top-K を参照)から低いものへと選択されます。たとえば、トークン 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: レスポンスで生成できるトークンの最大数。1 トークンは約 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 メソッドと URL:
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
Cloud Translation API と NMT モデルを使用してテキストを翻訳します。
REST
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_NUMBER_OR_ID: Google Cloud プロジェクトの数字または英数字の ID。
- SOURCE_LANGUAGE: (省略可)入力ドキュメントの言語コード。サポートされている言語コードについては、言語のサポートをご覧ください。
- TARGET_LANGUAGE: 入力テキストを翻訳する言語。サポートされている言語コードのいずれかに設定します。
- SOURCE_TEXT: 翻訳するテキスト。
HTTP メソッドと URL:
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 でのみ機能します。
カスタマイズされた翻訳は、Vertex AI Studio コンソールまたは API でリクエストできますが、1 つ違いがあります。コンソールは、TMX ファイルまたは TSV ファイルでサンプルを指定した場合にのみ、カスタム翻訳をサポートします。API は、翻訳リクエストの一部としてサンプル(最大 5 つの文ペア)をインラインで指定した場合にのみ、カスタム翻訳をサポートします。
データ要件
Google Cloud コンソールのファイルで翻訳サンプルを指定する場合は、TMX ファイルまたは TSV ファイルにセグメントのペアとしてサンプルを記述する必要があります。各ペアには、ソース言語のセグメントとその訳文が含まれます。詳細については、Cloud Translation ドキュメントの翻訳例を準備するをご覧ください。
最も正確な結果を得るには、さまざまなシナリオの具体的な例を含めてください。5 つ以上の文のペアを含める必要があります。ペアは 10,000 個以下にする必要があります。また、1 つのセグメントペアの最大文字数は合計で 512 文字です。
コンソール
Google Cloud コンソールの [Cloud Translation] セクションで、[Vertex AI Studio] の [Translate text] ページに移動します。
[実行設定] ペインで、翻訳の設定を行います。
- [モデル] フィールドで [Translation LLM] を選択します。
- 温度を変更するには、[詳細] を開きます。
[例を追加] をクリックします。
- ローカル ファイルまたは Cloud Storage のファイルを選択します。Vertex AI Studio は、ファイルからソース言語とターゲット言語を決定します。
- レスポンスの生成前に、モデルで使用するサンプル数を選択します。
選択したサンプルの数は、リクエストあたりの入力文字数の上限(3,000)にカウントされます。
入力フィールドに、翻訳するテキストを入力します。
[送信] をクリックします。
Cloud Translation は、入力に最も類似した参照文を指定の数だけ自動的に選択します。翻訳モデルはサンプルからパターンを識別し、レスポンスを生成する際にそれらのパターンを適用します。
リクエストごとの出力文字数は 3,000 文字です。この上限を超えるテキストは破棄されます。
翻訳のリクエスト方法を示すコードまたは curl コマンドを取得するには、[
コードを取得] をクリックします。
API
カスタム翻訳をリクエストするには、翻訳リクエストに最大 5 つの参照文のペアを含めます。翻訳モデルは、これらすべてを使用してサンプルからパターンを識別し、レスポンスを生成する際にそれらのパターンを適用します。
REST
リクエストのデータを使用する前に、次のように置き換えます。
- PROJECT_NUMBER_OR_ID: Google Cloud プロジェクトの数字または英数字の ID
- LOCATION: このオペレーションを実行するロケーション。例:
us-central1
- REFERENCE_SOURCE: 参照文のペアの一部である原文言語の文。
- REFERENCE_TARGET: 参照文のペアの一部である訳文言語の文。
- SOURCE_LANGUAGE: 入力テキストの言語コード。
- TARGET_LANGUAGE: 入力テキストを翻訳する言語。
- SOURCE_TEXT: 翻訳対象のソース言語のテキスト。
- MIME_TYPE(省略可): ソーステキストの形式(
text/html
、text/plain
など)。デフォルトでは、MIME タイプはtext/plain
に設定されます。
HTTP メソッドと URL:
POST https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/translate-llm:predict
リクエストの本文(JSON):
"instances": [{ "reference_sentence_config": { "reference_sentence_pair_lists": [ { "reference_sentence_pairs": [{ "source_sentence": "REFERENCE_SOURCE_1_1", "target_sentence": "REFERENCE_TARGET_1_1" }, { "source_sentence": "REFERENCE_SOURCE_1_2", "target_sentence": "REFERENCE_SOURCE_1_2" }] } ], "source_language_code": "SOURCE_LANGUAGE_CODE", "target_language_code": "TARGET_LANGUAGE_CODE" }, "contents": ["SOURCE_TEXT"], "mimeType": "MIME_TYPE" }]
リクエストを送信するには、次のいずれかのオプションを開きます。
次のような JSON レスポンスが返されます。
{ "translations": [ { "translatedText": "TRANSLATED_TEXT" } ], "languageCode": "TARGET_LANGUAGE" }
Node.js
このサンプルを試す前に、Cloud Translation クイックスタート: クライアント ライブラリの使用にある Node.js の設定手順を完了してください。詳細については、Cloud Translation Node.js API リファレンス ドキュメントをご覧ください。
Cloud Translation に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
async function translate() { const request = { instances: [{ "reference_sentence_config": { "reference_sentence_pair_lists": [{ "reference_sentence_pairs": [{ "source_sentence": 'SAMPLE_REFERENCE_SOURCE_1', "target_sentence": 'SAMPLE_REFERENCE_TARGET_1' }, "reference_sentence_pairs": { "source_sentence": 'SAMPLE_REFERENCE_SOURCE_2', "target_sentence": 'SAMPLE_REFERENCE_TARGET_2' }] }], "source_language_code": 'SOURCE_LANGUAGE_CODE', "target_language_code": 'TARGET_LANGUAGE_CODE' }, "contents": ["SOURCE_TEXT"] }] }; const {google} = require('googleapis'); const aiplatform = google.cloud('aiplatform'); const endpoint = aiplatform.predictionEndpoint('projects/PROJECT_ID/locations/LOCATION/publishers/google/models/translate-llm'); const [response] = await endpoint.predict(request) console.log('Translating') console.log(response) }
Python
このサンプルを試す前に、Cloud Translation クイックスタート: クライアント ライブラリの使用にある Python の設定手順を完了してください。 詳細については、Cloud Translation Python API リファレンス ドキュメントをご覧ください。
Cloud Translation に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。
from google.cloud import aiplatform def translate(): # Create a client endpoint = aiplatform.Endpoint('projects/PROJECT_ID/locations/LOCATION/publishers/google/models/translate-llm') # Initialize the request instances=[{ "reference_sentence_config": { "reference_sentence_pair_lists": [{ "reference_sentence_pairs": [{ "source_sentence": 'SAMPLE_REFERENCE_SOURCE_1', "target_sentence": 'SAMPLE_REFERENCE_TARGET_1' }, "reference_sentence_pairs": { "source_sentence": 'SAMPLE_REFERENCE_SOURCE_2', "target_sentence": 'SAMPLE_REFERENCE_TARGET_2' }] }], "source_language_code": 'SOURCE_LANGUAGE_CODE', "target_language_code": 'TARGET_LANGUAGE_CODE' }, "contents": ["SOURCE_TEXT"] }] # Make the request response = endpoint.predict(instances=instances) # Handle the response print(response)
Cloud Translation API を使用してデータセットを作成し、例文ペアをインポートすることもできます。Cloud Translation API を使用して翻訳をリクエストする場合は、データセットを含めてレスポンスをカスタマイズできます。データセットは保持され、複数の翻訳リクエストで再利用できます。詳細については、Cloud Translation ドキュメントの適応型翻訳をリクエストするをご覧ください。