top of page

Google Colabで、Google Gemini(AI)のプログラミング解説、初心者用(#6)・マルチターン

更新日:2月24日

Google Geminiにチャット(マルチターン)を行わせよう

このGoogle Geminiのプログラムの説明を、私のnoteで紹介したところ、多くの方のアクセスを頂きました。ありがとうございます。これからも、少しづつ私のプログラミングの体験を書いていきたいと思います。


さて、今回は、Google Geminiのマルチターンと呼ばれる、いわゆるチャットの機能を使ってみようと思います。


なお、このマルチターンは、Google Geminiで指定できるAIモデルのうち、"gemini-pro"でしか使えません。つまり、画像の分析などに使える、"gemini-pro-vsion"モデルでは使えない機能になります。


また、チャットといっても、Webを使ったプログラミングではないので、出力は一方的ですしかし、出力は、以前の分析よりも、会話形式になっていて、以前のものよりも長文になっている点が違いになります。


いつもの初期設定から、スタート

では、Google Colabを使って、いつものGoogle Geminiの初期設定からスタートしましょう。


Google Colabのテキスト欄を開けて、

# 初期設定

Gemini利用の

* SDKの導入
* パッケージのインストール
* API KEYの導入
を行います。

と入力。

次に、コード欄を開けて、

!pip install -q -U google-generativeai

import pathlib
import textwrap

import google.generativeai as genai

from IPython.display import display
from IPython.display import Markdown


def to_markdown(text):
  text = text.replace('•', '  *')
  return Markdown(textwrap.indent(text, '> ', predicate=lambda _: True))

  # Used to securely store your API key
from google.colab import userdata

# Or use `os.getenv('GOOGLE_API_KEY')` to fetch an environment variable.
GOOGLE_API_KEY=userdata.get('GOOGLE_API_KEY')

genai.configure(api_key=GOOGLE_API_KEY)

と入力します。ここまでは、いつもと同じです。


マルチターン会話のプログラミングを書いてみよう

いよいよ、マルチターンの会話のプログラムを書いてみましょう。

テキスト欄を開けて、

### マルチターン会話

`genai.ChatSession` クラスは多くのユースケースを扱うことができますが、いくつかの仮定があります。あなたのユースケースがこのチャット実装に当てはまらない場合、 `genai.ChatSession` は `GenerativeModel.generate_content` のラッパーに過ぎないことを覚えておくと良いでしょう。単一のリクエストに加えて、複数ターンの会話を扱うことができます。

個々のメッセージは、前のセクションで見たように `glm.Content` オブジェクトまたは互換性のある辞書です。辞書として、メッセージは `role` と `parts` のキーを必要とする。会話における `role` はプロンプトを提供する `user` またはレスポンスを提供する `model` のいずれかである。

Glm.Content` オブジェクトのリストを渡すと、マルチターンチャットとして扱われる:

と入力しておきましょう。

次に、コード欄を開けて、

model = genai.GenerativeModel('gemini-pro')

messages = [
    {'role':'user',
     'parts': ["幼い子供にコンピューターの仕組みを簡単に説明して。"]}
]
response = model.generate_content(messages)

to_markdown(response.text)

と入力しましょう。


マルチターン会話では、前の指定に続いて、追加の質問ができる!

ここからが、今回の重要な部分です。マルチターンでは、前の分析に指定した条件に、追加いの会話(質問)を行うことが可能です。その部分をプログラミングしてみましょう。


テキスト欄を開けて、

会話を続けるには、応答と別のメッセージを追加します。

注:複数回にわたる会話では、リクエストごとに会話履歴全体を送信する必要があります。APIはステートレスです。

と入力。ここで出てくるステートレスとは、前の入力・出力を覚えていない状態です。今回のマルチターンでは、前回の状況を覚えているので、ステートフルと呼んだりします。


次にコード欄を開けて、

messages.append({'role':'model',
                 'parts':[response.text]})

messages.append({'role':'user',
                 'parts':["では、高校生にもっと詳しく説明するのはどうだろう?"]})

response = model.generate_content(messages)

to_markdown(response.text)

と、入力します。これで、今回のプログラミングは終了です。


Google Geminiのマルチターンの実行

では、いつものように、コード欄の左にある「三角」マークを、上から順番に実行していきましょう。

私の実行イメージは、以下のようになりました。


Google Geminiのマルチターン出力例
Google Geminiのマルチターン出力例

マルチターンでない実行は、「Google Colabで、Google Gemini(AI)のプログラミング解説、初心者用(#2)」で作成しました。この時の出力は、前の分析は、次の分析に関係泣くないっています。このマルチターンでは、質問を続けて行うことが可能になっています。


なんか、ここまで来ると、ようやく生成系AIを使いこなしているように思えるのは、私だけですかね。😆

閲覧数:312回0件のコメント

Comments


bottom of page