Gemini API を使用してテキストを生成する

<ph type="x-smartling-placeholder"></ph>

Gemini API は、次のようなさまざまなタイプの入力からテキスト出力を生成できます。 テキスト、画像、動画、音声などですテキスト生成は、さまざまな 次のようなアプリケーションがあります。

  • 創作文
  • メディア アセットの説明または解釈
  • テキスト補完
  • 自由形式のテキストの要約
  • 言語間の翻訳
  • chatbot
  • 独自のユースケース

このガイドでは、Terraform を使用してテキストを生成する generateContentstreamGenerateContent 任意のサーバーサイド SDK を使用できます。焦点となるのは、Terraform からのテキスト出力に テキストのみ、テキストと画像の入力です。マルチモーダル プロンプトについて詳しくは、 動画と音声ファイルの場合は、 メディア ファイルを使用したプロンプト

始める前に: プロジェクトと API キーを設定する

Gemini API を呼び出す前に、プロジェクトをセットアップして、 取得します。

テキストのみの入力からテキストを生成する

Gemini API を使用してテキストを生成する最も簡単な方法は、モデルに 単一のテキストのみの入力を使用します。

model = genai.GenerativeModel("gemini-1.5-flash")
response = model.generate_content("Write a story about a magic backpack.")
print(response.text)

この場合、プロンプト(「魔法のバックパックの物語を書いてください」)は機能しません。 出力例、システム指示、フォーマット情報を含めてください。 ゼロショットである アプローチですユースケースによっては ワンショットまたは 少数ショット プロンプト ユーザーの期待に沿った出力が生成される可能性があります。場合によっては 「新規顧客の獲得」目標を モデルをサポートするシステム指示 タスクを理解したり、特定のガイドラインを守ったりできます。

テキストと画像の入力からテキストを生成する

Gemini API は、テキストとメディア ファイルを組み合わせたマルチモーダル入力をサポートしています。 次の例は、テキストと画像の入力からテキストを生成する方法を示しています。

import PIL.Image

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

テキストのみのプロンプトと同様に、マルチモーダル プロンプトにもさまざまなアプローチがあります。 絞り込みます。この例からの出力に応じて、 プロンプトに手順を追加するか、指示を具体的にします。詳しくは ファイル プロンプト戦略をご覧ください。

テキスト ストリームを生成する

デフォルトでは、モデルはテキスト全体が完成するとレスポンスを返します。 プロセスです。やり取りを迅速化するために、 代わりにストリーミングを使用して部分的な結果を処理できます。

次の例は、Cloud Storage バケットを使用してストリーミングを実装する方法を示しています。 streamGenerateContent メソッドを使用して、 テキストのみの入力プロンプトからテキストを生成する。

model = genai.GenerativeModel("gemini-1.5-flash")
response = model.generate_content("Write a story about a magic backpack.", stream=True)
for chunk in response:
    print(chunk.text)
    print("_" * 80)

インタラクティブなチャットを作成する

Gemini API を使用して、ユーザー向けのインタラクティブなチャット エクスペリエンスを構築できます。 API のチャット機能を使用すると、複数の質問をまとめて回答できる ユーザーは少しずつ前進してサポートを受けられます。 マルチパート問題ですこの機能は、アクセスを制御する chatbot、インタラクティブ チューター、カスタマー サポートなどの継続的なコミュニケーション 支援します

次のコードサンプルは、基本的なチャットの実装を示しています。

model = genai.GenerativeModel("gemini-1.5-flash")
chat = model.start_chat(
    history=[
        {"role": "user", "parts": "Hello"},
        {"role": "model", "parts": "Great to meet you. What would you like to know?"},
    ]
)
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)

テキスト生成を構成する

モデルに送信するすべてのプロンプトに パラメータ モデルがレスポンスを生成する方法を制御します。次を使用: GenerationConfig~ パラメータを構成します。パラメータを構成しない場合は、 はデフォルトのオプションを使用します。オプションはモデルによって異なります。

次の例は、使用可能なオプションをいくつか構成する方法を示しています。

model = genai.GenerativeModel("gemini-1.5-flash")
response = model.generate_content(
    "Tell me a story about a magic backpack.",
    generation_config=genai.types.GenerationConfig(
        # Only one candidate for now.
        candidate_count=1,
        stop_sequences=["x"],
        max_output_tokens=20,
        temperature=1.0,
    ),
)

print(response.text)

candidateCount には、生成されるレスポンスの数を指定します。 現在、この値は 1 にのみ設定できます。設定しない場合、デフォルトで 1 になります。

stopSequences には、次の文字シーケンスのセット(最大 5 個)を指定します。 出力の生成を停止します。指定すると、API は最初の表示で停止します stop_sequence のエンティティ。停止シーケンスは レスポンスが返されます。

maxOutputTokens は、候補に含めるトークンの最大数を設定します。

temperature は、出力のランダム性を制御します。高い値を使用して 値を小さくすると、より決定的なレスポンスになります。値 範囲は [0.0, 2.0] です。

generateContent への呼び出しを個別に構成することもできます。

response = model.generate_content(
    'Write a story about a magic backpack.',
    generation_config = genai.GenerationConfig(
        max_output_tokens=1000,
        temperature=0.1,
    )
)

個々の呼び出しで設定された値は、モデル コンストラクタの値をオーバーライドします。

次のステップ

このガイドでは、Terraform を使用して generateContentstreamGenerateContent を使用して、テキストのみの入力と、テキストと画像の入力からテキスト出力を生成します。関連資料 Gemini API を使用したテキストの生成については、次のリソースをご覧ください。

  • メディア ファイルを使用したプロンプト: Gemini API は、テキスト、画像、音声、動画データを使用したプロンプトをサポートしています。 マルチモーダル プロンプトと呼ばれます。
  • システム指示: システム 使用することで、特定の状況に基づいてモデルの動作を サポートします。
  • 安全に関するガイダンス: 場合によって生成 AI モデルは、不正確な出力など、予期しない出力を生成する 偏見がある、または不適切であるといったことを判断できます。事後処理と人間による評価が、 そのような出力による害が及ぶリスクを制限します。