Generating content

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

メソッド: models.generateContent

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

エンドポイント

投稿 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 のデフォルト設定をオーバーライドします。リストに指定された特定の SafetyCategorySafetySetting がない場合、API はそのカテゴリのデフォルトの安全性設定を使用します。有害カテゴリ HARM_CATEGORY_HATE_SPEECH、HARM_CATEGORY_SEXUALLY_EXPLICIT、HARM_CATEGORY_DANGEROUS_CONTENT、HARM_CATEGORY_HARASSMENT、HARM_CATEGORY_CIVIC_INTEGRITY がサポートされています。利用可能な安全設定の詳細については、ガイドをご覧ください。AI アプリケーションに安全性の考慮事項を組み込む方法については、安全に関するガイダンスもご覧ください。

systemInstruction object (Content)

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

generationConfig object (GenerationConfig)

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

cachedContent string

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

リクエスト例

テキスト

Python

from google import genai  client = genai.Client() response = client.models.generate_content(     model="gemini-2.0-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-2.0-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-2.0-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-2.0-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-2.0-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-2.0-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-2.0-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-2.0-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-2.0-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-2.0-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-2.0-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-2.0-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-2.0-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-2.0-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-2.0-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-2.0-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-2.0-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-2.0-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-2.0-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-2.0-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-1.5-flash-001"  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-1.5-flash-001";  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-1.5-flash-001" 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-2.0-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-2.0-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-2.0-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-2.0-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-2.0-pro-exp-02-05",     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-2.0-pro-exp-02-05", 	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-2.0-pro-exp-02-05",                 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-2.0-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-2.0-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-2.0-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-2.0-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-2.0-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-2.0-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-2.0-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-2.0-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-2.0-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-2.0-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-2.0-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-2.0-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-2.0-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-2.0-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-2.0-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-2.0-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-2.0-flash",                 "Good morning! How are you?",                 config);  System.out.println(response.text());

レスポンスの本文

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

メソッド: models.streamGenerateContent

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

エンドポイント

投稿 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 のデフォルト設定をオーバーライドします。リストに指定された特定の SafetyCategorySafetySetting がない場合、API はそのカテゴリのデフォルトの安全性設定を使用します。有害カテゴリ HARM_CATEGORY_HATE_SPEECH、HARM_CATEGORY_SEXUALLY_EXPLICIT、HARM_CATEGORY_DANGEROUS_CONTENT、HARM_CATEGORY_HARASSMENT、HARM_CATEGORY_CIVIC_INTEGRITY がサポートされています。利用可能な安全設定の詳細については、ガイドをご覧ください。AI アプリケーションに安全性の考慮事項を組み込む方法については、安全に関するガイダンスもご覧ください。

systemInstruction object (Content)

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

generationConfig object (GenerationConfig)

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

cachedContent string

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

リクエスト例

テキスト

Python

from google import genai  client = genai.Client() response = client.models.generate_content_stream(     model="gemini-2.0-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-2.0-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-2.0-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-2.0-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-2.0-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-2.0-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-2.0-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-2.0-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-2.0-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-2.0-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-2.0-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-2.0-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-2.0-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-2.0-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-2.0-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-2.0-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-2.0-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-2.0-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 は各レスポンスの識別に使用されます。

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

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)

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

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

受験者

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

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

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

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 }

FinishReason

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

列挙型
FINISH_REASON_UNSPECIFIED デフォルト値。この値は使用されません。
STOP モデルの自然な停止点、または指定された停止シーケンス。
MAX_TOKENS リクエストで指定されたトークンの上限に達しました。
SAFETY 安全上の理由からレスポンス候補のコンテンツにフラグが付けられました。
RECITATION レスポンス候補のコンテンツに、朗読の理由でフラグが付けられました。
LANGUAGE 回答候補のコンテンツが、サポートされていない言語を使用しているとしてフラグ設定されました。
OTHER 不明な理由。
BLOCKLIST 禁止されている語句がコンテンツに含まれているため、トークンの生成が停止されました。
PROHIBITED_CONTENT 禁止コンテンツが含まれている可能性があるため、トークンの生成が停止されました。
SPII コンテンツに個人を特定できる機密情報(SPII)が含まれている可能性があるため、トークンの生成が停止されました。
MALFORMED_FUNCTION_CALL モデルによって生成された関数呼び出しが無効です。
IMAGE_SAFETY 生成された画像に安全上の違反が含まれているため、トークンの生成が停止されました。
UNEXPECTED_TOOL_CALL モデルがツール呼び出しを生成しましたが、リクエストでツールが有効になっていませんでした。

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/123 または corpora/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

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

searchEntryPoint object (SearchEntryPoint)

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

retrievalMetadata object (RetrievalMetadata)

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

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

SearchEntryPoint

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

フィールド
renderedContent string

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

sdkBlob string (bytes format)

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

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

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

GroundingChunk

グラウンディング チャンク。

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

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

JSON 表現
{    // chunk_type   "web": {     object (Web)   }   // Union type }

ウェブ

ウェブからのチャンク。

フィールド
uri string

チャンクの URI 参照。

title string

チャンクのタイトル。

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

GroundingSupport

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

フィールド
groundingChunkIndices[] integer

申し立てに関連付けられている引用を指定するインデックス(grounding_chunk 内)のリスト。たとえば、[1,3,4] は、grounding_chunk[1]、grounding_chunk[3]、grounding_chunk[4] が、主張に関連付けられた取得済みコンテンツであることを意味します。

confidenceScores[] number

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

segment object (Segment)

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

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

セグメント

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

フィールド
partIndex integer

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

startIndex integer

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

endIndex integer

出力専用。指定された Part の終了インデックス(バイト単位)。Part の先頭からのオフセット(排他的、ゼロから開始)。

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 に含まれる場合もあれば、含まれない場合もあります。

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

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 の取得に失敗しました。

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 }

GenerationConfig

モデルの生成と出力の構成オプション。すべてのモデルですべてのパラメータを構成できるわけではありません。

フィールド
stopSequences[] string

省略可。出力生成を停止する文字シーケンスのセット(最大 5 個)。指定した場合、API は stop_sequence が最初に出現したところで停止します。停止シーケンスはレスポンスには含まれません。

responseMimeType string

省略可。生成された候補テキストの MIME タイプ。サポートされている MIME タイプは、text/plain(デフォルト): テキスト出力です。application/json: レスポンス候補の JSON レスポンス。text/x.enum: レスポンス候補の文字列レスポンスとしての ENUM。サポートされているテキスト MIME タイプの一覧については、ドキュメントをご覧ください。

responseSchema object (Schema)

省略可。生成された候補テキストの出力スキーマ。スキーマは OpenAPI スキーマのサブセットである必要があり、オブジェクト、プリミティブ、配列にすることができます。

設定する場合は、互換性のある responseMimeType も設定する必要があります。互換性のある MIME タイプ: application/json: JSON レスポンスのスキーマ。詳しくは、JSON テキスト生成ガイドをご覧ください。

responseJsonSchema 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 が設定されている場合、$ で始まるプロパティ以外のプロパティは設定できません。

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 の各デコード ステップで返す上位の logprobs の数が設定されます。

enableEnhancedCivicAnswers boolean

省略可。強化された市民向け回答を有効にします。一部のモデルではご利用いただけない場合があります。

speechConfig object (SpeechConfig)

省略可。音声生成の構成。

thinkingConfig object (ThinkingConfig)

省略可。思考機能の設定。思考をサポートしていないモデルに対してこのフィールドが設定されている場合、エラーが返されます。

mediaResolution enum (MediaResolution)

省略可。指定した場合、指定されたメディアの解像度が使用されます。

JSON 表現
{   "stopSequences": [     string   ],   "responseMimeType": string,   "responseSchema": {     object (Schema)   },   "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)   },   "mediaResolution": enum (MediaResolution) }

モダリティ

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

列挙型
MODALITY_UNSPECIFIED デフォルト値。
TEXT モデルがテキストを返すことを示します。
IMAGE モデルが画像を返す必要があることを示します。
AUDIO モデルが音声を返す必要があることを示します。

SpeechConfig

音声生成の構成。

フィールド
voiceConfig object (VoiceConfig)

単一音声出力の場合の構成。

multiSpeakerVoiceConfig object (MultiSpeakerVoiceConfig)

省略可。マルチスピーカー設定の構成。voiceConfig フィールドとは相互に排他的です。

languageCode string

省略可。音声合成用の言語コード(BCP 47 形式。例: en-US)。

有効な値は、de-DE、en-AU、en-GB、en-IN、en-US、es-US、fr-FR、hi-IN、pt-BR、ar-XA、es-ES、fr-CA、id-ID、it-IT、ja-JP、tr-TR、vi-VN、bn-IN、gu-IN、kn-IN、ml-IN、mr-IN、ta-IN、te-IN、nl-NL、ko-KR、cmn-CN、pl-PL、ru-RU、th-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

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

JSON 表現
{   "includeThoughts": boolean,   "thinkingBudget": integer }

MediaResolution

入力メディアのメディア解像度。

列挙型
MEDIA_RESOLUTION_UNSPECIFIED メディアの解像度が設定されていません。
MEDIA_RESOLUTION_LOW メディアの解像度が低(64 トークン)に設定されている。
MEDIA_RESOLUTION_MEDIUM メディアの解像度が中(256 トークン)に設定されています。
MEDIA_RESOLUTION_HIGH メディアの解像度を高に設定(256 トークンでズームして再フレーミング)。

HarmCategory

評価のカテゴリ。

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

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

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 安全フィルタをオフにします。