Generating content

Gemini API は、画像、音声、コード、ツールなどを使用したコンテンツ生成をサポートしています。これらの各機能の詳細については、この後の説明をお読みになり、タスクに焦点を当てたサンプルコードや包括的なガイドをご覧ください。

メソッド: models.generateContent

入力 GenerateContentRequest に基づいてモデル レスポンスを生成します。詳細な使用方法については、テキスト生成ガイドをご覧ください。入力機能は、チューニングされたモデルを含め、モデルによって異なります。詳細については、モデルガイドチューニング ガイドをご覧ください。

エンドポイント

post https://generativelanguage.googleapis.com/v1beta/{model=models/*}:generateContent

パスパラメータ

model string

必須。補完の生成に使用する Model の名前。

形式: models/{model}。形式は models/{model} です。

リクエストの本文

リクエストの本文には、次の構造のデータが含まれます。

フィールド
contents[] object (Content)

必須。モデルとの現在の会話の内容。

シングルターン クエリの場合、単一のインスタンスです。チャットなどのマルチターン クエリの場合、これは会話履歴と最新のリクエストを含む繰り返しフィールドです。

tools[] object (Tool)

省略可。Model が次のレスポンスの生成に使用できる Tools のリスト。

Tool は、システムが外部システムと対話して、Model の知識や範囲外のアクションまたは一連のアクションを実行できるようにするコードです。サポートされている ToolFunctioncodeExecution です。詳細については、関数呼び出しコード実行のガイドをご覧ください。

toolConfig object (ToolConfig)

省略可。リクエストで指定された Tool のツール構成。使用例については、関数呼び出しガイドをご覧ください。

safetySettings[] object (SafetySetting)

省略可。安全でないコンテンツをブロックするための、一意の SafetySetting インスタンスのリスト。

この条件は GenerateContentRequest.contentsGenerateContentResponse.candidates に適用されます。SafetyCategory タイプごとに設定は 1 つだけにする必要があります。API は、これらの設定で設定されたしきい値を満たさないコンテンツとレスポンスをブロックします。このリストは、safetySettings で指定された各 SafetyCategory のデフォルト設定をオーバーライドします。リストに指定された特定の SafetyCategory に対応する SafetySetting がない場合、API はそのカテゴリのデフォルトの安全性設定を使用します。有害カテゴリ HARM_CATEGORY_HATE_SPEECH、HARM_CATEGORY_SEXUALLY_EXPLICIT、HARM_CATEGORY_DANGEROUS_CONTENT、HARM_CATEGORY_HARASSMENT、HARM_CATEGORY_CIVIC_INTEGRITY、HARM_CATEGORY_JAILBREAK がサポートされています。利用可能な安全設定の詳細については、ガイドをご覧ください。AI アプリケーションに安全性の考慮事項を組み込む方法については、安全に関するガイダンスもご覧ください。

systemInstruction object (Content)

省略可。デベロッパーがシステム指示を設定します。現在、テキストのみ。

generationConfig object (GenerationConfig)

省略可。モデルの生成と出力の構成オプション。

cachedContent string

省略可。予測を提供するためにコンテキストとして使用される、キャッシュに保存されたコンテンツの名前。形式: cachedContents/{cachedContent}

serviceTier enum (ServiceTier)

省略可。リクエストのサービス階層。

store boolean

省略可。特定のリクエストのロギング動作を構成します。設定すると、プロジェクト レベルのロギング構成よりも優先されます。

リクエスト例

テキスト

Python

from google import genai

client = genai.Client()
response = client.models.generate_content(
    model="gemini-3.7-flash", contents="Write a story about a magic backpack."
)
print(response.text)

Node.js

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });

const response = await ai.models.generateContent({
  model: "gemini-3.7-flash",
  contents: "Write a story about a magic backpack.",
});
console.log(response.text);

Go

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}
contents := []*genai.Content{
	genai.NewContentFromText("Write a story about a magic backpack.", genai.RoleUser),
}
response, err := client.Models.GenerateContent(ctx, "gemini-3.7-flash", contents, nil)
if err != nil {
	log.Fatal(err)
}
printResponse(response)

Shell

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$GEMINI_API_KEY" \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{
      "contents": [{
        "parts":[{"text": "Write a story about a magic backpack."}]
        }]
       }' 2> /dev/null

Java

Client client = new Client();

GenerateContentResponse response =
        client.models.generateContent(
                "gemini-3.7-flash",
                "Write a story about a magic backpack.",
                null);

System.out.println(response.text());

画像

Python

from google import genai
import PIL.Image

client = genai.Client()
organ = PIL.Image.open(media / "organ.jpg")
response = client.models.generate_content(
    model="gemini-3.7-flash", contents=["Tell me about this instrument", organ]
)
print(response.text)

Node.js

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });

const organ = await ai.files.upload({
  file: path.join(media, "organ.jpg"),
});

const response = await ai.models.generateContent({
  model: "gemini-3.7-flash",
  contents: [
    createUserContent([
      "Tell me about this instrument", 
      createPartFromUri(organ.uri, organ.mimeType)
    ]),
  ],
});
console.log(response.text);

Go

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}

file, err := client.Files.UploadFromPath(
	ctx, 
	filepath.Join(getMedia(), "organ.jpg"), 
	&genai.UploadFileConfig{
		MIMEType : "image/jpeg",
	},
)
if err != nil {
	log.Fatal(err)
}
parts := []*genai.Part{
	genai.NewPartFromText("Tell me about this instrument"),
	genai.NewPartFromURI(file.URI, file.MIMEType),
}
contents := []*genai.Content{
	genai.NewContentFromParts(parts, genai.RoleUser),
}

response, err := client.Models.GenerateContent(ctx, "gemini-3.7-flash", contents, nil)
if err != nil {
	log.Fatal(err)
}
printResponse(response)

Shell

# Use a temporary file to hold the base64 encoded image data
TEMP_B64=$(mktemp)
trap 'rm -f "$TEMP_B64"' EXIT
base64 $B64FLAGS $IMG_PATH > "$TEMP_B64"

# Use a temporary file to hold the JSON payload
TEMP_JSON=$(mktemp)
trap 'rm -f "$TEMP_JSON"' EXIT

cat > "$TEMP_JSON" << EOF
{
  "contents": [{
    "parts":[
      {"text": "Tell me about this instrument"},
      {
        "inline_data": {
          "mime_type":"image/jpeg",
          "data": "$(cat "$TEMP_B64")"
        }
      }
    ]
  }]
}
EOF

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$GEMINI_API_KEY" \
    -H 'Content-Type: application/json' \
    -X POST \
    -d "@$TEMP_JSON" 2> /dev/null

Java

Client client = new Client();

String path = media_path + "organ.jpg";
byte[] imageData = Files.readAllBytes(Paths.get(path));

Content content =
        Content.fromParts(
                Part.fromText("Tell me about this instrument."),
                Part.fromBytes(imageData, "image/jpeg"));

GenerateContentResponse response = client.models.generateContent("gemini-3.7-flash", content, null);

System.out.println(response.text());

音声

Python

from google import genai

client = genai.Client()
sample_audio = client.files.upload(file=media / "sample.mp3")
response = client.models.generate_content(
    model="gemini-3.7-flash",
    contents=["Give me a summary of this audio file.", sample_audio],
)
print(response.text)

Node.js

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });

const audio = await ai.files.upload({
  file: path.join(media, "sample.mp3"),
});

const response = await ai.models.generateContent({
  model: "gemini-3.7-flash",
  contents: [
    createUserContent([
      "Give me a summary of this audio file.",
      createPartFromUri(audio.uri, audio.mimeType),
    ]),
  ],
});
console.log(response.text);

Go

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}

file, err := client.Files.UploadFromPath(
	ctx, 
	filepath.Join(getMedia(), "sample.mp3"), 
	&genai.UploadFileConfig{
		MIMEType : "audio/mpeg",
	},
)
if err != nil {
	log.Fatal(err)
}

parts := []*genai.Part{
	genai.NewPartFromText("Give me a summary of this audio file."),
	genai.NewPartFromURI(file.URI, file.MIMEType),
}

contents := []*genai.Content{
	genai.NewContentFromParts(parts, genai.RoleUser),
}

response, err := client.Models.GenerateContent(ctx, "gemini-3.7-flash", contents, nil)
if err != nil {
	log.Fatal(err)
}
printResponse(response)

Shell

# Use File API to upload audio data to API request.
MIME_TYPE=$(file -b --mime-type "${AUDIO_PATH}")
NUM_BYTES=$(wc -c < "${AUDIO_PATH}")
DISPLAY_NAME=AUDIO

tmp_header_file=upload-header.tmp

# Initial resumable request defining metadata.
# The upload url is in the response headers dump them to a file.
curl "${BASE_URL}/upload/v1beta/files?key=${GEMINI_API_KEY}" \
  -D upload-header.tmp \
  -H "X-Goog-Upload-Protocol: resumable" \
  -H "X-Goog-Upload-Command: start" \
  -H "X-Goog-Upload-Header-Content-Length: ${NUM_BYTES}" \
  -H "X-Goog-Upload-Header-Content-Type: ${MIME_TYPE}" \
  -H "Content-Type: application/json" \
  -d "{'file': {'display_name': '${DISPLAY_NAME}'}}" 2> /dev/null

upload_url=$(grep -i "x-goog-upload-url: " "${tmp_header_file}" | cut -d" " -f2 | tr -d "\r")
rm "${tmp_header_file}"

# Upload the actual bytes.
curl "${upload_url}" \
  -H "Content-Length: ${NUM_BYTES}" \
  -H "X-Goog-Upload-Offset: 0" \
  -H "X-Goog-Upload-Command: upload, finalize" \
  --data-binary "@${AUDIO_PATH}" 2> /dev/null > file_info.json

file_uri=$(jq ".file.uri" file_info.json)
echo file_uri=$file_uri

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$GEMINI_API_KEY" \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{
      "contents": [{
        "parts":[
          {"text": "Please describe this file."},
          {"file_data":{"mime_type": "audio/mpeg", "file_uri": '$file_uri'}}]
        }]
       }' 2> /dev/null > response.json

cat response.json
echo

jq ".candidates[].content.parts[].text" response.json

動画

Python

from google import genai
import time

client = genai.Client()
# Video clip (CC BY 3.0) from https://peach.blender.org/download/
myfile = client.files.upload(file=media / "Big_Buck_Bunny.mp4")
print(f"{myfile=}")

# Poll until the video file is completely processed (state becomes ACTIVE).
while not myfile.state or myfile.state.name != "ACTIVE":
    print("Processing video...")
    print("File state:", myfile.state)
    time.sleep(5)
    myfile = client.files.get(name=myfile.name)

response = client.models.generate_content(
    model="gemini-3.7-flash", contents=[myfile, "Describe this video clip"]
)
print(f"{response.text=}")

Node.js

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });

let video = await ai.files.upload({
  file: path.join(media, 'Big_Buck_Bunny.mp4'),
});

// Poll until the video file is completely processed (state becomes ACTIVE).
while (!video.state || video.state.toString() !== 'ACTIVE') {
  console.log('Processing video...');
  console.log('File state: ', video.state);
  await sleep(5000);
  video = await ai.files.get({name: video.name});
}

const response = await ai.models.generateContent({
  model: "gemini-3.7-flash",
  contents: [
    createUserContent([
      "Describe this video clip",
      createPartFromUri(video.uri, video.mimeType),
    ]),
  ],
});
console.log(response.text);

Go

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}

file, err := client.Files.UploadFromPath(
	ctx, 
	filepath.Join(getMedia(), "Big_Buck_Bunny.mp4"), 
	&genai.UploadFileConfig{
		MIMEType : "video/mp4",
	},
)
if err != nil {
	log.Fatal(err)
}

// Poll until the video file is completely processed (state becomes ACTIVE).
for file.State == genai.FileStateUnspecified || file.State != genai.FileStateActive {
	fmt.Println("Processing video...")
	fmt.Println("File state:", file.State)
	time.Sleep(5 * time.Second)

	file, err = client.Files.Get(ctx, file.Name, nil)
	if err != nil {
		log.Fatal(err)
	}
}

parts := []*genai.Part{
	genai.NewPartFromText("Describe this video clip"),
	genai.NewPartFromURI(file.URI, file.MIMEType),
}

contents := []*genai.Content{
	genai.NewContentFromParts(parts, genai.RoleUser),
}

response, err := client.Models.GenerateContent(ctx, "gemini-3.7-flash", contents, nil)
if err != nil {
	log.Fatal(err)
}
printResponse(response)

Shell

# Use File API to upload audio data to API request.
MIME_TYPE=$(file -b --mime-type "${VIDEO_PATH}")
NUM_BYTES=$(wc -c < "${VIDEO_PATH}")
DISPLAY_NAME=VIDEO

# Initial resumable request defining metadata.
# The upload url is in the response headers dump them to a file.
curl "${BASE_URL}/upload/v1beta/files?key=${GEMINI_API_KEY}" \
  -D "${tmp_header_file}" \
  -H "X-Goog-Upload-Protocol: resumable" \
  -H "X-Goog-Upload-Command: start" \
  -H "X-Goog-Upload-Header-Content-Length: ${NUM_BYTES}" \
  -H "X-Goog-Upload-Header-Content-Type: ${MIME_TYPE}" \
  -H "Content-Type: application/json" \
  -d "{'file': {'display_name': '${DISPLAY_NAME}'}}" 2> /dev/null

upload_url=$(grep -i "x-goog-upload-url: " "${tmp_header_file}" | cut -d" " -f2 | tr -d "\r")
rm "${tmp_header_file}"

# Upload the actual bytes.
curl "${upload_url}" \
  -H "Content-Length: ${NUM_BYTES}" \
  -H "X-Goog-Upload-Offset: 0" \
  -H "X-Goog-Upload-Command: upload, finalize" \
  --data-binary "@${VIDEO_PATH}" 2> /dev/null > file_info.json

file_uri=$(jq ".file.uri" file_info.json)
echo file_uri=$file_uri

state=$(jq ".file.state" file_info.json)
echo state=$state

name=$(jq ".file.name" file_info.json)
echo name=$name

while [[ "($state)" = *"PROCESSING"* ]];
do
  echo "Processing video..."
  sleep 5
  # Get the file of interest to check state
  curl https://generativelanguage.googleapis.com/v1beta/files/$name > file_info.json
  state=$(jq ".file.state" file_info.json)
done

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$GEMINI_API_KEY" \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{
      "contents": [{
        "parts":[
          {"text": "Transcribe the audio from this video, giving timestamps for salient events in the video. Also provide visual descriptions."},
          {"file_data":{"mime_type": "video/mp4", "file_uri": '$file_uri'}}]
        }]
       }' 2> /dev/null > response.json

cat response.json
echo

jq ".candidates[].content.parts[].text" response.json

PDF

Python

from google import genai

client = genai.Client()
sample_pdf = client.files.upload(file=media / "test.pdf")
response = client.models.generate_content(
    model="gemini-3.7-flash",
    contents=["Give me a summary of this document:", sample_pdf],
)
print(f"{response.text=}")

Go

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}

file, err := client.Files.UploadFromPath(
	ctx, 
	filepath.Join(getMedia(), "test.pdf"), 
	&genai.UploadFileConfig{
		MIMEType : "application/pdf",
	},
)
if err != nil {
	log.Fatal(err)
}

parts := []*genai.Part{
	genai.NewPartFromText("Give me a summary of this document:"),
	genai.NewPartFromURI(file.URI, file.MIMEType),
}

contents := []*genai.Content{
	genai.NewContentFromParts(parts, genai.RoleUser),
}

response, err := client.Models.GenerateContent(ctx, "gemini-3.7-flash", contents, nil)
if err != nil {
	log.Fatal(err)
}
printResponse(response)

Shell

MIME_TYPE=$(file -b --mime-type "${PDF_PATH}")
NUM_BYTES=$(wc -c < "${PDF_PATH}")
DISPLAY_NAME=TEXT


echo $MIME_TYPE
tmp_header_file=upload-header.tmp

# Initial resumable request defining metadata.
# The upload url is in the response headers dump them to a file.
curl "${BASE_URL}/upload/v1beta/files?key=${GEMINI_API_KEY}" \
  -D upload-header.tmp \
  -H "X-Goog-Upload-Protocol: resumable" \
  -H "X-Goog-Upload-Command: start" \
  -H "X-Goog-Upload-Header-Content-Length: ${NUM_BYTES}" \
  -H "X-Goog-Upload-Header-Content-Type: ${MIME_TYPE}" \
  -H "Content-Type: application/json" \
  -d "{'file': {'display_name': '${DISPLAY_NAME}'}}" 2> /dev/null

upload_url=$(grep -i "x-goog-upload-url: " "${tmp_header_file}" | cut -d" " -f2 | tr -d "\r")
rm "${tmp_header_file}"

# Upload the actual bytes.
curl "${upload_url}" \
  -H "Content-Length: ${NUM_BYTES}" \
  -H "X-Goog-Upload-Offset: 0" \
  -H "X-Goog-Upload-Command: upload, finalize" \
  --data-binary "@${PDF_PATH}" 2> /dev/null > file_info.json

file_uri=$(jq ".file.uri" file_info.json)
echo file_uri=$file_uri

# Now generate content using that file
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$GEMINI_API_KEY" \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{
      "contents": [{
        "parts":[
          {"text": "Can you add a few more lines to this poem?"},
          {"file_data":{"mime_type": "application/pdf", "file_uri": '$file_uri'}}]
        }]
       }' 2> /dev/null > response.json

cat response.json
echo

jq ".candidates[].content.parts[].text" response.json

チャット

Python

from google import genai
from google.genai import types

client = genai.Client()
# Pass initial history using the "history" argument
chat = client.chats.create(
    model="gemini-3.7-flash",
    history=[
        types.Content(role="user", parts=[types.Part(text="Hello")]),
        types.Content(
            role="model",
            parts=[
                types.Part(
                    text="Great to meet you. What would you like to know?"
                )
            ],
        ),
    ],
)
response = chat.send_message(message="I have 2 dogs in my house.")
print(response.text)
response = chat.send_message(message="How many paws are in my house?")
print(response.text)

Node.js

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });
const chat = ai.chats.create({
  model: "gemini-3.7-flash",
  history: [
    {
      role: "user",
      parts: [{ text: "Hello" }],
    },
    {
      role: "model",
      parts: [{ text: "Great to meet you. What would you like to know?" }],
    },
  ],
});

const response1 = await chat.sendMessage({
  message: "I have 2 dogs in my house.",
});
console.log("Chat response 1:", response1.text);

const response2 = await chat.sendMessage({
  message: "How many paws are in my house?",
});
console.log("Chat response 2:", response2.text);

Go

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}

// Pass initial history using the History field.
history := []*genai.Content{
	genai.NewContentFromText("Hello", genai.RoleUser),
	genai.NewContentFromText("Great to meet you. What would you like to know?", genai.RoleModel),
}

chat, err := client.Chats.Create(ctx, "gemini-3.7-flash", nil, history)
if err != nil {
	log.Fatal(err)
}

firstResp, err := chat.SendMessage(ctx, genai.Part{Text: "I have 2 dogs in my house."})
if err != nil {
	log.Fatal(err)
}
fmt.Println(firstResp.Text())

secondResp, err := chat.SendMessage(ctx, genai.Part{Text: "How many paws are in my house?"})
if err != nil {
	log.Fatal(err)
}
fmt.Println(secondResp.Text())

Shell

curl https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$GEMINI_API_KEY \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{
      "contents": [
        {"role":"user",
         "parts":[{
           "text": "Hello"}]},
        {"role": "model",
         "parts":[{
           "text": "Great to meet you. What would you like to know?"}]},
        {"role":"user",
         "parts":[{
           "text": "I have two dogs in my house. How many paws are in my house?"}]},
      ]
    }' 2> /dev/null | grep "text"

Java

Client client = new Client();

Content userContent = Content.fromParts(Part.fromText("Hello"));
Content modelContent =
        Content.builder()
                .role("model")
                .parts(
                        Collections.singletonList(
                                Part.fromText("Great to meet you. What would you like to know?")
                        )
                ).build();

Chat chat = client.chats.create(
        "gemini-3.7-flash",
        GenerateContentConfig.builder()
                .systemInstruction(userContent)
                .systemInstruction(modelContent)
                .build()
);

GenerateContentResponse response1 = chat.sendMessage("I have 2 dogs in my house.");
System.out.println(response1.text());

GenerateContentResponse response2 = chat.sendMessage("How many paws are in my house?");
System.out.println(response2.text());

キャッシュ

Python

from google import genai
from google.genai import types

client = genai.Client()
document = client.files.upload(file=media / "a11.txt")
model_name = "gemini-3.7-flash"

cache = client.caches.create(
    model=model_name,
    config=types.CreateCachedContentConfig(
        contents=[document],
        system_instruction="You are an expert analyzing transcripts.",
    ),
)
print(cache)

response = client.models.generate_content(
    model=model_name,
    contents="Please summarize this transcript",
    config=types.GenerateContentConfig(cached_content=cache.name),
)
print(response.text)

Node.js

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });
const filePath = path.join(media, "a11.txt");
const document = await ai.files.upload({
  file: filePath,
  config: { mimeType: "text/plain" },
});
console.log("Uploaded file name:", document.name);
const modelName = "gemini-3.7-flash";

const contents = [
  createUserContent(createPartFromUri(document.uri, document.mimeType)),
];

const cache = await ai.caches.create({
  model: modelName,
  config: {
    contents: contents,
    systemInstruction: "You are an expert analyzing transcripts.",
  },
});
console.log("Cache created:", cache);

const response = await ai.models.generateContent({
  model: modelName,
  contents: "Please summarize this transcript",
  config: { cachedContent: cache.name },
});
console.log("Response text:", response.text);

Go

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"), 
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}

modelName := "gemini-3.7-flash"
document, err := client.Files.UploadFromPath(
	ctx, 
	filepath.Join(getMedia(), "a11.txt"), 
	&genai.UploadFileConfig{
		MIMEType : "text/plain",
	},
)
if err != nil {
	log.Fatal(err)
}
parts := []*genai.Part{
	genai.NewPartFromURI(document.URI, document.MIMEType),
}
contents := []*genai.Content{
	genai.NewContentFromParts(parts, genai.RoleUser),
}
cache, err := client.Caches.Create(ctx, modelName, &genai.CreateCachedContentConfig{
	Contents: contents,
	SystemInstruction: genai.NewContentFromText(
		"You are an expert analyzing transcripts.", genai.RoleUser,
	),
})
if err != nil {
	log.Fatal(err)
}
fmt.Println("Cache created:")
fmt.Println(cache)

// Use the cache for generating content.
response, err := client.Models.GenerateContent(
	ctx,
	modelName,
	genai.Text("Please summarize this transcript"),
	&genai.GenerateContentConfig{
		CachedContent: cache.Name,
	},
)
if err != nil {
	log.Fatal(err)
}
printResponse(response)

チューニング済みモデル

Python

# With Gemini 2 we're launching a new SDK. See the following doc for details.
# https://ai.google.dev/gemini-api/docs/migrate

JSON モード

Python

from google import genai
from google.genai import types
from typing_extensions import TypedDict

class Recipe(TypedDict):
    recipe_name: str
    ingredients: list[str]

client = genai.Client()
result = client.models.generate_content(
    model="gemini-3.7-flash",
    contents="List a few popular cookie recipes.",
    config=types.GenerateContentConfig(
        response_mime_type="application/json", response_schema=list[Recipe]
    ),
)
print(result)

Node.js

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });
const response = await ai.models.generateContent({
  model: "gemini-3.7-flash",
  contents: "List a few popular cookie recipes.",
  config: {
    responseMimeType: "application/json",
    responseSchema: {
      type: "array",
      items: {
        type: "object",
        properties: {
          recipeName: { type: "string" },
          ingredients: { type: "array", items: { type: "string" } },
        },
        required: ["recipeName", "ingredients"],
      },
    },
  },
});
console.log(response.text);

Go

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"), 
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}

schema := &genai.Schema{
	Type: genai.TypeArray,
	Items: &genai.Schema{
		Type: genai.TypeObject,
		Properties: map[string]*genai.Schema{
			"recipe_name": {Type: genai.TypeString},
			"ingredients": {
				Type:  genai.TypeArray,
				Items: &genai.Schema{Type: genai.TypeString},
			},
		},
		Required: []string{"recipe_name"},
	},
}

config := &genai.GenerateContentConfig{
	ResponseMIMEType: "application/json",
	ResponseSchema:   schema,
}

response, err := client.Models.GenerateContent(
	ctx,
	"gemini-3.7-flash",
	genai.Text("List a few popular cookie recipes."),
	config,
)
if err != nil {
	log.Fatal(err)
}
printResponse(response)

Shell

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$GEMINI_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
    "contents": [{
      "parts":[
        {"text": "List 5 popular cookie recipes"}
        ]
    }],
    "generationConfig": {
        "response_mime_type": "application/json",
        "response_schema": {
          "type": "ARRAY",
          "items": {
            "type": "OBJECT",
            "properties": {
              "recipe_name": {"type":"STRING"},
            }
          }
        }
    }
}' 2> /dev/null | head

Java

Client client = new Client();

Schema recipeSchema = Schema.builder()
        .type(Array.class.getSimpleName())
        .items(Schema.builder()
                .type(Object.class.getSimpleName())
                .properties(
                        Map.of("recipe_name", Schema.builder()
                                        .type(String.class.getSimpleName())
                                        .build(),
                                "ingredients", Schema.builder()
                                        .type(Array.class.getSimpleName())
                                        .items(Schema.builder()
                                                .type(String.class.getSimpleName())
                                                .build())
                                        .build())
                )
                .required(List.of("recipe_name", "ingredients"))
                .build())
        .build();

GenerateContentConfig config =
        GenerateContentConfig.builder()
                .responseMimeType("application/json")
                .responseSchema(recipeSchema)
                .build();

GenerateContentResponse response =
        client.models.generateContent(
                "gemini-3.7-flash",
                "List a few popular cookie recipes.",
                config);

System.out.println(response.text());

コード実行

Python

from google import genai
from google.genai import types

client = genai.Client()
response = client.models.generate_content(
    model="gemini-3.7-flash",
    contents=(
        "Write and execute code that calculates the sum of the first 50 prime numbers. "
        "Ensure that only the executable code and its resulting output are generated."
    ),
)
# Each part may contain text, executable code, or an execution result.
for part in response.candidates[0].content.parts:
    print(part, "\n")

print("-" * 80)
# The .text accessor concatenates the parts into a markdown-formatted text.
print("\n", response.text)

Go

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}

response, err := client.Models.GenerateContent(
	ctx,
	"gemini-3.7-flash",
	genai.Text(
		`Write and execute code that calculates the sum of the first 50 prime numbers.
		 Ensure that only the executable code and its resulting output are generated.`,
	),
	&genai.GenerateContentConfig{},
)
if err != nil {
	log.Fatal(err)
}

// Print the response.
printResponse(response)

fmt.Println("--------------------------------------------------------------------------------")
fmt.Println(response.Text())

Java

Client client = new Client();

String prompt = """
        Write and execute code that calculates the sum of the first 50 prime numbers.
        Ensure that only the executable code and its resulting output are generated.
        """;

GenerateContentResponse response =
        client.models.generateContent(
                "gemini-3.7-flash",
                prompt,
                null);

for (Part part : response.candidates().get().getFirst().content().get().parts().get()) {
    System.out.println(part + "\n");
}

System.out.println("-".repeat(80));
System.out.println(response.text());

関数呼び出し

Python

from google import genai
from google.genai import types

client = genai.Client()

def add(a: float, b: float) -> float:
    """returns a + b."""
    return a + b

def subtract(a: float, b: float) -> float:
    """returns a - b."""
    return a - b

def multiply(a: float, b: float) -> float:
    """returns a * b."""
    return a * b

def divide(a: float, b: float) -> float:
    """returns a / b."""
    return a / b

# Create a chat session; function calling (via tools) is enabled in the config.
chat = client.chats.create(
    model="gemini-3.7-flash",
    config=types.GenerateContentConfig(tools=[add, subtract, multiply, divide]),
)
response = chat.send_message(
    message="I have 57 cats, each owns 44 mittens, how many mittens is that in total?"
)
print(response.text)

Go

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}
modelName := "gemini-3.7-flash"

// Create the function declarations for arithmetic operations.
addDeclaration := createArithmeticToolDeclaration("addNumbers", "Return the result of adding two numbers.")
subtractDeclaration := createArithmeticToolDeclaration("subtractNumbers", "Return the result of subtracting the second number from the first.")
multiplyDeclaration := createArithmeticToolDeclaration("multiplyNumbers", "Return the product of two numbers.")
divideDeclaration := createArithmeticToolDeclaration("divideNumbers", "Return the quotient of dividing the first number by the second.")

// Group the function declarations as a tool.
tools := []*genai.Tool{
	{
		FunctionDeclarations: []*genai.FunctionDeclaration{
			addDeclaration,
			subtractDeclaration,
			multiplyDeclaration,
			divideDeclaration,
		},
	},
}

// Create the content prompt.
contents := []*genai.Content{
	genai.NewContentFromText(
		"I have 57 cats, each owns 44 mittens, how many mittens is that in total?", genai.RoleUser,
	),
}

// Set up the generate content configuration with function calling enabled.
config := &genai.GenerateContentConfig{
	Tools: tools,
	ToolConfig: &genai.ToolConfig{
		FunctionCallingConfig: &genai.FunctionCallingConfig{
			// The mode equivalent to FunctionCallingConfigMode.ANY in JS.
			Mode: genai.FunctionCallingConfigModeAny,
		},
	},
}

genContentResp, err := client.Models.GenerateContent(ctx, modelName, contents, config)
if err != nil {
	log.Fatal(err)
}

// Assume the response includes a list of function calls.
if len(genContentResp.FunctionCalls()) == 0 {
	log.Println("No function call returned from the AI.")
	return nil
}
functionCall := genContentResp.FunctionCalls()[0]
log.Printf("Function call: %+v\n", functionCall)

// Marshal the Args map into JSON bytes.
argsMap, err := json.Marshal(functionCall.Args)
if err != nil {
	log.Fatal(err)
}

// Unmarshal the JSON bytes into the ArithmeticArgs struct.
var args ArithmeticArgs
if err := json.Unmarshal(argsMap, &args); err != nil {
	log.Fatal(err)
}

// Map the function name to the actual arithmetic function.
var result float64
switch functionCall.Name {
	case "addNumbers":
		result = add(args.FirstParam, args.SecondParam)
	case "subtractNumbers":
		result = subtract(args.FirstParam, args.SecondParam)
	case "multiplyNumbers":
		result = multiply(args.FirstParam, args.SecondParam)
	case "divideNumbers":
		result = divide(args.FirstParam, args.SecondParam)
	default:
		return fmt.Errorf("unimplemented function: %s", functionCall.Name)
}
log.Printf("Function result: %v\n", result)

// Prepare the final result message as content.
resultContents := []*genai.Content{
	genai.NewContentFromText("The final result is " + fmt.Sprintf("%v", result), genai.RoleUser),
}

// Use GenerateContent to send the final result.
finalResponse, err := client.Models.GenerateContent(ctx, modelName, resultContents, &genai.GenerateContentConfig{})
if err != nil {
	log.Fatal(err)
}

printResponse(finalResponse)

Node.js

  // Make sure to include the following import:
  // import {GoogleGenAI} from '@google/genai';
  const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });

  /**
   * The add function returns the sum of two numbers.
   * @param {number} a
   * @param {number} b
   * @returns {number}
   */
  function add(a, b) {
    return a + b;
  }

  /**
   * The subtract function returns the difference (a - b).
   * @param {number} a
   * @param {number} b
   * @returns {number}
   */
  function subtract(a, b) {
    return a - b;
  }

  /**
   * The multiply function returns the product of two numbers.
   * @param {number} a
   * @param {number} b
   * @returns {number}
   */
  function multiply(a, b) {
    return a * b;
  }

  /**
   * The divide function returns the quotient of a divided by b.
   * @param {number} a
   * @param {number} b
   * @returns {number}
   */
  function divide(a, b) {
    return a / b;
  }

  const addDeclaration = {
    name: "addNumbers",
    parameters: {
      type: "object",
      description: "Return the result of adding two numbers.",
      properties: {
        firstParam: {
          type: "number",
          description:
            "The first parameter which can be an integer or a floating point number.",
        },
        secondParam: {
          type: "number",
          description:
            "The second parameter which can be an integer or a floating point number.",
        },
      },
      required: ["firstParam", "secondParam"],
    },
  };

  const subtractDeclaration = {
    name: "subtractNumbers",
    parameters: {
      type: "object",
      description:
        "Return the result of subtracting the second number from the first.",
      properties: {
        firstParam: {
          type: "number",
          description: "The first parameter.",
        },
        secondParam: {
          type: "number",
          description: "The second parameter.",
        },
      },
      required: ["firstParam", "secondParam"],
    },
  };

  const multiplyDeclaration = {
    name: "multiplyNumbers",
    parameters: {
      type: "object",
      description: "Return the product of two numbers.",
      properties: {
        firstParam: {
          type: "number",
          description: "The first parameter.",
        },
        secondParam: {
          type: "number",
          description: "The second parameter.",
        },
      },
      required: ["firstParam", "secondParam"],
    },
  };

  const divideDeclaration = {
    name: "divideNumbers",
    parameters: {
      type: "object",
      description:
        "Return the quotient of dividing the first number by the second.",
      properties: {
        firstParam: {
          type: "number",
          description: "The first parameter.",
        },
        secondParam: {
          type: "number",
          description: "The second parameter.",
        },
      },
      required: ["firstParam", "secondParam"],
    },
  };

  // Step 1: Call generateContent with function calling enabled.
  const generateContentResponse = await ai.models.generateContent({
    model: "gemini-3.7-flash",
    contents:
      "I have 57 cats, each owns 44 mittens, how many mittens is that in total?",
    config: {
      toolConfig: {
        functionCallingConfig: {
          mode: FunctionCallingConfigMode.ANY,
        },
      },
      tools: [
        {
          functionDeclarations: [
            addDeclaration,
            subtractDeclaration,
            multiplyDeclaration,
            divideDeclaration,
          ],
        },
      ],
    },
  });

  // Step 2: Extract the function call.(
  // Assuming the response contains a 'functionCalls' array.
  const functionCall =
    generateContentResponse.functionCalls &&
    generateContentResponse.functionCalls[0];
  console.log(functionCall);

  // Parse the arguments.
  const args = functionCall.args;
  // Expected args format: { firstParam: number, secondParam: number }

  // Step 3: Invoke the actual function based on the function name.
  const functionMapping = {
    addNumbers: add,
    subtractNumbers: subtract,
    multiplyNumbers: multiply,
    divideNumbers: divide,
  };
  const func = functionMapping[functionCall.name];
  if (!func) {
    console.error("Unimplemented error:", functionCall.name);
    return generateContentResponse;
  }
  const resultValue = func(args.firstParam, args.secondParam);
  console.log("Function result:", resultValue);

  // Step 4: Use the chat API to send the result as the final answer.
  const chat = ai.chats.create({ model: "gemini-3.7-flash" });
  const chatResponse = await chat.sendMessage({
    message: "The final result is " + resultValue,
  });
  console.log(chatResponse.text);
  return chatResponse;
}

Shell


cat > tools.json << EOF
{
  "function_declarations": [
    {
      "name": "enable_lights",
      "description": "Turn on the lighting system."
    },
    {
      "name": "set_light_color",
      "description": "Set the light color. Lights must be enabled for this to work.",
      "parameters": {
        "type": "object",
        "properties": {
          "rgb_hex": {
            "type": "string",
            "description": "The light color as a 6-digit hex string, e.g. ff0000 for red."
          }
        },
        "required": [
          "rgb_hex"
        ]
      }
    },
    {
      "name": "stop_lights",
      "description": "Turn off the lighting system."
    }
  ]
} 
EOF

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$GEMINI_API_KEY" \
  -H 'Content-Type: application/json' \
  -d @<(echo '
  {
    "system_instruction": {
      "parts": {
        "text": "You are a helpful lighting system bot. You can turn lights on and off, and you can set the color. Do not perform any other tasks."
      }
    },
    "tools": ['$(cat tools.json)'],

    "tool_config": {
      "function_calling_config": {"mode": "auto"}
    },

    "contents": {
      "role": "user",
      "parts": {
        "text": "Turn on the lights please."
      }
    }
  }
') 2>/dev/null |sed -n '/"content"/,/"finishReason"/p'

Java

Client client = new Client();

FunctionDeclaration addFunction =
        FunctionDeclaration.builder()
                .name("addNumbers")
                .parameters(
                        Schema.builder()
                                .type("object")
                                .properties(Map.of(
                                        "firstParam", Schema.builder().type("number").description("First number").build(),
                                        "secondParam", Schema.builder().type("number").description("Second number").build()))
                                .required(Arrays.asList("firstParam", "secondParam"))
                                .build())
                .build();

FunctionDeclaration subtractFunction =
        FunctionDeclaration.builder()
                .name("subtractNumbers")
                .parameters(
                        Schema.builder()
                                .type("object")
                                .properties(Map.of(
                                        "firstParam", Schema.builder().type("number").description("First number").build(),
                                        "secondParam", Schema.builder().type("number").description("Second number").build()))
                                .required(Arrays.asList("firstParam", "secondParam"))
                                .build())
                .build();

FunctionDeclaration multiplyFunction =
        FunctionDeclaration.builder()
                .name("multiplyNumbers")
                .parameters(
                        Schema.builder()
                                .type("object")
                                .properties(Map.of(
                                        "firstParam", Schema.builder().type("number").description("First number").build(),
                                        "secondParam", Schema.builder().type("number").description("Second number").build()))
                                .required(Arrays.asList("firstParam", "secondParam"))
                                .build())
                .build();

FunctionDeclaration divideFunction =
        FunctionDeclaration.builder()
                .name("divideNumbers")
                .parameters(
                        Schema.builder()
                                .type("object")
                                .properties(Map.of(
                                        "firstParam", Schema.builder().type("number").description("First number").build(),
                                        "secondParam", Schema.builder().type("number").description("Second number").build()))
                                .required(Arrays.asList("firstParam", "secondParam"))
                                .build())
                .build();

GenerateContentConfig config = GenerateContentConfig.builder()
        .toolConfig(ToolConfig.builder().functionCallingConfig(
                FunctionCallingConfig.builder().mode("ANY").build()
        ).build())
        .tools(
                Collections.singletonList(
                        Tool.builder().functionDeclarations(
                                Arrays.asList(
                                        addFunction,
                                        subtractFunction,
                                        divideFunction,
                                        multiplyFunction
                                )
                        ).build()

                )
        )
        .build();

GenerateContentResponse response =
        client.models.generateContent(
                "gemini-3.7-flash",
                "I have 57 cats, each owns 44 mittens, how many mittens is that in total?",
                config);


if (response.functionCalls() == null || response.functionCalls().isEmpty()) {
    System.err.println("No function call received");
    return null;
}

var functionCall = response.functionCalls().getFirst();
String functionName = functionCall.name().get();
var arguments = functionCall.args();

Map<String, BiFunction<Double, Double, Double>> functionMapping = new HashMap<>();
functionMapping.put("addNumbers", (a, b) -> a + b);
functionMapping.put("subtractNumbers", (a, b) -> a - b);
functionMapping.put("multiplyNumbers", (a, b) -> a * b);
functionMapping.put("divideNumbers", (a, b) -> b != 0 ? a / b : Double.NaN);

BiFunction<Double, Double, Double> function = functionMapping.get(functionName);

Number firstParam = (Number) arguments.get().get("firstParam");
Number secondParam = (Number) arguments.get().get("secondParam");
Double result = function.apply(firstParam.doubleValue(), secondParam.doubleValue());

System.out.println(result);

生成構成

Python

from google import genai
from google.genai import types

client = genai.Client()
response = client.models.generate_content(
    model="gemini-3.7-flash",
    contents="Tell me a story about a magic backpack.",
    config=types.GenerateContentConfig(
        candidate_count=1,
        stop_sequences=["x"],
        max_output_tokens=20,
        temperature=1.0,
    ),
)
print(response.text)

Node.js

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });

const response = await ai.models.generateContent({
  model: "gemini-3.7-flash",
  contents: "Tell me a story about a magic backpack.",
  config: {
    candidateCount: 1,
    stopSequences: ["x"],
    maxOutputTokens: 20,
    temperature: 1.0,
  },
});

console.log(response.text);

Go

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}

// Create local variables for parameters.
candidateCount := int32(1)
maxOutputTokens := int32(20)
temperature := float32(1.0)

response, err := client.Models.GenerateContent(
	ctx,
	"gemini-3.7-flash",
	genai.Text("Tell me a story about a magic backpack."),
	&genai.GenerateContentConfig{
		CandidateCount:  candidateCount,
		StopSequences:   []string{"x"},
		MaxOutputTokens: maxOutputTokens,
		Temperature:     &temperature,
	},
)
if err != nil {
	log.Fatal(err)
}

printResponse(response)

Shell

curl https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$GEMINI_API_KEY \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{
        "contents": [{
            "parts":[
                {"text": "Explain how AI works"}
            ]
        }],
        "generationConfig": {
            "stopSequences": [
                "Title"
            ],
            "temperature": 1.0,
            "maxOutputTokens": 800,
            "topP": 0.8,
            "topK": 10
        }
    }'  2> /dev/null | grep "text"

Java

Client client = new Client();

GenerateContentConfig config =
        GenerateContentConfig.builder()
                .candidateCount(1)
                .stopSequences(List.of("x"))
                .maxOutputTokens(20)
                .temperature(1.0F)
                .build();

GenerateContentResponse response =
        client.models.generateContent(
                "gemini-3.7-flash",
                "Tell me a story about a magic backpack.",
                config);

System.out.println(response.text());

安全性設定

Python

from google import genai
from google.genai import types

client = genai.Client()
unsafe_prompt = (
    "I support Martians Soccer Club and I think Jupiterians Football Club sucks! "
    "Write a ironic phrase about them including expletives."
)
response = client.models.generate_content(
    model="gemini-3.7-flash",
    contents=unsafe_prompt,
    config=types.GenerateContentConfig(
        safety_settings=[
            types.SafetySetting(
                category="HARM_CATEGORY_HATE_SPEECH",
                threshold="BLOCK_MEDIUM_AND_ABOVE",
            ),
            types.SafetySetting(
                category="HARM_CATEGORY_HARASSMENT", threshold="BLOCK_ONLY_HIGH"
            ),
        ]
    ),
)
try:
    print(response.text)
except Exception:
    print("No information generated by the model.")

print(response.candidates[0].safety_ratings)

Node.js

  // Make sure to include the following import:
  // import {GoogleGenAI} from '@google/genai';
  const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });
  const unsafePrompt =
    "I support Martians Soccer Club and I think Jupiterians Football Club sucks! Write a ironic phrase about them including expletives.";

  const response = await ai.models.generateContent({
    model: "gemini-3.7-flash",
    contents: unsafePrompt,
    config: {
      safetySettings: [
        {
          category: "HARM_CATEGORY_HATE_SPEECH",
          threshold: "BLOCK_MEDIUM_AND_ABOVE",
        },
        {
          category: "HARM_CATEGORY_HARASSMENT",
          threshold: "BLOCK_ONLY_HIGH",
        },
      ],
    },
  });

  try {
    console.log("Generated text:", response.text);
  } catch (error) {
    console.log("No information generated by the model.");
  }
  console.log("Safety ratings:", response.candidates[0].safetyRatings);
  return response;
}

Go

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}

unsafePrompt := "I support Martians Soccer Club and I think Jupiterians Football Club sucks! " +
	"Write a ironic phrase about them including expletives."

config := &genai.GenerateContentConfig{
	SafetySettings: []*genai.SafetySetting{
		{
			Category:  "HARM_CATEGORY_HATE_SPEECH",
			Threshold: "BLOCK_MEDIUM_AND_ABOVE",
		},
		{
			Category:  "HARM_CATEGORY_HARASSMENT",
			Threshold: "BLOCK_ONLY_HIGH",
		},
	},
}
contents := []*genai.Content{
	genai.NewContentFromText(unsafePrompt, genai.RoleUser),
}
response, err := client.Models.GenerateContent(ctx, "gemini-3.7-flash", contents, config)
if err != nil {
	log.Fatal(err)
}

// Print the generated text.
text := response.Text()
fmt.Println("Generated text:", text)

// Print the and safety ratings from the first candidate.
if len(response.Candidates) > 0 {
	fmt.Println("Finish reason:", response.Candidates[0].FinishReason)
	safetyRatings, err := json.MarshalIndent(response.Candidates[0].SafetyRatings, "", "  ")
	if err != nil {
		return err
	}
	fmt.Println("Safety ratings:", string(safetyRatings))
} else {
	fmt.Println("No candidate returned.")
}

Shell

echo '{
    "safetySettings": [
        {"category": "HARM_CATEGORY_HARASSMENT", "threshold": "BLOCK_ONLY_HIGH"},
        {"category": "HARM_CATEGORY_HATE_SPEECH", "threshold": "BLOCK_MEDIUM_AND_ABOVE"}
    ],
    "contents": [{
        "parts":[{
            "text": "'I support Martians Soccer Club and I think Jupiterians Football Club sucks! Write a ironic phrase about them.'"}]}]}' > request.json

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$GEMINI_API_KEY" \
    -H 'Content-Type: application/json' \
    -X POST \
    -d @request.json 2> /dev/null

Java

Client client = new Client();

String unsafePrompt = """
         I support Martians Soccer Club and I think Jupiterians Football Club sucks!
         Write a ironic phrase about them including expletives.
        """;

GenerateContentConfig config =
        GenerateContentConfig.builder()
                .safetySettings(Arrays.asList(
                        SafetySetting.builder()
                                .category("HARM_CATEGORY_HATE_SPEECH")
                                .threshold("BLOCK_MEDIUM_AND_ABOVE")
                                .build(),
                        SafetySetting.builder()
                                .category("HARM_CATEGORY_HARASSMENT")
                                .threshold("BLOCK_ONLY_HIGH")
                                .build()
                )).build();

GenerateContentResponse response =
        client.models.generateContent(
                "gemini-3.7-flash",
                unsafePrompt,
                config);

try {
    System.out.println(response.text());
} catch (Exception e) {
    System.out.println("No information generated by the model");
}

System.out.println(response.candidates().get().getFirst().safetyRatings());

システム指示

Python

from google import genai
from google.genai import types

client = genai.Client()
response = client.models.generate_content(
    model="gemini-3.7-flash",
    contents="Good morning! How are you?",
    config=types.GenerateContentConfig(
        system_instruction="You are a cat. Your name is Neko."
    ),
)
print(response.text)

Node.js

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });
const response = await ai.models.generateContent({
  model: "gemini-3.7-flash",
  contents: "Good morning! How are you?",
  config: {
    systemInstruction: "You are a cat. Your name is Neko.",
  },
});
console.log(response.text);

Go

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}

// Construct the user message contents.
contents := []*genai.Content{
	genai.NewContentFromText("Good morning! How are you?", genai.RoleUser),
}

// Set the system instruction as a *genai.Content.
config := &genai.GenerateContentConfig{
	SystemInstruction: genai.NewContentFromText("You are a cat. Your name is Neko.", genai.RoleUser),
}

response, err := client.Models.GenerateContent(ctx, "gemini-3.7-flash", contents, config)
if err != nil {
	log.Fatal(err)
}
printResponse(response)

Shell

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:generateContent?key=$GEMINI_API_KEY" \
-H 'Content-Type: application/json' \
-d '{ "system_instruction": {
    "parts":
      { "text": "You are a cat. Your name is Neko."}},
    "contents": {
      "parts": {
        "text": "Hello there"}}}'

Java

Client client = new Client();

Part textPart = Part.builder().text("You are a cat. Your name is Neko.").build();

Content content = Content.builder().role("system").parts(ImmutableList.of(textPart)).build();

GenerateContentConfig config = GenerateContentConfig.builder()
        .systemInstruction(content)
        .build();

GenerateContentResponse response =
        client.models.generateContent(
                "gemini-3.7-flash",
                "Good morning! How are you?",
                config);

System.out.println(response.text());

レスポンスの本文

成功した場合、レスポンスの本文には GenerateContentResponse のインスタンスが含まれます。

メソッド: models.streamGenerateContent

入力 GenerateContentRequest が指定されたモデルからストリーミング レスポンスを生成します。

エンドポイント

post https://generativelanguage.googleapis.com/v1beta/{model=models/*}:streamGenerateContent

パスパラメータ

model string

必須。補完の生成に使用する Model の名前。

形式: models/{model}。形式は models/{model} です。

リクエストの本文

リクエストの本文には、次の構造のデータが含まれます。

フィールド
contents[] object (Content)

必須。モデルとの現在の会話の内容。

シングルターン クエリの場合、単一のインスタンスです。チャットなどのマルチターン クエリの場合、これは会話履歴と最新のリクエストを含む繰り返しフィールドです。

tools[] object (Tool)

省略可。Model が次のレスポンスの生成に使用できる Tools のリスト。

Tool は、システムが外部システムと対話して、Model の知識や範囲外のアクションまたは一連のアクションを実行できるようにするコードです。サポートされている ToolFunctioncodeExecution です。詳細については、関数呼び出しコード実行のガイドをご覧ください。

toolConfig object (ToolConfig)

省略可。リクエストで指定された Tool のツール構成。使用例については、関数呼び出しガイドをご覧ください。

safetySettings[] object (SafetySetting)

省略可。安全でないコンテンツをブロックするための、一意の SafetySetting インスタンスのリスト。

この条件は GenerateContentRequest.contentsGenerateContentResponse.candidates に適用されます。SafetyCategory タイプごとに設定は 1 つだけにする必要があります。API は、これらの設定で設定されたしきい値を満たさないコンテンツとレスポンスをブロックします。このリストは、safetySettings で指定された各 SafetyCategory のデフォルト設定をオーバーライドします。リストに指定された特定の SafetyCategory に対応する SafetySetting がない場合、API はそのカテゴリのデフォルトの安全性設定を使用します。有害カテゴリ HARM_CATEGORY_HATE_SPEECH、HARM_CATEGORY_SEXUALLY_EXPLICIT、HARM_CATEGORY_DANGEROUS_CONTENT、HARM_CATEGORY_HARASSMENT、HARM_CATEGORY_CIVIC_INTEGRITY、HARM_CATEGORY_JAILBREAK がサポートされています。利用可能な安全設定の詳細については、ガイドをご覧ください。AI アプリケーションに安全性の考慮事項を組み込む方法については、安全に関するガイダンスもご覧ください。

systemInstruction object (Content)

省略可。デベロッパーがシステム指示を設定します。現在、テキストのみ。

generationConfig object (GenerationConfig)

省略可。モデルの生成と出力の構成オプション。

cachedContent string

省略可。予測を提供するためにコンテキストとして使用される、キャッシュに保存されたコンテンツの名前。形式: cachedContents/{cachedContent}

serviceTier enum (ServiceTier)

省略可。リクエストのサービス階層。

store boolean

省略可。特定のリクエストのロギング動作を構成します。設定すると、プロジェクト レベルのロギング構成よりも優先されます。

リクエスト例

テキスト

Python

from google import genai

client = genai.Client()
response = client.models.generate_content_stream(
    model="gemini-3.7-flash", contents="Write a story about a magic backpack."
)
for chunk in response:
    print(chunk.text)
    print("_" * 80)

Node.js

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });

const response = await ai.models.generateContentStream({
  model: "gemini-3.7-flash",
  contents: "Write a story about a magic backpack.",
});
let text = "";
for await (const chunk of response) {
  console.log(chunk.text);
  text += chunk.text;
}

Go

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}
contents := []*genai.Content{
	genai.NewContentFromText("Write a story about a magic backpack.", genai.RoleUser),
}
for response, err := range client.Models.GenerateContentStream(
	ctx,
	"gemini-3.7-flash",
	contents,
	nil,
) {
	if err != nil {
		log.Fatal(err)
	}
	fmt.Print(response.Candidates[0].Content.Parts[0].Text)
}

Shell

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:streamGenerateContent?alt=sse&key=${GEMINI_API_KEY}" \
        -H 'Content-Type: application/json' \
        --no-buffer \
        -d '{ "contents":[{"parts":[{"text": "Write a story about a magic backpack."}]}]}'

Java

Client client = new Client();

ResponseStream<GenerateContentResponse> responseStream =
        client.models.generateContentStream(
                "gemini-3.7-flash",
                "Write a story about a magic backpack.",
                null);

StringBuilder response = new StringBuilder();
for (GenerateContentResponse res : responseStream) {
    System.out.print(res.text());
    response.append(res.text());
}

responseStream.close();

画像

Python

from google import genai
import PIL.Image

client = genai.Client()
organ = PIL.Image.open(media / "organ.jpg")
response = client.models.generate_content_stream(
    model="gemini-3.7-flash", contents=["Tell me about this instrument", organ]
)
for chunk in response:
    print(chunk.text)
    print("_" * 80)

Node.js

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });

const organ = await ai.files.upload({
  file: path.join(media, "organ.jpg"),
});

const response = await ai.models.generateContentStream({
  model: "gemini-3.7-flash",
  contents: [
    createUserContent([
      "Tell me about this instrument", 
      createPartFromUri(organ.uri, organ.mimeType)
    ]),
  ],
});
let text = "";
for await (const chunk of response) {
  console.log(chunk.text);
  text += chunk.text;
}

Go

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}
file, err := client.Files.UploadFromPath(
	ctx, 
	filepath.Join(getMedia(), "organ.jpg"), 
	&genai.UploadFileConfig{
		MIMEType : "image/jpeg",
	},
)
if err != nil {
	log.Fatal(err)
}
parts := []*genai.Part{
	genai.NewPartFromText("Tell me about this instrument"),
	genai.NewPartFromURI(file.URI, file.MIMEType),
}
contents := []*genai.Content{
	genai.NewContentFromParts(parts, genai.RoleUser),
}
for response, err := range client.Models.GenerateContentStream(
	ctx,
	"gemini-3.7-flash",
	contents,
	nil,
) {
	if err != nil {
		log.Fatal(err)
	}
	fmt.Print(response.Candidates[0].Content.Parts[0].Text)
}

Shell

cat > "$TEMP_JSON" << EOF
{
  "contents": [{
    "parts":[
      {"text": "Tell me about this instrument"},
      {
        "inline_data": {
          "mime_type":"image/jpeg",
          "data": "$(cat "$TEMP_B64")"
        }
      }
    ]
  }]
}
EOF

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:streamGenerateContent?alt=sse&key=$GEMINI_API_KEY" \
    -H 'Content-Type: application/json' \
    -X POST \
    -d "@$TEMP_JSON" 2> /dev/null

Java

Client client = new Client();

String path = media_path + "organ.jpg";
byte[] imageData = Files.readAllBytes(Paths.get(path));

Content content =
        Content.fromParts(
                Part.fromText("Tell me about this instrument."),
                Part.fromBytes(imageData, "image/jpeg"));


ResponseStream<GenerateContentResponse> responseStream =
        client.models.generateContentStream(
                "gemini-3.7-flash",
                content,
                null);

StringBuilder response = new StringBuilder();
for (GenerateContentResponse res : responseStream) {
    System.out.print(res.text());
    response.append(res.text());
}

responseStream.close();

音声

Python

from google import genai

client = genai.Client()
sample_audio = client.files.upload(file=media / "sample.mp3")
response = client.models.generate_content_stream(
    model="gemini-3.7-flash",
    contents=["Give me a summary of this audio file.", sample_audio],
)
for chunk in response:
    print(chunk.text)
    print("_" * 80)

Go

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}

file, err := client.Files.UploadFromPath(
	ctx, 
	filepath.Join(getMedia(), "sample.mp3"), 
	&genai.UploadFileConfig{
		MIMEType : "audio/mpeg",
	},
)
if err != nil {
	log.Fatal(err)
}

parts := []*genai.Part{
	genai.NewPartFromText("Give me a summary of this audio file."),
	genai.NewPartFromURI(file.URI, file.MIMEType),
}

contents := []*genai.Content{
	genai.NewContentFromParts(parts, genai.RoleUser),
}

for result, err := range client.Models.GenerateContentStream(
	ctx,
	"gemini-3.7-flash",
	contents,
	nil,
) {
	if err != nil {
		log.Fatal(err)
	}
	fmt.Print(result.Candidates[0].Content.Parts[0].Text)
}

Shell

# Use File API to upload audio data to API request.
MIME_TYPE=$(file -b --mime-type "${AUDIO_PATH}")
NUM_BYTES=$(wc -c < "${AUDIO_PATH}")
DISPLAY_NAME=AUDIO

tmp_header_file=upload-header.tmp

# Initial resumable request defining metadata.
# The upload url is in the response headers dump them to a file.
curl "${BASE_URL}/upload/v1beta/files?key=${GEMINI_API_KEY}" \
  -D upload-header.tmp \
  -H "X-Goog-Upload-Protocol: resumable" \
  -H "X-Goog-Upload-Command: start" \
  -H "X-Goog-Upload-Header-Content-Length: ${NUM_BYTES}" \
  -H "X-Goog-Upload-Header-Content-Type: ${MIME_TYPE}" \
  -H "Content-Type: application/json" \
  -d "{'file': {'display_name': '${DISPLAY_NAME}'}}" 2> /dev/null

upload_url=$(grep -i "x-goog-upload-url: " "${tmp_header_file}" | cut -d" " -f2 | tr -d "\r")
rm "${tmp_header_file}"

# Upload the actual bytes.
curl "${upload_url}" \
  -H "Content-Length: ${NUM_BYTES}" \
  -H "X-Goog-Upload-Offset: 0" \
  -H "X-Goog-Upload-Command: upload, finalize" \
  --data-binary "@${AUDIO_PATH}" 2> /dev/null > file_info.json

file_uri=$(jq ".file.uri" file_info.json)
echo file_uri=$file_uri

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:streamGenerateContent?alt=sse&key=$GEMINI_API_KEY" \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{
      "contents": [{
        "parts":[
          {"text": "Please describe this file."},
          {"file_data":{"mime_type": "audio/mpeg", "file_uri": '$file_uri'}}]
        }]
       }' 2> /dev/null > response.json

cat response.json
echo

動画

Python

from google import genai
import time

client = genai.Client()
# Video clip (CC BY 3.0) from https://peach.blender.org/download/
myfile = client.files.upload(file=media / "Big_Buck_Bunny.mp4")
print(f"{myfile=}")

# Poll until the video file is completely processed (state becomes ACTIVE).
while not myfile.state or myfile.state.name != "ACTIVE":
    print("Processing video...")
    print("File state:", myfile.state)
    time.sleep(5)
    myfile = client.files.get(name=myfile.name)

response = client.models.generate_content_stream(
    model="gemini-3.7-flash", contents=[myfile, "Describe this video clip"]
)
for chunk in response:
    print(chunk.text)
    print("_" * 80)

Node.js

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });

let video = await ai.files.upload({
  file: path.join(media, 'Big_Buck_Bunny.mp4'),
});

// Poll until the video file is completely processed (state becomes ACTIVE).
while (!video.state || video.state.toString() !== 'ACTIVE') {
  console.log('Processing video...');
  console.log('File state: ', video.state);
  await sleep(5000);
  video = await ai.files.get({name: video.name});
}

const response = await ai.models.generateContentStream({
  model: "gemini-3.7-flash",
  contents: [
    createUserContent([
      "Describe this video clip",
      createPartFromUri(video.uri, video.mimeType),
    ]),
  ],
});
let text = "";
for await (const chunk of response) {
  console.log(chunk.text);
  text += chunk.text;
}

Go

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}

file, err := client.Files.UploadFromPath(
	ctx, 
	filepath.Join(getMedia(), "Big_Buck_Bunny.mp4"), 
	&genai.UploadFileConfig{
		MIMEType : "video/mp4",
	},
)
if err != nil {
	log.Fatal(err)
}

// Poll until the video file is completely processed (state becomes ACTIVE).
for file.State == genai.FileStateUnspecified || file.State != genai.FileStateActive {
	fmt.Println("Processing video...")
	fmt.Println("File state:", file.State)
	time.Sleep(5 * time.Second)

	file, err = client.Files.Get(ctx, file.Name, nil)
	if err != nil {
		log.Fatal(err)
	}
}

parts := []*genai.Part{
	genai.NewPartFromText("Describe this video clip"),
	genai.NewPartFromURI(file.URI, file.MIMEType),
}

contents := []*genai.Content{
	genai.NewContentFromParts(parts, genai.RoleUser),
}

for result, err := range client.Models.GenerateContentStream(
	ctx,
	"gemini-3.7-flash",
	contents,
	nil,
) {
	if err != nil {
		log.Fatal(err)
	}
	fmt.Print(result.Candidates[0].Content.Parts[0].Text)
}

Shell

# Use File API to upload audio data to API request.
MIME_TYPE=$(file -b --mime-type "${VIDEO_PATH}")
NUM_BYTES=$(wc -c < "${VIDEO_PATH}")
DISPLAY_NAME=VIDEO_PATH

# Initial resumable request defining metadata.
# The upload url is in the response headers dump them to a file.
curl "${BASE_URL}/upload/v1beta/files?key=${GEMINI_API_KEY}" \
  -D upload-header.tmp \
  -H "X-Goog-Upload-Protocol: resumable" \
  -H "X-Goog-Upload-Command: start" \
  -H "X-Goog-Upload-Header-Content-Length: ${NUM_BYTES}" \
  -H "X-Goog-Upload-Header-Content-Type: ${MIME_TYPE}" \
  -H "Content-Type: application/json" \
  -d "{'file': {'display_name': '${DISPLAY_NAME}'}}" 2> /dev/null

upload_url=$(grep -i "x-goog-upload-url: " "${tmp_header_file}" | cut -d" " -f2 | tr -d "\r")
rm "${tmp_header_file}"

# Upload the actual bytes.
curl "${upload_url}" \
  -H "Content-Length: ${NUM_BYTES}" \
  -H "X-Goog-Upload-Offset: 0" \
  -H "X-Goog-Upload-Command: upload, finalize" \
  --data-binary "@${VIDEO_PATH}" 2> /dev/null > file_info.json

file_uri=$(jq ".file.uri" file_info.json)
echo file_uri=$file_uri

state=$(jq ".file.state" file_info.json)
echo state=$state

while [[ "($state)" = *"PROCESSING"* ]];
do
  echo "Processing video..."
  sleep 5
  # Get the file of interest to check state
  curl https://generativelanguage.googleapis.com/v1beta/files/$name > file_info.json
  state=$(jq ".file.state" file_info.json)
done

curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:streamGenerateContent?alt=sse&key=$GEMINI_API_KEY" \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{
      "contents": [{
        "parts":[
          {"text": "Please describe this file."},
          {"file_data":{"mime_type": "video/mp4", "file_uri": '$file_uri'}}]
        }]
       }' 2> /dev/null > response.json

cat response.json
echo

PDF

Python

from google import genai

client = genai.Client()
sample_pdf = client.files.upload(file=media / "test.pdf")
response = client.models.generate_content_stream(
    model="gemini-3.7-flash",
    contents=["Give me a summary of this document:", sample_pdf],
)

for chunk in response:
    print(chunk.text)
    print("_" * 80)

Go

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}

file, err := client.Files.UploadFromPath(
	ctx, 
	filepath.Join(getMedia(), "test.pdf"), 
	&genai.UploadFileConfig{
		MIMEType : "application/pdf",
	},
)
if err != nil {
	log.Fatal(err)
}

parts := []*genai.Part{
	genai.NewPartFromText("Give me a summary of this document:"),
	genai.NewPartFromURI(file.URI, file.MIMEType),
}

contents := []*genai.Content{
	genai.NewContentFromParts(parts, genai.RoleUser),
}

for result, err := range client.Models.GenerateContentStream(
	ctx,
	"gemini-3.7-flash",
	contents,
	nil,
) {
	if err != nil {
		log.Fatal(err)
	}
	fmt.Print(result.Candidates[0].Content.Parts[0].Text)
}

Shell

MIME_TYPE=$(file -b --mime-type "${PDF_PATH}")
NUM_BYTES=$(wc -c < "${PDF_PATH}")
DISPLAY_NAME=TEXT


echo $MIME_TYPE
tmp_header_file=upload-header.tmp

# Initial resumable request defining metadata.
# The upload url is in the response headers dump them to a file.
curl "${BASE_URL}/upload/v1beta/files?key=${GEMINI_API_KEY}" \
  -D upload-header.tmp \
  -H "X-Goog-Upload-Protocol: resumable" \
  -H "X-Goog-Upload-Command: start" \
  -H "X-Goog-Upload-Header-Content-Length: ${NUM_BYTES}" \
  -H "X-Goog-Upload-Header-Content-Type: ${MIME_TYPE}" \
  -H "Content-Type: application/json" \
  -d "{'file': {'display_name': '${DISPLAY_NAME}'}}" 2> /dev/null

upload_url=$(grep -i "x-goog-upload-url: " "${tmp_header_file}" | cut -d" " -f2 | tr -d "\r")
rm "${tmp_header_file}"

# Upload the actual bytes.
curl "${upload_url}" \
  -H "Content-Length: ${NUM_BYTES}" \
  -H "X-Goog-Upload-Offset: 0" \
  -H "X-Goog-Upload-Command: upload, finalize" \
  --data-binary "@${PDF_PATH}" 2> /dev/null > file_info.json

file_uri=$(jq ".file.uri" file_info.json)
echo file_uri=$file_uri

# Now generate content using that file
curl "https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:streamGenerateContent?alt=sse&key=$GEMINI_API_KEY" \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{
      "contents": [{
        "parts":[
          {"text": "Can you add a few more lines to this poem?"},
          {"file_data":{"mime_type": "application/pdf", "file_uri": '$file_uri'}}]
        }]
       }' 2> /dev/null > response.json

cat response.json
echo

チャット

Python

from google import genai
from google.genai import types

client = genai.Client()
chat = client.chats.create(
    model="gemini-3.7-flash",
    history=[
        types.Content(role="user", parts=[types.Part(text="Hello")]),
        types.Content(
            role="model",
            parts=[
                types.Part(
                    text="Great to meet you. What would you like to know?"
                )
            ],
        ),
    ],
)
response = chat.send_message_stream(message="I have 2 dogs in my house.")
for chunk in response:
    print(chunk.text)
    print("_" * 80)
response = chat.send_message_stream(message="How many paws are in my house?")
for chunk in response:
    print(chunk.text)
    print("_" * 80)

print(chat.get_history())

Node.js

// Make sure to include the following import:
// import {GoogleGenAI} from '@google/genai';
const ai = new GoogleGenAI({ apiKey: process.env.GEMINI_API_KEY });
const chat = ai.chats.create({
  model: "gemini-3.7-flash",
  history: [
    {
      role: "user",
      parts: [{ text: "Hello" }],
    },
    {
      role: "model",
      parts: [{ text: "Great to meet you. What would you like to know?" }],
    },
  ],
});

console.log("Streaming response for first message:");
const stream1 = await chat.sendMessageStream({
  message: "I have 2 dogs in my house.",
});
for await (const chunk of stream1) {
  console.log(chunk.text);
  console.log("_".repeat(80));
}

console.log("Streaming response for second message:");
const stream2 = await chat.sendMessageStream({
  message: "How many paws are in my house?",
});
for await (const chunk of stream2) {
  console.log(chunk.text);
  console.log("_".repeat(80));
}

console.log(chat.getHistory());

Go

ctx := context.Background()
client, err := genai.NewClient(ctx, &genai.ClientConfig{
	APIKey:  os.Getenv("GEMINI_API_KEY"),
	Backend: genai.BackendGeminiAPI,
})
if err != nil {
	log.Fatal(err)
}

history := []*genai.Content{
	genai.NewContentFromText("Hello", genai.RoleUser),
	genai.NewContentFromText("Great to meet you. What would you like to know?", genai.RoleModel),
}
chat, err := client.Chats.Create(ctx, "gemini-3.7-flash", nil, history)
if err != nil {
	log.Fatal(err)
}

for chunk, err := range chat.SendMessageStream(ctx, genai.Part{Text: "I have 2 dogs in my house."}) {
	if err != nil {
		log.Fatal(err)
	}
	fmt.Println(chunk.Text())
	fmt.Println(strings.Repeat("_", 64))
}

for chunk, err := range chat.SendMessageStream(ctx, genai.Part{Text: "How many paws are in my house?"}) {
	if err != nil {
		log.Fatal(err)
	}
	fmt.Println(chunk.Text())
	fmt.Println(strings.Repeat("_", 64))
}

fmt.Println(chat.History(false))

Shell

curl https://generativelanguage.googleapis.com/v1beta/models/gemini-2.0-flash:streamGenerateContent?alt=sse&key=$GEMINI_API_KEY \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{
      "contents": [
        {"role":"user",
         "parts":[{
           "text": "Hello"}]},
        {"role": "model",
         "parts":[{
           "text": "Great to meet you. What would you like to know?"}]},
        {"role":"user",
         "parts":[{
           "text": "I have two dogs in my house. How many paws are in my house?"}]},
      ]
    }' 2> /dev/null | grep "text"

レスポンスの本文

成功した場合、レスポンスの本文には GenerateContentResponse インスタンスのストリームが含まれます。

GenerateContentResponse

複数の候補レスポンスをサポートするモデルからのレスポンス。

安全スコアとコンテンツ フィルタリングは、GenerateContentResponse.prompt_feedback のプロンプトと、finishReasonsafetyRatings の各候補の両方について報告されます。API は次の処理を行います。- リクエストされた候補をすべて返すか、1 つも返さない - プロンプトに問題があった場合にのみ、候補をまったく返さない(promptFeedback を確認) - 各候補に関するフィードバックを finishReasonsafetyRatings で報告する。

フィールド
candidates[] object (Candidate)

モデルからの候補レスポンス。

promptFeedback object (PromptFeedback)

コンテンツ フィルタに関連するプロンプトのフィードバックを返します。

usageMetadata object (UsageMetadata)

出力専用。生成リクエストのトークン使用量に関するメタデータ。

modelVersion string

出力専用。レスポンスの生成に使用されたモデル バージョン。

responseId string

出力専用。responseId は各レスポンスの識別に使用されます。

modelStatus object (ModelStatus)

出力専用。このモデルの現在のモデル ステータス。

JSON 表現
{
  "candidates": [
    {
      object (Candidate)
    }
  ],
  "promptFeedback": {
    object (PromptFeedback)
  },
  "usageMetadata": {
    object (UsageMetadata)
  },
  "modelVersion": string,
  "responseId": string,
  "modelStatus": {
    object (ModelStatus)
  }
}

PromptFeedback

GenerateContentRequest.content でプロンプトが指定したフィードバック メタデータのセット。

フィールド
blockReason enum (BlockReason)

省略可。設定されている場合、プロンプトはブロックされ、候補は返されません。プロンプトを言い換えます。

safetyRatings[] object (SafetyRating)

プロンプトの安全性に関する評価。カテゴリごとに 1 つのレーティングのみが表示されます。

JSON 表現
{
  "blockReason": enum (BlockReason),
  "safetyRatings": [
    {
      object (SafetyRating)
    }
  ]
}

BlockReason

プロンプトがブロックされた理由を指定します。

列挙型
BLOCK_REASON_UNSPECIFIED デフォルト値。この値は使用されません。
SAFETY 安全上の理由により、プロンプトがブロックされました。safetyRatings を検査して、どの安全性カテゴリでブロックされたかを確認します。
OTHER 不明な理由によりプロンプトがブロックされました。
BLOCKLIST 用語のブロックリストに含まれているキーワードが原因で、プロンプトがブロックされました。
PROHIBITED_CONTENT 禁止コンテンツが含まれているため、プロンプトがブロックされました。
IMAGE_SAFETY 安全でない画像生成コンテンツのため、候補がブロックされました。

UsageMetadata

生成リクエストのトークン使用量に関するメタデータ。

フィールド
promptTokenCount integer

プロンプト内のトークン数。cachedContent が設定されている場合でも、これは有効なプロンプトの合計サイズであり、キャッシュに保存されたコンテンツのトークン数も含まれます。

cachedContentTokenCount integer

プロンプトのキャッシュに保存された部分(キャッシュに保存されたコンテンツ)のトークン数

candidatesTokenCount integer

生成されたレスポンス候補全体のトークンの合計数。

toolUsePromptTokenCount integer

出力専用。ツール使用プロンプト内のトークン数。

thoughtsTokenCount integer

出力専用。思考モデルの思考トークンの数。

totalTokenCount integer

生成リクエストのトークンの合計数(プロンプト + 思考 + レスポンス候補)。

promptTokensDetails[] object (ModalityTokenCount)

出力専用。リクエスト入力で処理されたモダリティのリスト。

cacheTokensDetails[] object (ModalityTokenCount)

出力専用。リクエスト入力内のキャッシュに保存されたコンテンツのモダリティのリスト。

candidatesTokensDetails[] object (ModalityTokenCount)

出力専用。レスポンスで返されたモダリティのリスト。

toolUsePromptTokensDetails[] object (ModalityTokenCount)

出力専用。ツール使用リクエストの入力に対して処理されたモダリティのリスト。

serviceTier enum (ServiceTier)

出力専用。リクエストのサービス階層。

JSON 表現
{
  "promptTokenCount": integer,
  "cachedContentTokenCount": integer,
  "candidatesTokenCount": integer,
  "toolUsePromptTokenCount": integer,
  "thoughtsTokenCount": integer,
  "totalTokenCount": integer,
  "promptTokensDetails": [
    {
      object (ModalityTokenCount)
    }
  ],
  "cacheTokensDetails": [
    {
      object (ModalityTokenCount)
    }
  ],
  "candidatesTokensDetails": [
    {
      object (ModalityTokenCount)
    }
  ],
  "toolUsePromptTokensDetails": [
    {
      object (ModalityTokenCount)
    }
  ],
  "serviceTier": enum (ServiceTier)
}

ModelStatus

基盤となるモデルのステータス。これは、基盤となるモデルのステージと、該当する場合は廃止時期を示すために使用されます。

フィールド
modelStage enum (ModelStage)

基盤となるモデルのステージ。

retirementTime string (Timestamp format)

モデルが廃止される時刻。

RFC 3339 を使用します。生成された出力は常に Z 正規化され、小数点以下は 0、3、6、または 9 桁になります。「Z」以外のオフセットも使用できます。例: "2014-10-02T15:01:23Z""2014-10-02T15:01:23.045123456Z""2014-10-02T15:01:23+05:30"

message string

モデルのステータスを説明するメッセージ。

JSON 表現
{
  "modelStage": enum (ModelStage),
  "retirementTime": string,
  "message": string
}

ModelStage

基盤となるモデルのステージを定義します。

列挙型
MODEL_STAGE_UNSPECIFIED モデルステージが指定されていません。
UNSTABLE_EXPERIMENTAL

基盤モデルは多くのチューニングの対象となります。

EXPERIMENTAL このステージのモデルは試験運用のみを目的としています。
PREVIEW このステージのモデルは、試験運用版モデルよりも成熟しています。
STABLE このステージのモデルは安定しており、本番環境で使用できる状態と見なされます。
LEGACY モデルがこのステージにある場合、このモデルは近い将来に非推奨になることを意味します。このモデルは既存のお客様のみご利用いただけます。
DEPRECATED

このステージのモデルは非推奨です。これらのモデルは使用できません。

RETIRED このステージのモデルは廃止されます。これらのモデルは使用できません。

受験者

モデルから生成されたレスポンス候補。

フィールド
content object (Content)

出力専用。モデルから返された生成コンテンツ。

finishReason enum (FinishReason)

省略可。出力専用。モデルがトークンの生成を停止した理由。

空の場合、モデルはトークンの生成を停止していません。

safetyRatings[] object (SafetyRating)

レスポンス候補の安全性に関する評価のリスト。

カテゴリごとに 1 つのレーティングのみが表示されます。

citationMetadata object (CitationMetadata)

出力専用。モデルが生成した候補の引用情報。

このフィールドには、content に含まれるテキストの朗読情報が入力されることがあります。これは、基盤となる LLM のトレーニング データに含まれる著作権で保護された素材から「引用」された文章です。

tokenCount integer

出力専用。この候補のトークン数。

groundingAttributions[] object (GroundingAttribution)

出力専用。根拠のある回答に貢献したソースの帰属情報。

このフィールドは GenerateAnswer 呼び出しで入力されます。

groundingMetadata object (GroundingMetadata)

出力専用。候補のグラウンディング メタデータ。

このフィールドは GenerateContent 呼び出しで入力されます。

avgLogprobs number

出力専用。候補の平均ログ確率スコア。

logprobsResult object (LogprobsResult)

出力専用。レスポンス トークンと上位トークンの対数尤度スコア

urlContextMetadata object (UrlContextMetadata)

出力専用。URL コンテキスト取得ツールに関連するメタデータ。

index integer

出力専用。レスポンス候補のリスト内の候補のインデックス。

finishMessage string

省略可。出力専用。モデルがトークンの生成を停止した理由の詳細。これは、finishReason が設定されている場合にのみ入力されます。

JSON 表現
{
  "content": {
    object (Content)
  },
  "finishReason": enum (FinishReason),
  "safetyRatings": [
    {
      object (SafetyRating)
    }
  ],
  "citationMetadata": {
    object (CitationMetadata)
  },
  "tokenCount": integer,
  "groundingAttributions": [
    {
      object (GroundingAttribution)
    }
  ],
  "groundingMetadata": {
    object (GroundingMetadata)
  },
  "avgLogprobs": number,
  "logprobsResult": {
    object (LogprobsResult)
  },
  "urlContextMetadata": {
    object (UrlContextMetadata)
  },
  "index": integer,
  "finishMessage": string
}

FinishReason

モデルがトークンの生成を停止した理由を定義します。

列挙型
FINISH_REASON_UNSPECIFIED デフォルト値。この値は使用されません。
STOP モデルの自然な停止点、または指定された停止シーケンス。
MAX_TOKENS リクエストで指定されたトークンの上限に達しました。
SAFETY 安全上の理由から、レスポンス候補のコンテンツにフラグが付けられました。
RECITATION レスポンス候補のコンテンツに、暗唱の理由でフラグが付けられました。
LANGUAGE 回答候補のコンテンツが、サポートされていない言語を使用しているとしてフラグ設定されました。
OTHER 不明な理由。
BLOCKLIST 禁止されている語句がコンテンツに含まれているため、トークンの生成が停止されました。
PROHIBITED_CONTENT 禁止コンテンツが含まれている可能性があるため、トークンの生成が停止されました。
SPII コンテンツに個人を特定できる機密情報(SPII)が含まれている可能性があるため、トークンの生成が停止されました。
MALFORMED_FUNCTION_CALL モデルによって生成された関数呼び出しが無効です。
IMAGE_SAFETY 生成された画像に安全上の違反が含まれているため、トークンの生成が停止されました。
IMAGE_PROHIBITED_CONTENT 生成された画像に他の禁止コンテンツが含まれているため、画像生成が停止されました。
IMAGE_OTHER その他の問題により、画像の生成が停止しました。
NO_IMAGE モデルが画像を生成すると想定されていましたが、画像が生成されませんでした。
IMAGE_RECITATION 列挙のため、画像の生成が停止しました。
UNEXPECTED_TOOL_CALL モデルがツール呼び出しを生成しましたが、リクエストでツールが有効になっていませんでした。
TOO_MANY_TOOL_CALLS モデルが連続してツールを呼び出しすぎたため、システムが実行を終了しました。
MISSING_THOUGHT_SIGNATURE リクエストに 1 つ以上の思考シグネチャがありません。
MALFORMED_RESPONSE レスポンスの形式が正しくないため終了しました。
ESCALATION リクエストはエスカレーション ルールによってフィルタリングされました。

GroundingAttribution

回答に貢献した情報源の帰属。

フィールド
sourceId object (AttributionSourceId)

出力専用。このアトリビューションに貢献したソースの識別子。

content object (Content)

この帰属を構成するグラウンディング ソース コンテンツ。

JSON 表現
{
  "sourceId": {
    object (AttributionSourceId)
  },
  "content": {
    object (Content)
  }
}

AttributionSourceId

このアトリビューションに貢献したソースの識別子。

フィールド
source Union type
source は次のいずれかになります。
groundingPassage object (GroundingPassageId)

インライン パッセージの識別子。

semanticRetrieverChunk object (SemanticRetrieverChunk)

Semantic Retriever を介して取得された Chunk の識別子。

JSON 表現
{

  // source
  "groundingPassage": {
    object (GroundingPassageId)
  },
  "semanticRetrieverChunk": {
    object (SemanticRetrieverChunk)
  }
  // Union type
}

GroundingPassageId

GroundingPassage 内のパーツの識別子。

フィールド
passageId string

出力専用。GenerateAnswerRequestGroundingPassage.id と一致する文の ID。

partIndex integer

出力専用。GenerateAnswerRequestGroundingPassage.content 内のパーツのインデックス。

JSON 表現
{
  "passageId": string,
  "partIndex": integer
}

SemanticRetrieverChunk

SemanticRetrieverConfig を使用して GenerateAnswerRequest で指定されたセマンティック リトリーバーを介して取得された Chunk の識別子。

フィールド
source string

出力専用。リクエストの SemanticRetrieverConfig.source に一致するソースの名前。例: corpora/123corpora/123/documents/abc

chunk string

出力専用。帰属テキストを含む Chunk の名前。例: corpora/123/documents/abc/chunks/xyz

JSON 表現
{
  "source": string,
  "chunk": string
}

GroundingMetadata

グラウンディングが有効になっている場合にクライアントに返されるメタデータ。

フィールド
groundingChunks[] object (GroundingChunk)

指定されたグラウンディング ソースから取得されたサポート参照のリスト。ストリーミングの場合、これには、以前のレスポンスのグラウンディング メタデータに含まれていないグラウンディング チャンクのみが含まれます。

groundingSupports[] object (GroundingSupport)

グラウンディング サポートのリスト。

webSearchQueries[] string

ウェブ検索のフォローアップ用のウェブ検索クエリ。

imageSearchQueries[] string

グラウンディングに使用される画像検索クエリ。

searchEntryPoint object (SearchEntryPoint)

省略可。ウェブ検索のフォローアップのための Google 検索エントリ。

retrievalMetadata object (RetrievalMetadata)

グラウンディング フローでの取得に関連するメタデータ。

googleMapsWidgetContextToken string

省略可。コンテキスト データをレンダリングするために PlacesContextElement ウィジェットで使用できる Google マップ ウィジェット コンテキスト トークンのリソース名。Google マップによるグラウンディングが有効になっている場合にのみ入力されます。

JSON 表現
{
  "groundingChunks": [
    {
      object (GroundingChunk)
    }
  ],
  "groundingSupports": [
    {
      object (GroundingSupport)
    }
  ],
  "webSearchQueries": [
    string
  ],
  "imageSearchQueries": [
    string
  ],
  "searchEntryPoint": {
    object (SearchEntryPoint)
  },
  "retrievalMetadata": {
    object (RetrievalMetadata)
  },
  "googleMapsWidgetContextToken": string
}

SearchEntryPoint

Google 検索のエントリ ポイント。

フィールド
renderedContent string

省略可。ウェブページまたはアプリのウェブビューに埋め込むことができるウェブ コンテンツ スニペット。

sdkBlob string (bytes format)

省略可。<検索語句、検索 URL> タプルの配列を表す Base64 エンコードされた JSON。

Base64 でエンコードされた文字列。

JSON 表現
{
  "renderedContent": string,
  "sdkBlob": string
}

GroundingChunk

GroundingChunk は、モデルのレスポンスをグラウンディングする裏付けとなる証拠のセグメントを表します。ウェブからのチャンク、ファイルから取得したコンテキスト、Google マップからの情報などが考えられます。

フィールド
chunk_type Union type
チャンクタイプ。chunk_type は次のいずれかになります。
web object (Web)

ウェブからのグラウンディング チャンク。

image object (Image)

省略可。画像検索のグラウンディング チャンク。

retrievedContext object (RetrievedContext)

省略可。ファイル検索ツールで取得されたコンテキストのグラウンディング チャンク。

maps object (Maps)

省略可。Google マップのグラウンディング チャンク。

JSON 表現
{

  // chunk_type
  "web": {
    object (Web)
  },
  "image": {
    object (Image)
  },
  "retrievedContext": {
    object (RetrievedContext)
  },
  "maps": {
    object (Maps)
  }
  // Union type
}

ウェブ

ウェブからのチャンク。

フィールド
uri string

出力専用。チャンクの URI 参照。

title string

出力専用。チャンクのタイトル。

JSON 表現
{
  "uri": string,
  "title": string
}

画像

画像検索からのチャンク。

フィールド
sourceUri string

アトリビューションのウェブページの URI。

imageUri string

画像アセットの URL。

title string

画像の元となったウェブページのタイトル。

domain string

画像の取得元ウェブページのルート ドメイン(例: 「example.com」)。

JSON 表現
{
  "sourceUri": string,
  "imageUri": string,
  "title": string,
  "domain": string
}

RetrievedContext

ファイル検索ツールで取得されたコンテキストのチャンク。

フィールド
customMetadata[] object (CustomMetadata)

省略可。取得したコンテキストに関するユーザー提供のメタデータ。

uri string

省略可。セマンティック検索ドキュメントの URI 参照。

title string

省略可。ドキュメントのタイトル。

text string

省略可。チャンクのテキスト。

fileSearchStore string

省略可。ドキュメントを含む FileSearchStore の名前。例: fileSearchStores/123

pageNumber integer

省略可。取得したコンテキストのページ番号(該当する場合)。

mediaId string

省略可。マルチモーダル ファイル検索結果のメディア BLOB リソース名。形式: fileSearchStores/{file_search_store_id}/media/{blobId}

JSON 表現
{
  "customMetadata": [
    {
      object (CustomMetadata)
    }
  ],
  "uri": string,
  "title": string,
  "text": string,
  "fileSearchStore": string,
  "pageNumber": integer,
  "mediaId": string
}

CustomMetadata

ユーザーが GroundingFact に関するメタデータを提供しました。

フィールド
key string

メタデータのキー。

value Union type
メタデータの値。文字列、文字列のリスト、または数値にできます。value は次のいずれかになります。
stringValue string

省略可。メタデータの文字列値。

stringListValue object (StringList)

省略可。メタデータの文字列値のリスト。

numericValue number

省略可。メタデータの数値。この値の想定範囲は、使用する key によって異なります。

JSON 表現
{
  "key": string,

  // value
  "stringValue": string,
  "stringListValue": {
    object (StringList)
  },
  "numericValue": number
  // Union type
}

StringList

文字列値のリスト。

フィールド
values[] string

リストの文字列値。

JSON 表現
{
  "values": [
    string
  ]
}

マップ

Google マップのグラウンディング チャンク。マップのチャンクは 1 つの場所に対応します。

フィールド
uri string

場所の URI 参照。

title string

場所のタイトル。

text string

場所の回答のテキストによる説明。

placeId string

場所の ID(places/{placeId} 形式)。ユーザーはこの ID を使用してその場所を検索できます。

placeAnswerSources object (PlaceAnswerSources)

Google マップの特定の場所の機能に関する回答を提供するソース。

JSON 表現
{
  "uri": string,
  "title": string,
  "text": string,
  "placeId": string,
  "placeAnswerSources": {
    object (PlaceAnswerSources)
  }
}

PlaceAnswerSources

Google マップの特定の場所の機能に関する回答を提供するソースのコレクション。各 PlaceAnswerSources メッセージは、Google マップの特定の場所に対応しています。Google マップツールは、これらのソースを使用して、場所の機能に関する質問(「Foo Bar に Wi-Fi はありますか?」や「Foo Bar は車椅子でアクセスできますか?」など)に回答していました。現在、ソースとしてサポートされているのはクチコミ スニペットのみです。

フィールド
reviewSnippets[] object (ReviewSnippet)

Google マップで特定の場所の特徴に関する回答を生成するために使用されるクチコミのスニペット。

JSON 表現
{
  "reviewSnippets": [
    {
      object (ReviewSnippet)
    }
  ]
}

ReviewSnippet

Google マップの特定の場所の機能に関する質問に回答するユーザー レビューのスニペットをカプセル化します。

フィールド
reviewId string

クチコミ抜粋の ID。

googleMapsUri string

Google マップのユーザー レビューに対応するリンク。

title string

レビューのタイトル。

JSON 表現
{
  "reviewId": string,
  "googleMapsUri": string,
  "title": string
}

GroundingSupport

グラウンディング サポート。

フィールド
groundingChunkIndices[] integer

省略可。申し立てに関連付けられている引用を指定するインデックスのリスト(response.candidate.grounding_metadata の「grounding_chunk」内)。たとえば、[1,3,4] は、grounding_chunk[1]、grounding_chunk[3]、grounding_chunk[4] が、申し立てに帰属する取得されたコンテンツであることを意味します。レスポンスがストリーミングの場合、groundingChunkIndices はすべてのレスポンスのインデックスを参照します。すべてのレスポンスからグラウンディング チャンクを(同じ順序を維持しながら)蓄積するのは、クライアントの責任です。

confidenceScores[] number

省略可。サポート参照の信頼スコア。範囲は 0 ~ 1 です。1 が最も自信があることを示します。このリストは groundingChunkIndices と同じサイズにする必要があります。

renderedParts[] integer

出力専用。候補者のコンテンツの parts フィールドへのインデックス。これらのインデックスは、このサポートソースに関連付けられているレンダリングされたパーツを指定します。

segment object (Segment)

このサポートが属するコンテンツのセグメント。

JSON 表現
{
  "groundingChunkIndices": [
    integer
  ],
  "confidenceScores": [
    number
  ],
  "renderedParts": [
    integer
  ],
  "segment": {
    object (Segment)
  }
}

セグメント

コンテンツのセグメント。

フィールド
partIndex integer

親の Content オブジェクト内の Part オブジェクトのインデックス。

startIndex integer

指定された Part の開始インデックス(バイト単位)。パートの先頭からのオフセット(0 から始まる)。

endIndex integer

指定された Part の終了インデックス(バイト単位)。Part の先頭からのオフセット(0 から始まる、この値は含まれません)。

text string

レスポンスのセグメントに対応するテキスト。

JSON 表現
{
  "partIndex": integer,
  "startIndex": integer,
  "endIndex": integer,
  "text": string
}

RetrievalMetadata

グラウンディング フローでの取得に関連するメタデータ。

フィールド
googleSearchDynamicRetrievalScore number

省略可。Google 検索の情報がプロンプトの回答に役立つ可能性を示すスコア。スコアの範囲は [0, 1] で、0 は可能性が最も低く、1 は可能性が最も高いことを示します。このスコアは、Google 検索のグラウンディングと動的取得が有効になっている場合にのみ入力されます。しきい値と比較して、Google 検索をトリガーするかどうかを判断します。

JSON 表現
{
  "googleSearchDynamicRetrievalScore": number
}

LogprobsResult

Logprobs 結果

フィールド
topCandidates[] object (TopCandidates)

長さ = デコード ステップの合計数。

chosenCandidates[] object (Candidate)

長さ = デコード ステップの合計数。選択した候補は topCandidates に含まれる場合もあれば、含まれない場合もあります。

logProbabilitySum number

すべてのトークンのログ確率の合計。

JSON 表現
{
  "topCandidates": [
    {
      object (TopCandidates)
    }
  ],
  "chosenCandidates": [
    {
      object (Candidate)
    }
  ],
  "logProbabilitySum": number
}

TopCandidates

各デコード ステップでログ確率が最も高い候補。

フィールド
candidates[] object (Candidate)

対数確率の降順で並べ替えられています。

JSON 表現
{
  "candidates": [
    {
      object (Candidate)
    }
  ]
}

受験者

logprobs トークンとスコアの候補。

フィールド
token string

候補のトークン文字列値。

tokenId integer

候補のトークン ID 値。

logProbability number

候補者のログ確率。

JSON 表現
{
  "token": string,
  "tokenId": integer,
  "logProbability": number
}

UrlContextMetadata

URL コンテキスト取得ツールに関連するメタデータ。

フィールド
urlMetadata[] object (UrlMetadata)

URL コンテキストのリスト。

JSON 表現
{
  "urlMetadata": [
    {
      object (UrlMetadata)
    }
  ]
}

UrlMetadata

単一の URL 取得のコンテキスト。

フィールド
retrievedUrl string

ツールによって取得された URL。

urlRetrievalStatus enum (UrlRetrievalStatus)

URL 取得のステータス。

JSON 表現
{
  "retrievedUrl": string,
  "urlRetrievalStatus": enum (UrlRetrievalStatus)
}

UrlRetrievalStatus

URL 取得のステータス。

列挙型
URL_RETRIEVAL_STATUS_UNSPECIFIED デフォルト値。この値は使用されません。
URL_RETRIEVAL_STATUS_SUCCESS URL の取得に成功しました。
URL_RETRIEVAL_STATUS_ERROR エラーのため、URL の取得に失敗しました。
URL_RETRIEVAL_STATUS_PAYWALL コンテンツがペイウォールの内側にあるため、URL の取得に失敗しました。
URL_RETRIEVAL_STATUS_UNSAFE コンテンツが安全でないため、URL の取得に失敗しました。

CitationMetadata

コンテンツの一部分に関するソース アトリビューションの集合。

フィールド
citationSources[] object (CitationSource)

特定の回答のソースへの引用。

JSON 表現
{
  "citationSources": [
    {
      object (CitationSource)
    }
  ]
}

CitationSource

特定のレスポンスの一部に対するソースの引用。

フィールド
startIndex integer

省略可。このソースに帰属するレスポンスのセグメントの開始。

インデックスはセグメントの開始位置を示し、バイト単位で測定されます。

endIndex integer

省略可。帰属セグメントの終了位置(この位置自体は含みません)。

uri string

省略可。テキストの一部のソースとして帰属される URI。

license string

省略可。セグメントのソースとして帰属する GitHub プロジェクトのライセンス。

コードの引用にはライセンス情報が必要です。

JSON 表現
{
  "startIndex": integer,
  "endIndex": integer,
  "uri": string,
  "license": string
}

HarmCategory

評価のカテゴリ。

これらのカテゴリは、デベロッパーが調整を希望する可能性のあるさまざまな種類の有害性を網羅しています。

列挙型
HARM_CATEGORY_UNSPECIFIED カテゴリが指定されていません。
HARM_CATEGORY_DEROGATORY PaLM - ID や保護されている属性をターゲットとする否定的なコメントや有害なコメント。
HARM_CATEGORY_TOXICITY PaLM - 粗暴、無礼、または冒とく的なコンテンツ。
HARM_CATEGORY_VIOLENCE PaLM - 個人やグループに対する暴力を描写したシナリオ、または残虐行為の一般的な説明についての記述。
HARM_CATEGORY_SEXUAL PaLM - 性行為やわいせつな内容に関する情報が含まれるコンテンツ。
HARM_CATEGORY_MEDICAL PaLM - 未確認の医学的アドバイスを推奨します。
HARM_CATEGORY_DANGEROUS PaLM - 有害な行為を奨励、促進、または助長する危険なコンテンツ。
HARM_CATEGORY_HARASSMENT Gemini - ハラスメント コンテンツ。
HARM_CATEGORY_HATE_SPEECH Gemini - ヘイトスピーチとコンテンツ。
HARM_CATEGORY_SEXUALLY_EXPLICIT Gemini - 性的描写が露骨なコンテンツ。
HARM_CATEGORY_DANGEROUS_CONTENT Gemini - 危険なコンテンツ。
HARM_CATEGORY_CIVIC_INTEGRITY

Gemini - 市民の清廉性を損なう可能性があるコンテンツ。非推奨: 代わりに enableEnhancedCivicAnswers を使用してください。

HARM_CATEGORY_JAILBREAK Gemini - モデルの安全に関するガイドラインを回避または転覆しようとするプロンプト(ジェイルブレイクの試み)。

ModalityTokenCount

単一のモダリティのトークン数の情報を表します。

フィールド
modality enum (Modality)

このトークン数に関連付けられたモダリティ。

tokenCount integer

トークンの数。

JSON 表現
{
  "modality": enum (Modality),
  "tokenCount": integer
}

モダリティ

コンテンツ パーツのモダリティ

列挙型
MODALITY_UNSPECIFIED モダリティが指定されていません。
TEXT 書式なしテキスト。
IMAGE Image.
VIDEO 動画
AUDIO 音声。
DOCUMENT ドキュメント(PDF など)。

SafetyRating

コンテンツの安全性評価。

安全性評価には、コンテンツの有害カテゴリと、そのカテゴリでの有害確率レベルが含まれます。コンテンツは、複数の有害カテゴリにわたって安全性が分類され、有害として分類される確率がここに含まれます。

フィールド
category enum (HarmCategory)

必須。この評価のカテゴリ。

probability enum (HarmProbability)

必須。このコンテンツが有害である確率。

blocked boolean

この評価が原因でコンテンツがブロックされたかどうか。

JSON 表現
{
  "category": enum (HarmCategory),
  "probability": enum (HarmProbability),
  "blocked": boolean
}

HarmProbability

コンテンツが有害である確率。

分類システムは、コンテンツが安全でない確率を示します。これは、コンテンツの危害の重大度を示すものではありません。

列挙型
HARM_PROBABILITY_UNSPECIFIED 確率は指定されていません。
NEGLIGIBLE コンテンツが安全でない確率はごくわずかである。
LOW コンテンツが安全でない確率は低い。
MEDIUM コンテンツが安全でない確率は中程度である。
HIGH コンテンツが安全でない可能性が高い。

SafetySetting

安全性設定。安全性ブロックの動作に影響します。

カテゴリの安全性設定を渡すと、コンテンツがブロックされる可能性の許容値が変更されます。

フィールド
category enum (HarmCategory)

必須。この設定のカテゴリ。

threshold enum (HarmBlockThreshold)

必須。有害性がブロックされる確率のしきい値を制御します。

JSON 表現
{
  "category": enum (HarmCategory),
  "threshold": enum (HarmBlockThreshold)
}

HarmBlockThreshold

指定された有害性の確率以上でブロックします。

列挙型
HARM_BLOCK_THRESHOLD_UNSPECIFIED しきい値が指定されていません。
BLOCK_LOW_AND_ABOVE 「NEGLIGIBLE」のコンテンツは許可されます。
BLOCK_MEDIUM_AND_ABOVE 「NEGLIGIBLE」と「LOW」のコンテンツは許可されます。
BLOCK_ONLY_HIGH NEGLIGIBLE、LOW、MEDIUM のコンテンツは許可されます。
BLOCK_NONE すべてのコンテンツが許可されます。
OFF 安全フィルタをオフにします。

ServiceTier

リクエストのサービス階層。

列挙型
unspecified デフォルトのサービスティア(スタンダード)。
standard スタンダード サービスティア。
flex Flex サービスティア。
priority 優先サービスティア。

コンテンツ

メッセージのマルチパート コンテンツを含む基本的な構造化データ型。

Content には、Content のプロデューサーを指定する role フィールドと、メッセージ ターンのコンテンツを含むマルチパート データを含む parts フィールドが含まれます。

フィールド
parts[] object (Part)

1 つのメッセージを構成する順序付きの Parts。パーツによって MIME タイプが異なる場合があります。

role string

省略可。コンテンツの作成者。「user」または「model」のいずれかである必要があります。

マルチターンの会話を設定する場合に便利です。それ以外の場合は、空白のままにするか、未設定のままにできます。

JSON 表現
{
  "parts": [
    {
      object (Part)
    }
  ],
  "role": string
}

Part

マルチパート Content メッセージの一部であるメディアを含むデータ型。

Part は、関連付けられたデータ型を持つデータで構成されます。Part には、Part.data で受け入れられるタイプのいずれか 1 つのみを含めることができます。

inlineData フィールドに未加工のバイトが入力されている場合、Part にはメディアのタイプとサブタイプを識別する固定の IANA MIME タイプが必要です。

フィールド
thought boolean

省略可。この部分がモデルによる「思考」かどうかを示します。

thoughtSignature string (bytes format)

省略可。後続のリクエストで再利用できるように、思考の不透明な署名。

Base64 でエンコードされた文字列。

partMetadata object (Struct format)

Part に関連付けられたカスタム メタデータ。genai.Part をコンテンツ表現として使用するエージェントは、追加情報を追跡する必要がある場合があります。たとえば、Part の送信元となるファイルやソースの名前、複数の Part ストリームを多重化する方法などです。

mediaResolution object (MediaResolution)

省略可。入力メディアのメディア解像度。

mediaProcessing enum (MediaProcessing)

省略可。モデルがこの部分のメディアを理解するために処理する方法。動画パート(動画 MIME を含む inlineData または fileData)でのみ意味があります。動画以外の部分は、このフィールドを無視します。

data Union type
data は次のいずれかになります。
text string

インライン テキスト。

inlineData object (Blob)

インライン メディア バイト。

functionCall object (FunctionCall)

モデルから返される、予測された FunctionCall。引数とその値を含む FunctionDeclaration.name を表す文字列が含まれます。

functionResponse object (FunctionResponse)

FunctionCall の結果の出力。FunctionDeclaration.name を表す文字列と、関数からの出力を含む構造化 JSON オブジェクトが、モデルのコンテキストとして使用されます。

fileData object (FileData)

URI ベースのデータ。

executableCode object (ExecutableCode)

実行されることを目的とし、モデルによって生成されたコード。

codeExecutionResult object (CodeExecutionResult)

ExecutableCode の実行結果。

toolCall object (ToolCall)

サーバーサイドのツール呼び出し。このフィールドは、モデルがサーバーで実行されるツール呼び出しを予測したときに入力されます。クライアントはこのメッセージを API にエコーバックする必要があります。

toolResponse object (ToolResponse)

サーバーサイドの ToolCall 実行の出力。このフィールドには、対応する ToolCall の実行結果がクライアントによって入力されます。

metadata Union type
データの追加の前処理を制御します。metadata は次のいずれかになります。
videoMetadata object (VideoMetadata)

省略可。動画のメタデータ。メタデータは、動画データが inlineData または fileData で表されている場合にのみ指定する必要があります。

JSON 表現
{
  "thought": boolean,
  "thoughtSignature": string,
  "partMetadata": {
    object
  },
  "mediaResolution": {
    object (MediaResolution)
  },
  "mediaProcessing": enum (MediaProcessing),

  // data
  "text": string,
  "inlineData": {
    object (Blob)
  },
  "functionCall": {
    object (FunctionCall)
  },
  "functionResponse": {
    object (FunctionResponse)
  },
  "fileData": {
    object (FileData)
  },
  "executableCode": {
    object (ExecutableCode)
  },
  "codeExecutionResult": {
    object (CodeExecutionResult)
  },
  "toolCall": {
    object (ToolCall)
  },
  "toolResponse": {
    object (ToolResponse)
  }
  // Union type

  // metadata
  "videoMetadata": {
    object (VideoMetadata)
  }
  // Union type
}

Blob

未加工のメディア バイト。

テキストは未加工のバイトとして送信しないでください。'text' フィールドを使用してください。

フィールド
mimeType string

ソースデータの IANA 標準 MIME タイプ。サポートされているタイプの例: - 画像: image/png、image/jpeg、image/jpg、image/webp、image/heic、image/heif、image/gif、image/avif - 音声: audio/*、video/audio/s16le、video/audio/wav - 動画: video/* - テキスト: text/plain、text/html、text/css、text/javascript、text/x-typescript、text/csv、text/markdown、text/x-python、text/xml、text/rtf、video/text/timestamp - アプリケーション: application/x-javascript、application/x-typescript、application/x-python-code、application/json、application/x-ipynb+json、application/rtf、application/pdf 詳しくは、サポートされているファイル形式をご覧ください。//

data string (bytes format)

メディア フォーマットの未加工のバイト。

Base64 でエンコードされた文字列。

JSON 表現
{
  "mimeType": string,
  "data": string
}

FunctionCall

モデルから返される、予測された FunctionCall。引数とその値を含む FunctionDeclaration.name を表す文字列が含まれます。

フィールド
id string

省略可。関数呼び出しの一意の識別子。入力されている場合、functionCall を実行して、一致する id を含むレスポンスを返すクライアント。

name string

必須。呼び出す関数の名前。a ~ z、A ~ Z、0 ~ 9 にする必要があり、アンダースコアとダッシュを含めることができます。最大長は 128 文字です。

args object (Struct format)

省略可。JSON オブジェクト形式の関数パラメータと値。

JSON 表現
{
  "id": string,
  "name": string,
  "args": {
    object
  }
}

FunctionResponse

FunctionDeclaration.name を表す文字列と、関数からの出力を含む構造化 JSON オブジェクトを含む FunctionCall の結果の出力は、モデルのコンテキストとして使用されます。これには、モデル予測に基づいて作成された FunctionCall の結果が含まれている必要があります。

フィールド
id string

省略可。このレスポンスの対象となる関数呼び出しの識別子。対応する関数呼び出し id と一致するようにクライアントによって入力されます。

name string

必須。呼び出す関数の名前。a ~ z、A ~ Z、0 ~ 9 にする必要があり、アンダースコアとダッシュを含めることができます。最大長は 128 文字です。

response object (Struct format)

必須。JSON オブジェクト形式の関数のレスポンス。呼び出し元は、関数の構文に適合する任意のキー(「output」、「result」など)を使用して、関数の出力を返すことができます。特に、関数呼び出しの実行に失敗した場合、レスポンスに「error」キーを設定して、エラーの詳細をモデルに返すことができます。

マルチメディアを含めるには、単一の「$ref」キーを含むサブオブジェクトを使用します。このキーの値は、マルチメディアを保持する FunctionResponsePartinlineData.display_name です。https://ai.google.dev/gemini-api/docs/function-calling#multimodal をご覧ください。

parts[] object (FunctionResponsePart)

省略可。関数レスポンスを構成する順序付き Parts。パーツによって IANA MIME タイプが異なる場合があります。

willContinue boolean

省略可。関数呼び出しが継続され、さらにレスポンスが返されることを示し、関数呼び出しをジェネレータに変換します。NON_BLOCKING 関数呼び出しにのみ適用され、それ以外の場合は無視されます。false に設定すると、今後の回答は考慮されません。関数呼び出しが完了したことを通知するために、willContinue=False を含む空の response を返すことが許可されています。この場合でも、モデルの生成がトリガーされる可能性があります。生成をトリガーして関数呼び出しを終了するには、schedulingSILENT に設定します。

scheduling enum (Scheduling)

省略可。会話でレスポンスをスケジュールする方法を指定します。NON_BLOCKING 関数呼び出しにのみ適用され、それ以外の場合は無視されます。デフォルトは WHEN_IDLE です。

JSON 表現
{
  "id": string,
  "name": string,
  "response": {
    object
  },
  "parts": [
    {
      object (FunctionResponsePart)
    }
  ],
  "willContinue": boolean,
  "scheduling": enum (Scheduling)
}

FunctionResponsePart

FunctionResponse メッセージの一部であるメディアを含むデータ型。

FunctionResponsePart は、関連付けられたデータ型を持つデータで構成されます。FunctionResponsePart には、FunctionResponsePart.data で受け入れられるタイプのいずれか 1 つのみを含めることができます。

inlineData フィールドに未加工のバイトが入力されている場合、FunctionResponsePart にはメディアのタイプとサブタイプを識別する固定の IANA MIME タイプが必要です。

フィールド
data Union type
関数レスポンス部分のデータ。data は次のいずれかになります。
inlineData object (FunctionResponseBlob)

インライン メディア バイト。

JSON 表現
{

  // data
  "inlineData": {
    object (FunctionResponseBlob)
  }
  // Union type
}

FunctionResponseBlob

関数レスポンスの未加工のメディア バイト。

テキストは未加工のバイトとして送信しないでください。'FunctionResponse.response' フィールドを使用してください。

フィールド
mimeType string

ソースデータの IANA 標準 MIME タイプ。例: - image/png - image/jpeg サポートされていない MIME タイプが指定された場合は、エラーが返されます。サポートされているタイプの一覧については、サポートされているファイル形式をご覧ください。

data string (bytes format)

メディア フォーマットの未加工のバイト。

Base64 でエンコードされた文字列。

JSON 表現
{
  "mimeType": string,
  "data": string
}

スケジュール

会話で回答をスケジュールする方法を指定します。

列挙型
SCHEDULING_UNSPECIFIED この値は使用されません。
SILENT 結果を会話コンテキストに追加するだけで、生成を中断したりトリガーしたりしないでください。
WHEN_IDLE 結果を会話コンテキストに追加し、進行中の生成を中断せずに、出力を生成するようプロンプトします。
INTERRUPT 結果を会話コンテキストに追加し、進行中の生成を中断して、出力を生成するようプロンプトします。

FileData

URI ベースのデータ。

フィールド
mimeType string

省略可。ソースデータの IANA 標準 MIME タイプ。

fileUri string

必須。URI。

JSON 表現
{
  "mimeType": string,
  "fileUri": string
}

ExecutableCode

モデルによって実行されることを目的とし、結果がモデルに返される、モデルによって生成されたコード。

CodeExecution ツールを使用した場合にのみ生成されます。このツールでは、コードが自動的に実行され、対応する CodeExecutionResult も生成されます。

フィールド
id string

省略可。ExecutableCode 部分の一意の識別子。サーバーは、一致する id を含む CodeExecutionResult を返します。

language enum (Language)

必須。code のプログラミング言語。

code string

必須。実行されるコード。

JSON 表現
{
  "id": string,
  "language": enum (Language),
  "code": string
}

言語

生成されたコードでサポートされているプログラミング言語。

列挙型
LANGUAGE_UNSPECIFIED 言語が指定されていません。この値は使用されるべきではありません。
PYTHON numpy と simpy が利用可能な Python >= 3.10。デフォルトの言語は Python です。

CodeExecutionResult

ExecutableCode の実行結果。

CodeExecution ツールが使用された場合にのみ生成されます。

フィールド
id string

省略可。この結果の対象となる ExecutableCode 部分の識別子。対応する ExecutableCode に ID がある場合にのみ入力されます。

outcome enum (Outcome)

必須。コード実行の結果。

output string

省略可。コード実行が成功した場合は stdout、それ以外の場合は stderr または他の説明が含まれます。

JSON 表現
{
  "id": string,
  "outcome": enum (Outcome),
  "output": string
}

結果

可能性のあるコード実行結果の列挙。

列挙型
OUTCOME_UNSPECIFIED ステータスの指定がありません。この値は使用されるべきではありません。
OUTCOME_OK コード実行が正常に完了しました。output には、stdout が含まれます(存在する場合)。
OUTCOME_FAILED コード実行に失敗しました。output には、stderr と stdout が含まれます(存在する場合)。
OUTCOME_DEADLINE_EXCEEDED コード実行に時間がかかり過ぎたため、キャンセルされました。部分的な output が存在する場合があります。

ToolCall

モデルから返された予測サーバーサイド ToolCall。このメッセージには、モデルが呼び出すツールに関する情報が含まれています。クライアントがこの ToolCall を実行することは想定されていません。代わりに、クライアントは対応する ToolResponse とともに、後続のターンでこの ToolCallContent メッセージ内の API に渡す必要があります。

フィールド
id string

省略可。ツール呼び出しの一意の識別子。サーバーは、一致する id を含むツール レスポンスを返します。

toolName string

省略可。呼び出されたツールの名前。

toolType enum (ToolType)

必須。呼び出されたツールのタイプ。

args object (Struct format)

省略可。ツールの呼び出し引数。例: {"arg1" : "value1", "arg2" : "value2" , ...}

JSON 表現
{
  "id": string,
  "toolName": string,
  "toolType": enum (ToolType),
  "args": {
    object
  }
}

ToolType

関数呼び出しのツールのタイプ。

列挙型
TOOL_TYPE_UNSPECIFIED ツールタイプが指定されていません。
GOOGLE_SEARCH_WEB Google 検索ツール。Tool.google_search.search_types.web_search にマッピングされます。
GOOGLE_SEARCH_IMAGE 画像検索ツール。Tool.google_search.search_types.image_search にマッピングされます。
URL_CONTEXT URL コンテキスト ツール。Tool.url_context にマッピングされます。
GOOGLE_MAPS Google マップツール。Tool.google_maps にマッピングされます。

ToolResponse

サーバーサイドの ToolCall 実行の出力。このメッセージには、モデルの ToolCall によって開始されたツール呼び出しの結果が含まれています。クライアントは、この ToolResponse を対応する ToolCall とともに、後続のターンの Content メッセージ内で API に渡す必要があります。

フィールド
id string

省略可。このレスポンスの対象となるツール呼び出しの識別子。

toolType enum (ToolType)

必須。呼び出されたツールのタイプ。対応する ToolCalltoolType と一致します。

response object (Struct format)

省略可。ツールのレスポンス。

JSON 表現
{
  "id": string,
  "toolType": enum (ToolType),
  "response": {
    object
  }
}

VideoMetadata

非推奨: 代わりに、GenerateContentRequest.processing_options を使用してください。メタデータは、入力動画コンテンツを記述します。

フィールド
startOffset string (Duration format)

省略可。動画の開始オフセット

s で終わる小数 9 桁までの秒単位の期間。例: "3.5s"

endOffset string (Duration format)

省略可。動画の終了オフセット。

s で終わる小数 9 桁までの秒単位の期間。例: "3.5s"

fps number

省略可。モデルに送信された動画のフレームレート。指定しない場合、デフォルト値は 1.0 になります。fps の範囲は (0.0, 24.0] です。

JSON 表現
{
  "startOffset": string,
  "endOffset": string,
  "fps": number
}

MediaResolution

トークン化のメディア解像度。

フィールド
value Union type
メディアの解像度レベル。value は次のいずれかになります。
level enum (Level)

特定のメディアに使用されるトークン化の品質。 Gemini API のサポート

JSON 表現
{

  // value
  "level": enum (Level)
  // Union type
}

レベル

メディアの解像度レベル。

列挙型
MEDIA_RESOLUTION_UNSPECIFIED メディアの解像度が設定されていません。
MEDIA_RESOLUTION_LOW メディアの解像度が低に設定されている。
MEDIA_RESOLUTION_MEDIUM メディアの解像度が中に設定されています。
MEDIA_RESOLUTION_HIGH メディアの解像度が高に設定されています。
MEDIA_RESOLUTION_ULTRA_HIGH メディアの解像度が超高に設定されています。

MediaProcessing

モデルが理解のために入力メディアを処理する方法。

列挙型
MEDIA_PROCESSING_UNSPECIFIED デフォルト。モデル固有の処理を使用します(3.5 Pro+ -> AGENTIC、以前のモデル -> STATIC)。
STATIC 固定レートのフレーム抽出。すべてのフレームがコンテキスト内に配置されます。
AGENTIC モデル駆動型のダイナミック ナビゲーション。ほとんどのユースケースで推奨されます。

環境

エージェントの実行環境。

フィールド
id string

必須。出力専用。環境の ID。

sources[] object (Source)

環境にマウントされるソース。

created string

出力専用。環境が作成された時刻(ISO 8601 形式(YYYY-MM-DDThh:mm:ssZ))。

updated string

出力専用。環境が最後に更新された時刻(ISO 8601 形式(YYYY-MM-DDThh:mm:ssZ))。

lastAccessed string

出力専用。環境に最後にアクセスした時刻(ISO 8601 形式(YYYY-MM-DDThh:mm:ssZ))。

status enum (Status)

出力専用。環境コンテナのステータス。

fileCount string (int64 format)

出力専用。環境内のファイルの数(出力のみ)。

sizeBytes string (int64 format)

出力専用。環境ファイルの合計サイズ(バイト単位)。出力専用。

network Union type
環境のネットワーク構成。network は次のいずれかになります。
networkAllowlist object (EnvironmentNetworkEgressAllowlist)

特定のドメインのみを許可します。

networkMode enum (NetworkMode)

下り(外向き)ネットワーク モード。

JSON 表現
{
  "id": string,
  "sources": [
    {
      object (Source)
    }
  ],
  "created": string,
  "updated": string,
  "lastAccessed": string,
  "status": enum (Status),
  "fileCount": string,
  "sizeBytes": string,

  // network
  "networkAllowlist": {
    object (EnvironmentNetworkEgressAllowlist)
  },
  "networkMode": enum (NetworkMode)
  // Union type
}

ステータス

環境のステータス。

列挙型
STATUS_UNSPECIFIED
ACTIVE
EXPIRED

NetworkMode

許可リストに登録されていない構成のネットワーク下り(外向き)モード。

列挙型
NETWORK_MODE_UNSPECIFIED デフォルト値。未使用。
DISABLED すべてのネットワーク下り(外向き)がブロックされます。

スキーマ

Schema オブジェクトを使用すると、入力データ型と出力データ型を定義できます。これらの型はオブジェクトにできますが、プリミティブや配列にもできます。OpenAPI 3.0 スキーマ オブジェクトの選択されたサブセットを表します。

フィールド
type enum (Type)

必須。データ型。

format string

省略可。データの形式。任意の値が許可されますが、ほとんどの値は特別な機能をトリガーしません。

title string

省略可。スキーマのタイトル。

description string

省略可。パラメータの簡単な説明。これには使用例が含まれる場合があります。パラメータの説明は Markdown 形式で記述できます。

nullable boolean

省略可。値が null の可能性があるかどうかを示します。

enum[] string

省略可。Type.STRING の要素の可能な値(列挙型形式)。たとえば、Enum Direction を {type:STRING, format:enum, enum:["EAST", NORTH", "SOUTH", "WEST"]} として定義できます。

maxItems string (int64 format)

省略可。Type.ARRAY の要素の最大数。

minItems string (int64 format)

省略可。Type.ARRAY の要素の最小数。

properties map (key: string, value: object (Schema))

省略可。Type.OBJECT のプロパティ。

"key": value ペアのリストを含むオブジェクト。例: { "name": "wrench", "mass": "1.3kg", "count": "3" }

required[] string

省略可。Type.OBJECT の必須プロパティ。

minProperties string (int64 format)

省略可。Type.OBJECT のプロパティの最小数。

maxProperties string (int64 format)

省略可。Type.OBJECT のプロパティの最大数。

minLength string (int64 format)

省略可。SCHEMA FIELDS FOR TYPE STRING 型の最小長

maxLength string (int64 format)

省略可。Type.STRING の最大長

pattern string

省略可。文字列を正規表現に制限する Type.STRING のパターン。

example value (Value format)

省略可。オブジェクトの例。オブジェクトがルートの場合にのみ入力されます。

anyOf[] object (Schema)

省略可。値は、リスト内のサブスキーマのいずれか(1 つ以上)に対して検証される必要があります。

propertyOrdering[] string

省略可。プロパティの順序。OpenAPI 仕様の標準フィールドではありません。レスポンス内のプロパティの順序を決定するために使用されます。

default value (Value format)

省略可。フィールドのデフォルト値。JSON スキーマでは、このフィールドはドキュメント ジェネレータ用であり、検証には影響しません。そのため、default フィールドを含むスキーマを送信するデベロッパーが不明なフィールド エラーを受け取らないように、ここで無視されます。

items object (Schema)

省略可。Type.ARRAY の要素のスキーマ。

minimum number

省略可。SCHEMA FIELDS FOR TYPE INTEGER and NUMBER Type.INTEGER と Type.NUMBER の最小値

maximum number

省略可。Type.INTEGER と Type.NUMBER の最大値

JSON 表現
{
  "type": enum (Type),
  "format": string,
  "title": string,
  "description": string,
  "nullable": boolean,
  "enum": [
    string
  ],
  "maxItems": string,
  "minItems": string,
  "properties": {
    string: {
      object (Schema)
    },
    ...
  },
  "required": [
    string
  ],
  "minProperties": string,
  "maxProperties": string,
  "minLength": string,
  "maxLength": string,
  "pattern": string,
  "example": value,
  "anyOf": [
    {
      object (Schema)
    }
  ],
  "propertyOrdering": [
    string
  ],
  "default": value,
  "items": {
    object (Schema)
  },
  "minimum": number,
  "maximum": number
}

タイプ

Type には、https://spec.openapis.org/oas/v3.0.3#data-types で定義されている OpenAPI データ型のリストが含まれます。

列挙型
TYPE_UNSPECIFIED 指定されていません。使用しないでください。
STRING 文字列型。
NUMBER 数値型。
INTEGER 整数型。
BOOLEAN ブール型。
ARRAY 配列型。
OBJECT オブジェクトのタイプ。
NULL Null 型。

ツール

モデルがレスポンスの生成に使用できるツールの詳細。

Tool は、システムが外部システムと対話して、モデルの知識や範囲外のアクションまたは一連のアクションを実行できるようにするコードです。

次の ID: 17

フィールド
functionDeclarations[] object (FunctionDeclaration)

省略可。関数呼び出しに使用できるモデルで使用可能な FunctionDeclarations のリスト。

モデルまたはシステムが関数を実行しない。代わりに、定義された関数が実行のために引数とともに FunctionCall としてクライアント側に返されることがあります。モデルは、レスポンスで FunctionCall を入力して、これらの関数のサブセットを呼び出すことを決定する場合があります。次の会話のターンには、次のモデルのターンの Content.role「関数」生成コンテキストを含む FunctionResponse が含まれる場合があります。

googleSearchRetrieval object (GoogleSearchRetrieval)

省略可。Google 検索を利用した取得ツール。

codeExecution object (CodeExecution)

省略可。モデルが生成の一部としてコードを実行できるようにします。

computerUse object (ComputerUse)

省略可。モデルがコンピュータと直接やり取りすることをサポートするツール。有効にすると、コンピュータの使用に固有の関数宣言が自動的に入力されます。

urlContext object (UrlContext)

省略可。URL コンテキストの取得をサポートするツール。

mcpServers[] object (McpServer)

省略可。接続先の MCP サーバー。

googleMaps object (GoogleMaps)

省略可。ユーザーのクエリに関連する地理空間情報を使用して、モデルのレスポンスをグラウンディングできるツール。

JSON 表現
{
  "functionDeclarations": [
    {
      object (FunctionDeclaration)
    }
  ],
  "googleSearchRetrieval": {
    object (GoogleSearchRetrieval)
  },
  "codeExecution": {
    object (CodeExecution)
  },
  "googleSearch": {
    object (GoogleSearch)
  },
  "computerUse": {
    object (ComputerUse)
  },
  "urlContext": {
    object (UrlContext)
  },
  "fileSearch": {
    object (FileSearch)
  },
  "mcpServers": [
    {
      object (McpServer)
    }
  ],
  "googleMaps": {
    object (GoogleMaps)
  }
}

FunctionDeclaration

OpenAPI 3.03 仕様で定義されている関数宣言の構造化表現。この宣言には、関数名とパラメータが含まれます。この FunctionDeclaration は、モデルによって Tool として使用され、クライアントによって実行されるコードブロックの表現です。

フィールド
name string

必須。関数の名前。a ~ z、A ~ Z、0 ~ 9 にする必要があり、アンダースコア、コロン、ドット、ダッシュを含めることができます。最大長は 128 文字です。

description string

必須。関数の簡単な説明。

behavior enum (Behavior)

省略可。関数の動作を指定します。現在、BidiGenerateContent メソッドでのみサポートされています。

parameters object (Schema)

省略可。この関数のパラメータについて説明します。Open API 3.03 パラメータ オブジェクトの文字列キー(パラメータの名前)を反映します。パラメータ名では大文字と小文字が区別されます。スキーマ値: パラメータに使用される型を定義するスキーマ。

parametersJsonSchema value (Value format)

省略可。関数のパラメータを JSON スキーマ形式で記述します。スキーマは、プロパティが関数のパラメータであるオブジェクトを記述する必要があります。次に例を示します。

{
  "type": "object",
  "properties": {
    "name": { "type": "string" },
    "age": { "type": "integer" }
  },
  "additionalProperties": false,
  "required": ["name", "age"],
  "propertyOrdering": ["name", "age"]
}

このフィールドは parameters と相互に排他的です。

response object (Schema)

省略可。この関数からの出力を JSON スキーマ形式で記述します。Open API 3.03 レスポンス オブジェクトを反映します。スキーマは、関数のレスポンス値に使用される型を定義します。

responseJsonSchema value (Value format)

省略可。この関数からの出力を JSON スキーマ形式で記述します。スキーマで指定された値は、関数のレスポンス値です。

このフィールドは response と相互に排他的です。

JSON 表現
{
  "name": string,
  "description": string,
  "behavior": enum (Behavior),
  "parameters": {
    object (Schema)
  },
  "parametersJsonSchema": value,
  "response": {
    object (Schema)
  },
  "responseJsonSchema": value
}

動作

関数の動作を定義します。デフォルトは BLOCKING です。

列挙型
UNSPECIFIED この値は使用されません。
BLOCKING 設定されている場合、システムは関数レスポンスを受信するまで待機してから、会話を続行します。
NON_BLOCKING 設定されている場合、システムは関数レスポンスの受信を待機しません。代わりに、ユーザーとモデル間の会話を維持しながら、関数レスポンスが利用可能になったときに処理を試みます。

GoogleSearchRetrieval

Google が提供する、グラウンディング用の公開ウェブデータを取得するツール。

フィールド
dynamicRetrievalConfig object (DynamicRetrievalConfig)

指定されたソースの動的取得構成を指定します。

JSON 表現
{
  "dynamicRetrievalConfig": {
    object (DynamicRetrievalConfig)
  }
}

DynamicRetrievalConfig

動的取得をカスタマイズするオプションについて説明します。

フィールド
mode enum (Mode)

動的取得で使用される予測子のモード。

dynamicThreshold number

動的取得で使用するしきい値。設定しない場合、システムのデフォルト値が使用されます。

JSON 表現
{
  "mode": enum (Mode),
  "dynamicThreshold": number
}

モード

動的取得で使用される予測子のモード。

列挙型
MODE_UNSPECIFIED 常に取得をトリガーします。
MODE_DYNAMIC 取得は、システムが必要と判断した場合にのみ実行されます。

CodeExecution

この型にはフィールドがありません。

モデルによって生成されたコードを実行し、結果をモデルに自動的に返すツール。

このツールを使用する場合にのみ生成される ExecutableCodeCodeExecutionResult もご覧ください。

GoogleSearch

GoogleSearch ツールのタイプ。モデルで Google 検索をサポートするツール。Powered by Google。

フィールド
timeRangeFilter object (Interval)

省略可。検索結果を特定の期間に絞り込みます。開始時刻を設定した場合は、終了時刻も設定する必要があります(逆も同様です)。

searchTypes object (SearchTypes)

省略可。有効にする検索タイプのセット。設定されていない場合、ウェブ検索はデフォルトで有効になります。

JSON 表現
{
  "timeRangeFilter": {
    object (Interval)
  },
  "searchTypes": {
    object (SearchTypes)
  }
}

間隔

時間間隔を表します。開始日時を示す Timestamp(この日時を含む)と終了日時を示す Timestamp(この日時を含まない)としてエンコードされます。

開始日時は終了日時以前にする必要があります。開始日時と終了日時が同じ場合、時間間隔は空になります(どの時間とも一致しません)。開始日時と終了日時が両方とも指定されていない場合、その時間間隔はすべての日時と一致します。

フィールド
startTime string (Timestamp format)

省略可。時間間隔の開始日時(この日時を含む)。

指定した場合、開始日時と同じかそれ以降の Timestamp がこの時間間隔に一致します。

RFC 3339 を使用します。生成された出力は常に Z 正規化され、小数点以下は 0、3、6、または 9 桁になります。「Z」以外のオフセットも使用できます。例: "2014-10-02T15:01:23Z""2014-10-02T15:01:23.045123456Z""2014-10-02T15:01:23+05:30"

endTime string (Timestamp format)

省略可。時間間隔の終了日時(この日時を含まない)。

指定した場合、終了時刻より前の Timestamp がこの時間間隔に一致します。

RFC 3339 を使用します。生成された出力は常に Z 正規化され、小数点以下は 0、3、6、または 9 桁になります。「Z」以外のオフセットも使用できます。例: "2014-10-02T15:01:23Z""2014-10-02T15:01:23.045123456Z""2014-10-02T15:01:23+05:30"

JSON 表現
{
  "startTime": string,
  "endTime": string
}

SearchTypes

GoogleSearch ツールで有効にできるさまざまな種類の検索。

フィールド
JSON 表現
{
  "webSearch": {
    object (WebSearch)
  },
  "imageSearch": {
    object (ImageSearch)
  }
}

WebSearch

この型にはフィールドがありません。

グラウンディングと関連する構成の標準的なウェブ検索。

ImageSearch

この型にはフィールドがありません。

グラウンディングと関連する構成の画像検索。

ComputerUse

コンピュータ使用ツールのタイプ。

フィールド
environment enum (Environment)

必須。運用中の環境。

excludedPredefinedFunctions[] string

省略可。デフォルトでは、事前定義された関数は最終的なモデル呼び出しに含まれます。一部のユーザーは、自動的に含まれないように明示的に除外できます。これには 2 つの目的があります。1. より制限された / 異なるアクション空間を使用する。2. 事前定義関数の定義 / 指示を改善します。

enablePromptInjectionDetection boolean

省略可。コンピュータ使用リクエストでプロンプト インジェクション検出チェックを有効にするかどうか。

disabledSafetyPolicies[] enum (SafetyPolicy)

省略可。パソコンの使用に関する安全ポリシーを無効にしました。

JSON 表現
{
  "environment": enum (Environment),
  "excludedPredefinedFunctions": [
    string
  ],
  "enablePromptInjectionDetection": boolean,
  "disabledSafetyPolicies": [
    enum (SafetyPolicy)
  ]
}

環境

ウェブブラウザなど、操作されている環境を表します。

列挙型
ENVIRONMENT_UNSPECIFIED デフォルトは browser です。
ENVIRONMENT_BROWSER ウェブブラウザで動作します。
ENVIRONMENT_MOBILE モバイル環境で動作します。
ENVIRONMENT_DESKTOP デスクトップ環境で動作します。

SafetyPolicy

パソコンの使用に関する事前定義済みの安全ポリシー。

列挙型
SAFETY_POLICY_UNSPECIFIED 安全性ポリシーが指定されていません。
FINANCIAL_TRANSACTIONS 金融取引の安全性ポリシー。
SENSITIVE_DATA_MODIFICATION 機密データの変更に関する安全性ポリシー。
COMMUNICATION_TOOL コミュニケーション ツール(Gmail、Chat、Meet など)の安全に関するポリシー。
ACCOUNT_CREATION アカウント作成に関する安全性ポリシー。
DATA_MODIFICATION データ変更の安全性ポリシー。
LEGAL_TERMS_AND_AGREEMENTS 法的条項と契約に関する安全性ポリシー。

UrlContext

この型にはフィールドがありません。

URL コンテキストの取得をサポートするツール。

FileSearch

セマンティック検索コーパスからナレッジを取得する FileSearch ツール。ファイルは、ImportFile API を使用してセマンティック検索コーパスにインポートされます。

フィールド
fileSearchStoreNames[] string

必須。取得元の fileSearchStore の名前。例: fileSearchStores/my-file-search-store-123

metadataFilter string

省略可。セマンティック検索のドキュメントとチャンクに適用するメタデータ フィルタ。

topK integer

省略可。取得するセマンティック検索チャンクの数。

JSON 表現
{
  "fileSearchStoreNames": [
    string
  ],
  "metadataFilter": string,
  "topK": integer
}

McpServer

MCPServer は、モデルから呼び出してアクションを実行できるサーバーです。MCP プロトコルを実装するサーバーです。次の ID: 6

フィールド
name string

MCPServer の名前。

transport Union type
MCPServer への接続に使用するトランスポート。transport は次のいずれかになります。
streamableHttpTransport object (StreamableHttpTransport)

HTTP リクエストとレスポンスをストリーミングできるトランスポート。

JSON 表現
{
  "name": string,

  // transport
  "streamableHttpTransport": {
    object (StreamableHttpTransport)
  }
  // Union type
}

StreamableHttpTransport

HTTP リクエストとレスポンスをストリーミングできるトランスポート。次の ID: 6

フィールド
url string

MCPServer エンドポイントの完全な URL。例: "https://api.example.com/mcp"

headers map (key: string, value: string)

省略可: 認証ヘッダー、タイムアウトなどのフィールド(必要な場合)。

"key": value ペアのリストを含むオブジェクト。例: { "name": "wrench", "mass": "1.3kg", "count": "3" }

timeout string (Duration format)

通常のオペレーションの HTTP タイムアウト。

s で終わる小数 9 桁までの秒単位の期間。例: "3.5s"

sseReadTimeout string (Duration format)

SSE 読み取りオペレーションのタイムアウト。

s で終わる小数 9 桁までの秒単位の期間。例: "3.5s"

terminateOnClose boolean

トランスポートが閉じられたときにクライアント セッションを閉じるかどうか。

JSON 表現
{
  "url": string,
  "headers": {
    string: string,
    ...
  },
  "timeout": string,
  "sseReadTimeout": string,
  "terminateOnClose": boolean
}

GoogleMaps

ユーザーのクエリに地理空間コンテキストを提供する GoogleMaps ツール。

フィールド
enableWidget boolean

省略可。レスポンスの GroundingMetadata でウィジェット コンテキスト トークンを返すかどうか。デベロッパーは、ウィジェット コンテキスト トークンを使用して、モデルがレスポンスで参照する場所に関連する地理空間コンテキストを含む Google マップ ウィジェットをレンダリングできます。

JSON 表現
{
  "enableWidget": boolean
}

REST リソース: auth_tokens

リソース: AuthToken

一時的な認証トークンを作成するリクエスト。

フィールド
name string

出力専用。ID。トークン自体。

expireTime string (Timestamp format)

省略可。入力専用。変更不可。結果のトークンを使用する際に、BidiGenerateContent セッションのメッセージが拒否されるまでの時間(省略可)。(この時間を過ぎると、Gemini がセッションを事前に終了することがあります)。

設定しない場合、デフォルトで 30 分後になります。設定する場合、値は 20 時間以内の将来の日時にする必要があります。

RFC 3339 を使用します。生成された出力は常に Z 正規化され、小数点以下は 0、3、6、または 9 桁になります。「Z」以外のオフセットも使用できます。例: "2014-10-02T15:01:23Z""2014-10-02T15:01:23.045123456Z""2014-10-02T15:01:23+05:30"

newSessionExpireTime string (Timestamp format)

省略可。入力専用。変更不可。このリクエストの結果として得られたトークンを使用する新しい Live API セッションが拒否されるまでの時間。

設定しない場合、デフォルトは 60 秒後になります。設定する場合、値は 20 時間以内の将来の日時にする必要があります。

RFC 3339 を使用します。生成された出力は常に Z 正規化され、小数点以下は 0、3、6、または 9 桁になります。「Z」以外のオフセットも使用できます。例: "2014-10-02T15:01:23Z""2014-10-02T15:01:23.045123456Z""2014-10-02T15:01:23+05:30"

fieldMask string (FieldMask format)

省略可。入力専用。変更不可。fieldMask が空で、bidiGenerateContentSetup が存在しない場合、有効な BidiGenerateContentSetup メッセージは Live API 接続から取得されます。

fieldMask が空で、bidiGenerateContentSetup が存在する場合、有効な BidiGenerateContentSetup メッセージは、このリクエストの bidiGenerateContentSetup から完全に取得されます。Live API 接続からの設定メッセージは無視されます。

fieldMask が空でない場合、bidiGenerateContentSetup の対応するフィールドは、Live API 接続の設定メッセージのフィールドを上書きします。

完全修飾フィールド名のカンマ区切りリスト。例: "user.displayName,photo"

config Union type
結果のトークンのメソッド固有の構成。config は次のいずれかになります。
bidiGenerateContentSetup object (BidiGenerateContentSetup)

省略可。入力専用。変更不可。BidiGenerateContent 固有の構成。

uses integer

省略可。入力専用。変更不可。トークンを使用できる回数。この値が 0 の場合、上限は適用されません。Live API セッションの再開は使用回数としてカウントされません。指定しない場合、デフォルトは 1 です。

JSON 表現
{
  "name": string,
  "expireTime": string,
  "newSessionExpireTime": string,
  "fieldMask": string,

  // config
  "bidiGenerateContentSetup": {
    object (BidiGenerateContentSetup)
  }
  // Union type
  "uses": integer
}

BidiGenerateContentSetup

最初の BidiGenerateContentClientMessage で送信されるメッセージ(最初の でのみ送信)。ストリーミング RPC の期間に適用される構成が含まれています。

クライアントは、BidiGenerateContentSetupComplete メッセージを待って、追加メッセージを送信する必要があります。

フィールド
model string

必須。モデルのリソース名。これは、使用するモデルの ID として機能します。

形式: models/{model}

generationConfig object (GenerationConfig)

省略可。生成の構成。

次のフィールドはサポートされていません。

  • responseLogprobs
  • responseMimeType
  • logprobs
  • responseSchema
  • responseJsonSchema
  • stop_sequence
  • skipResponseCache
  • routing_config
  • audio_timestamp
systemInstruction object (Content)

省略可。ユーザーがモデルに提供するシステム指示。

注: パートにはテキストのみを使用します。各パートのコンテンツは別の段落にします。

tools[] object (Tool)

省略可。モデルが次のレスポンスの生成に使用できる Tools のリスト。

Tool は、システムが外部システムと対話して、モデルの知識や範囲外のアクションまたは一連のアクションを実行できるようにするコードです。

realtimeInputConfig object (RealtimeInputConfig)

省略可。リアルタイム入力の処理を構成します。

sessionResumption object (SessionResumptionConfig)

省略可。セッション再開メカニズムを構成します。

含まれている場合、サーバーは SessionResumptionUpdate メッセージを送信します。

contextWindowCompression object (ContextWindowCompressionConfig)

省略可。コンテキスト ウィンドウの圧縮メカニズムを構成します。

含まれている場合、サーバーは構成された長さを超えると、コンテキストのサイズを自動的に縮小します。

inputAudioTranscription object (AudioTranscriptionConfig)

省略可。設定されている場合、音声入力の文字起こしを有効にします。音声文字変換は、構成されている場合、入力音声の言語と一致します。

outputAudioTranscription object (AudioTranscriptionConfig)

省略可。設定されている場合、モデルのオーディオ出力の文字起こしを有効にします。音声文字変換は、構成されている場合、出力音声に指定された言語コードに従って行われます。

historyConfig object (HistoryConfig)

省略可。クライアントとサーバー間の履歴の交換を構成します。

JSON 表現
{
  "model": string,
  "generationConfig": {
    object (GenerationConfig)
  },
  "systemInstruction": {
    object (Content)
  },
  "tools": [
    {
      object (Tool)
    }
  ],
  "realtimeInputConfig": {
    object (RealtimeInputConfig)
  },
  "sessionResumption": {
    object (SessionResumptionConfig)
  },
  "contextWindowCompression": {
    object (ContextWindowCompressionConfig)
  },
  "inputAudioTranscription": {
    object (AudioTranscriptionConfig)
  },
  "outputAudioTranscription": {
    object (AudioTranscriptionConfig)
  },
  "historyConfig": {
    object (HistoryConfig)
  }
}

GenerationConfig

モデルの生成と出力の構成オプション。すべてのモデルですべてのパラメータを構成できるわけではありません。

フィールド
stopSequences[] string

省略可。出力生成を停止する一連の文字(最大 5 つ)。指定した場合、API は stop_sequence が最初に現れたところで停止します。停止シーケンスはレスポンスには含まれません。

responseMimeType string

省略可。生成された候補テキストの MIME タイプ。サポートされている MIME タイプは、text/plain(デフォルト): テキスト出力です。application/json: レスポンス候補の JSON レスポンス。text/x.enum: レスポンス候補の文字列レスポンスとしての ENUM。サポートされているすべてのテキスト MIME タイプのリストについては、ドキュメントをご覧ください。

responseSchema
(deprecated)
object (Schema)

省略可。生成された候補テキストの出力スキーマ。スキーマは OpenAPI スキーマのサブセットである必要があり、オブジェクト、プリミティブ、配列にすることができます。

設定する場合は、互換性のある responseMimeType も設定する必要があります。互換性のある MIME タイプ: application/json: JSON レスポンスのスキーマ。詳しくは、JSON テキスト生成ガイドをご覧ください。

_responseJsonSchema
(deprecated)
value (Value format)

省略可。生成されたレスポンスの出力スキーマ。これは、JSON スキーマを受け入れる responseSchema の代替手段です。

設定する場合は、responseSchema を省略する必要がありますが、responseMimeType は必須です。

完全な JSON スキーマを送信できますが、すべての機能がサポートされているわけではありません。具体的には、次のプロパティのみがサポートされています。

  • $id
  • $defs
  • $ref
  • $anchor
  • type
  • format
  • title
  • description
  • enum(文字列と数値)
  • items
  • prefixItems
  • minItems
  • maxItems
  • minimum
  • maximum
  • anyOf
  • oneOfanyOf と同じように解釈されます)
  • properties
  • additionalProperties
  • required

標準以外の propertyOrdering プロパティを設定することもできます。

循環参照は一定の範囲で展開されるため、必須ではないプロパティ内でのみ使用できます。(Nullable プロパティだけでは不十分です)。サブスキーマに $ref が設定されている場合、$ で始まるプロパティ以外のプロパティは設定できません。

responseJsonSchema value (Value format)

省略可。内部の詳細。このフィールドではなく responseJsonSchema を使用します。

responseModalities[] enum (Modality)

省略可。リクエストされたレスポンスのモダリティ。モデルが返すことができ、レスポンスで想定されるべきモダリティのセットを表します。これは、レスポンスのモダリティと完全に一致しています。

モデルは、サポートされているモダリティの複数の組み合わせを持つ場合があります。リクエストされたモダリティがサポートされている組み合わせのいずれとも一致しない場合は、エラーが返されます。

空のリストは、テキストのみをリクエストすることと同じです。

candidateCount integer

省略可。返す生成されたレスポンスの数。設定しない場合、デフォルトで 1 になります。なお、この機能は以前の世代のモデル(Gemini 1.0 ファミリー)では動作しません。

maxOutputTokens integer

省略可。レスポンス候補に含めるトークンの最大数。

注: デフォルト値はモデルによって異なります。getModel 関数から返される ModelModel.output_token_limit 属性をご覧ください。

temperature number

省略可。出力のランダム性を制御します。

注: デフォルト値はモデルによって異なります。getModel 関数から返される ModelModel.temperature 属性をご覧ください。

値の範囲は [0.0, 2.0] です。

topP number

省略可。サンプリング時に考慮するトークンの累積確率の最大値。

このモデルは、Top-k と Top-p(Nucleus)サンプリングを組み合わせて使用します。

トークンは割り当てられた確率に基づいて並べ替えられ、最も可能性の高いトークンのみが考慮されます。Top-k サンプリングは、考慮するトークンの最大数を直接制限しますが、Nucleus サンプリングは、累積確率に基づいてトークンの数を制限します。

注: デフォルト値は Model によって異なり、getModel 関数から返される Model.top_p 属性によって指定されます。topK 属性が空の場合、モデルは top-k サンプリングを適用せず、リクエストで topK を設定できません。

topK integer

省略可。サンプリング時に考慮するトークンの最大数。

Gemini モデルは、Top-P(Nucleus)サンプリングまたは Top-K と Nucleus サンプリングの組み合わせを使用します。Top-k サンプリングでは、最も確率の高い topK 個のトークンのセットが考慮されます。Nucleus サンプリングで実行されているモデルでは、topK 設定は使用できません。

注: デフォルト値は Model によって異なり、getModel 関数から返される Model.top_p 属性によって指定されます。topK 属性が空の場合、モデルは top-k サンプリングを適用せず、リクエストで topK を設定できません。

seed integer

省略可。デコードで使用されるシード。設定されていない場合、リクエストはランダムに生成されたシードを使用します。

presencePenalty number

省略可。トークンがレスポンスですでに確認されている場合、次のトークンの logprobs に適用されるプレゼンス ペナルティ。

このペナルティはバイナリのオン/オフであり、トークンの使用回数(初回以降)には依存しません。使用するたびにペナルティが増加する場合は、frequencyPenalty を使用します。

正のペナルティは、レスポンスですでに使用されているトークンの使用を抑制し、語彙を増やします。

負のペナルティは、レスポンスですでに使用されているトークンの使用を促し、語彙を減らします。

frequencyPenalty number

省略可。次のトークンの logprobs に適用される頻度ペナルティ。各トークンがこれまでのレスポンスで出現した回数を掛けます。

正のペナルティは、すでに使用されているトークンの使用を、トークンの使用回数に比例して抑制します。トークンが使用される回数が多いほど、モデルがそのトークンを再び使用することが難しくなり、レスポンスの語彙が増えます。

注意: 負のペナルティは、トークンが使用された回数に比例してトークンを再利用するようにモデルを促します。負の値が小さいほど、回答の語彙が減ります。負の値が大きいほど、モデルは maxOutputTokens の上限に達するまで共通トークンの繰り返しを開始します。

responseLogprobs boolean

省略可。true の場合、logprobs の結果をレスポンスでエクスポートします。

logprobs integer

省略可。responseLogprobs=True の場合にのみ有効です。これにより、Candidate.logprobs_result の各デコード ステップで返される上位ログ確率の数(選択された候補を含む)が設定されます。数値は [0, 20] の範囲内である必要があります。

enableEnhancedCivicAnswers boolean

省略可。強化された市民向け回答を有効にします。一部のモデルではご利用いただけない場合があります。

speechConfig object (SpeechConfig)

省略可。音声生成の構成。

thinkingConfig object (ThinkingConfig)

省略可。思考機能の構成。思考をサポートしていないモデルに対してこのフィールドが設定されている場合、エラーが返されます。

imageConfig object (ImageConfig)

省略可。画像生成の構成。これらの構成オプションをサポートしていないモデルに対してこのフィールドが設定されている場合、エラーが返されます。

mediaResolution enum (MediaResolution)

省略可。指定した場合、指定されたメディアの解像度が使用されます。

enableAffectiveDialog boolean

省略可。有効にすると、モデルは感情を検出し、それに応じて回答を調整します。

responseFormat object (ResponseFormatConfig)

省略可。レスポンス出力形式の構成。フラットな構造で、モダリティ(テキスト、音声、画像)ごとに出力構成を指定できます。

translationConfig object (TranslationConfig)

省略可。変換の構成。

audioTranscriptionConfig object (AudioTranscriptionConfig)

省略可。音声文字変換(音声認識)の構成。

JSON 表現
{
  "stopSequences": [
    string
  ],
  "responseMimeType": string,
  "responseSchema": {
    object (Schema)
  },
  "_responseJsonSchema": value,
  "responseJsonSchema": value,
  "responseModalities": [
    enum (Modality)
  ],
  "candidateCount": integer,
  "maxOutputTokens": integer,
  "temperature": number,
  "topP": number,
  "topK": integer,
  "seed": integer,
  "presencePenalty": number,
  "frequencyPenalty": number,
  "responseLogprobs": boolean,
  "logprobs": integer,
  "enableEnhancedCivicAnswers": boolean,
  "speechConfig": {
    object (SpeechConfig)
  },
  "thinkingConfig": {
    object (ThinkingConfig)
  },
  "imageConfig": {
    object (ImageConfig)
  },
  "mediaResolution": enum (MediaResolution),
  "enableAffectiveDialog": boolean,
  "responseFormat": {
    object (ResponseFormatConfig)
  },
  "translationConfig": {
    object (TranslationConfig)
  },
  "audioTranscriptionConfig": {
    object (AudioTranscriptionConfig)
  }
}

モダリティ

レスポンスでサポートされているモダリティ。

列挙型
MODALITY_UNSPECIFIED デフォルト値。
TEXT モデルがテキストを返すことを示します。
IMAGE モデルが画像を返す必要があることを示します。
AUDIO モデルが音声を返す必要があることを示します。

SpeechConfig

音声生成と文字起こしの構成。

フィールド
voiceConfig object (VoiceConfig)

単一音声出力の場合の構成。

multiSpeakerVoiceConfig object (MultiSpeakerVoiceConfig)

省略可。マルチスピーカー設定の構成。voiceConfig フィールドとは相互に排他的です。

languageCode string

省略可。ユーザーがアプリで使用するように設定した IETF BCP-47 言語コード。音声認識と音声合成に使用されます。

有効な値は、de-DEen-AUen-GBen-INen-USes-USfr-FRhi-INpt-BRar-XAes-ESfr-CAid-IDit-ITja-JPtr-TRvi-VNbn-INgu-INkn-INml-INmr-INta-INte-INnl-NLko-KRcmn-CNpl-PLru-RUth-TH です。

JSON 表現
{
  "voiceConfig": {
    object (VoiceConfig)
  },
  "multiSpeakerVoiceConfig": {
    object (MultiSpeakerVoiceConfig)
  },
  "languageCode": string
}

VoiceConfig

使用する音声の構成。

フィールド
voice_config Union type
スピーカーが使用する構成。voice_config は次のいずれかになります。
prebuiltVoiceConfig object (PrebuiltVoiceConfig)

使用する事前構築済み音声の構成。

JSON 表現
{

  // voice_config
  "prebuiltVoiceConfig": {
    object (PrebuiltVoiceConfig)
  }
  // Union type
}

PrebuiltVoiceConfig

使用するビルド済みスピーカーの構成。

フィールド
voiceName string

使用するプリセット音声の名前。

JSON 表現
{
  "voiceName": string
}

MultiSpeakerVoiceConfig

マルチスピーカー設定の構成。

フィールド
speakerVoiceConfigs[] object (SpeakerVoiceConfig)

必須。有効になっているすべてのスピーカー音声。

JSON 表現
{
  "speakerVoiceConfigs": [
    {
      object (SpeakerVoiceConfig)
    }
  ]
}

SpeakerVoiceConfig

マルチスピーカー設定の単一スピーカーの構成。

フィールド
speaker string

必須。使用するスピーカーの名前。プロンプトと同じにする必要があります。

voiceConfig object (VoiceConfig)

必須。使用する音声の構成。

JSON 表現
{
  "speaker": string,
  "voiceConfig": {
    object (VoiceConfig)
  }
}

ThinkingConfig

思考機能の構成。

フィールド
includeThoughts boolean

レスポンスに思考を含めるかどうかを示します。true の場合、思考は利用可能な場合にのみ返されます。

thinkingBudget integer

モデルが生成する思考トークンの数。

thinkingLevel enum (ThinkingLevel)

省略可。モデルがレスポンスを生成する前に実行する内部推論プロセスの最大深度を制御します。デフォルト値はモデルによって異なります。詳しくは、思考レベルに関するガイドをご覧ください。Gemini 3 以降のモデルにおすすめします。以前のモデルで使用するとエラーが発生します。

JSON 表現
{
  "includeThoughts": boolean,
  "thinkingBudget": integer,
  "thinkingLevel": enum (ThinkingLevel)
}

ThinkingLevel

ユーザーが、整数値の予算ではなく列挙型を使用して、思考量を指定できるようにします。

列挙型
THINKING_LEVEL_UNSPECIFIED デフォルト値。
MINIMAL ほとんど考えずに済む。
LOW 思考レベルが低い。
MEDIUM 中程度の思考レベル。
HIGH 思考レベルが高い。

ImageConfig

画像生成機能の構成。

フィールド
aspectRatio string

省略可。生成する画像のアスペクト比。サポートされているアスペクト比: 1:11:44:11:88:12:33:23:44:34:55:49:1616:921:9

指定しない場合、モデルは提供された参照画像に基づいてデフォルトのアスペクト比を選択します。

imageSize string

省略可。生成される画像のサイズを指定します。サポートされている値は、5121K2K4K です。指定しない場合、モデルはデフォルト値 1K を使用します。

JSON 表現
{
  "aspectRatio": string,
  "imageSize": string
}

MediaResolution

入力メディアのメディア解像度。

列挙型
MEDIA_RESOLUTION_UNSPECIFIED メディアの解像度が設定されていません。
MEDIA_RESOLUTION_LOW メディアの解像度が低に設定されている(64 トークン)。
MEDIA_RESOLUTION_MEDIUM メディアの解像度が中(256 トークン)に設定されています。
MEDIA_RESOLUTION_HIGH メディアの解像度を高に設定(256 トークンでズームしてリフレーミング)。

ResponseFormatConfig

レスポンス出力形式の構成。これは、各オプションのサブフィールドが特定の出力モダリティを構成するフラット オブジェクトです。

フィールド
text object (TextResponseFormat)

省略可。テキスト出力形式の構成。

audio object (AudioResponseFormat)

省略可。オーディオ出力形式の構成。

image object (ImageResponseFormat)

省略可。画像出力形式の構成。

JSON 表現
{
  "text": {
    object (TextResponseFormat)
  },
  "audio": {
    object (AudioResponseFormat)
  },
  "image": {
    object (ImageResponseFormat)
  }
}

TextResponseFormat

テキスト出力形式の構成。

フィールド
mimeType enum (MimeType)

省略可。テキスト出力の MIME タイプ。

schema value (Value format)

省略可。出力が準拠する必要がある JSON スキーマ。mimeType が APPLICATION_JSON の場合にのみ適用されます。

JSON 表現
{
  "mimeType": enum (MimeType),
  "schema": value
}

MimeType

テキスト出力でサポートされている MIME タイプ。

列挙型
MIME_TYPE_UNSPECIFIED デフォルト値。この値は使用されません。
APPLICATION_JSON JSON 出力形式。
TEXT_PLAIN 書式なしテキストの出力形式。

AudioResponseFormat

オーディオ出力形式の構成。

フィールド
mimeType enum (MimeType)

省略可。オーディオ出力の MIME タイプ。

delivery enum (Delivery)

省略可。オーディオ出力の配信モード。

sampleRate integer

省略可。サンプルレート(Hz)。

bitRate integer

省略可。ビットレート(ビット/秒単位)。圧縮形式(MP3、Opus)にのみ適用されます。

JSON 表現
{
  "mimeType": enum (MimeType),
  "delivery": enum (Delivery),
  "sampleRate": integer,
  "bitRate": integer
}

MimeType

オーディオ出力でサポートされている MIME タイプ。

列挙型
MIME_TYPE_UNSPECIFIED デフォルト値。この値は使用されません。
AUDIO_MP3 MP3 音声形式。
AUDIO_OGG_OPUS OGG Opus 音声形式。
AUDIO_L16 RAW PCM(L16)音声形式。
AUDIO_WAV WAV 音声形式。
AUDIO_ALAW A-law 音声形式。
AUDIO_MULAW Mu-law オーディオ形式。

配信

オーディオ出力の配信モード。

列挙型
DELIVERY_UNSPECIFIED デフォルト値。この値は使用されません。
INLINE 音声データはレスポンスでインラインで返されます。
URI 音声データは URI として返されます。

ImageResponseFormat

画像出力形式の構成。

フィールド
mimeType enum (MimeType)

省略可。画像出力の MIME タイプ。

delivery enum (Delivery)

省略可。画像出力の配信モード。

aspectRatio enum (AspectRatio)

省略可。画像出力のアスペクト比。

imageSize enum (ImageSize)

省略可。画像出力のサイズ。

JSON 表現
{
  "mimeType": enum (MimeType),
  "delivery": enum (Delivery),
  "aspectRatio": enum (AspectRatio),
  "imageSize": enum (ImageSize)
}

MimeType

画像出力でサポートされている MIME タイプ。

列挙型
MIME_TYPE_UNSPECIFIED デフォルト値。この値は使用されません。
IMAGE_JPEG JPEG 画像形式。

配信

画像出力の配信モード。

列挙型
DELIVERY_UNSPECIFIED デフォルト値。この値は使用されません。
INLINE 画像データはレスポンスでインラインで返されます。
URI 画像データは URI として返されます。

アスペクト比

画像出力でサポートされているアスペクト比。

列挙型
ASPECT_RATIO_UNSPECIFIED デフォルト値。この値は使用されません。
ASPECT_RATIO_ONE_BY_ONE アスペクト比 1:1。
ASPECT_RATIO_TWO_BY_THREE アスペクト比 2:3。
ASPECT_RATIO_THREE_BY_TWO アスペクト比 3:2。
ASPECT_RATIO_THREE_BY_FOUR アスペクト比 3:4。
ASPECT_RATIO_FOUR_BY_THREE アスペクト比 4:3。
ASPECT_RATIO_FOUR_BY_FIVE アスペクト比 4:5。
ASPECT_RATIO_FIVE_BY_FOUR アスペクト比 5:4。
ASPECT_RATIO_NINE_BY_SIXTEEN アスペクト比 9:16。
ASPECT_RATIO_SIXTEEN_BY_NINE アスペクト比 16:9。
ASPECT_RATIO_TWENTY_ONE_BY_NINE アスペクト比 21:9。
ASPECT_RATIO_ONE_BY_EIGHT アスペクト比 1:8。
ASPECT_RATIO_EIGHT_BY_ONE アスペクト比 8:1。
ASPECT_RATIO_ONE_BY_FOUR アスペクト比 1:4。
ASPECT_RATIO_FOUR_BY_ONE アスペクト比 4:1。

ImageSize

画像出力でサポートされている画像サイズ。

列挙型
IMAGE_SIZE_UNSPECIFIED デフォルト値。この値は使用されません。
IMAGE_SIZE_FIVE_TWELVE 512 ピクセルの画像サイズ。
IMAGE_SIZE_ONE_K 1K 画像サイズ。
IMAGE_SIZE_TWO_K 2K 画像サイズ。
IMAGE_SIZE_FOUR_K 4K 画像サイズ。

TranslationConfig

翻訳機能の構成。

フィールド
targetLanguageCode string

必須。翻訳のターゲット言語。サポートされている値は BCP-47 言語コード(en、es、fr など)です。

echoTargetLanguage boolean

省略可。true の場合、モデルはターゲット言語が話されるときに音声を生成します。つまり、入力された内容をそのまま繰り返します。false の場合、ターゲット言語の音声は生成されません。

JSON 表現
{
  "targetLanguageCode": string,
  "echoTargetLanguage": boolean
}

AudioTranscriptionConfig

音声文字変換の構成。

フィールド
languageCodes[] string

省略可。音声に含まれる言語に関するヒントを提供する BCP-47 言語コード。省略または空の場合、デフォルトで言語の自動検出が使用されます。

adaptationPhrases[]
(deprecated)
string

省略可。音声適応に使用されるフレーズのリスト。ASR モデルをバイアスして、これらの特定の用語の認識を改善します。

customVocabulary[] string

省略可。特定の用語(プロダクト名、固有名詞、専門用語)を認識するように音声認識モデルにバイアスをかけるためのカスタム語彙フレーズのリスト。

wordTimestamp boolean

省略可。単語レベルのタイムスタンプの生成を構成します。

diarization boolean

省略可。話者ダイアライゼーションを構成します。

language_config Union type
非推奨: 代わりに、トップレベルの language_codes を使用してください。language_config は次のいずれかになります。
languageAuto
(deprecated)
object (LanguageAuto)

省略可。モデルは言語を自動的に検出します。

languageHints
(deprecated)
object (LanguageHints)

省略可。音声の言語を 1 つ以上指定します。

JSON 表現
{
  "languageCodes": [
    string
  ],
  "adaptationPhrases": [
    string
  ],
  "customVocabulary": [
    string
  ],
  "wordTimestamp": boolean,
  "diarization": boolean,

  // language_config
  "languageAuto": {
    object (LanguageAuto)
  },
  "languageHints": {
    object (LanguageHints)
  }
  // Union type
}

LanguageAuto

この型にはフィールドがありません。

音声の言語を自動的に検出する必要があることを示します。

LanguageHints

音声に含まれる可能性のある言語に関するヒントをモデルに提供します。

フィールド
languageCodes[]
(deprecated)
string

必須。BCP-47 言語コード。

JSON 表現
{
  "languageCodes": [
    string
  ]
}

RealtimeInputConfig

BidiGenerateContent でリアルタイム入力の動作を構成します。

フィールド
automaticActivityDetection object (AutomaticActivityDetection)

省略可。設定されていない場合、デフォルトでアクティビティの自動検出が有効になります。自動音声検出が無効になっている場合、クライアントはアクティビティ シグナルを送信する必要があります。

activityHandling enum (ActivityHandling)

省略可。アクティビティの効果を定義します。

turnCoverage enum (TurnCoverage)

省略可。ユーザーのターンに含まれる入力を定義します。

JSON 表現
{
  "automaticActivityDetection": {
    object (AutomaticActivityDetection)
  },
  "activityHandling": enum (ActivityHandling),
  "turnCoverage": enum (TurnCoverage)
}

AutomaticActivityDetection

アクティビティの自動検出を構成します。

フィールド
disabled boolean

省略可。有効にすると(デフォルト)、検出された音声入力とテキスト入力がアクティビティとしてカウントされます。無効になっている場合、クライアントはアクティビティ シグナルを送信する必要があります。

startOfSpeechSensitivity enum (StartSensitivity)

省略可。音声が検出される可能性を決定します。

prefixPaddingMs integer

省略可。発話の開始がコミットされる前に検出された発話の必要な時間。この値が小さいほど、発話の開始の検出感度が高くなり、短い発話も認識できるようになります。ただし、誤検出の可能性も高くなります。

endOfSpeechSensitivity enum (EndSensitivity)

省略可。検出された音声が終了する可能性を判断します。

silenceDurationMs integer

省略可。発話終了が確定するまでに検出された発話以外の音声(無音など)の必要な時間。この値を大きくすると、ユーザーの操作を中断することなく音声のギャップを長くすることができますが、モデルのレイテンシが増加します。

JSON 表現
{
  "disabled": boolean,
  "startOfSpeechSensitivity": enum (StartSensitivity),
  "prefixPaddingMs": integer,
  "endOfSpeechSensitivity": enum (EndSensitivity),
  "silenceDurationMs": integer
}

StartSensitivity

発話の開始を検出する方法を決定します。

列挙型
START_SENSITIVITY_UNSPECIFIED デフォルトは START_SENSITIVITY_HIGH です。
START_SENSITIVITY_HIGH 自動検出では、音声の開始がより頻繁に検出されます。
START_SENSITIVITY_LOW 自動検出では、音声の開始が検出される頻度が低くなります。

EndSensitivity

音声の終了を検出する方法を決定します。

列挙型
END_SENSITIVITY_UNSPECIFIED デフォルトは END_SENSITIVITY_HIGH です。
END_SENSITIVITY_HIGH 自動検出では、音声が終了する頻度が高くなります。
END_SENSITIVITY_LOW 自動検出では、音声が終了する頻度が少なくなります。

ActivityHandling

ユーザー アクティビティのさまざまな処理方法。

列挙型
ACTIVITY_HANDLING_UNSPECIFIED 指定しない場合、デフォルトの動作は START_OF_ACTIVITY_INTERRUPTS です。
START_OF_ACTIVITY_INTERRUPTS true の場合、アクティビティの開始によってモデルのレスポンスが中断されます(「割り込み」とも呼ばれます)。中断した時点で、モデルの現在のレスポンスは切り捨てられます。これはデフォルトの動作です。
NO_INTERRUPTION モデルのレスポンスが中断されることはありません。

TurnCoverage

ユーザーのターンに含める入力に関するオプション。

列挙型
TURN_COVERAGE_UNSPECIFIED 指定しない場合、モデルに基づいてデフォルトの動作が選択されます。たとえば、Gemini 2.5 のデフォルトは TURN_INCLUDES_ONLY_ACTIVITY ですが、Gemini 3.1 以降では TURN_INCLUDES_AUDIO_ACTIVITY_AND_ALL_VIDEO です。
TURN_INCLUDES_ONLY_ACTIVITY 前回のターン以降のアクティビティが含まれます。非アクティビティ(音声ストリームの無音など)は除外されます。
TURN_INCLUDES_ALL_INPUT 前回のターン以降のすべてのリアルタイム入力(音声ストリームの無音など、操作がない状態を含む)が含まれます。
TURN_INCLUDES_AUDIO_ACTIVITY_AND_ALL_VIDEO 音声アクティビティと、前回のターン以降のすべての動画が含まれます。アクティビティの自動検出では、音声アクティビティは音声を表し、無音は除外されます。

SessionResumptionConfig

セッション再開の構成。

このメッセージは、セッション構成に BidiGenerateContentSetup.session_resumption として含まれています。設定されている場合、サーバーは SessionResumptionUpdate メッセージを送信します。

フィールド
handle string

以前のセッションのハンドル。存在しない場合は、新しいセッションが作成されます。

セッション ハンドルは、以前の接続の SessionResumptionUpdate.token 値から取得されます。

JSON 表現
{
  "handle": string
}

ContextWindowCompressionConfig

コンテキスト ウィンドウの圧縮を有効にします。これは、モデルのコンテキスト ウィンドウが指定された長さを超えないように管理するメカニズムです。

フィールド
compression_mechanism Union type
使用されるコンテキスト ウィンドウの圧縮メカニズム。compression_mechanism は次のいずれかになります。
slidingWindow object (SlidingWindow)

スライディング ウィンドウ メカニズム。

triggerTokens string (int64 format)

コンテキスト ウィンドウの圧縮をトリガーするために必要なトークン数(ターンを実行する前)。

コンテキスト ウィンドウを短くするとモデルのレスポンスが速くなる可能性があるため、これを使用して品質とレイテンシのバランスを取ることができます。ただし、圧縮オペレーションは一時的なレイテンシの増加を引き起こすため、頻繁にトリガーしないでください。

設定しない場合、デフォルトはモデルのコンテキスト ウィンドウの上限の 80% です。これにより、次のユーザー リクエスト/モデル レスポンス用に 20% が残ります。

JSON 表現
{

  // compression_mechanism
  "slidingWindow": {
    object (SlidingWindow)
  }
  // Union type
  "triggerTokens": string
}

SlidingWindow

SlidingWindow メソッドは、コンテキスト ウィンドウの先頭にあるコンテンツを破棄することで動作します。結果のコンテキストは、常に USER ロールのターンの開始から始まります。システム指示と BidiGenerateContentSetup.prefix_turns は常に結果の先頭に残ります。

フィールド
targetTokens string (int64 format)

保持するトークンの目標数。デフォルト値は triggerTokens/2 です。

コンテキスト ウィンドウの一部を破棄すると、レイテンシが一時的に増加するため、この値は頻繁な圧縮オペレーションを回避するように調整する必要があります。

JSON 表現
{
  "targetTokens": string
}

HistoryConfig

履歴の構成。

このメッセージは、セッション構成に BidiGenerateContentSetup.history_config として含まれています。履歴メッセージの交換を設定します。

フィールド
initialHistoryInClientContent boolean

省略可。true の場合、サーバーは setupComplete を送信した後、turnCompletetrue になるまで待機し、最初に clientContent メッセージを処理します。この初期履歴ではモデル呼び出しはトリガーされず、ロール MODEL で終了する可能性があります。turnCompletetrue になると、クライアントは realtimeInput を介してリアルタイムの会話を開始できます。

JSON 表現
{
  "initialHistoryInClientContent": boolean
}

メソッド: auth_tokens.create

BidiGenerateContent セッションの動作を制限するために使用できるトークンを作成します。

エンドポイント

post https://generativelanguage.googleapis.com/v1beta/auth_tokens

リクエストの本文

リクエストの本文には AuthToken のインスタンスが含まれます。

フィールド
expireTime string (Timestamp format)

省略可。入力専用。変更不可。結果のトークンを使用する際に、BidiGenerateContent セッションのメッセージが拒否されるまでの時間(省略可)。(この時間を過ぎると、Gemini がセッションを事前に終了することがあります)。

設定しない場合、デフォルトで 30 分後になります。設定する場合、値は 20 時間以内の将来の日時にする必要があります。

RFC 3339 を使用します。生成された出力は常に Z 正規化され、小数点以下は 0、3、6、または 9 桁になります。「Z」以外のオフセットも使用できます。例: "2014-10-02T15:01:23Z""2014-10-02T15:01:23.045123456Z""2014-10-02T15:01:23+05:30"

newSessionExpireTime string (Timestamp format)

省略可。入力専用。変更不可。このリクエストの結果として得られたトークンを使用する新しい Live API セッションが拒否されるまでの時間。

設定しない場合、デフォルトは 60 秒後になります。設定する場合、値は 20 時間以内の将来の日時にする必要があります。

RFC 3339 を使用します。生成された出力は常に Z 正規化され、小数点以下は 0、3、6、または 9 桁になります。「Z」以外のオフセットも使用できます。例: "2014-10-02T15:01:23Z""2014-10-02T15:01:23.045123456Z""2014-10-02T15:01:23+05:30"

fieldMask string (FieldMask format)

省略可。入力専用。変更不可。fieldMask が空で、bidiGenerateContentSetup が存在しない場合、有効な BidiGenerateContentSetup メッセージは Live API 接続から取得されます。

fieldMask が空で、bidiGenerateContentSetup が存在する場合、有効な BidiGenerateContentSetup メッセージは、このリクエストの bidiGenerateContentSetup から完全に取得されます。Live API 接続からの設定メッセージは無視されます。

fieldMask が空でない場合、bidiGenerateContentSetup の対応するフィールドは、Live API 接続の設定メッセージのフィールドを上書きします。

完全修飾フィールド名のカンマ区切りリスト。例: "user.displayName,photo"

config Union type
結果のトークンのメソッド固有の構成。config は次のいずれかになります。
bidiGenerateContentSetup object (BidiGenerateContentSetup)

省略可。入力専用。変更不可。BidiGenerateContent 固有の構成。

uses integer

省略可。入力専用。変更不可。トークンを使用できる回数。この値が 0 の場合、上限は適用されません。Live API セッションの再開は使用回数としてカウントされません。指定しない場合、デフォルトは 1 です。

レスポンスの本文

成功した場合、レスポンスの本文には、新しく作成された AuthToken のインスタンスが含まれます。