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

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

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

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

このガイドでは、Terraform を使用してテキストを生成する generateContentstreamGenerateContent APIテキストのみの入力と、テキストと画像の入力からのテキスト出力に焦点を当てています。宛先 動画ファイルと音声ファイルを使用したマルチモーダル プロンプトの詳細については、以下をご覧ください。 ファイル プロンプト戦略

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

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

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

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

// Make sure to include these imports:
// import { GoogleGenerativeAI } from "@google/generative-ai";
const genAI = new GoogleGenerativeAI(process.env.API_KEY);
const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash" });

const prompt = "Write a story about a magic backpack.";

const result = await model.generateContent(prompt);
console.log(result.response.text());

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

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

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

// Make sure to include these imports:
// import { GoogleGenerativeAI } from "@google/generative-ai";
const genAI = new GoogleGenerativeAI(process.env.API_KEY);
const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash" });

function fileToGenerativePart(path, mimeType) {
  return {
    inlineData: {
      data: Buffer.from(fs.readFileSync(path)).toString("base64"),
      mimeType,
    },
  };
}

const prompt = "Describe how this product might be manufactured.";
// Note: The only accepted mime types are some image types, image/*.
const imagePart = fileToGenerativePart(
  `${mediaPath}/jetpack.jpg`,
  "image/jpeg",
);

const result = await model.generateContent([prompt, imagePart]);
console.log(result.response.text());

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

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

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

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

// Make sure to include these imports:
// import { GoogleGenerativeAI } from "@google/generative-ai";
const genAI = new GoogleGenerativeAI(process.env.API_KEY);
const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash" });

const prompt = "Write a story about a magic backpack.";

const result = await model.generateContentStream(prompt);

// Print text as it comes in.
for await (const chunk of result.stream) {
  const chunkText = chunk.text();
  process.stdout.write(chunkText);
}

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

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

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

// Make sure to include these imports:
// import { GoogleGenerativeAI } from "@google/generative-ai";
const genAI = new GoogleGenerativeAI(process.env.API_KEY);
const model = genAI.getGenerativeModel({ model: "gemini-1.5-flash" });
const chat = model.startChat({
  history: [
    {
      role: "user",
      parts: [{ text: "Hello" }],
    },
    {
      role: "model",
      parts: [{ text: "Great to meet you. What would you like to know?" }],
    },
  ],
});
let result = await chat.sendMessage("I have 2 dogs in my house.");
console.log(result.response.text());
result = await chat.sendMessage("How many paws are in my house?");
console.log(result.response.text());

テキスト生成を構成する

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

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

// Make sure to include these imports:
// import { GoogleGenerativeAI } from "@google/generative-ai";
const genAI = new GoogleGenerativeAI(process.env.API_KEY);
const model = genAI.getGenerativeModel({
  model: "gemini-1.5-flash",
  generationConfig: {
    candidateCount: 1,
    stopSequences: ["x"],
    maxOutputTokens: 20,
    temperature: 1.0,
  },
});

const result = await model.generateContent(
  "Tell me a story about a magic backpack.",
);
console.log(result.response.text());

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

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

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

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

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

const result = await model.generateContent({
  contents: [
    {
      role: 'user',
      parts: [
        {
          text: prompt,
        }
      ],
    }
  ],
  generationConfig: {
    maxOutputTokens: 1000,
    temperature: 0.1,
  },
});
console.log(result.response.text());

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

次のステップ

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

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