Gemini : Gemini API 概要 – Python, Dart (Flutter)
作成 : クラスキャット セールスインフォメーション
作成日時 : 05/02/2024
* 本ページは、ai.google.dev の以下のページを独自に翻訳して、適宜、補足説明したものです :
* サンプルコードの動作確認はしておりますが、必要な場合には適宜、追加改変しています。
* ご自由にリンクを張って頂いてかまいませんが、sales-info@classcat.com までご一報いただけると嬉しいです。
- 人工知能研究開発支援
- 人工知能研修サービス(経営者層向けオンサイト研修)
- テクニカルコンサルティングサービス
- 実証実験(プロトタイプ構築)
- アプリケーションへの実装
- 人工知能研修サービス
- PoC(概念実証)を失敗させないための支援
- お住まいの地域に関係なく Web ブラウザからご参加頂けます。事前登録 が必要ですのでご注意ください。
◆ お問合せ : 本件に関するお問い合わせ先は下記までお願いいたします。
- クラスキャット セールス・マーケティング本部 セールス・インフォメーション
- sales-info@classcat.com ; Website: www.classcat.com ; ClassCatJP
Gemini : Gemini API 概要 – Python, Dart (Flutter)
Gemini API は Google の最新生成モデルへのアクセスを与えます。API を通して利用可能な一般的な機能になじんだら、好きな言語用のチュートリアルを試して開発を始めましょう。
モデル
Gemini は Google により開発されたマルチモーダルな生成 AI モデルのシリーズです。Gemini モデルは、選択したモデル・バリエーションに依存して、プロンプトでテキストと画像を受け取り、テキスト応答を出力することができます。
詳細なモデル情報を得るには、Gemini モデル ページを参照してください。利用可能なすべてのモデルをリストアップするために list_models メソッドを、そして特定のモデルのメタデータを取得するために get_model メソッドを使用することもできます。
プロンプトデータと設計
特定の Gemini モデルは入力としてテキストデータとメディアファイルの両方を受け取ります。この機能はコンテンツ生成、データ分析、問題解決のための多くの追加の可能性を生み出します。使用しているモデルの一般的な入力トークンの制限を含む、考慮すべき幾つかの制限や要件があります。特定のモデルのトークン制限についての情報は、Gemini モデル をご覧ください。
Gemini API を使用するプロンプトはサイズ 20MB を超えることはできません。Gemini API は、プロンプトで使用するメディアファイルを一時的にストアする File API を提供しています、これは 20MB 制限を超えたプロンプトデータの提供を可能にします。File API とプロンプト用にサポートされるファイル形式の詳細については、メディアファイルを使用したプロンプティング をご覧ください。
プロンプトの設計とテキスト入力
効果的なプロンプトの作成、あるいはプロンプト・エンジニアリングは芸術と科学のコンビネーションです。プロンプティングにアプローチする方法のガイドについては プロンプト設計へのイントロダクション を、プロンプティングへの様々なアプローチについて学習するには プロンプト 101 ガイドをご覧ください。
コンテンツの生成
Gemini API は、使用しているモデル・バリエーションが何かに応じて、プロンプティングのためにテキストと画像データの両方を使用することを可能にします。例えば、gemini-pro モデルでテキストプロンプトを使用してテキストを生成し、gemini-pro-vision モデルにプロンプトを提供するのにテキストと画像データの両方を使用することができます。このセクションは各々の簡単なコードサンプルを提供します。パラメータのすべてをカバーする詳細なサンプルについては、generateContent API リファレンスを参照してください。
テキストと画像入力
ビジョン関連タスクを実行するために gemini-pro-vision モデルに画像と一緒にテキストプロンプトを送信することができます。例えば、画像のキャプション付けや画像の中に何があるか識別します。
⭐️ Note : You can’t send a text-only prompt to the gemini-pro-vision model. Use the gemini-pro model for text-only prompts.
次のコードサンプルはテキストと画像のプロンプトの単純な実装を示します :
Python
model = genai.GenerativeModel('gemini-pro-vision')
cookie_picture = [{
'mime_type': 'image/png',
'data': pathlib.Path('cookie.png').read_bytes()
}]
prompt = "Do these look store-bought or homemade?"
response = model.generate_content(
model="gemini-pro-vision",
content=[prompt, cookie_picture]
)
print(response.text)
Dart (Flutter)
final model = GenerativeModel(model: 'gemini-pro-vision', apiKey: apiKey);
final prompt = 'Do these look store-bought or homemade?';
final imageBytes = await File('cookie.png').readAsBytes();
final content = [
Content.multi([
TextPart(prompt),
DataPart('image/png', imageBytes),
])
];
final response = await model.generateContent(content);
print(response.text);
テキストのみの入力
Gemini API はテキスト-only 入力を処理することもできます。この機能はテキスト補完や要約のような自然言語処理 (NLP) タスクを実行することを可能にします。
次のコードサンプルはテキスト-only なプロンプトの単純な実装を示します :
Python
model = genai.GenerativeModel('gemini-pro-vision')
prompt = "Write a story about a magic backpack."
response = model.generate_content(prompt)
Dart (Flutter)
final model = GenerativeModel(model: 'gemini-pro', apiKey: apiKey);
final prompt = 'Write a story about a magic backpack.';
final content = [Content.text(prompt)];
final response = await model.generateContent(content);
print(response.text);
マルチターン会話 (チャット)
Gemini API を使用して、対話的なチャット・エクスペリエンスをユーザ向けに構築することができます。API のチャット機能の使用は、質問と応答の複数のラウンドの収集を可能にし、ユーザが答えに向かって徐々に進んだり、マルチパートの問題に役立てることができます。この機能は、チャットボット、対話的な家庭教師や顧客サポートのアシスタントのような、現在進行形のコミュニケーションを必要とするアプリケーションに対して理想的です。
次のコードサンプルはチャット相互作用の単純な実装を示します :
Python
model = genai.GenerativeModel('gemini-pro')
chat = model.start_chat(history=[])
response = chat.send_message(
"Pretend you\'re a snowman and stay in character for each response.")
print(response.text)
response = chat.send_message(
"What\'s your favorite season of the year?")
print(response.text)
Dart (Flutter)
final model = GenerativeModel(model: 'gemini-pro', apiKey: apiKey);
final chat = model.startChat(history: [
Content.text(
"Pretend you're a snowman and stay in character for each response."),
Content.model([TextPart("Hello! It's cold! Isn't that great?")]),
]);
final content = Content.text("What's your favorite season of the year?");
final response = await chat.sendMessage(content);
print(response.text);
ストリーミングされた応答
Gemini API は生成 AI モデルから、データストリームとして応答を受け取る追加の方法を提供しています。ストリーミングされた応答は、データの増分のピースを (それがモデルにより生成されたとき) アプリケーションに送り返します。この機能はユーザリクエストに素早く応答して進捗を示すことを可能にし、よりインタラクティブなエクスペリエンスを作成することができます。
ストリーミングされた応答は自由形式のプロンプティングと Gemini モデルとのチャットに対するオプションです。次のコードサンプルはプロンプトに対してストリーミングされた応答を要求する方法を示します :
Python
prompt = "Write a story about a magic backpack."
response = genai.stream_generate_content(
model="models/gemini-pro",
prompt=prompt
)
Dart (Flutter)
final model = GenerativeModel(model: 'gemini-pro', apiKey: apiKey);
final prompt = 'Write a story about a magic backpack.';
final content = [Content.text(prompt)];
final response = model.generateContentStream(content);
await for (final chunk in response) {
print(chunk.text);
}
JSON 形式の応答
アプリケーションに応じて、プロンプトへの応答が構造化データ形式で返されることを望む場合があるでしょう、特にプログラミング・インターフェイスへの入力として応答を使用している場合です。Gemini API は JSON 形式での応答を要求する設定パラメータを提供しています。
⭐️ Note : This response configuration option is supported only with the Gemini 1.5 Pro model.
response_mime_type 設定オプションを application/json に設定して JSON 形式仕様をリクエストの本体に含めることでこの出力機能を使用できます。次のコードサンプルはプロンプトに対してどのように JSON 応答を要求するかを示します :
cURL
curl https://generativelanguage.googleapis.com/v1beta/models/gemini-1.5-pro-latest:generateContent?key=$API_KEY \
-H 'Content-Type: application/json' \
-X POST \
-d '{ "contents":[{
"parts":[{"text": "List 5 popular cookie recipes using this JSON schema: \{ \"type\": \"object\", \"properties\": \{ \"recipe_name\": \{ \"type\": \"string\" \},\}\}"}] }],
"generationConfig": {
"response_mime_type": "application/json",
} }'
埋め込み
Gemini API の埋め込みサービスは、単語、フレーズ、センテンスに対する最先端の埋め込みを生成します。そして生成された埋め込みは、セマンティック探索、テキスト分類、クラスタリング等のような NLP タスクに対して使用できます。埋め込みが何であるか、そして埋め込みサービスについての主要なユースケースを学習するには 埋め込みガイド をご覧ください。
以上