88API88API
使用ガイドAPIリファレンスAIアプリケーションヘルプとサポート
チャット(Chat)

Google Gemini 対話フォーマット(Generate Content)

公式ドキュメント

📝 概要

Google Gemini API は、画像、音声、コード、ツールなどを使用してコンテンツの生成をサポートしています。入力 GenerateContentRequest を指定してモデル応答を生成します。テキスト生成、視覚理解、音声処理、長コンテキスト、コード実行、JSONモード、関数呼び出しなど、多様な機能をサポートしています。

💡 リクエスト例

基本テキスト対話 ✅

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

画像分析対話 ✅

# 使用临时文件保存base64编码的图片数据
TEMP_B64=$(mktemp)
trap 'rm -f "$TEMP_B64"' EXIT
base64 $B64FLAGS $IMG_PATH > "$TEMP_B64"

# 使用临时文件保存JSON载荷
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://88api.ai/v1beta/models/gemini-2.0-flash:generateContent?key=$API_KEY" \
    -H 'Content-Type: application/json' \
    -X POST \
    -d "@$TEMP_JSON" 2>` /dev/null

関数呼び出し ✅

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://88api.ai/v1beta/models/gemini-2.0-flash:generateContent?key=$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'

JSONモード応答 ✅

curl "https://88api.ai/v1beta/models/gemini-2.0-flash:generateContent?key=$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

音声処理 🟡

ファイルアップロード制限

inline_data を介した base64 方式での音声アップロードのみをサポートしており、file_data.file_uri や File API はサポートしていません。

# 使用File API上传音频数据到API请求
# 使用 base64 inline_data 上传音频数据到 API 请求
if [[ "$(base64 --version 2>&1)" = *"FreeBSD"* ]]; then
  B64FLAGS="--input"
else
  B64FLAGS="-w0"
fi
AUDIO_B64=$(base64 $B64FLAGS "$AUDIO_PATH")

curl "https://88api.ai/v1beta/models/gemini-2.0-flash:generateContent?key=$API_KEY" \
  -H 'Content-Type: application/json' \
  -X POST \
  -d '{
    "contents": [{
      "parts": [
        {"text": "Please describe this audio file."},
        {"inline_data": {"mime_type": "audio/mpeg", "data": "'$AUDIO_B64'"}}
      ]
    }]
  }' 2> /dev/null | jq ".candidates[].content.parts[].text"

動画処理 🟡

ファイルアップロード制限

inline_data を介した base64 方式での動画アップロードのみをサポートしており、file_data.file_uri や File API はサポートしていません。

# 使用File API上传视频数据到API请求
# 使用 base64 inline_data 上传视频数据到 API 请求
if [[ "$(base64 --version 2>&1)" = *"FreeBSD"* ]]; then
  B64FLAGS="--input"
else
  B64FLAGS="-w0"
fi
VIDEO_B64=$(base64 $B64FLAGS "$VIDEO_PATH")

curl "https://88api.ai/v1beta/models/gemini-2.0-flash:generateContent?key=$API_KEY" \
  -H 'Content-Type: application/json' \
  -X POST \
  -d '{
    "contents": [{
      "parts": [
        {"text": "Transcribe the audio from this video and provide visual descriptions."},
        {"inline_data": {"mime_type": "video/mp4", "data": "'$VIDEO_B64'"}}
      ]
    }]
  }' 2> /dev/null | jq ".candidates[].content.parts[].text"

PDF処理 🟡

ファイルアップロード制限

inline_data を介した base64 方式での PDF アップロードのみをサポートしており、file_data.file_uri や File API はサポートしていません。

MIME_TYPE=$(file -b --mime-type "${PDF_PATH}")
# 使用 base64 inline_data 上传 PDF 文件到 API 请求
if [[ "$(base64 --version 2>&1)" = *"FreeBSD"* ]]; then
  B64FLAGS="--input"
else
  B64FLAGS="-w0"
fi
PDF_B64=$(base64 $B64FLAGS "$PDF_PATH")

echo $MIME_TYPE

curl "https://88api.ai/v1beta/models/gemini-2.0-flash:generateContent?key=$API_KEY" \
  -H 'Content-Type: application/json' \
  -X POST \
  -d '{
    "contents": [{
      "parts": [
        {"text": "Can you add a few more lines to this poem?"},
        {"inline_data": {"mime_type": "application/pdf", "data": "'$PDF_B64'"}}
      ]
    }]
  }' 2> /dev/null | jq ".candidates[].content.parts[].text"

チャット対話 ✅

curl https://88api.ai/v1beta/models/gemini-2.0-flash:generateContent?key=$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"

ストリーミング応答 ✅

curl "https://88api.ai/v1beta/models/gemini-2.0-flash:streamGenerateContent?alt=sse&key=$API_KEY" \
    -H 'Content-Type: application/json' \
    --no-buffer \
    -d '{
      "contents": [{
        "parts": [{"text": "写一个关于魔法背包的故事"}]
      }]
    }'

コード実行 ✅

curl "https://88api.ai/v1beta/models/gemini-2.0-flash:generateContent?key=$API_KEY" \
    -H 'Content-Type: application/json' \
    -X POST \
    -d '{
      "contents": [{
        "parts": [{"text": "计算斐波那契数列的第10项"}]
      }],
      "tools": [{
        "codeExecution": {}
      }]
    }'

生成設定 ✅

curl https://88api.ai/v1beta/models/gemini-2.0-flash:generateContent?key=$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"

安全設定 ✅

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://88api.ai/v1beta/models/gemini-2.0-flash:generateContent?key=$API_KEY" \
    -H 'Content-Type: application/json' \
    -X POST \
    -d @request.json 2> /dev/null

システム指示 ✅

curl "https://88api.ai/v1beta/models/gemini-2.0-flash:generateContent?key=$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"}}}'

📮 リクエスト

エンドポイント

コンテンツ生成

POST https://88api.ai/v1beta/{model=models/*}:generateContent

ストリーミングコンテンツ生成

POST https://88api.ai/v1beta/{model=models/*}:streamGenerateContent

認証方法

リクエストURLパラメータにAPIキーを含めます:

?key=$API_KEY

ここで $API_KEY はあなたの Google AI API キーです。

パスパラメータ

model

  • 型:文字列
  • 必須:はい

補完を生成するために使用されるモデル名。

形式:models/{model}、例:models/gemini-2.0-flash

リクエストボディパラメータ

contents

  • 型:配列
  • 必須:はい

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

Content オブジェクトのプロパティ:

プロパティ必須説明
parts配列はい単一のメッセージを構成する、順序付けられたコンテンツ部分
role文字列いいえ対話におけるコンテンツの生成者。usermodelfunction または tool

Part オブジェクトのプロパティ:

プロパティ必須説明
text文字列いいえプレーンテキストコンテンツ
inlineDataオブジェクトいいえインラインメディアバイトデータ
fileDataオブジェクトいいえアップロードされたファイルのURI参照
functionCallオブジェクトいいえ関数呼び出しリクエスト
functionResponseオブジェクトいいえ関数呼び出し応答
executableCodeオブジェクトいいえ実行可能コード
codeExecutionResultオブジェクトいいえコード実行結果

InlineData オブジェクトのプロパティ:

プロパティ必須説明
mimeType文字列はいメディアのMIMEタイプ
data文字列はいbase64エンコードされたメディアデータ

FileData オブジェクトのプロパティ:

プロパティ必須説明
mimeType文字列はいファイルのMIMEタイプ
fileUri文字列はいファイルのURI

tools

  • 型:配列
  • 必須:いいえ

モデルが次の応答を生成するために使用できるツールのリスト。サポートされているツールには、関数とコード実行が含まれます。

Tool オブジェクトのプロパティ:

プロパティ必須説明
functionDeclarations配列いいえオプションの関数宣言リスト
codeExecutionオブジェクトいいえモデルによるコード実行を有効にする

FunctionDeclaration オブジェクトのプロパティ:

プロパティ必須説明
name文字列はい関数名称
description文字列いいえ関数の機能の説明
parametersオブジェクトいいえ関数パラメータ、JSON Schema形式

FunctionCall オブジェクトのプロパティ:

プロパティ必須説明
name文字列はい呼び出す関数名
argsオブジェクトいいえ関数パラメータのキーと値のペア

FunctionResponse オブジェクトのプロパティ:

プロパティ必須説明
name文字列はい呼び出された関数名
responseオブジェクトはい関数呼び出しの応答データ

ExecutableCode オブジェクトのプロパティ:

プロパティ必須説明
language列挙型はいコードのプログラミング言語
code文字列はい実行するコード

CodeExecutionResult オブジェクトのプロパティ:

プロパティ必須説明
outcome列挙型はいコード実行の結果ステータス
output文字列いいえコード実行の出力内容

CodeExecution オブジェクトのプロパティ:

プロパティ必須説明
空オブジェクト-コード実行機能を有効にするための空の構成オブジェクト

toolConfig

  • 型:オブジェクト
  • 必須:いいえ

リクエストで指定された任意のツールのツール構成。

ToolConfig オブジェクトのプロパティ:

プロパティ必須説明
functionCallingConfigオブジェクトいいえ関数呼び出し構成

FunctionCallingConfig オブジェクトのプロパティ:

プロパティ必須説明
mode列挙型いいえ関数呼び出しのモードを指定
allowedFunctionNames配列いいえ呼び出しが許可される関数名のリスト

FunctionCallingMode 列挙値:

  • MODE_UNSPECIFIED: デフォルトモード。モデルが関数を呼び出すかどうかを決定します
  • AUTO: モデルが関数を呼び出すタイミングを自動的に決定します
  • ANY: モデルは関数を呼び出す必要があります
  • NONE: モデルは関数を呼び出すことができません

safetySettings

  • 型:配列
  • 必須:いいえ

安全でないコンテンツをブロックするために使用される SafetySetting インスタンスのリスト。

SafetySetting オブジェクトのプロパティ:

プロパティ必須説明
category列挙型はい安全カテゴリ
threshold列挙型はいブロックしきい値

HarmCategory 列挙値:

  • HARM_CATEGORY_HARASSMENT: ハラスメントコンテンツ
  • HARM_CATEGORY_HATE_SPEECH: ヘイトスピーチおよびコンテンツ
  • HARM_CATEGORY_SEXUALLY_EXPLICIT: 露骨な性的コンテンツ
  • HARM_CATEGORY_DANGEROUS_CONTENT: 危険なコンテンツ
  • HARM_CATEGORY_CIVIC_INTEGRITY: 市民の誠実さを損なうために使用される可能性のあるコンテンツ

HarmBlockThreshold 列挙値:

  • BLOCK_LOW_AND_ABOVE: NEGLIGIBLE と評価されたコンテンツの公開を許可します
  • BLOCK_MEDIUM_AND_ABOVE: NEGLIGIBLE および LOW と評価されたコンテンツの公開を許可します
  • BLOCK_ONLY_HIGH: リスクレベルが NEGLIGIBLE、LOW、および MEDIUM のコンテンツの公開を許可します
  • BLOCK_NONE: すべてのコンテンツを許可します
  • OFF: 安全フィルターをオフにします

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

systemInstruction

  • 型:オブジェクト(Content)
  • 必須:いいえ

開発者が設定するシステム指示。現在、テキストのみをサポートしています。

generationConfig

  • 型:オブジェクト
  • 必須:いいえ

モデルの生成と出力のための構成オプション。

GenerationConfig オブジェクトのプロパティ:

プロパティ必須説明
stopSequences配列いいえ出力の生成を停止するために使用される文字シーケンスのセット(最大5つ)
responseMimeType文字列いいえ生成された候補テキストのMIMEタイプ
responseSchemaオブジェクトいいえ生成された候補テキストの出力スキーマ
responseModalities配列いいえリクエストされた応答モダリティ
candidateCount整数いいえ返される生成された回答の数
maxOutputTokens整数いいえ候補回答に含まれるトークン数の上限
temperature数字いいえ出力のランダム性を制御します。範囲は [0.0, 2.0]
topP数字いいえサンプリング時に考慮されるトークンの累積確率の上限
topK整数いいえサンプリング時に考慮されるトークン数の上限
seed整数いいえデコードに使用されるシード
presencePenalty数字いいえ存在ペナルティ
frequencyPenalty数字いいえ頻度ペナルティ
responseLogprobsブール値いいえ応答に logprobs の結果をエクスポートするかどうか
logprobs整数いいえ返されるトップ logprob の数
enableEnhancedCivicAnswersブール値いいえ拡張された市民サービス回答を有効にする
speechConfigオブジェクトいいえ音声生成構成
thinkingConfigオブジェクトいいえ思考機能の構成
mediaResolution列挙型いいえ指定されたメディア解像度

サポートされている MIME タイプ:

  • text/plain: (デフォルト)テキスト出力
  • application/json: JSON応答
  • text/x.enum: 文字列としてのENUM応答

Modality 列挙値:

  • TEXT: モデルがテキストを返す必要があることを示します
  • IMAGE: モデルが画像を返す必要があることを示します
  • AUDIO: モデルが音声を返す必要があることを示します

Schema オブジェクトのプロパティ:

プロパティ必須説明
type列挙型はいデータ型
description文字列いいえフィールドの説明
enum配列いいえ列挙値のリスト(typeがstringの場合)
example任意型いいえサンプル値
nullableブール値いいえnullを許可するかどうか
format文字列いいえ文字列形式(date、date-timeなど)
itemsオブジェクトいいえ配列項目のスキーマ(typeがarrayの場合)
propertiesオブジェクトいいえオブジェクトプロパティのスキーママッピング(typeがobjectの場合)
required配列いいえ必須プロパティ名のリスト
minimum数字いいえ数値の最小値
maximum数字いいえ数値の最大値
minItems整数いいえ配列の最小長
maxItems整数いいえ配列の最大長
minLength整数いいえ文字列の最小長
maxLength整数いいえ文字列の最大長

Type 列挙値:

  • TYPE_UNSPECIFIED: 型が指定されていません
  • STRING: 文字列型
  • NUMBER: 数値型
  • INTEGER: 整数型
  • BOOLEAN: ブール型
  • ARRAY: 配列型
  • OBJECT: オブジェクト型

サポートされているプログラミング言語(ExecutableCode):

  • LANGUAGE_UNSPECIFIED: 言語が指定されていません
  • PYTHON: Pythonプログラミング言語

コード実行結果列挙型(Outcome):

  • OUTCOME_UNSPECIFIED: 結果が指定されていません
  • OUTCOME_OK: コード実行成功
  • OUTCOME_FAILED: コード実行失敗
  • OUTCOME_DEADLINE_EXCEEDED: コード実行タイムアウト

cachedContent

  • 型:文字列
  • 必須:いいえ

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

📥 応答

GenerateContentResponse

複数の候補回答をサポートするモデルからの回答。プロンプトと各候補について、安全評価とコンテンツフィルタリングが報告されます。

candidates

  • 型:配列
  • 説明:モデルの候補回答リスト

Candidate オブジェクトのプロパティ:

プロパティ説明
contentオブジェクトモデルが返した生成コンテンツ
finishReason列挙型モデルがトークンの生成を停止した理由
safetyRatings配列候補回答の安全性に関する評価リスト
citationMetadataオブジェクトモデルが生成した候補の引用情報
tokenCount整数この候補のトークン数
groundingAttributions配列根拠のある回答を生成するために参照されたソースの提供者情報
groundingMetadataオブジェクト候補オブジェクトの参照メタデータ
avgLogprobs数字候補の平均対数確率スコア
logprobsResultオブジェクト回答トークンと先行トークンの対数尤度スコア
urlRetrievalMetadataオブジェクトURLコンテキスト取得ツールに関連するメタデータ
urlContextMetadataオブジェクトURLコンテキスト取得ツールに関連するメタデータ
index整数応答候補リストにおける候補のインデックス

FinishReason 列挙値:

  • STOP: モデルの自然な停止点または提供された停止シーケンス
  • MAX_TOKENS: リクエストで指定されたトークン数の上限に達しました
  • SAFETY: 安全上の理由により、回答候補がシステムによってフラグ付けされました
  • RECITATION: 暗唱(Recitation)が原因で、回答候補がフラグ付けされました
  • LANGUAGE: サポートされていない言語の使用が原因で、回答候補がフラグ付けされました
  • OTHER: 原因不明
  • BLOCKLIST: コンテンツに禁止用語が含まれているため、トークン生成操作が停止されました
  • PROHIBITED_CONTENT: 禁止されたコンテンツが含まれる可能性があるため、トークン生成操作が停止されました
  • SPII: コンテンツに機密性の高い個人識別情報が含まれる可能性があるため、トークン生成操作が停止されました
  • MALFORMED_FUNCTION_CALL: モデルが生成した関数呼び出しが無効です
  • IMAGE_SAFETY: 生成された画像が安全規定に違反したため、トークン生成が停止されました

promptFeedback

  • 型:オブジェクト
  • 説明:コンテンツフィルターに関連するプロンプトフィードバック

PromptFeedback オブジェクトのプロパティ:

プロパティ説明
blockReason列挙型このプロンプトがブロックされた理由
safetyRatings配列質問の安全性に関する評価

BlockReason 列挙値:

  • BLOCK_REASON_UNSPECIFIED: デフォルト値。この値は使用されません
  • SAFETY: 安全上の理由により、システムがプロンプトをブロックしました
  • OTHER: プロンプトが不明な理由でブロックされました
  • BLOCKLIST: 用語ブロックリストに含まれる用語が含まれているため、システムがこのプロンプトをブロックしました
  • PROHIBITED_CONTENT: 禁止されたコンテンツが含まれているため、システムがこのプロンプトをブロックしました
  • IMAGE_SAFETY: 候補画像が安全でないコンテンツを生成したためブロックされました

usageMetadata

  • 型:オブジェクト
  • 説明:生成リクエストのトークン使用量に関するメタデータ

UsageMetadata オブジェクトのプロパティ:

プロパティ説明
promptTokenCount整数プロンプト内のトークン数
cachedContentTokenCount整数プロンプトのキャッシュ部分内のトークン数
candidatesTokenCount整数生成されたすべての候補回答におけるトークンの合計数
totalTokenCount整数生成リクエストの総トークン数
toolUsePromptTokenCount整数ツール使用プロンプト内のトークン数
thoughtsTokenCount整数思考モデルの思考トークン数
promptTokensDetails配列リクエスト入力で処理されたモダリティのリスト
candidatesTokensDetails配列応答で返されたモダリティのリスト
cacheTokensDetails配列リクエスト入力におけるキャッシュされたコンテンツのモダリティのリスト
toolUsePromptTokensDetails配列ツール使用リクエスト入力のために処理されたモダリティのリスト

modelVersion

  • 型:文字列
  • 説明:回答の生成に使用されたモデルバージョン

responseId

  • 型:文字列
  • 説明:各応答を識別するためのID

完全な応答例

{
  "candidates": [
    {
      "content": {
        "parts": [
          {
            "text": "こんにちは!私は Gemini、Google が開発した AI アシスタントです。質問への回答、情報の提供、ライティングの支援、コードプログラミングなど、さまざまなタスクをお手伝いできます。何かお役に立てることがあれば教えてください!"
          }
        ],
        "role": "model"
      },
      "finishReason": "STOP",
      "index": 0,
      "safetyRatings": [
        {
          "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT",
          "probability": "NEGLIGIBLE",
          "blocked": false
        },
        {
          "category": "HARM_CATEGORY_HATE_SPEECH",
          "probability": "NEGLIGIBLE",
          "blocked": false
        },
        {
          "category": "HARM_CATEGORY_HARASSMENT",
          "probability": "NEGLIGIBLE",
          "blocked": false
        },
        {
          "category": "HARM_CATEGORY_DANGEROUS_CONTENT",
          "probability": "NEGLIGIBLE",
          "blocked": false
        }
      ],
      "tokenCount": 47
    }
  ],
  "promptFeedback": {
    "safetyRatings": [
      {
        "category": "HARM_CATEGORY_SEXUALLY_EXPLICIT",
        "probability": "NEGLIGIBLE"
      },
      {
        "category": "HARM_CATEGORY_HATE_SPEECH",
        "probability": "NEGLIGIBLE"
      }
    ]
  },
  "usageMetadata": {
    "promptTokenCount": 4,
    "candidatesTokenCount": 47,
    "totalTokenCount": 51,
    "promptTokensDetails": [
      {
        "modality": "TEXT",
        "tokenCount": 4
      }
    ],
    "candidatesTokensDetails": [
      {
        "modality": "TEXT",
        "tokenCount": 47
      }
    ]
  },
  "modelVersion": "gemini-2.0-flash",
  "responseId": "response-12345"
}

🔧 高度な機能

安全評価

SafetyRating オブジェクトのプロパティ:

プロパティ説明
category列挙型この評価のカテゴリ
probability列挙型このコンテンツの有害性の確率
blockedブール値このコンテンツがこの評価によってブロックされたかどうか

HarmProbability 列挙値:

  • NEGLIGIBLE: コンテンツが安全でない確率は無視できる程度です
  • LOW: コンテンツが安全でない確率は低いです
  • MEDIUM: コンテンツが安全でない確率は中程度です
  • HIGH: コンテンツが安全でない確率は高いです

引用メタデータ

CitationMetadata オブジェクトのプロパティ:

プロパティ説明
citationSources配列特定の応答のソース引用

CitationSource オブジェクトのプロパティ:

プロパティ説明
startIndex整数このソースに帰属する応答セグメントの開始インデックス
endIndex整数帰属セグメントの終了インデックス(排他的)
uri文字列テキスト部分のソースとして帰属するURI
license文字列セグメントのソースとして帰属するGitHubプロジェクトのライセンス

コード実行

コード実行ツールが有効になっている場合、モデルは問題を解決するためにコードを生成および実行できます。

コード実行の応答例:

{
  "candidates": [
    {
      "content": {
        "parts": [
          {
            "text": "フィボナッチ数列の第10項を計算します:"
          },
          {
            "executableCode": {
              "language": "PYTHON",
              "code": "def fibonacci(n):\n    if n <= 1:\n        return n\n    else:\n        return fibonacci(n-1) + fibonacci(n-2)\n\nresult = fibonacci(10)\nprint(f'第10项斐波那契数是: {result}')"
            }
          },
          {
            "codeExecutionResult": {
              "outcome": "OK",
              "output": "第10项斐波那契数是: 55"
            }
          },
          {
            "text": "したがって、フィボナッチ数列の第10項は55です。"
          }
        ],
        "role": "model"
      },
      "finishReason": "STOP"
    }
  ]
}

グラウンディング機能 (Grounding)

GroundingMetadata オブジェクトのプロパティ:

プロパティ説明
groundingChunks配列指定されたグラウンディングソースから取得されたサポート参照のリスト
groundingSupports配列グラウンディングサポートのリスト
webSearchQueries配列後続のウェブ検索に使用されるウェブ検索クエリ
searchEntryPointオブジェクト後続のウェブ検索のためのGoogle検索エントリ
retrievalMetadataオブジェクトベンチマークプロセスにおける取得に関連するメタデータ

GroundingAttribution オブジェクトのプロパティ:

プロパティ説明
sourceIdオブジェクトこの帰属に貢献したソースの識別子
contentオブジェクトこの帰属を構成するソースコンテンツ

AttributionSourceId オブジェクトのプロパティ:

プロパティ説明
groundingPassageオブジェクトインライン段落の識別子
semanticRetrieverChunkオブジェクトSemantic Retrieverによって抽出されたチャンクの識別子

GroundingPassageId オブジェクトのプロパティ:

プロパティ説明
passageId文字列GenerateAnswerRequestのGroundingPassage.idに一致する段落のID
partIndex整数GenerateAnswerRequestのGroundingPassage.content内の部分のインデックス

SemanticRetrieverChunk オブジェクトのプロパティ:

プロパティ説明
source文字列リクエストのSemanticRetrieverConfig.sourceに一致するソース名
chunk文字列帰属テキストを含むチャンクの名前

SearchEntryPoint オブジェクトのプロパティ:

プロパティ説明
renderedContent文字列ウェブページまたはアプリケーションのWebViewに埋め込み可能なウェブコンテンツのスニペット
sdkBlob文字列検索語と検索URLタプルの配列を表すbase64エンコードされたJSON

Segment オブジェクトのプロパティ:

プロパティ説明
partIndex整数Partオブジェクトがその親Contentオブジェクト内にあるインデックス
startIndex整数指定されたpart内の開始インデックス(バイト単位)
endIndex整数指定されたチャンク内の終了インデックス(排他的、バイト単位)
text文字列応答内のセグメントに対応するテキスト

RetrievalMetadata オブジェクトのプロパティ:

プロパティ説明
googleSearchDynamicRetrievalScore数字Google検索の情報が質問への回答に役立つ確率スコア。範囲は [0, 1]

GroundingChunk オブジェクトのプロパティ:

プロパティ説明
webオブジェクトウェブからのグラウンディングチャンク

Web オブジェクトのプロパティ:

プロパティ説明
uri文字列チャンクのURI参照
title文字列データチャンクのタイトル

GroundingSupport オブジェクトのプロパティ:

プロパティ説明
groundingChunkIndices配列著作権主張に関連する引用を指定するためのインデックスのリスト
confidenceScores配列参照ドキュメントをサポートする信頼度スコア。範囲は0から1
segmentオブジェクトこのサポートリクエストが属するコンテンツセグメント

マルチモーダル処理

Gemini API は、複数のモダリティの入力と出力を処理することをサポートしています:

サポートされている入力モダリティ:

  • TEXT: プレーンテキスト
  • IMAGE: 画像(JPEG、PNG、WebP、HEIC、HEIF)
  • AUDIO: 音声(WAV、MP3、AIFF、AAC、OGG、FLAC)
  • VIDEO: 動画(MP4、MPEG、MOV、AVI、FLV、MPG、WEBM、WMV、3GPP)
  • DOCUMENT: ドキュメント(PDF)

ModalityTokenCount オブジェクトのプロパティ:

プロパティ説明
modality列挙型このトークン数に関連付けられたモダリティ
tokenCount整数トークン数量

MediaResolution 列挙値:

  • MEDIA_RESOLUTION_LOW: 低解像度(64トークン)
  • MEDIA_RESOLUTION_MEDIUM: 中解像度(256トークン)
  • MEDIA_RESOLUTION_HIGH: 高解像度(256トークンを使用してスケーリング再フレーミングを実行)

思考機能

ThinkingConfig オブジェクトのプロパティ:

プロパティ説明
includeThoughtsブール値回答に思考内容を含めるかどうか
thinkingBudget整数モデルが生成すべき思考トークンの数

音声生成

SpeechConfig オブジェクトのプロパティ:

プロパティ説明
voiceConfigオブジェクト単一話者出力の構成
multiSpeakerVoiceConfigオブジェクト複数話者設定の構成
languageCode文字列音声合成に使用される言語コード

VoiceConfig オブジェクトのプロパティ:

プロパティ説明
prebuiltVoiceConfigオブジェクト使用する事前構築済み音声の構成

PrebuiltVoiceConfig オブジェクトのプロパティ:

プロパティ説明
voiceName文字列使用するプリセット音声の名前

MultiSpeakerVoiceConfig オブジェクトのプロパティ:

プロパティ説明
speakerVoiceConfigs配列有効になっているすべての話者音声

SpeakerVoiceConfig オブジェクトのプロパティ:

プロパティ説明
speaker文字列使用する話者の名前
voiceConfigオブジェクト使用する音声の構成

サポートされている言語コード:

  • zh-CN: 中国語(簡体字)
  • en-US: 英語(米国)
  • ja-JP: 日本語
  • ko-KR: 韓国語
  • fr-FR: フランス語
  • de-DE: ドイツ語
  • es-ES: スペイン語
  • pt-BR: ポルトガル語(ブラジル)
  • hi-IN: ヒンディー語
  • ar-XA: アラビア語
  • it-IT: イタリア語
  • tr-TR: トルコ語
  • vi-VN: ベトナム語
  • th-TH: タイ語
  • ru-RU: ロシア語
  • pl-PL: ポーランド語
  • nl-NL: オランダ語

Logprobs 結果

LogprobsResult オブジェクトのプロパティ:

プロパティ説明
topCandidates配列長さ=デコードステップの総数
chosenCandidates配列長さ=デコードステップの総数。選択された候補は必ずしもtopCandidatesに含まれるわけではありません

TopCandidates オブジェクトのプロパティ:

プロパティ説明
candidates配列対数確率の降順でソートされた候補

Candidate (Logprobs) オブジェクトのプロパティ:

プロパティ説明
token文字列候補のトークン文字列値
tokenId整数候補のトークンID値
logProbability数字候補の対数確率

URL取得機能

UrlRetrievalMetadata オブジェクトのプロパティ:

プロパティ説明
urlRetrievalContexts配列URL取得コンテキストのリスト

UrlRetrievalContext オブジェクトのプロパティ:

プロパティ説明
retrievedUrl文字列ツールによって取得されたURL

UrlContextMetadata オブジェクトのプロパティ:

プロパティ説明
urlMetadata配列URLコンテキストのリスト

UrlMetadata オブジェクトのプロパティ:

プロパティ説明
retrievedUrl文字列ツールによって取得されたURL
urlRetrievalStatus列挙型URL取得のステータス

UrlRetrievalStatus 列挙値:

  • URL_RETRIEVAL_STATUS_SUCCESS: URL取得成功
  • URL_RETRIEVAL_STATUS_ERROR: エラーにより、URL取得失敗

完全な安全カテゴリ

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 - 市民の誠実さを損なうために使用される可能性のあるコンテンツ

HarmProbability 完全な列挙値:

  • HARM_PROBABILITY_UNSPECIFIED: 確率未指定
  • NEGLIGIBLE: コンテンツが安全でない確率は無視できる程度です
  • LOW: コンテンツが安全でない確率は低いです
  • MEDIUM: コンテンツが安全でない確率は中程度です
  • HIGH: コンテンツが安全でない確率は高いです

Modality 完全な列挙値:

  • MODALITY_UNSPECIFIED: モダリティ未指定
  • TEXT: プレーンテキスト
  • IMAGE: 画像
  • VIDEO: 動画
  • AUDIO: 音声
  • DOCUMENT: ドキュメント(PDFなど)

MediaResolution 完全な列挙値:

  • MEDIA_RESOLUTION_UNSPECIFIED: メディア解像度が設定されていません
  • MEDIA_RESOLUTION_LOW: メディア解像度が低に設定されています(64トークン)
  • MEDIA_RESOLUTION_MEDIUM: メディア解像度が中に設定されています(256トークン)
  • MEDIA_RESOLUTION_HIGH: メディア解像度が高に設定されています(256トークンを使用してスケーリング再フレーミングを実行)

UrlRetrievalStatus 完全な列挙値:

  • URL_RETRIEVAL_STATUS_UNSPECIFIED: デフォルト値。この値は使用されません
  • URL_RETRIEVAL_STATUS_SUCCESS: URL取得成功
  • URL_RETRIEVAL_STATUS_ERROR: エラーにより、URL取得失敗

🔍 エラー処理

一般的なエラーコード

エラーコード説明
400リクエスト形式が不正またはパラメータが無効
401APIキーが無効または不足
403権限不足またはクォータ制限
429リクエスト頻度が高すぎる
500サーバー内部エラー

詳細なエラーコードの説明

エラーコードステータス説明解決策
400INVALID_ARGUMENTリクエストパラメータが無効または形式が不正リクエストパラメータの形式と必須フィールドを確認してください
400FAILED_PRECONDITIONリクエストの前提条件が満たされていませんAPI呼び出しの前提条件が満たされていることを確認してください
401UNAUTHENTICATEDAPIキーが無効、不足、または期限切れですAPIキーの有効性と形式を確認してください
403PERMISSION_DENIED権限不足またはクォータが使い果たされましたAPIキーの権限を確認するか、クォータをアップグレードしてください
404NOT_FOUND指定されたモデルまたはリソースが存在しませんモデル名とリソースパスを検証してください
413PAYLOAD_TOO_LARGEリクエストボディが大きすぎます入力コンテンツのサイズを減らすか、バッチ処理してください
429RESOURCE_EXHAUSTEDリクエスト頻度が上限を超えているか、クォータが不足していますリクエスト頻度を下げるか、クォータのリセットを待ってください
500INTERNALサーバー内部エラーリクエストを再試行してください。継続する場合はサポートに連絡してください
503UNAVAILABLEサービスが一時的に利用できませんしばらく待ってから再試行してください
504DEADLINE_EXCEEDEDリクエストがタイムアウトしました入力サイズを減らすか、リクエストを再試行してください

エラー応答の例

{
  "error": {
    "code": 400,
    "message": "Invalid argument: contents",
    "status": "INVALID_ARGUMENT",
    "details": [
      {
        "@type": "type.googleapis.com/google.rpc.BadRequest",
        "fieldViolations": [
          {
            "field": "contents",
            "description": "contents is required"
          }
        ]
      }
    ]
  }
}