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.5-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.5-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.5-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.5-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.5-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.5-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.5-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.5-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.5-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.5-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.5-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.5-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.5-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.5-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.5-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.5-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.5-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.5-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.5-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.5-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.5-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.5-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.5-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.5-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.5-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.5-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.5-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.5-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.5-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.5-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.5-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.5-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.5-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.5-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.5-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.5-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.5-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.5-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.5-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.5-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.5-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.5-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.5-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.5-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.5-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.5-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.5-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.5-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.5-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.5-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.5-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.5-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.5-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.5-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.5-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.5-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.5-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.5-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.5-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.5-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.5-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.5-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.5-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.5-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.5-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 つも返さない - プロンプトに問題があった場合にのみ、候補を 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)

セマンティック リトリーバーで取得された 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 バーに Wi-Fi はありますか?」や「Foo バーは車椅子でアクセスできますか?」など)に回答していました。現在、ソースとしてサポートされているのはクチコミ スニペットのみです。

フィールド
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_HATE_SPEECH 特定の属性に基づいて個人や集団に対する暴力や差別を助長するコンテンツ。
HARM_CATEGORY_DANGEROUS_CONTENT 危険な行為を奨励、促進、または可能にするコンテンツ。
HARM_CATEGORY_HARASSMENT 虐待的、脅迫的、またはいじめ、苦しめ、嘲笑することを目的としたコンテンツ。
HARM_CATEGORY_SEXUALLY_EXPLICIT 露骨な性表現を含むコンテンツ。
HARM_CATEGORY_CIVIC_INTEGRITY

非推奨: 選挙フィルタはサポートされなくなりました。有害カテゴリは市民の清廉性です。

HARM_CATEGORY_IMAGE_HATE ヘイトスピーチを含む画像。
HARM_CATEGORY_IMAGE_DANGEROUS_CONTENT 危険なコンテンツを含む画像。
HARM_CATEGORY_IMAGE_HARASSMENT ハラスメントを含む画像。
HARM_CATEGORY_IMAGE_SEXUALLY_EXPLICIT 性的描写が露骨なコンテンツを含む画像。
HARM_CATEGORY_JAILBREAK 安全フィルタを回避するように設計されたプロンプト。

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

インタラクションのサービスティア。

列挙型
SERVICE_TIER_UNSPECIFIED デフォルトのサービスティア(スタンダード)。
SERVICE_TIER_FLEX Flex サービスティア。
SERVICE_TIER_STANDARD スタンダード サービスティア。
SERVICE_TIER_PRIORITY 優先サービスティア。

AllowedTools

許可されたツールの構成。

フィールド
mode enum (ToolChoiceType)

ツール選択のモード。

tools[] string

許可されたツールの名前。

JSON 表現
{
  "mode": enum (ToolChoiceType),
  "tools": [
    string
  ]
}

メモ

モデル生成コンテンツの引用情報。

フィールド
startIndex integer

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

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

endIndex integer

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

type Union type
アノテーションのタイプ。type は次のいずれかになります。
urlCitation object (UrlCitation)

URL 引用アノテーション。

fileCitation object (FileCitation)

ファイル引用アノテーション。

placeCitation object (PlaceCitation)

場所の引用アノテーション。

JSON 表現
{
  "startIndex": integer,
  "endIndex": integer,

  // type
  "urlCitation": {
    object (UrlCitation)
  },
  "fileCitation": {
    object (FileCitation)
  },
  "placeCitation": {
    object (PlaceCitation)
  }
  // Union type
}

UrlCitation

URL 引用アノテーション。

フィールド
url string

URL。

title string

URL のタイトル。

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

FileCitation

ファイル引用アノテーション。

フィールド
documentUri string

ファイルの URI。

fileName string

ファイルの名前。

source string

テキストの一部に帰属するソース。

customMetadata object (Struct)

ユーザーが取得したコンテキストに関するメタデータを提供しました。

pageNumber integer

引用したドキュメントのページ番号(該当する場合)。

mediaId string

画像引用の場合のメディア ID(該当する場合)。

JSON 表現
{
  "documentUri": string,
  "fileName": string,
  "source": string,
  "customMetadata": {
    object (Struct)
  },
  "pageNumber": integer,
  "mediaId": string
}

PlaceCitation

場所の引用アノテーション。

フィールド
placeId string

場所の ID(places/{placeId} 形式)。

name string

場所のタイトル。

url string

場所の URI 参照。

reviewSnippets[] object (ReviewSnippet)

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

JSON 表現
{
  "placeId": string,
  "name": string,
  "url": string,
  "reviewSnippets": [
    {
      object (ReviewSnippet)
    }
  ]
}

アスペクト比

画像出力でサポートされているアスペクト比。

列挙型
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。

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
}

CodeExecution

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

モデルがコードを実行するために使用できるツール。

CodeExecutionCallStep

コード実行の呼び出しステップ。

フィールド
arguments object (CodeExecutionCallStepArguments)

必須。コード実行に渡す引数。

JSON 表現
{
  "arguments": {
    object (CodeExecutionCallStepArguments)
  }
}

CodeExecutionCallStepArguments

コード実行に渡す引数。

フィールド
language enum (Language)

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

code string

実行されるコード。

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

CodeExecutionResultStep

コード実行結果のステップ。

フィールド
result string

必須。コード実行の出力。

isError boolean

コード実行でエラーが発生したかどうか。

JSON 表現
{
  "result": string,
  "isError": boolean
}

ComputerUse

モデルがコンピュータとやり取りするために使用できるツール。

フィールド
environment enum (Environment)

運用中の環境。

excludedPredefinedFunctions[] string

モデル呼び出しから除外される事前定義関数のリスト。

enablePromptInjectionDetection boolean

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

disabledSafetyPolicies[] enum (SafetyPolicy)

省略可。パソコンの使用に関する安全ポリシーが無効になっています。

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

コンテンツ

レスポンスの内容。

フィールド
type Union type
type は次のいずれかになります。
text object (TextContent)
image object (ImageContent)
audio object (AudioContent)
document object (DocumentContent)
video object (VideoContent)
thought
(deprecated)
object (ThoughtContent)
toolCall
(deprecated)
object (ToolCallContent)
toolResult
(deprecated)
object (ToolResultContent)
JSON 表現
{

  // type
  "text": {
    object (TextContent)
  },
  "image": {
    object (ImageContent)
  },
  "audio": {
    object (AudioContent)
  },
  "document": {
    object (DocumentContent)
  },
  "video": {
    object (VideoContent)
  },
  "thought": {
    object (ThoughtContent)
  },
  "toolCall": {
    object (ToolCallContent)
  },
  "toolResult": {
    object (ToolResultContent)
  }
  // Union type
}

TextContent

テキスト コンテンツ ブロック。

フィールド
text string

必須。テキスト コンテンツ。

annotations[] object (Annotation)

モデル生成コンテンツの引用情報。

JSON 表現
{
  "text": string,
  "annotations": [
    {
      object (Annotation)
    }
  ]
}

ImageContent

画像コンテンツ ブロック。

フィールド
mimeType enum (MimeType)

画像の MIME タイプ。

resolution enum (MediaResolution)

メディアの解像度。

data_or_uri Union type
画像コンテンツ。data_or_uri は次のいずれかになります。
data string (bytes format)

画像コンテンツ。

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

uri string

画像の URI。

JSON 表現
{
  "mimeType": enum (MimeType),
  "resolution": enum (MediaResolution),

  // data_or_uri
  "data": string,
  "uri": string
  // Union type
}

AudioContent

音声コンテンツ ブロック。

フィールド
mimeType enum (MimeType)

音声の MIME タイプ。

channels integer

音声チャンネルの数。

sampleRate integer

音声のサンプルレート。

data_or_uri Union type
音声コンテンツ。data_or_uri は次のいずれかになります。
data string (bytes format)

音声コンテンツ。

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

uri string

音声の URI。

JSON 表現
{
  "mimeType": enum (MimeType),
  "channels": integer,
  "sampleRate": integer,

  // data_or_uri
  "data": string,
  "uri": string
  // Union type
}

DocumentContent

ドキュメントのコンテンツ ブロック。

フィールド
mimeType enum (MimeType)

ドキュメントの MIME タイプ。

data_or_uri Union type
ドキュメントのコンテンツ。data_or_uri は次のいずれかになります。
data string (bytes format)

ドキュメントのコンテンツ。

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

uri string

ドキュメントの URI。

JSON 表現
{
  "mimeType": enum (MimeType),

  // data_or_uri
  "data": string,
  "uri": string
  // Union type
}

ビデオ コンテンツ

動画コンテンツ ブロック。

フィールド
mimeType enum (MimeType)

動画の MIME タイプ。

resolution enum (MediaResolution)

メディアの解像度。

data_or_uri Union type
動画コンテンツ。data_or_uri は次のいずれかになります。
data string (bytes format)

動画コンテンツ。

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

uri string

動画の URI。

JSON 表現
{
  "mimeType": enum (MimeType),
  "resolution": enum (MediaResolution),

  // data_or_uri
  "data": string,
  "uri": string
  // Union type
}

ThoughtContent

思考コンテンツ ブロック。

フィールド
signature string (bytes format)

生成の一部となるバックエンド ソースと一致するシグネチャ。

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

summary[] object (ThoughtSummaryContent)

考えの要約。

JSON 表現
{
  "signature": string,
  "summary": [
    {
      object (ThoughtSummaryContent)
    }
  ]
}

ThoughtSummaryContent

フィールド
type Union type
type は次のいずれかになります。
text object (TextContent)
image object (ImageContent)
JSON 表現
{

  // type
  "text": {
    object (TextContent)
  },
  "image": {
    object (ImageContent)
  }
  // Union type
}

ToolCallContent

ツール呼び出しのコンテンツ。

フィールド
id string

必須。この特定のツール呼び出しの一意の ID。

signature string (bytes format)

バックエンド検証用の署名ハッシュ。

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

type Union type
type は次のいずれかになります。
functionCall object (FunctionCallContent)
codeExecutionCall object (CodeExecutionCallContent)
urlContextCall object (UrlContextCallContent)
mcpServerToolCall object (McpServerToolCallContent)
googleSearchCall object (GoogleSearchCallContent)
fileSearchCall object (FileSearchCallContent)
googleMapsCall object (GoogleMapsCallContent)
JSON 表現
{
  "id": string,
  "signature": string,

  // type
  "functionCall": {
    object (FunctionCallContent)
  },
  "codeExecutionCall": {
    object (CodeExecutionCallContent)
  },
  "urlContextCall": {
    object (UrlContextCallContent)
  },
  "mcpServerToolCall": {
    object (McpServerToolCallContent)
  },
  "googleSearchCall": {
    object (GoogleSearchCallContent)
  },
  "fileSearchCall": {
    object (FileSearchCallContent)
  },
  "googleMapsCall": {
    object (GoogleMapsCallContent)
  }
  // Union type
}

FunctionCallContent

関数ツール呼び出しのコンテンツ ブロック。

フィールド
name string

必須。呼び出すツールの名前。

arguments object (Struct)

必須。関数に渡す引数。

JSON 表現
{
  "name": string,
  "arguments": {
    object (Struct)
  }
}

CodeExecutionCallContent

コード実行コンテンツ。

フィールド
arguments object (CodeExecutionCallArguments)

必須。コード実行に渡す引数。

JSON 表現
{
  "arguments": {
    object (CodeExecutionCallArguments)
  }
}

CodeExecutionCallArguments

コード実行に渡す引数。

フィールド
language enum (Language)

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

code string

実行されるコード。

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

UrlContextCallContent

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

フィールド
arguments object (UrlContextCallArguments)

必須。URL コンテキストに渡す引数。

JSON 表現
{
  "arguments": {
    object (UrlContextCallArguments)
  }
}

UrlContextCallArguments

URL コンテキストに渡す引数。

フィールド
urls[] string

取得する URL。

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

McpServerToolCallContent

MCPServer ツール呼び出しのコンテンツ。

フィールド
name string

必須。呼び出されたツールの名前。

serverName string

必須。使用される MCP サーバーの名前。

arguments object (Struct)

必須。関数の引数の JSON オブジェクト。

JSON 表現
{
  "name": string,
  "serverName": string,
  "arguments": {
    object (Struct)
  }
}

GoogleSearchCallContent

Google 検索のコンテンツ。

フィールド
arguments object (GoogleSearchCallArguments)

必須。Google 検索に渡す引数。

searchType enum (SearchType)

有効になっている検索グラウンディングのタイプ。

JSON 表現
{
  "arguments": {
    object (GoogleSearchCallArguments)
  },
  "searchType": enum (SearchType)
}

GoogleSearchCallArguments

Google 検索に渡す引数。

フィールド
queries[] string

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

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

FileSearchCallContent

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

ファイル検索のコンテンツ。

GoogleMapsCallContent

Google マップのコンテンツ。

フィールド
arguments object (GoogleMapsCallArguments)

Google マップツールに渡す引数。

JSON 表現
{
  "arguments": {
    object (GoogleMapsCallArguments)
  }
}

GoogleMapsCallArguments

Google マップツールに渡す引数。

フィールド
queries[] string

実行するクエリ。

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

ToolResultContent

ツールの結果のコンテンツ。

フィールド
callId string

必須。関数呼び出しブロックの ID と一致する ID。

signature string (bytes format)

バックエンド検証用の署名ハッシュ。

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

type Union type
type は次のいずれかになります。
functionResult object (FunctionResultContent)
codeExecutionResult object (CodeExecutionResultContent)
urlContextResult object (UrlContextResultContent)
googleSearchResult object (GoogleSearchResultContent)
mcpServerToolResult object (McpServerToolResultContent)
fileSearchResult object (FileSearchResultContent)
googleMapsResult object (GoogleMapsResultContent)
JSON 表現
{
  "callId": string,
  "signature": string,

  // type
  "functionResult": {
    object (FunctionResultContent)
  },
  "codeExecutionResult": {
    object (CodeExecutionResultContent)
  },
  "urlContextResult": {
    object (UrlContextResultContent)
  },
  "googleSearchResult": {
    object (GoogleSearchResultContent)
  },
  "mcpServerToolResult": {
    object (McpServerToolResultContent)
  },
  "fileSearchResult": {
    object (FileSearchResultContent)
  },
  "googleMapsResult": {
    object (GoogleMapsResultContent)
  }
  // Union type
}

FunctionResultContent

関数ツールの結果コンテンツ ブロック。

フィールド
name string

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

isError boolean

ツール呼び出しでエラーが発生したかどうか。

result Union type
ツール呼び出しの結果。result は次のいずれかになります。
structResult object (Struct)
contentList object (FunctionResultSubcontentList)
stringResult string
JSON 表現
{
  "name": string,
  "isError": boolean,

  // result
  "structResult": {
    object (Struct)
  },
  "contentList": {
    object (FunctionResultSubcontentList)
  },
  "stringResult": string
  // Union type
}

FunctionResultSubcontentList

フィールド
contents[] object (FunctionResultSubcontent)
JSON 表現
{
  "contents": [
    {
      object (FunctionResultSubcontent)
    }
  ]
}

FunctionResultSubcontent

フィールド
type Union type
type は次のいずれかになります。
text object (TextContent)
image object (ImageContent)
JSON 表現
{

  // type
  "text": {
    object (TextContent)
  },
  "image": {
    object (ImageContent)
  }
  // Union type
}

CodeExecutionResultContent

コード実行結果のコンテンツ。

フィールド
result string

必須。コード実行の出力。

isError boolean

コード実行でエラーが発生したかどうか。

JSON 表現
{
  "result": string,
  "isError": boolean
}

UrlContextResultContent

URL コンテキストの結果コンテンツ。

フィールド
result[] object (UrlContextResult)

必須。URL コンテキストの結果。

isError boolean

URL コンテキストでエラーが発生したかどうか。

JSON 表現
{
  "result": [
    {
      object (UrlContextResult)
    }
  ],
  "isError": boolean
}

UrlContextResult

URL コンテキストの結果。

フィールド
url string

取得された URL。

status enum (Status)

URL 取得のステータス。

JSON 表現
{
  "url": string,
  "status": enum (Status)
}

GoogleSearchResultContent

Google 検索の検索結果のコンテンツ。

フィールド
result[] object (GoogleSearchResult)

必須。Google 検索の結果。

isError boolean

Google 検索でエラーが発生したかどうか。

JSON 表現
{
  "result": [
    {
      object (GoogleSearchResult)
    }
  ],
  "isError": boolean
}

GoogleSearchResult

Google 検索の結果。

フィールド
searchSuggestions string

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

JSON 表現
{
  "searchSuggestions": string
}

McpServerToolResultContent

MCPServer ツールの結果コンテンツ。

フィールド
name string

この特定のツール呼び出しで呼び出されるツールの名前。

serverName string

使用される MCP サーバーの名前。

result Union type
MCP サーバー呼び出しからの出力。シンプルなテキストまたはリッチ コンテンツにできます。result は次のいずれかになります。
structResult object (Struct)
contentList object (FunctionResultSubcontentList)
stringResult string
JSON 表現
{
  "name": string,
  "serverName": string,

  // result
  "structResult": {
    object (Struct)
  },
  "contentList": {
    object (FunctionResultSubcontentList)
  },
  "stringResult": string
  // Union type
}

FileSearchResultContent

ファイル検索結果のコンテンツ。

フィールド
result[] object (FileSearchResult)

省略可。ファイル検索の結果。

JSON 表現
{
  "result": [
    {
      object (FileSearchResult)
    }
  ]
}

FileSearchResult

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

ファイル検索の結果。

GoogleMapsResultContent

Google マップの検索結果のコンテンツ。

フィールド
result[] object (GoogleMapsResult)

必須。Google マップの検索結果。

JSON 表現
{
  "result": [
    {
      object (GoogleMapsResult)
    }
  ]
}

GoogleMapsResult

Google マップの結果。

フィールド
places[] object (Places)

見つかった場所。

widgetContextToken string

Google マップ ウィジェット コンテキスト トークンのリソース名。

JSON 表現
{
  "places": [
    {
      object (Places)
    }
  ],
  "widgetContextToken": string
}

場所

フィールド
placeId string

場所の ID(places/{placeId} 形式)。

name string

場所のタイトル。

url string

場所の URI 参照。

reviewSnippets[] object (ReviewSnippet)

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

JSON 表現
{
  "placeId": string,
  "name": string,
  "url": string,
  "reviewSnippets": [
    {
      object (ReviewSnippet)
    }
  ]
}

ContentList

コンテンツのリスト。

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

リストの内容。

JSON 表現
{
  "contents": [
    {
      object (Content)
    }
  ]
}

CreateInteractionRequest

インタラクションを作成するための構成パラメータ。

フィールド
stream boolean

入力専用。インタラクションがストリーミングされるかどうか。

store boolean

入力専用。レスポンスとリクエストを保存して後で取得するかどうか。

interaction object (Interaction)

作成するインタラクション。

background boolean

入力専用。モデルのやり取りをバックグラウンドで実行するかどうか。

JSON 表現
{
  "stream": boolean,
  "store": boolean,
  "interaction": {
    object (Interaction)
  },
  "background": boolean
}

インタラクション

InteractionService.CreateInteraction のレスポンス。

フィールド
id string

必須。出力専用。インタラクション完了の一意の識別子。

status enum (Status)

必須。出力専用。インタラクションのステータス。

created string

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

updated string

必須。出力専用。回答が最後に更新された日時(ISO 8601 形式(YYYY-MM-DDThh:mm:ssZ))。

role
(deprecated)
string

出力専用。インタラクションの役割。

outputs[]
(deprecated)
object (Content)

出力専用。モデルからのレスポンス。

systemInstruction string

やり取りのシステム指示。

tools[] object (Tool)

モデルがインタラクション中に呼び出す可能性のあるツール宣言のリスト。

usage object (Usage)

出力専用。インタラクション リクエストのトークン使用量に関する統計情報。

responseModalities[]
(deprecated)
enum (ResponseModality)

リクエストされたレスポンスのモダリティ(TEXT、IMAGE、AUDIO)。

responseMimeType
(deprecated)
string

レスポンスの MIME タイプ。responseFormat が設定されている場合は必須です。

previousInteractionId string

以前のインタラクションの ID(存在する場合)。

environmentId string

出力専用。インタラクションの環境 ID。リクエストで環境構成が設定されている場合にのみ入力されます。

serviceTier enum (ServiceTier)

インタラクションのサービス階層。

webhookConfig object (WebhookConfig)

省略可。インタラクションが完了したときに通知を受け取るための Webhook 構成。

steps[] object (Step)

必須。出力専用。インタラクションを構成する手順。

input Union type
インタラクションの入力。input は次のいずれかになります。
contentList
(deprecated)
object (ContentList)

インタラクションの入力。

stringContent string

インタラクションの文字列入力。単一のテキスト入力として処理されます。

turnList
(deprecated)
object (TurnList)

インタラクションのターン。

stepList object (StepList)

入力専用。インタラクションの手順。

content object (Content)

インタラクションのコンテンツ。

response_format_config Union type
response_format_config は次のいずれかになります。
responseFormat
(deprecated)
object (Value)

生成されたレスポンスが、このフィールドで指定された JSON スキーマに準拠した JSON オブジェクトであることを強制します。

responseFormatList object (ResponseFormatList)
responseFormatSingleton object (ResponseFormat)
request_type Union type
インタラクションのリクエスト タイプ。request_type は次のいずれかになります。
modelInteraction object (ModelInteraction)

モデルを使用して補完を生成するインタラクション。

agentInteraction object (AgentInteraction)

エージェントを使用して補完を生成するためのインタラクション。

environment Union type
インタラクションの環境構成。environment は次のいずれかになります。
envId string

インタラクションの環境 ID。デフォルトの環境では「remote」にできます。

remoteEnvironment object (EnvironmentConfig)
localEnvironment object (LocalEnvironmentConfig)

エージェントの環境はクライアント接続上に存在します。組み込みの環境オペレーション(ファイル システム オペレーションと実行コマンド)は、サーバー管理のサンドボックスで実行されるのではなく、クライアントに渡されて実行されます。remoteEnvironment とは相互に排他的です。(クライアントで宣言された関数ツールとは無関係です。このフィールドに関係なく、常にクライアントで実行されます)。

JSON 表現
{
  "id": string,
  "status": enum (Status),
  "created": string,
  "updated": string,
  "role": string,
  "outputs": [
    {
      object (Content)
    }
  ],
  "systemInstruction": string,
  "tools": [
    {
      object (Tool)
    }
  ],
  "usage": {
    object (Usage)
  },
  "responseModalities": [
    enum (ResponseModality)
  ],
  "responseMimeType": string,
  "previousInteractionId": string,
  "environmentId": string,
  "serviceTier": enum (ServiceTier),
  "webhookConfig": {
    object (WebhookConfig)
  },
  "steps": [
    {
      object (Step)
    }
  ],

  // input
  "contentList": {
    object (ContentList)
  },
  "stringContent": string,
  "turnList": {
    object (TurnList)
  },
  "stepList": {
    object (StepList)
  },
  "content": {
    object (Content)
  }
  // Union type

  // response_format_config
  "responseFormat": {
    object (Value)
  },
  "responseFormatList": {
    object (ResponseFormatList)
  },
  "responseFormatSingleton": {
    object (ResponseFormat)
  }
  // Union type

  // request_type
  "modelInteraction": {
    object (ModelInteraction)
  },
  "agentInteraction": {
    object (AgentInteraction)
  }
  // Union type

  // environment
  "envId": string,
  "remoteEnvironment": {
    object (EnvironmentConfig)
  },
  "localEnvironment": {
    object (LocalEnvironmentConfig)
  }
  // Union type
}

TurnList

ターンのリスト。

フィールド
turns[] object (Turn)
JSON 表現
{
  "turns": [
    {
      object (Turn)
    }
  ]
}

CANNOT TRANSLATE

フィールド
role string

このターンの発信者。入力の場合はユーザー、モデル出力の場合はモデルである必要があります。

content Union type
content は次のいずれかになります。
contentList object (ContentList)

ターンの内容。Content オブジェクトの配列。

contentString string

ターンの内容。単一の文字列。

JSON 表現
{
  "role": string,

  // content
  "contentList": {
    object (ContentList)
  },
  "contentString": string
  // Union type
}

StepList

ステップのリスト。

フィールド
steps[] object (Step)

リストのステップ。

JSON 表現
{
  "steps": [
    {
      object (Step)
    }
  ]
}

ステップ

インタラクションのステップ。

フィールド
type Union type
type は次のいずれかになります。
thought object (ThoughtStep)
toolCall object (ToolCallStep)
toolResult object (ToolResultStep)
userInput object (UserInputStep)

使用しないでください。これらはサードパーティの JSON 専用です。

modelOutput object (ModelOutputStep)
text
(deprecated)
object (LegacyTextContent)
image
(deprecated)
object (LegacyImageContent)
audio
(deprecated)
object (LegacyAudioContent)
document
(deprecated)
object (LegacyDocumentContent)
video
(deprecated)
object (LegacyVideoContent)
JSON 表現
{

  // type
  "thought": {
    object (ThoughtStep)
  },
  "toolCall": {
    object (ToolCallStep)
  },
  "toolResult": {
    object (ToolResultStep)
  },
  "userInput": {
    object (UserInputStep)
  },
  "modelOutput": {
    object (ModelOutputStep)
  },
  "text": {
    object (LegacyTextContent)
  },
  "image": {
    object (LegacyImageContent)
  },
  "audio": {
    object (LegacyAudioContent)
  },
  "document": {
    object (LegacyDocumentContent)
  },
  "video": {
    object (LegacyVideoContent)
  }
  // Union type
}

ThoughtStep

思考ステップ。

フィールド
signature string (bytes format)

バックエンド検証用の署名ハッシュ。

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

summary[] object (Content)

考えの要約。

JSON 表現
{
  "signature": string,
  "summary": [
    {
      object (Content)
    }
  ]
}

ToolCallStep

ツール呼び出しステップ。

フィールド
id string

必須。この特定のツール呼び出しの一意の ID。

signature string (bytes format)

バックエンド検証用の署名ハッシュ。

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

type Union type
type は次のいずれかになります。
functionCall object (FunctionCallStep)
codeExecutionCall object (CodeExecutionCallStep)
urlContextCall object (UrlContextCallStep)
mcpServerToolCall object (McpServerToolCallStep)
googleSearchCall object (GoogleSearchCallStep)
fileSearchCall object (FileSearchCallStep)
googleMapsCall object (GoogleMapsCallStep)
retrievalCall object (RetrievalCallStep)
JSON 表現
{
  "id": string,
  "signature": string,

  // type
  "functionCall": {
    object (FunctionCallStep)
  },
  "codeExecutionCall": {
    object (CodeExecutionCallStep)
  },
  "urlContextCall": {
    object (UrlContextCallStep)
  },
  "mcpServerToolCall": {
    object (McpServerToolCallStep)
  },
  "googleSearchCall": {
    object (GoogleSearchCallStep)
  },
  "fileSearchCall": {
    object (FileSearchCallStep)
  },
  "googleMapsCall": {
    object (GoogleMapsCallStep)
  },
  "retrievalCall": {
    object (RetrievalCallStep)
  }
  // Union type
}

FunctionCallStep

関数ツール呼び出しステップ。

フィールド
name string

必須。呼び出すツールの名前。

arguments object (Struct)

必須。関数に渡す引数。

JSON 表現
{
  "name": string,
  "arguments": {
    object (Struct)
  }
}

UrlContextCallStep

URL コンテキスト呼び出しステップ。

フィールド
arguments object (UrlContextCallStepArguments)

必須。URL コンテキストに渡す引数。

JSON 表現
{
  "arguments": {
    object (UrlContextCallStepArguments)
  }
}

UrlContextCallStepArguments

URL コンテキストに渡す引数。

フィールド
urls[] string

取得する URL。

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

McpServerToolCallStep

MCPServer ツール呼び出しステップ。

フィールド
name string

必須。呼び出されたツールの名前。

serverName string

必須。使用される MCP サーバーの名前。

arguments object (Struct)

必須。関数の引数の JSON オブジェクト。

JSON 表現
{
  "name": string,
  "serverName": string,
  "arguments": {
    object (Struct)
  }
}

GoogleSearchCallStep

Google 検索の通話ステップ。

フィールド
arguments object (GoogleSearchCallStepArguments)

必須。Google 検索に渡す引数。

searchType enum (SearchType)

有効になっている検索グラウンディングのタイプ。

JSON 表現
{
  "arguments": {
    object (GoogleSearchCallStepArguments)
  },
  "searchType": enum (SearchType)
}

GoogleSearchCallStepArguments

Google 検索に渡す引数。

フィールド
queries[] string

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

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

FileSearchCallStep

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

ファイル検索の通話ステップ。

GoogleMapsCallStep

Google マップの呼び出しステップ。

フィールド
arguments object (GoogleMapsCallStepArguments)

Google マップツールに渡す引数。

JSON 表現
{
  "arguments": {
    object (GoogleMapsCallStepArguments)
  }
}

GoogleMapsCallStepArguments

Google マップツールに渡す引数。

フィールド
queries[] string

実行するクエリ。

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

ToolResultStep

ツール結果のステップ。

フィールド
callId string

必須。関数呼び出しブロックの ID と一致する ID。

signature string (bytes format)

バックエンド検証用の署名ハッシュ。

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

type Union type
type は次のいずれかになります。
functionResult object (FunctionResultStep)
codeExecutionResult object (CodeExecutionResultStep)
urlContextResult object (UrlContextResultStep)
googleSearchResult object (GoogleSearchResultStep)
mcpServerToolResult object (McpServerToolResultStep)
fileSearchResult object (FileSearchResultStep)
googleMapsResult object (GoogleMapsResultStep)
retrievalResult object (RetrievalResultStep)
JSON 表現
{
  "callId": string,
  "signature": string,

  // type
  "functionResult": {
    object (FunctionResultStep)
  },
  "codeExecutionResult": {
    object (CodeExecutionResultStep)
  },
  "urlContextResult": {
    object (UrlContextResultStep)
  },
  "googleSearchResult": {
    object (GoogleSearchResultStep)
  },
  "mcpServerToolResult": {
    object (McpServerToolResultStep)
  },
  "fileSearchResult": {
    object (FileSearchResultStep)
  },
  "googleMapsResult": {
    object (GoogleMapsResultStep)
  },
  "retrievalResult": {
    object (RetrievalResultStep)
  }
  // Union type
}

FunctionResultStep

関数ツールの呼び出しの結果。

フィールド
name string

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

isError boolean

ツール呼び出しでエラーが発生したかどうか。

result object (Value)

必須。ツール呼び出しの結果。

JSON 表現
{
  "name": string,
  "isError": boolean,
  "result": {
    object (Value)
  }
}

UrlContextResultStep

URL コンテキストの結果ステップ。

フィールド
result[] object (UrlContextResultItem)

必須。URL コンテキストの結果。

isError boolean

URL コンテキストでエラーが発生したかどうか。

JSON 表現
{
  "result": [
    {
      object (UrlContextResultItem)
    }
  ],
  "isError": boolean
}

UrlContextResultItem

URL コンテキストの結果。

フィールド
url string

取得された URL。

status enum (Status)

URL 取得のステータス。

JSON 表現
{
  "url": string,
  "status": enum (Status)
}

GoogleSearchResultStep

Google 検索の検索結果のステップ。

フィールド
result[] object (GoogleSearchResultItem)

必須。Google 検索の結果。

isError boolean

Google 検索でエラーが発生したかどうか。

JSON 表現
{
  "result": [
    {
      object (GoogleSearchResultItem)
    }
  ],
  "isError": boolean
}

GoogleSearchResultItem

Google 検索の結果。

フィールド
searchSuggestions string

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

JSON 表現
{
  "searchSuggestions": string
}

McpServerToolResultStep

MCPServer ツール結果ステップ。

フィールド
name string

この特定のツール呼び出しで呼び出されるツールの名前。

serverName string

使用される MCP サーバーの名前。

result object (Value)

必須。MCP サーバー呼び出しからの出力。シンプルなテキストまたはリッチ コンテンツにできます。

JSON 表現
{
  "name": string,
  "serverName": string,
  "result": {
    object (Value)
  }
}

FileSearchResultStep

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

ファイル検索結果のステップ。

GoogleMapsResultStep

Google マップの検索結果のステップ。

フィールド
result[] object (GoogleMapsResultItem)
JSON 表現
{
  "result": [
    {
      object (GoogleMapsResultItem)
    }
  ]
}

GoogleMapsResultItem

Google マップの結果。

フィールド
places[] object (GoogleMapsResultPlaces)
widgetContextToken string
JSON 表現
{
  "places": [
    {
      object (GoogleMapsResultPlaces)
    }
  ],
  "widgetContextToken": string
}

GoogleMapsResultPlaces

フィールド
placeId string
name string
url string
reviewSnippets[] object (ReviewSnippet)
JSON 表現
{
  "placeId": string,
  "name": string,
  "url": string,
  "reviewSnippets": [
    {
      object (ReviewSnippet)
    }
  ]
}

UserInputStep

ユーザーが提供した入力。

フィールド
content Union type
content は次のいずれかになります。
contentList object (ContentList)

ステップの内容。Content オブジェクトの配列。

contentString string

ステップの内容。単一の文字列。

JSON 表現
{

  // content
  "contentList": {
    object (ContentList)
  },
  "contentString": string
  // Union type
}

ModelOutputStep

モデルによって生成された出力。

フィールド
content[] object (Content)
JSON 表現
{
  "content": [
    {
      object (Content)
    }
  ]
}

ResponseFormatList

フィールド
responseFormats[] object (ResponseFormat)
JSON 表現
{
  "responseFormats": [
    {
      object (ResponseFormat)
    }
  ]
}

ResponseFormat

フィールド
type Union type
type は次のいずれかになります。
audio object (AudioResponseFormat)
text object (TextResponseFormat)
image object (ImageResponseFormat)
video object (VideoResponseFormat)
structValue object (Struct)

GAOS でマルチ識別子値がすでに有効になっている

JSON 表現
{

  // type
  "audio": {
    object (AudioResponseFormat)
  },
  "text": {
    object (TextResponseFormat)
  },
  "image": {
    object (ImageResponseFormat)
  },
  "video": {
    object (VideoResponseFormat)
  },
  "structValue": {
    object (Struct)
  }
  // Union type
}

TextResponseFormat

テキスト出力形式の構成。

フィールド
mimeType enum (MimeType)

テキスト出力の MIME タイプ。

schema object (Struct)

出力が準拠する必要がある JSON スキーマ。mimeType が application/json の場合にのみ適用されます。

JSON 表現
{
  "mimeType": enum (MimeType),
  "schema": {
    object (Struct)
  }
}

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)
}

VideoResponseFormat

動画出力形式の構成。

フィールド
delivery enum (Delivery)

動画出力の配信モード。

aspectRatio enum (AspectRatio)

動画出力のアスペクト比。

duration string (Duration format)

動画出力の長さ。

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

JSON 表現
{
  "delivery": enum (Delivery),
  "aspectRatio": enum (AspectRatio),
  "duration": string
}

ModelInteraction

モデルを使用して補完を生成するインタラクション。

フィールド
model string

補完の生成に使用される Model の名前。

generationConfig object (GenerationConfig)

入力専用。モデルのインタラクションの構成パラメータ。

JSON 表現
{
  "model": string,
  "generationConfig": {
    object (GenerationConfig)
  }
}

GenerationConfig

モデル インタラクションの構成パラメータ。

フィールド
temperature number

出力のランダム性を制御します。

topP number

サンプリング時に考慮するトークンの累積確率の最大値。

seed integer

再現性のためにデコードで使用されるシード。

stopSequences[] string

出力インタラクションを停止する文字シーケンスのリスト。

thinkingLevel enum (ThinkingLevel)

モデルが生成する思考トークンのレベル。

thinkingSummaries enum (ThinkingSummaries)

レスポンスに思考の要約を含めるかどうか。

maxOutputTokens integer

レスポンスに含めるトークンの最大数。

speechConfig[] object (SpeechConfig)

音声インタラクションの構成。

imageConfig
(deprecated)
object (ImageConfig)

画像インタラクションの構成。

videoConfig object (VideoConfig)

動画生成の構成。

tool_choice Union type
ツール選択の構成。tool_choice は次のいずれかになります。
toolChoiceMode enum (ToolChoiceType)

ツール選択のモード。

toolChoiceConfig object (ToolChoiceConfig)

ツール選択の設定。

JSON 表現
{
  "temperature": number,
  "topP": number,
  "seed": integer,
  "stopSequences": [
    string
  ],
  "thinkingLevel": enum (ThinkingLevel),
  "thinkingSummaries": enum (ThinkingSummaries),
  "maxOutputTokens": integer,
  "speechConfig": [
    {
      object (SpeechConfig)
    }
  ],
  "imageConfig": {
    object (ImageConfig)
  },
  "videoConfig": {
    object (VideoConfig)
  },

  // tool_choice
  "toolChoiceMode": enum (ToolChoiceType),
  "toolChoiceConfig": {
    object (ToolChoiceConfig)
  }
  // Union type
}

ToolChoiceConfig

許可されたツールを含むツール選択構成。

フィールド
allowedTools object (AllowedTools)

許可されているツール。

JSON 表現
{
  "allowedTools": {
    object (AllowedTools)
  }
}

SpeechConfig

音声インタラクションの構成。

フィールド
voice string

話者の声。

language string

音声の言語。

speaker string

話者の名前。プロンプトで指定された話者の名前と一致している必要があります。

JSON 表現
{
  "voice": string,
  "language": string,
  "speaker": string
}

ImageConfig

画像インタラクションの構成。

フィールド
aspectRatio string

生成する画像のアスペクト比。サポートされているアスペクト比: 1:1、2:3、3:2、3:4、4:3、9:16、16:9、21:9。

指定しない場合、モデルは提供された参照画像に基づいてデフォルトのアスペクト比を選択します。

imageSize string

生成される画像のサイズを指定します。サポートされている値は 1K2K4K です。指定しない場合、モデルはデフォルト値 1K を使用します。

JSON 表現
{
  "aspectRatio": string,
  "imageSize": string
}

VideoConfig

動画生成の構成オプション。

フィールド
task enum (Task)

動画生成のオプションのタスクモード。指定しない場合、モデルは提供されたテキスト プロンプトと入力メディアに基づいて適切なモードを自動的に決定します。

JSON 表現
{
  "task": enum (Task)
}

EnvironmentConfig

カスタム環境の構成。

フィールド
sources[] object (Source)
environmentId string

省略可。インタラクションの環境 ID。指定すると、リクエストは新しい環境を作成するのではなく、既存の環境を更新します。

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

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

networkMode enum (NetworkMode)

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

JSON 表現
{
  "sources": [
    {
      object (Source)
    }
  ],
  "environmentId": string,

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

EnvironmentNetworkEgressAllowlist

環境のネットワーク下り(外向き)構成。

フィールド
allowlist[] object (EgressRule)

許可されたドメインとその構成のリスト。

JSON 表現
{
  "allowlist": [
    {
      object (EgressRule)
    }
  ]
}

EgressRule

環境が到達できる外部ドメインを制御するネットワーク下り(外向き)ルール。各ルールは、ターゲット ドメインと、オプションで、一致するすべての送信リクエストに挿入する HTTP ヘッダーのセットを識別します。

フィールド
domain string

このルールで照合するドメイン パターン。正確なホスト名(github.com など)、ワイルドカード接頭辞(*.googleapis.com など)、または * を使用して、すべてのドメインを照合します。

transform map (key: string, value: string)

このルールに一致するリクエストに挿入するヘッダー。キー: ヘッダー名(「Authorization」など)。値: ヘッダー値(例: 「Bearer your-token」)。

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

JSON 表現
{
  "domain": string,
  "transform": {
    string: string,
    ...
  }
}

ソース

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

フィールド
type enum (Type)
source string

環境のソース。GCS の場合は、GCS パスです。GitHub の場合は、GitHub のパスです。

target string

環境内でソースが表示される場所。

content string

typeINLINE の場合、インライン コンテンツ。

encoding string

インライン コンテンツのオプションのエンコード(例: base64)。

JSON 表現
{
  "type": enum (Type),
  "source": string,
  "target": string,
  "content": string,
  "encoding": string
}

LocalEnvironmentConfig

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

サーバー管理のサンドボックスではなく、クライアント接続に存在する環境の構成。

(Interaction.local_environment を介して)設定されている場合、エージェントのファイル システムとシェルはクライアントに存在するものとして扱われます。エージェントの組み込み環境オペレーション(ファイルの読み取り/一覧表示/編集、コマンドの実行など)はサーバーで一時停止され、クライアントに返されて実行され、その結果は次のターンで返されます。環境はクライアントまたはサーバーのサンドボックスのいずれかに存在し、両方に存在することはないため、これはサーバー管理の EnvironmentConfig(remoteEnvironment)と相互に排他的です。

これは、エージェントの組み込み環境のみを管理します。クライアントで宣言された関数ツールは、このフィールドに関係なく常にクライアントで実行されます。

ツール

モデルで使用できるツール。

フィールド
type Union type
使用するツール。type は次のいずれかになります。
function object (Function)

モデルで使用できる関数。

codeExecution object (CodeExecution)

モデルがコードを実行するために使用できるツール。

urlContext object (UrlContext)

モデルが URL コンテキストを取得するために使用できるツール。

computerUse object (ComputerUse)

モデルがコンピュータと直接やり取りすることをサポートするツール。

mcpServer object (McpServer)

MCPServer は、モデルから呼び出してアクションを実行できるサーバーです。

googleMaps object (GoogleMaps)

モデルが Google マップを検索するために使用できるツール。

retrieval object (Retrieval)

モデルがファイルを取得するために使用できるツール。

JSON 表現
{

  // type
  "function": {
    object (Function)
  },
  "codeExecution": {
    object (CodeExecution)
  },
  "urlContext": {
    object (UrlContext)
  },
  "computerUse": {
    object (ComputerUse)
  },
  "mcpServer": {
    object (McpServer)
  },
  "googleSearch": {
    object (GoogleSearch)
  },
  "fileSearch": {
    object (FileSearch)
  },
  "googleMaps": {
    object (GoogleMaps)
  },
  "retrieval": {
    object (Retrieval)
  }
  // Union type
}

関数

モデルで使用できるツール。

フィールド
name string

関数名。

description string

関数の説明。

parameters object (Value)

関数のパラメータの JSON スキーマ。

JSON 表現
{
  "name": string,
  "description": string,
  "parameters": {
    object (Value)
  }
}

UrlContext

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

モデルが URL コンテキストを取得するために使用できるツール。

McpServer

MCPServer は、モデルから呼び出してアクションを実行できるサーバーです。

フィールド
name string

MCPServer の名前。

url string

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

headers map (key: string, value: string)

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

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

allowedTools[] object (AllowedTools)

許可されているツール。

JSON 表現
{
  "name": string,
  "url": string,
  "headers": {
    string: string,
    ...
  },
  "allowedTools": [
    {
      object (AllowedTools)
    }
  ]
}

GoogleSearch

モデルが Google を検索するために使用できるツール。

フィールド
searchTypes[] enum (SearchType)

有効にする検索グラウンディングのタイプ。

JSON 表現
{
  "searchTypes": [
    enum (SearchType)
  ]
}

FileSearch

モデルがファイル検索に使用できるツール。

フィールド
fileSearchStoreNames[] string

検索するファイル検索ストアの名前。

topK integer

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

metadataFilter string

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

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

GoogleMaps

モデルが Google マップを呼び出すために使用できるツール。

フィールド
enableWidget boolean

レスポンスのツール呼び出し結果でウィジェット コンテキスト トークンを返すかどうか。

latitude number

ユーザーの現在地の緯度。

longitude number

ユーザーの現在地の経度。

JSON 表現
{
  "enableWidget": boolean,
  "latitude": number,
  "longitude": number
}

用途

インタラクション リクエストのトークン使用量に関する統計情報。

フィールド
totalInputTokens integer

プロンプト(コンテキスト)内のトークン数。

inputTokensByModality[] object (ModalityTokens)

入力トークンの使用状況をモダリティ別に分類した内訳。

totalCachedTokens integer

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

cachedTokensByModality[] object (ModalityTokens)

モダリティ別のキャッシュ トークンの使用状況の内訳。

totalOutputTokens integer

生成されたすべてのレスポンスのトークンの合計数。

outputTokensByModality[] object (ModalityTokens)

出力トークンの使用量をモダリティ別に分類した内訳。

totalToolUseTokens integer

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

toolUseTokensByModality[] object (ModalityTokens)

モダリティ別のツール使用トークンの使用状況の内訳。

totalThoughtTokens integer

思考モデルの思考トークンの数。

totalTokens integer

インタラクション リクエストのトークン数合計(プロンプト + レスポンス + その他の内部トークン)。

groundingToolCount[] object (GroundingToolCount)

グラウンディング ツールの数。

JSON 表現
{
  "totalInputTokens": integer,
  "inputTokensByModality": [
    {
      object (ModalityTokens)
    }
  ],
  "totalCachedTokens": integer,
  "cachedTokensByModality": [
    {
      object (ModalityTokens)
    }
  ],
  "totalOutputTokens": integer,
  "outputTokensByModality": [
    {
      object (ModalityTokens)
    }
  ],
  "totalToolUseTokens": integer,
  "toolUseTokensByModality": [
    {
      object (ModalityTokens)
    }
  ],
  "totalThoughtTokens": integer,
  "totalTokens": integer,
  "groundingToolCount": [
    {
      object (GroundingToolCount)
    }
  ]
}

ModalityTokens

単一のレスポンス モダリティのトークン数。

フィールド
modality enum (ResponseModality)

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

tokens integer

モダリティのトークン数。

JSON 表現
{
  "modality": enum (ResponseModality),
  "tokens": integer
}

GroundingToolCount

接地ツールの数。

フィールド
type enum (Type)

カウントに関連付けられたグラウンディング ツールのタイプ。

count integer

接地ツールの数。

JSON 表現
{
  "type": enum (Type),
  "count": integer
}

WebhookConfig

リクエストの webhook イベントを構成するためのメッセージ。

フィールド
uris[] string

省略可。設定されている場合、登録済みの Webhook ではなく、これらの Webhook URI が Webhook イベントに使用されます。

userMetadata object (Struct format)

省略可。各イベントが Webhook に送信されるときに返されるユーザー メタデータ。

JSON 表現
{
  "uris": [
    string
  ],
  "userMetadata": {
    object
  }
}

SafetySetting

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

[SafetySetting][google.cloud.aiplatform.master.SafetySetting] は、有害性の [カテゴリ][google.cloud.aiplatform.master.SafetySetting.category] と、そのカテゴリの [しきい値][google.cloud.aiplatform.master.SafetySetting.threshold] で構成されます。

フィールド
type enum (HarmCategory)

必須。ブロックする有害カテゴリのタイプ。

threshold enum (HarmBlockThreshold)

必須。コンテンツをブロックするしきい値。危害発生確率がこのしきい値を超えると、コンテンツはブロックされます。

method enum (HarmBlockMethod)

省略可。コンテンツをブロックする方法。指定しない場合、デフォルトの動作では確率スコアが使用されます。

JSON 表現
{
  "type": enum (HarmCategory),
  "threshold": enum (HarmBlockThreshold),
  "method": enum (HarmBlockMethod)
}

配信

オーディオ出力の配信モード。

列挙型
DELIVERY_UNSPECIFIED デフォルト値。この値は使用されません。
INLINE 音声データはレスポンスでインラインで返されます。
URI 音声データは URI として返されます。

環境

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

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

HarmBlockMethod

コンテンツをブロックする方法。

列挙型
HARM_BLOCK_METHOD_UNSPECIFIED 有害のブロック方法が指定されていません。
SEVERITY 有害のブロック方法で、確率スコアと重大度スコアの両方を使用します。
PROBABILITY 有害のブロック方法で、確率スコアを使用します。

HarmBlockThreshold

危害発生確率に基づいてコンテンツをブロックするためのしきい値。

列挙型
HARM_BLOCK_THRESHOLD_UNSPECIFIED 有害ブロックのしきい値が指定されていません。
BLOCK_LOW_AND_ABOVE 有害である確率が低い以上のコンテンツをブロックします。
BLOCK_MEDIUM_AND_ABOVE 有害である確率が中程度以上のコンテンツをブロックします。
BLOCK_ONLY_HIGH 有害である確率が高いコンテンツをブロックします。
BLOCK_NONE 有害である可能性に関係なく、コンテンツをブロックしません。
OFF 安全フィルタを完全にオフにします。

ImageSize

画像出力でサポートされている画像サイズ。

列挙型
IMAGE_SIZE_UNSPECIFIED デフォルト値。この値は使用されません。
IMAGE_SIZE_FIVE_TWELVE 512 ピクセルの画像サイズ。
IMAGE_SIZE_ONE_K 1K 画像サイズ。
IMAGE_SIZE_TWO_K 2K 画像サイズ。
IMAGE_SIZE_FOUR_K 4K 画像サイズ。

言語

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

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

MediaResolution

入力メディア(画像/動画)の解像度。

列挙型
MEDIA_RESOLUTION_UNSPECIFIED デフォルト値。この値は使用されません。
LOW 低解像度。
MEDIUM 中解像度。
HIGH 高解像度。
ULTRA_HIGH 超高解像度。

MimeType

列挙型
TYPE_UNSPECIFIED
TYPE_WAV WAV 音声形式
TYPE_MP3 MP3 音声形式
TYPE_AIFF AIFF 音声形式
TYPE_AAC AAC 音声形式
TYPE_OGG OGG オーディオ形式
TYPE_FLAC FLAC 音声形式
TYPE_MPEG MPEG 音声形式
TYPE_M4A M4A 音声形式
TYPE_L16 L16 音声形式
TYPE_OPUS OPUS 音声形式
TYPE_ALAW ALAW 音声形式
TYPE_MULAW MULAW 音声形式

モード

検索セッションの深さと徹底度を定義します。

列挙型
MODE_UNSPECIFIED デフォルト値。この値は使用されません。
MODE_SCAN 初期分類器のみを使用した高速スキャン。
MODE_VERIFY 分類を行い、詳細な調査を行います。

NetworkMode

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

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

ResponseModality

レスポンスのモダリティ。

列挙型
RESPONSE_MODALITY_UNSPECIFIED デフォルト値。この値は使用されません。
TEXT モデルがテキストを返すことを示します。
IMAGE モデルが画像を返す必要があることを示します。
AUDIO モデルが音声を返す必要があることを示します。
VIDEO モデルが動画を返す必要があることを示します。
DOCUMENT モデルがドキュメントを返す必要があることを示します。

ReviewSnippet

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

フィールド
title string

レビューのタイトル。

url string

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

reviewId string

クチコミ抜粋の ID。

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

SafetyPolicy

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

スキーマ

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

フィールド
type enum (Type)

必須。データ型。

format string

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

title string

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

description string

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

nullable boolean

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

enum[] string

省略可。Type.STRING の要素の可能な値(列挙型形式)。たとえば、列挙型 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 型。

検索タイプ

有効にする検索グラウンディングのタイプ。

列挙型
SEARCH_TYPE_UNSPECIFIED 検索タイプが指定されていません。この値は使用されるべきではありません。

構造体

Struct は、動的に型指定された値にマッピングされるフィールドで構成される構造化データ値を表します。

フィールド
fields[] object (Field)

動的に型指定されるフィールド。LLM は順序に敏感であるため、地図ではなくリストを使用します。ユーザーが完全に制御できるようにするためです。

JSON 表現
{
  "fields": [
    {
      object (Field)
    }
  ]
}

フィールド

構造体内の単一のフィールドを表します。

フィールド
name string
value object (Value)
JSON 表現
{
  "name": string,
  "value": {
    object (Value)
  }
}

タスク

サポートされている動画生成タスク。

列挙型
TASK_UNSPECIFIED 未指定のタスク。タスクは、入力プロンプトとメディアから推測されます。
TEXT_TO_VIDEO テキスト プロンプトのみから動画を生成します。
IMAGE_TO_VIDEO 1 つまたは 2 つのソース画像から動画を生成します。1 つ目の画像は開始フレームを定義し、2 つ目の画像(省略可)は終了フレームを定義します。
REFERENCE_TO_VIDEO 参照メディア(画像、音声、動画など)を使用して動画を生成します。
EDIT 既存の入力動画を変更します。

ThinkingLevel

モデルが生成する思考トークンのレベル。

列挙型
THINKING_LEVEL_UNSPECIFIED デフォルト値。この値は使用されません。
THINKING_LEVEL_MINIMAL ほとんど考えずに済む。
THINKING_LEVEL_LOW 思考レベルが低い。
THINKING_LEVEL_MEDIUM 中程度の思考レベル。
THINKING_LEVEL_HIGH 思考レベルが高い。

ThinkingSummaries

レスポンスに思考の要約を含めるかどうか。

列挙型
THINKING_SUMMARIES_UNSPECIFIED デフォルト値。この値は使用されません。
THINKING_SUMMARIES_AUTO 自動思考の要約。
THINKING_SUMMARIES_NONE 思考の要約はありません。

ツール

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

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

次の ID: 16

フィールド
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
}

ToolChoiceType

ツール選択のタイプ。

列挙型
TOOL_CHOICE_TYPE_UNSPECIFIED デフォルト値。この値は使用されません。
AUTO 自動モードでのツール選択。
ANY 任意のツールを選択します。
NONE ツールが選択されていません。
VALIDATED 検証済みのツールを選択します。

Value は、null、数値、文字列、ブール値、再帰構造体の値、値のリストのいずれかになる動的型付きの値を表します。値のプロデューサーは、これらのバリアントのいずれかを設定することが想定されます。バリアントがない場合はエラーを示します。

フィールド
kind Union type
値の種類。kind は次のいずれかになります。
nullValue null

null 値を表します。

numberValue number

double 値を表します。

stringValue string

文字列値を表します。

boolValue boolean

ブール値を表します。

structValue object (Struct)

構造化された値を表します。

listValue object (ListValue)

Value の繰り返しを表します。

contentValue object (Content)

リッチ コンテンツ(テキスト、画像など)を表します。

JSON 表現
{

  // kind
  "nullValue": null,
  "numberValue": number,
  "stringValue": string,
  "boolValue": boolean,
  "structValue": {
    object (Struct)
  },
  "listValue": {
    object (ListValue)
  },
  "contentValue": {
    object (Content)
  }
  // Union type
}

ListValue

ListValue は値の繰り返しフィールドのラッパーです。

フィールド
values[] object (Value)

動的に型指定される値の繰り返しフィールド。

JSON 表現
{
  "values": [
    {
      object (Value)
    }
  ]
}

VisualizationMode

可視化モードの列挙型。最終的には、ユーザーが回答に HTML 可視化を含めるかどうかを選択できるインタラクティブ モードをサポートする予定です。

列挙型
UNSPECIFIED デフォルトの可視化モード。デフォルトは AUTO です。
OFF ビジュアリゼーションは含めないでください。
AUTO ビジュアリゼーションを自動的に含める。

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)

省略可。変換の構成。

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)
  }
}

モダリティ

レスポンスでサポートされているモダリティ。

列挙型
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
}

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
}

AudioTranscriptionConfig

音声文字変換の構成。

フィールド
adaptationPhrases[]
(deprecated)
string

省略可。音声適応に使用されるフレーズのリスト。ASR モデルをバイアスして、これらの特定の用語の認識を改善します。

customVocabulary[] string

省略可。特定の用語(プロダクト名、固有名詞、専門用語)を認識するように音声認識モデルにバイアスをかけるためのカスタム語彙フレーズのリスト。

language_config Union type
音声文字変換の言語構成。ASR モデルの場合は必須です。設定されていない場合はエラーが返されます。language_config は次のいずれかになります。
languageAuto object (LanguageAuto)

省略可。モデルは言語を自動的に検出します。

languageHints object (LanguageHints)

省略可。音声の言語を 1 つ以上指定します。

JSON 表現
{
  "adaptationPhrases": [
    string
  ],
  "customVocabulary": [
    string
  ],

  // language_config
  "languageAuto": {
    object (LanguageAuto)
  },
  "languageHints": {
    object (LanguageHints)
  }
  // Union type
}

LanguageAuto

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

音声の言語を自動的に検出する必要があることを示します。

LanguageHints

音声に含まれる可能性のある言語に関するヒントをモデルに提供します。

フィールド
languageCodes[] string

必須。BCP-47 言語コード。

JSON 表現
{
  "languageCodes": [
    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 のインスタンスが含まれます。