4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

はじめに

ある日、なんとなく生成AI関連のAPIを使ってみたくなったので、とりあえず無料で使えそうなGemini APIを利用してみることにしました。(ChatGPT APIも初回は数ドル分無料で使えるらしいですが、はじめに5ドル以上支払わなければいけないらしくやめました。)
今回はPythonを使ってそのAPIを簡単に動かしてみることにしました。
また、今回はGeminiのモデルとしてGemini-1.5-flashを使用しました。

始め方

1,APIキーの取得

上記のサイトに移動したらGet API keyAPIキーを作成と進んでください。これでキーの取得は完了です。キーは何度でも確認することはできますが、いちいちサイトを訪れるのも面倒なのでどこかにメモしておきましょう。
カード情報などを入力していない限り、使いすぎで請求がくるなんてことはないです。(多分)

2,PythonにGemini API用のPython SDKをダウンロードする

Gemini API用のPython SDKは、google-generativeaiパッケージに含まれています。ターミナルで以下のコードを入力してください。

開発環境にPython 3.9以降がインストールされている必要があります。

pip install -q -U google-generativeai

リクエストを送信する

まずはじめにgoogle.generativeaiモジュールをimportします。ただ、モジュール名が長いので、公式でもgenaiと縮めて用いることが推奨されているようです。
次に、先ほど取得したAPIキーを下のコードの「"YOUR_API_KEY"」の部分に入力してください。
modelの部分については、前述したように今回はgemini-1.5-flashにしたのでそれを記述します。

下のコードはGemini APIを利用するにあたって最低限必要なコードです。

import google.generativeai as genai

genai.configure(api_key="YOUR_API_KEY")
model = genai.GenerativeModel("gemini-1.5-flash")

では、generateContextメソッドを使用して簡単なリクエストを送信してみます。以下のコードを実行してみましょう。リクエストの本文は英語でも日本語でも可です。

import google.generativeai as genai

genai.configure(api_key="YOUR_API_KEY")
model = genai.GenerativeModel("gemini-1.5-flash")
response = model.generate_content("簡単に自己紹介をして。")
print(response.text)

実行すると、多少の差異はあるものの、大抵は「私はGoogleによって訓練された、大規模言語モデルです。」のような返答が来ると思います。

返答のスタイルを指定する

モデルに送信するプロンプトは、モデルがレスポンスを生成する方法を制御するパラメータが含まれており、それらはGenerationConfigを使用して構成することができます。
ただ、このオプションはモデルによって異なる場合があるそうです。
公式では以下のコードを用いて紹介しています。

import google.generativeai as genai

genai.configure(api_key="YOUR_API_KEY")
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)

コードを見ていただけると分かりますが、GenerationConfigmodel.generate_content()内に記述します。では、中身についてそれぞれ解説していきます。

candidateCountには、返される生成された回答の数を指定します。現在、この値は 1 にのみ設定でき、指定しない場合はデフォルトで1になるので意識しなくても大丈夫だと思います。

maxOutputTokensは、候補に含めるトークンの最大数を設定します。簡単にいえば「返答の長さ」です。

stopSequencesには、出力生成を停止する一連の文字列(最大 5 つ)を指定します。指定すると、stop_sequence が最初に出現した時点で API が停止します。
maxOutputTokensで長さを指定すると文章が中途半端なところで終わりがちなので例えば「"."」や「"。"」とすることで出力中途半端にならないようにできます。

temperatureは出力のランダム性を制御します。より創造的な返答を生成する場合は大きい値を、より確定的なレスポンスを生成する場合は小さい値を使用します。値の範囲は0.0から2.0です。

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

今紹介したmax_output_tokenstemperatureなどの設定はモデルを初期化するときに指定し、プログラム内でその設定値がデフォルトの値となります。
しかし、generateContentによってそれぞれの返答に対してその設定をすることが可能になるということです。

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

複数回にわたる質問と回答を収集することもできます。これにより、回答に向けて段階的に進んだり、複数の部分からなる問題についてサポートを受けることができます。
公式では以下のコードを用いて紹介しています。

import google.generativeai as genai

genai.configure(api_key="YOUR_API_KEY")
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)

model.start_chat()メソッドを使って、チャットを開始します。historyにこれまでの会話履歴がリスト形式で渡され、この履歴はモデルに過去の会話の文脈を理解させるために使用されます。
{"role": "user", "parts": "Hello"}では、はじめに「私たち」がモデルに対し「Hello.」と言ったことを、
{"role": "model", "parts": "Great to meet you. What would you like to know?"}では、それに対し「モデル」が私たちに対し「Great to meet you. What would you like to know?」と言ったことを表します。

そして、1つ目のresponseには「I have 2 dogs in my house.」に対する返答を、2つ目には「How many paws are in my house?」に対する返答を記録し、それぞれを出力します。

おわりに

今回の記事ではPythonを使ってGemini APIを簡単に動かしてみました。しかし、このままでは普通にGeminiを使うのと何ら変わりはありません(むしろこちらの方がかなり面倒)。もっとスキルを高めてAPIならではのことにも挑戦していきたいと思います、
では、今回の記事はこれで終わりです。最後までお読みいただきありがとうございました。

参考

4
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
4
2

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?