Gemini API は、テキスト、画像、動画、音声を入力として指定すると、テキスト出力を生成できます。
このガイドでは、generateContent
メソッドと streamGenerateContent
メソッドを使用してテキストを生成する方法について説明します。Gemini のビジョン機能と音声機能の使用方法については、Visionと音声のガイドをご覧ください。
テキストのみの入力からテキストを生成する
Gemini API を使用してテキストを生成する最も簡単な方法は、次の例に示すように、モデルにテキストのみの入力を 1 つ提供することです。
from google import genai
client = genai.Client(api_key="GEMINI_API_KEY")
response = client.models.generate_content(
model="gemini-2.0-flash",
contents=["How does AI work?"])
print(response.text)
この場合、プロンプト(「AI の仕組みを説明してください」)には、出力の例、システムの手順、フォーマット情報は含まれません。これはゼロショット アプローチです。ユースケースによっては、ワンショットまたは少数ショット プロンプトを使用すると、ユーザーの期待に沿った出力が生成される場合があります。場合によっては、モデルがタスクを理解したり、特定のガイドラインに従ったりできるように、システム指示を指定することもできます。
テキストと画像の入力からテキストを生成する
Gemini API は、テキスト ファイルとメディア ファイルを組み合わせたマルチモーダル入力をサポートしています。次の例は、テキストと画像の入力からテキストを生成する方法を示しています。
from PIL import Image
from google import genai
client = genai.Client(api_key="GEMINI_API_KEY")
image = Image.open("/path/to/organ.png")
response = client.models.generate_content(
model="gemini-2.0-flash",
contents=[image, "Tell me about this instrument"])
print(response.text)
テキスト ストリームを生成する
デフォルトでは、モデルはテキスト生成プロセス全体が完了した後にレスポンスを返します。結果全体を待たずに、ストリーミングを使用して部分的な結果を処理することで、インタラクションを高速化できます。
次の例は、streamGenerateContent
メソッドを使用してストリーミングを実装し、テキストのみの入力プロンプトからテキストを生成する方法を示しています。
from google import genai
client = genai.Client(api_key="GEMINI_API_KEY")
response = client.models.generate_content_stream(
model="gemini-2.0-flash",
contents=["Explain how AI works"])
for chunk in response:
print(chunk.text, end="")
チャット会話を作成する
Gemini SDK を使用すると、複数のラウンドの質問と回答を収集できます。これにより、ユーザーは回答に段階的に近づいたり、複数の問題についてサポートを受けたりできます。この SDK 機能は、会話履歴を追跡するためのインターフェースを提供しますが、バックグラウンドでは同じ generateContent
メソッドを使用してレスポンスを作成します。
次のコード例は、基本的なチャットの実装を示しています。
from google import genai
client = genai.Client(api_key="GEMINI_API_KEY")
chat = client.chats.create(model="gemini-2.0-flash")
response = chat.send_message("I have 2 dogs in my house.")
print(response.text)
response = chat.send_message("How many paws are in my house?")
print(response.text)
for message in chat._curated_history:
print(f'role - ', message.role, end=": ")
print(message.parts[0].text)
次の例に示すように、チャットとストリーミングを併用することもできます。
from google import genai
client = genai.Client(api_key="GEMINI_API_KEY")
chat = client.chats.create(model="gemini-2.0-flash")
response = chat.send_message_stream("I have 2 dogs in my house.")
for chunk in response:
print(chunk.text, end="")
response = chat.send_message_stream("How many paws are in my house?")
for chunk in response:
print(chunk.text, end="")
for message in chat._curated_history:
print(f'role - ', message.role, end=": ")
print(message.parts[0].text)
テキスト生成を構成する
モデルに送信するすべてのプロンプトには、モデルがレスポンスを生成する方法を制御するパラメータが含まれています。これらのパラメータは GenerationConfig
を使用して構成できます。パラメータを構成しない場合、モデルはデフォルトのオプションを使用します。このオプションはモデルによって異なる場合があります。
次の例は、使用可能ないくつかのオプションを構成する方法を示しています。
from google import genai
from google.genai import types
client = genai.Client(api_key="GEMINI_API_KEY")
response = client.models.generate_content(
model="gemini-2.0-flash",
contents=["Explain how AI works"],
config=types.GenerateContentConfig(
max_output_tokens=500,
temperature=0.1
)
)
print(response.text)
システム指示を追加する
システム指示を使用すると、特定のニーズやユースケースに基づいてモデルの動作を制御できます。
モデルにシステム指示を指定すると、タスクを理解するための追加のコンテキストがモデルに提供され、よりカスタマイズされたレスポンスが生成されます。また、モデルとユーザーのインタラクション全体で特定のガイドラインに準拠することができます。エンドユーザーが提供するプロンプトとは別に、システム指示を設定することで、プロダクト レベルの動作を指定することもできます。
システム指示は、モデルを初期化するときに設定できます。
sys_instruct="You are a cat. Your name is Neko."
client = genai.Client(api_key="GEMINI_API_KEY")
response = client.models.generate_content(
model="gemini-2.0-flash",
config=types.GenerateContentConfig(
system_instruction=sys_instruct),
contents=["your prompt here"]
)
その後、通常どおりモデルにリクエストを送信できます。
システム指示の使用に関するインタラクティブなエンドツーエンドの例については、システム指示の Colab をご覧ください。
次のステップ
Gemini API の基本を理解したので、次のことを試すことができます。