初めてのgoogle Gemini(履歴付きCHAT)
前回の記事でgoogle Gemini Proを使って、簡単なチャットを作ったという記事を書きましたが、これは正しくは質問応答を繰り返すプログラムでした。記事の中で会話履歴を保持しているか微妙だとコメントしていたのですが、本来のCHAT用関数がgoogleで用意されており、これを使うと普通に履歴付きの会話ができるようなので、早速試してみました。
準備
Gemini Pro APIを使うための準備は前回記事を参照してください。
CHATの実装とお試し結果
実装
それでは、早速コード全体です。前回の質問応答プログラムとの違いは、
モデル gemini-proを利用して、chat = model.start_chat(history=[])を始めるだけです。
ユーザー入力 promptを逐次chat.send_messageすることで、会話が成立します。会話が終了したら、確認のためにhistoryの中身を書き出しています。
import os
import google.generativeai as genai
GEMINI_API_KEY=os.getenv('GEMINI_API_KEY')
genai.configure(api_key=GEMINI_API_KEY)
print("サポートしているモデル")
for m in genai.list_models():
if 'generateContent' in m.supported_generation_methods:
print(m.name)
model = genai.GenerativeModel('gemini-pro')
# chat model
chat = model.start_chat(history=[])
while True:
prompt=input('なにか話してください: ')
if prompt == 'exit':
break
response = chat.send_message(prompt)
print(response.text)
print(chat.history)
結果 会話例
こんな感じで、天気予報を題材に会話を繰り返してみましたが、質問が履歴を前提として省略されているにも関わらず、ちゃんと会話になっていました。また、最後に会話の要約を試みましたが、これもまあまあでした。
履歴の確認
先程の会話履歴の内容の一部です。
こんな構造みたいですね。userとmodelのロールの会話テキストが順番に入っています。
履歴の整形
chat.historyから必要な情報を抜き出して、表示します。
これなら、保存も二次利用も簡単にできそうですね。
もちろん、二次利用するときはファクトチェックは大切ですよ。
#chat history
for message in chat.history:
result = f'{message.role} : {message.parts[0].text}'
print(result)
まとめ
google Gemini ProのCHAT機能を実装して見ました。
CHAT機能には、最初から履歴機能が増備されているため、langchainなどのメモリを利用する非通用はありませんでした。
履歴の形式を確認し、読みやすいように整形して出力しました。
お試しはできたので、実用性を高めるためには、以下のような対応が必要になるかもしれません。機会があれば、紹介します。
履歴の外部ディスクへの保存と書き戻し
履歴の扱える限界も要検証です。ロール設定(キャラ付け)の組み込み
システムプロンプトなどの活用方法を考えないとですね。エラーハンドリングを追加する。
ユーザーが入力したメッセージを検証する。
チャットボットの応答をより自然にする。
チャットボットの学習機能を追加する。
また、他のLLM(GPT4など)と自動会話してもらってもいいかもしれません。
おまけ タイトル画像の説明 by GPT-4V
このカラフルなイラストでは、一人の若い男性と小さなロボットが描かれています。男性は驚きと喜びを表しているように見え、青いシャツを着ていて、口をあけて笑っています。ロボットは二つの大きな青い目を持ち、愛らしく賢そうな表情をしています。それらはコミュニケーションを取り合っているかのようで、背景にはチャットバブルが表示されています。全体的にフレンドリーでテクノロジーをテーマにしたデザインが印象的です。
この記事が気に入ったらサポートをしてみませんか?