ドキュメントの理解

Gemini リクエストにドキュメント(PDF ファイルと TXT ファイル)を追加して、追加したドキュメントの内容を理解するタスクを実行できます。このページでは、Google Cloud コンソールと Vertex AI API を使用して、Vertex AI の Gemini へのリクエストに PDF を追加する方法について説明します。

サポートされているモデル

次の表に、ドキュメント理解をサポートするモデルを示します。

モデル PDF のモダリティの詳細

Gemini 1.5 Flash

Gemini 1.5 Flash モデルカードに移動する

PDF あたりの最大ページ数: 1,000

PDF ファイルの最大サイズ: 30 MB

Gemini 1.5 Pro

Gemini 1.5 Pro モデルカードに移動する

PDF あたりの最大ページ数: 1,000

PDF ファイルの最大サイズ: 30 MB

Gemini 1.0 Pro Vision

Gemini 1.0 Pro Vision モデルカードに移動する

プロンプトあたりのページ数の上限: 16

PDF ファイルの最大サイズ: 30 MB

Gemini モデルでサポートされている言語の一覧については、モデル情報の Google モデルをご覧ください。マルチモーダル プロンプトの設計方法について詳しくは、マルチモーダル プロンプトを設計するをご覧ください。モバイルアプリやウェブアプリから Gemini を直接使用することをお考えの場合は、Android、Swift、ウェブ、Flutter アプリの Vertex AI in Firebase SDK をご覧ください。

リクエストにドキュメントを追加する

次のコードサンプルは、プロンプト リクエストに PDF を含める方法を示しています。この PDF サンプルは、すべての Gemini マルチモーダル モデルで使用できます。

Vertex AI SDK for Python のインストールまたは更新方法については、Vertex AI SDK for Python をインストールするをご覧ください。詳細については、Vertex AI SDK for Python API リファレンス ドキュメントをご覧ください。

ストリーミング レスポンスと非ストリーミング レスポンス

モデルがストリーミング レスポンスを生成するのか、非ストリーミング レスポンスを生成するのかについては、選択が可能です。ストリーミング レスポンスの場合、出力トークンが生成されるとすぐに各レスポンスが返されます。非ストリーミング レスポンスの場合、すべての出力トークンが生成された後にすべてのレスポンスが返されます。

ストリーミング レスポンスの場合は、generate_contentstream パラメータを使用します。

  response = model.generate_content(contents=[...], stream = True)
  

非ストリーミング レスポンスの場合は、パラメータを削除するか、パラメータを False に設定します。

サンプルコード

import vertexai

from vertexai.generative_models import GenerativeModel, Part

# TODO(developer): Update project_id and location
vertexai.init(project=PROJECT_ID, location="us-central1")

model = GenerativeModel("gemini-1.5-flash-002")

prompt = """
You are a very professional document summarization specialist.
Please summarize the given document.
"""

pdf_file = Part.from_uri(
    uri="gs://cloud-samples-data/generative-ai/pdf/2403.05530.pdf",
    mime_type="application/pdf",
)
contents = [pdf_file, prompt]

response = model.generate_content(contents)
print(response.text)
# Example response:
# Here's a summary of the provided text, which appears to be a research paper on the Gemini 1.5 Pro
# multimodal large language model:
# **Gemini 1.5 Pro: Key Advancements and Capabilities**
# The paper introduces Gemini 1.5 Pro, a highly compute-efficient multimodal model
# significantly advancing long-context capabilities
# ...

このサンプルを試す前に、Vertex AI クイックスタートの Java の設定手順を実施してください。詳細については、Vertex AI Java SDK for Gemini リファレンス ドキュメントをご覧ください。

Vertex AI に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。

ストリーミング レスポンスと非ストリーミング レスポンス

モデルがストリーミング レスポンスを生成するのか、非ストリーミング レスポンスを生成するのかについては、選択が可能です。ストリーミング レスポンスの場合、出力トークンが生成されるとすぐに各レスポンスが返されます。非ストリーミング レスポンスの場合、すべての出力トークンが生成された後にすべてのレスポンスが返されます。

ストリーミング レスポンスの場合は、generateContentStream メソッドを使用します。

  public ResponseStream<GenerateContentResponse> generateContentStream(Content content)
  

非ストリーミング レスポンスの場合は、generateContent メソッドを使用します。

  public GenerateContentResponse generateContent(Content content)
  

サンプルコード


import com.google.cloud.vertexai.VertexAI;
import com.google.cloud.vertexai.api.GenerateContentResponse;
import com.google.cloud.vertexai.generativeai.ContentMaker;
import com.google.cloud.vertexai.generativeai.GenerativeModel;
import com.google.cloud.vertexai.generativeai.PartMaker;
import com.google.cloud.vertexai.generativeai.ResponseHandler;
import java.io.IOException;

public class PdfInput {

  public static void main(String[] args) throws IOException {
    // TODO(developer): Replace these variables before running the sample.
    String projectId = "your-google-cloud-project-id";
    String location = "us-central1";
    String modelName = "gemini-1.5-flash-001";

    pdfInput(projectId, location, modelName);
  }

  // Analyzes the given video input.
  public static String pdfInput(String projectId, String location, String modelName)
      throws IOException {
    // Initialize client that will be used to send requests. This client only needs
    // to be created once, and can be reused for multiple requests.
    try (VertexAI vertexAI = new VertexAI(projectId, location)) {
      String pdfUri = "gs://cloud-samples-data/generative-ai/pdf/2403.05530.pdf";

      GenerativeModel model = new GenerativeModel(modelName, vertexAI);
      GenerateContentResponse response = model.generateContent(
          ContentMaker.fromMultiModalData(
              "You are a very professional document summarization specialist.\n"
                  + "Please summarize the given document.",
              PartMaker.fromMimeTypeAndData("application/pdf", pdfUri)
          ));

      String output = ResponseHandler.getText(response);
      System.out.println(output);
      return output;
    }
  }
}

このサンプルを試す前に、Node.js SDK を使用した生成 AI クイックスタートの Node.js の設定手順を実施してください。詳細については、Node.js SDK for Gemini リファレンス ドキュメントをご覧ください。

Vertex AI に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。

ストリーミング レスポンスと非ストリーミング レスポンス

モデルがストリーミング レスポンスを生成するのか、非ストリーミング レスポンスを生成するのかについては、選択が可能です。ストリーミング レスポンスの場合、出力トークンが生成されるとすぐに各レスポンスが返されます。非ストリーミング レスポンスの場合、すべての出力トークンが生成された後にすべてのレスポンスが返されます。

ストリーミング レスポンスの場合は、generateContentStream メソッドを使用します。

  const streamingResp = await generativeModel.generateContentStream(request);
  

非ストリーミング レスポンスの場合は、generateContent メソッドを使用します。

  const streamingResp = await generativeModel.generateContent(request);
  

サンプルコード

const {VertexAI} = require('@google-cloud/vertexai');

/**
 * TODO(developer): Update these variables before running the sample.
 */
async function analyze_pdf(projectId = 'PROJECT_ID') {
  const vertexAI = new VertexAI({project: projectId, location: 'us-central1'});

  const generativeModel = vertexAI.getGenerativeModel({
    model: 'gemini-1.5-flash-001',
  });

  const filePart = {
    file_data: {
      file_uri: 'gs://cloud-samples-data/generative-ai/pdf/2403.05530.pdf',
      mime_type: 'application/pdf',
    },
  };
  const textPart = {
    text: `
    You are a very professional document summarization specialist.
    Please summarize the given document.`,
  };

  const request = {
    contents: [{role: 'user', parts: [filePart, textPart]}],
  };

  const resp = await generativeModel.generateContent(request);
  const contentResponse = await resp.response;
  console.log(JSON.stringify(contentResponse));
}

このサンプルを試す前に、Vertex AI クイックスタートの Go の設定手順を実施してください。詳細については、Vertex AI Go SDK for Gemini リファレンス ドキュメントをご覧ください。

Vertex AI に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。

ストリーミング レスポンスと非ストリーミング レスポンス

モデルがストリーミング レスポンスを生成するのか、非ストリーミング レスポンスを生成するのかについては、選択が可能です。ストリーミング レスポンスの場合、出力トークンが生成されるとすぐに各レスポンスが返されます。非ストリーミング レスポンスの場合、すべての出力トークンが生成された後にすべてのレスポンスが返されます。

ストリーミング レスポンスの場合は、GenerateContentStream メソッドを使用します。

  iter := model.GenerateContentStream(ctx, genai.Text("Tell me a story about a lumberjack and his giant ox. Keep it very short."))
  

非ストリーミング レスポンスの場合は、GenerateContent メソッドを使用します。

  resp, err := model.GenerateContent(ctx, genai.Text("What is the average size of a swallow?"))
  

サンプルコード

import (
	"context"
	"errors"
	"fmt"
	"io"

	"cloud.google.com/go/vertexai/genai"
)

// generateContentFromPDF generates a response into the provided io.Writer, based upon the PDF
func generateContentFromPDF(w io.Writer, projectID, location, modelName string) error {
	// location := "us-central1"
	// modelName := "gemini-1.5-flash-001"

	ctx := context.Background()

	client, err := genai.NewClient(ctx, projectID, location)
	if err != nil {
		return fmt.Errorf("unable to create client: %w", err)
	}
	defer client.Close()

	model := client.GenerativeModel(modelName)

	part := genai.FileData{
		MIMEType: "application/pdf",
		FileURI:  "gs://cloud-samples-data/generative-ai/pdf/2403.05530.pdf",
	}

	res, err := model.GenerateContent(ctx, part, genai.Text(`
			You are a very professional document summarization specialist.
    		Please summarize the given document.
	`))
	if err != nil {
		return fmt.Errorf("unable to generate contents: %w", err)
	}

	if len(res.Candidates) == 0 ||
		len(res.Candidates[0].Content.Parts) == 0 {
		return errors.New("empty response from model")
	}

	fmt.Fprintf(w, "generated response: %s\n", res.Candidates[0].Content.Parts[0])
	return nil
}

このサンプルを試す前に、Vertex AI クイックスタートの C# の設定手順を実施してください。詳細については、Vertex AI C# のリファレンス ドキュメントをご覧ください。

Vertex AI に対する認証を行うには、アプリケーションのデフォルト認証情報を設定します。詳細については、ローカル開発環境の認証を設定するをご覧ください。

ストリーミング レスポンスと非ストリーミング レスポンス

モデルがストリーミング レスポンスを生成するのか、非ストリーミング レスポンスを生成するのかについては、選択が可能です。ストリーミング レスポンスの場合、出力トークンが生成されるとすぐに各レスポンスが返されます。非ストリーミング レスポンスの場合、すべての出力トークンが生成された後にすべてのレスポンスが返されます。

ストリーミング レスポンスの場合は、StreamGenerateContent メソッドを使用します。

  public virtual PredictionServiceClient.StreamGenerateContentStream StreamGenerateContent(GenerateContentRequest request)
  

非ストリーミング レスポンスの場合は、GenerateContentAsync メソッドを使用します。

  public virtual Task<GenerateContentResponse> GenerateContentAsync(GenerateContentRequest request)
  

サーバーがレスポンスをストリーミングする方法の詳細については、ストリーミング RPC をご覧ください。

サンプルコード


using Google.Cloud.AIPlatform.V1;
using System;
using System.Threading.Tasks;

public class PdfInput
{
    public async Task<string> SummarizePdf(
        string projectId = "your-project-id",
        string location = "us-central1",
        string publisher = "google",
        string model = "gemini-1.5-flash-001")
    {

        var predictionServiceClient = new PredictionServiceClientBuilder
        {
            Endpoint = $"{location}-aiplatform.googleapis.com"
        }.Build();

        string prompt = @"You are a very professional document summarization specialist.
Please summarize the given document.";

        var generateContentRequest = new GenerateContentRequest
        {
            Model = $"projects/{projectId}/locations/{location}/publishers/{publisher}/models/{model}",
            Contents =
            {
                new Content
                {
                    Role = "USER",
                    Parts =
                    {
                        new Part { Text = prompt },
                        new Part { FileData = new() { MimeType = "application/pdf", FileUri = "gs://cloud-samples-data/generative-ai/pdf/2403.05530.pdf" }}
                    }
                }
            }
        };

        GenerateContentResponse response = await predictionServiceClient.GenerateContentAsync(generateContentRequest);

        string responseText = response.Candidates[0].Content.Parts[0].Text;
        Console.WriteLine(responseText);

        return responseText;
    }
}

環境をセットアップしたら、REST を使用してテキスト プロンプトをテストできます。次のサンプルは、パブリッシャー モデルのエンドポイントにリクエストを送信します。

リクエストのデータを使用する前に、次のように置き換えます。

  • LOCATION: リクエストを処理するリージョン。サポートされているリージョンを入力します。サポートされているリージョンの一覧については、利用可能なロケーションをご覧ください。
    • us-central1
    • us-west4
    • northamerica-northeast1
    • us-east4
    • us-west1
    • asia-northeast3
    • asia-southeast1
    • asia-northeast1
  • PROJECT_ID: 実際のプロジェクト ID
  • FILE_URI: プロンプトに含めるファイルの URI または URL。有効な値は次のとおりです。
    • Cloud Storage バケット URI: オブジェクトは一般公開されているか、リクエストを送信するプロジェクトと同じ Google Cloud プロジェクトに存在している必要があります。
    • HTTP URL: ファイルの URL は一般公開されている必要があります。リクエストごとに 1 つの動画ファイルと最大 10 個の画像ファイルを指定できます。音声ファイルとドキュメントのサイズは 15 MB 以下にする必要があります。
    • YouTube 動画の URL: YouTube 動画は、Google Cloud コンソールのログインに使用したアカウントが所有しているか、公開されている必要があります。リクエストごとにサポートされる YouTube 動画の URL は 1 つだけです。

    fileURI を指定する場合は、ファイルのメディアタイプ(mimeType)も指定する必要があります。

    Cloud Storage に PDF ファイルがない場合は、次の一般公開ファイルを使用できます: MIME タイプが application/pdfgs://cloud-samples-data/generative-ai/pdf/2403.05530.pdf。この PDF を表示するには、サンプル PDF ファイルを開きます

  • MIME_TYPE: data フィールドまたは fileUri フィールドで指定されたファイルのメディアタイプ。指定できる値は次のとおりです。
    • application/pdf
    • audio/mpeg
    • audio/mp3
    • audio/wav
    • image/png
    • image/jpeg
    • image/webp
    • text/plain
    • video/mov
    • video/mpeg
    • video/mp4
    • video/mpg
    • video/avi
    • video/wmv
    • video/mpegps
    • video/flv
  • TEXT: プロンプトに含める指示のテキスト。例: You are a very professional document summarization specialist. Please summarize the given document.

リクエストを送信するには、次のいずれかのオプションを選択します。

curlPowerShell

リクエスト本文を request.json という名前のファイルに保存します。ターミナルで次のコマンドを実行して、このファイルを現在のディレクトリに作成または上書きします。

cat > request.json << 'EOF'
{
  "contents": {
    "role": "USER",
    "parts": [
      {
        "fileData": {
          "fileUri": "FILE_URI",
          "mimeType": "MIME_TYPE"
        }
      },
      {
        "text": "TEXT"
      }
    ]
  }
}
EOF

その後、次のコマンドを実行して REST リクエストを送信します。

curl -X POST \
-H "Authorization: Bearer $(gcloud auth print-access-token)" \
-H "Content-Type: application/json; charset=utf-8" \
-d @request.json \
"https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/gemini-1.5-flash:generateContent"

リクエスト本文を request.json という名前のファイルに保存します。ターミナルで次のコマンドを実行して、このファイルを現在のディレクトリに作成または上書きします。

@'
{
  "contents": {
    "role": "USER",
    "parts": [
      {
        "fileData": {
          "fileUri": "FILE_URI",
          "mimeType": "MIME_TYPE"
        }
      },
      {
        "text": "TEXT"
      }
    ]
  }
}
'@  | Out-File -FilePath request.json -Encoding utf8

その後、次のコマンドを実行して REST リクエストを送信します。

$cred = gcloud auth print-access-token
$headers = @{ "Authorization" = "Bearer $cred" }

Invoke-WebRequest `
-Method POST `
-Headers $headers `
-ContentType: "application/json; charset=utf-8" `
-InFile request.json `
-Uri "https://LOCATION-aiplatform.googleapis.com/v1/projects/PROJECT_ID/locations/LOCATION/publishers/google/models/gemini-1.5-flash:generateContent" | Select-Object -Expand Content

次のような JSON レスポンスが返されます。

{
  "candidates": [
    {
      "content": {
        "role": "model",
        "parts": [
          {
            "text": "This report presents Gemini 1.5 Pro, the first model release in the Gemini 1.5
              family, a novel mixture-of-experts multimodal model capable of recalling and reasoning
              over extremely long contexts of information, up to 10 million tokens. This surpasses
              existing models, which are typically constrained to 200,000 tokens.\n\nGemini 1.5 Pro
              is a highly compute-efficient model that improves on Gemini 1.0 Pro's performance
              across a range of benchmarks, even surpassing Gemini 1.0 Ultra in many categories
              while requiring less training compute. In particular, the model excels in handling
              long-context retrieval tasks, achieving near-perfect recall for text, audio and video,
              and even demonstrating in-context learning capabilities by learning to translate a new
              language from just one book.\n\nThe report discusses the new long-context capabilities
              of Gemini 1.5 Pro, including its novel architecture and training infrastructure, and
              showcases qualitative examples of the model's ability to handle long, mixed-modality
              inputs. It then explores quantitative evaluations of the model's performance in
              several categories, including perplexity over long sequences, needle-in-a-haystack
              retrieval tasks, and realistic multimodal benchmarks like long-document QA and
              long-context audio understanding. The report also addresses the important aspects of
              responsible deployment, outlining the model's impact assessment, evaluation approach,
              and mitigation efforts.\n\nOverall, Gemini 1.5 Pro represents a significant
              advancement in multimodal language modeling, pushing the boundaries of long-context
              understanding and showcasing the potential for large models to handle complex,
              mixed-modality information at scale. \n"
          }
        ]
      },
      "finishReason": "STOP",
      "safetyRatings": [
        {
          "category": "HARM_CATEGORY_HATE_SPEECH",
          "probability": "NEGLIGIBLE",
          "probabilityScore": 0.13273923,
          "severity": "HARM_SEVERITY_NEGLIGIBLE",
          "severityScore": 0.08819004
        },
        {
          "category": "HARM_CATEGORY_DANGEROUS_CONTENT",
          "probability": "NEGLIGIBLE",
          "probabilityScore": 0.1046602,
          "severity": "HARM_SEVERITY_NEGLIGIBLE",
          "severityScore": 0.0996453
        },
        {
          "category": "HARM_CATEGORY_HARASSMENT",
          "probability": "NEGLIGIBLE",
          "probabilityScore": 0.15987214,
          "severity": "HARM_SEVERITY_NEGLIGIBLE",
          "severityScore": 0.098946586
        },
        {
          "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT",
          "probability": "NEGLIGIBLE",
          "probabilityScore": 0.056966383,
          "severity": "HARM_SEVERITY_NEGLIGIBLE",
          "severityScore": 0.075721376
        }
      ]
    }
  ],
  "usageMetadata": {
    "promptTokenCount": 19882,
    "candidatesTokenCount": 336,
    "totalTokenCount": 20218
  }
}
このサンプルの URL にある次の点に注意してください。
  • generateContent メソッドを使用して、レスポンスが完全に生成された後に返されるようにリクエストします。ユーザーが認識するレイテンシを短縮するには、streamGenerateContent メソッドを使用して、生成時にレスポンスをストリーミングします。
  • マルチモーダル モデル ID は、URL の末尾のメソッドの前に配置されます(例: gemini-1.5-flashgemini-1.0-pro-vision)。このサンプルでは、他のモデルもサポートされている場合があります。
Google Cloud コンソールを使用してマルチモーダル プロンプトを送信する手順は次のとおりです。

  1. Google Cloud コンソールの [Vertex AI] セクションで、[Vertex AI Studio] ページに移動します。

    Vertex AI Studio に移動

  2. [自由形式を開く] をクリックします。

  3. 省略可: モデルとパラメータを構成します。

    • Model: モデルを選択します。
    • リージョン: 使用するリージョンを選択します。
    • 温度: スライダーまたはテキスト ボックスを使用して、温度の値を入力します。

      温度は、回答の生成時のサンプリングに使用されます。回答の生成は、topPtopK が適用された場合に発生します。温度は、トークン選択のランダム性の度合いを制御します。温度が低いほど、確定的で自由度や創造性を抑えたレスポンスが求められるプロンプトに適しています。一方、温度が高いと、より多様で創造的な結果を導くことができます。温度が 0 の場合、確率が最も高いトークンが常に選択されます。この場合、特定のプロンプトに対するレスポンスはほとんど確定的ですが、わずかに変動する可能性は残ります。

      モデルが返す回答が一般的すぎる、短すぎる、あるいはフォールバック(代替)回答が返ってくる場合は、温度を高く設定してみてください。

    • 出力トークンの上限: スライダーまたはテキスト ボックスを使用して、最大出力の上限値を入力します。

      回答で生成できるトークンの最大数。1 トークンは約 4 文字です。100 トークンは約 60~80 語に相当します。

      レスポンスを短くしたい場合は小さい値を、長くしたい場合は大きい値を指定します。

    • 停止シーケンスを追加: 省略可。停止シーケンスを入力します。これはスペースを含む一連の文字列です。モデルが停止シーケンスに遭遇すると、回答の生成が停止します。停止シーケンスは回答には含まれません。停止シーケンスは 5 つまで追加できます。

  4. 省略可: 詳細パラメータを構成するには、[詳細] をクリックして、次のように構成します。

    • Top-K: スライダーまたはテキスト ボックスを使用して、Top-K の値を入力します。(Gemini 1.5 ではサポートされていません)。

      Top-K は、モデルが出力用にトークンを選択する方法を変更します。Top-K が 1 の場合、次に選択されるトークンは、モデルの語彙内のすべてのトークンで最も確率の高いものであることになります(グリーディ デコードとも呼ばれます)。Top-K が 3 の場合は、最も確率が高い上位 3 つのトークンから次のトークン選択されることになります(温度を使用します)。

      トークン選択のそれぞれのステップで、最も高い確率を持つ Top-K のトークンがサンプリングされます。その後、トークンは Top-P に基づいてさらにフィルタリングされ、最終的なトークンは温度サンプリングを用いて選択されます。

      ランダムなレスポンスを減らしたい場合は小さい値を、ランダムなレスポンスを増やしたい場合は大きい値を指定します。

    • Top-P: スライダーまたはテキスト ボックスを使用して、Top-P の値を入力します。確率の合計が Top-P の値と等しくなるまで、最も確率が高いものから最も確率が低いものの順に、トークンが選択されます。結果の可変性を最小にするには、Top-P を 0 に設定します。
    • 最大回答数: スライダーまたはテキスト ボックスを使用して、生成する回答の数の値を入力します。
    • ストリーミング回答: 有効にすると、回答が生成されたときに出力できます。
    • 安全フィルタのしきい値: 有害な恐れのある回答が表示される可能性のしきい値を選択します。
    • グラウンディングを有効にする: グラウンディングはマルチモーダル プロンプトではサポートされていません。

  5. [メディアを挿入] をクリックして、ファイルのソースを選択します。

    アップロードするファイルを選択して [開く] をクリックします。

    使用するファイルの URL を入力し、[挿入] をクリックします。

    バケットを選択してから、バケット内のインポートするファイルを選択し、[選択] をクリックします。

    1. このオプションを初めて選択するときに、アカウントを選択して、Vertex AI Studio がアカウントにアクセスできるように同意します。合計サイズが最大 10 MB の複数のファイルをアップロードできます。1 つのファイルのサイズが 7 MB を超えないようにしてください。
    2. 追加するファイルをクリックします。
    3. [選択] をクリックします。

      ファイルのサムネイルが [プロンプト] ペインに表示されます。トークンの合計数も表示されます。プロンプト データがトークンの上限を超えると、トークンは切り捨てられ、データの処理には含まれません。

  6. [プロンプト] ペインにテキスト プロンプトを入力します。

  7. 省略可: [テキストのトークン ID] と [トークン ID] を表示するには、[プロンプト] ペインで [トークン数] をクリックします。

  8. [送信] をクリックします。

  9. 省略可: プロンプトを [マイプロンプト] に保存するには、[ 保存] をクリックします。

  10. 省略可: プロンプトの Python コードまたは curl コマンドを取得するには、[コードを取得] をクリックします。

オプションのモデル パラメータを設定する

各モデルには、設定可能な一連のオプション パラメータがあります。詳細については、コンテンツ生成パラメータをご覧ください。

ドキュメントの要件

Gemini マルチモーダル モデルは、次のドキュメント MIME タイプをサポートしています。

ドキュメントの MIME タイプ Gemini 1.5 Flash Gemini 1.5 Pro Gemini 1.0 Pro Vision
PDF - application/pdf
テキスト - text/plain

PDF は画像として扱われるため、PDF の 1 ページは 1 つの画像として扱われます。プロンプトで許可されるページ数は、モデルがサポートできる画像の数に制限されます。

  • Gemini 1.0 Pro Vision: 16 ページ
  • Gemini 1.5 Pro と Gemini 1.5 Flash: 1,000 ページ

PDF のトークン化

PDF は画像として扱われるため、PDF の各ページは画像と同じ方法でトークン化されます。

また、PDF の費用は Gemini の画像処理の料金に準じます。たとえば、Gemini API 呼び出しで 2 ページの PDF を含めると、入力として 2 つの画像を処理する場合の料金が発生します。

書式なしテキストのトークン化

書式なしテキストのドキュメントはテキストとしてトークン化されます。たとえば、Gemini API 呼び出しに 100 語の書式なしテキストのドキュメントを含めると、入力として 100 語を処理する場合の料金が発生します。

PDF に関するベスト プラクティス

PDF を使用する場合は、次のベスト プラクティスと情報を参考にしてください。

  • プロンプトに 1 つの PDF が含まれている場合は、リクエスト内でテキスト プロンプトの前に PDF を配置します。
  • ドキュメントが長い場合は、複数の PDF に分割して処理することを検討してください。
  • スキャンした画像のテキストではなく、テキストとしてレンダリングされたテキストを含む PDF を使用します。この形式では、テキストが機械で判読可能になるため、スキャンした画像を PDF にした場合よりも、モデルによる編集、検索、操作が容易になります。これにより、契約書など、テキストの多いドキュメントを扱う際に最適な結果が得られます。

制限事項

Gemini マルチモーダル モデルは多くのマルチモーダル ユースケースに対応していますが、モデルの制限事項も理解しておく必要があります。

  • 空間推論: PDF 内のテキストやオブジェクトの位置を正確に特定することはできません。オブジェクトの数も推定値しか返されない場合があります。
  • 精度: PDF ドキュメント内の手書きテキストを解釈する際に、ハルシネーションが発生する可能性があります。

次のステップ