Google Colab で Gemini API を試す
「Google Colab」で「Gemini API」を試したので、まとめました。
1. Gemini API
「Gemini API」は、「Google DeepMind」が開発したマルチモーダル大規模言語モデル「Gemini」を利用するためのAPIです。
2. Gemini API の利用料金
「Gemini API」の利用料金は、以下を参照。
3. Gemini API の準備
Colabでの「Gemini API」の準備手順は、次のとおりです。
(1) パッケージのインストール。
# パッケージのインストール
!pip install -q -U google-generativeai
(2) 「Google AI Studio」からAPIキーを取得し、Colabのシークレットマネージャーに登録。
キーは「GOOGLE_API_KEY」とします。
import google.generativeai as genai
from google.colab import userdata
# 環境変数の準備(左端の鍵アイコンでGOOGLE_API_KEYを設定)
genai.configure(api_key=userdata.get("GOOGLE_API_KEY"))
(3) パッケージのインポート。
Markdown出力のユーティリティ関数を準備してます。
import pathlib
import textwrap
from IPython.display import display
from IPython.display import Markdown
# Markdown出力ヘルパーの準備
def to_markdown(text):
text = text.replace("•", " *")
return Markdown(textwrap.indent(text, "> ", predicate=lambda _: True))
4. モデル一覧の表示
モデル一覧の表示手順は、次のとおりです。
# モデル一覧の表示
for m in genai.list_models():
if "generateContent" in m.supported_generation_methods:
print(m.name)
models/gemini-1.0-pro
models/gemini-1.0-pro-001
models/gemini-1.0-pro-latest
models/gemini-1.0-pro-vision-latest
models/gemini-pro
models/gemini-pro-vision
5. テキスト生成の実行
5-1. テキスト生成
テキスト生成の実行手順は、次のとおりです。
(1) モデルの準備。
# モデルの準備
model = genai.GenerativeModel("models/gemini-pro")
(2) 推論の実行。
# 推論の実行
response = model.generate_content("日本一高い山は?")
to_markdown(response.text)
5-2. ストリーミング
ストリーミングの実行手順は、次のとおりです。
# 推論の実行 (ストリーミングあり)
response = model.generate_content("富士山を説明してください。", stream=True)
# チャンク出力
for chunk in response:
print(chunk.text)
print("_"*4)
5-3. チャット
「チャット」を使うことで、マルチターン会話が可能になります。
(1) チャットの準備。
# チャットの準備
chat = model.start_chat(history=[])
(2) 質問応答1
# 質問応答 (1ターン目)
response = chat.send_message("日本一高い山は?")
to_markdown(response.text)
(3) 質問応答2
# 質問応答 (2ターン目)
response = chat.send_message("その山は何県にある?")
to_markdown(response.text)
(4) 会話履歴の確認。
# 会話履歴の確認
for message in chat.history:
display(to_markdown(f'**{message.role}**: {message.parts[0].text}'))
6. Visionの実行
ColabでのVisionの実行手順は、次のとおりです。
6-1. Visionの実行 (画像入力)
(1) 左端のフォルダアイコンから、画像をColabにアップロード。
・image.jpg
画像の制限は、次のとおりです。
(2) 画像の読み込み。
import PIL.Image
# 画像の読み込み
image = PIL.Image.open("image.jpg")
image
(3) モデルの準備。
# モデルの準備
model = genai.GenerativeModel("models/gemini-pro-vision")
(4) 推論の実行。
画像のみ入力しています。
# 推論の実行 (画像のみ入力)
response = model.generate_content(image)
to_markdown(response.text)
6-2. Visionの実行 (テキスト・画像入力)
(1) 推論の実行。
テキストと画像を入力しています。
# 推論の実行 (テキストと画像を入力)
response = model.generate_content([
"これは何の画像ですか?",
image
])
to_markdown(response.text)
7. 生成パラメータ
GenerativeModel()、model.generate_content()、chat.send_message()で、生成パラメータとセーフティセッティングを指定できます。
(1) 推論の実行 (生成パラメータあり)
# モデルの準備
model = genai.GenerativeModel("gemini-pro")
# 推論の実行
response = model.generate_content(
"魔法のアンパンの話をしてください。",
generation_config=genai.types.GenerationConfig(
candidate_count=1, # 応答数
stop_sequences=["x"], # 停止シーケンス
max_output_tokens=400, # 最大トークン数
temperature=1.0 # 温度
)
)
to_markdown(response.text)
8. セーフティセッティング
(1) 推論の実行 (セーフティセッティングなし)。
ユーザー入力が不適切と判断された場合、ブロックされます。
# モデルの準備
model = genai.GenerativeModel("models/gemini-pro")
# 推論の実行 (セーフティセッティングなし)
response = model.generate_content("お前は愚か者だ")
(2) prompt_feedbackでブロックされた原因を確認。
デフォルトでMEDIUMとHIGHがブロックされます。
# フィードバックの確認
response.prompt_feedback
「カテゴリ」 (category) は次の4つです。
「確率」 (probability) は次の4つです。
(3) セーフティセッティング付きの質問応答
「block_none」を指定することで、応答が返される場合があります。
# 推論の実行 (セーフティセッティングあり)
response = model.generate_content(
"お前は愚か者だ",
safety_settings={"HARASSMENT":"block_none"}
)
to_markdown(response.text)
「しきい値」 (threshold) は、次の4つです。
9. トークン数
# トークン数
print(model.count_tokens("Hello World!"))
関連
この記事が気に入ったらサポートをしてみませんか?