【Gemini APIでチャットボット作成】#4
こんにちは!
エル・フィールドでエンジニアとして働いているT.Hと申します。
前回は、Gemini APIと連携したチャットボットの実装を行いました。
最終回となる今回は、より実用的なチャットボットにするためのチューニング方法についてご紹介します!
■連載構成
・第1回:アプリケーションの概要
・第2回:環境構築
・第3回:アプリケーションの実装
・第4回:Gemini APIのチューニング
今回やること
本記事では、Gemini APIのチューニング方法についてご紹介します。
Gemini APIでは、設定を変更することで回答の内容や長さを調整できます。
今回は、以下の2つのパラメータを使って、回答がどのように変化するのかを確認していきます。
- Temperature(回答の創造性)
- Max tokens(回答の長さ)
実際に出力結果を比較しながら、パラメータによる違いを見ていきましょう!
APIパラメータとは
Gemini APIでは、回答の特徴を調整するために「パラメータ」を設定できます。
今回は、代表的な以下の2つをご紹介します。
① Temperature
Temperatureは、回答の創造性を調整するパラメータです。
・数値が低い(例:0.1)
→ 回答が安定し、事実に基づいた内容になりやすい
・数値が高い(例:1.0)
→ 表現の幅が広がり、多様な回答になりやすい
事実を重視する場合は低め、アイデアを出したい場合は高めに設定するのがおすすめです。
②Max tokens
Max tokensは、AIが生成する回答の最大文字量を制御するパラメータです。
・値が小さい(例:300)
→ 回答が短くなる
・値が大きい(例:1000)
→ より詳しい回答になる
要点だけを返したい場合は小さく、詳しい説明を求める場合は大きく設定すると効果的です。
Temperatureの設定方法と出力例
Temperatureを変更する場合は、generation_configに設定を追加します。
mychatbot/views.py
※赤字箇所を修正・変更
| response = model.generate_content( user_input, generation_config={“temperature”: 0.8} ) |
今回は、Temperatureを0.1と1.0に設定して比較してみます。
質問は、「大谷選手はMLB史上最高の選手でしょうか」としました。
■0.1の出力例
※手動で改行を入れています
| 大谷翔平選手がMLB史上最高の選手かどうかは、非常に複雑で議論の余地のある質問です。明確な答えはありません。 彼の類まれな二刀流の才能は、間違いなくMLBの歴史において前例のないものです。打者としても投手としてもトップレベルのパフォーマンスを同時に発揮できる選手は、彼以外にいません。これだけでも、彼を歴史上重要な選手とするのに十分です。 しかし、「史上最高」を決定するには、他の多くの偉大な選手たちとの比較が必要です。ベーブ・ルース、ウィリー・メイズ、ハンキー・アーロン、サイ・ヤングなど、それぞれの時代で圧倒的な活躍を見せた選手たちがいます。彼らを一つの基準で比較することは非常に困難です。 大谷選手は、まだ現役であり、キャリアのピークを迎えている可能性があります。彼の今後の活躍次第で、この議論は大きく変わるでしょう。彼のキャリアが終了し、統計や功績が確定した後に、改めて「史上最高」の議論が活発に行われることになるでしょう。 結論として、大谷翔平選手はMLBの歴史に大きな足跡を残す、非常に特別な選手であることは間違いありません。しかし、「史上最高」と断言するには、まだ時期尚早であり、最終的な判断は将来に委ねられるべきでしょう。 |
■1.0の出力例
※手動で改行を入れています
| 大谷翔平選手がMLB史上最高の選手かどうかは、非常に複雑で議論の余地のある質問です。明確な答えはありません。 彼の卓越性は、投手と打者の両方でトップレベルのパフォーマンスを同時に発揮するという、前例のない能力にあります。これは、野球の歴史において類を見ない偉業です。 しかし、「史上最高」を決定する基準は、時代や個人の好みによって大きく異なります。考慮すべき点として以下があります。 ***統計:** 大谷選手の二刀流での統計は驚異的ですが、ベーブ・ルースやサイ・ヤングなどのレジェンドと単純に比較することはできません。時代背景(球場の大きさ、投球技術、打撃技術の進化など)が大きく異なるためです。 ***影響力:** 大谷選手は野球界、ひいては世界中に大きな影響を与えています。彼の存在は、野球の関心を高め、新しい世代のファンを生み出しました。この影響力は、他のどの選手にも匹敵するものではありません。 ***持続可能性:** 大谷選手が現在のレベルを何年維持できるかは、彼の「史上最高」評価に大きく影響します。長期間にわたって高いレベルのパフォーマンスを維持し続けた選手が、一般的に「史上最高」候補として挙げられる傾向にあります。 ***総合的な評価:** 打撃と投球の両面での貢献をどのように評価するかが重要です。単純な統計の比較だけでなく、プレッシャー下でのパフォーマンス、チームへの貢献度、リーダーシップなども考慮すべき要素です。 結論として、大谷翔平選手は間違いなくMLBの歴史上最も才能のある選手の一人であり、既に偉大な選手であることは間違いありません。しかし、「史上最高」と断言するには、彼のキャリア全体を考慮し、他のレジェンドとの比較を様々な角度から行う必要があります。彼のキャリアはまだ進行中であり、最終的な評価は将来、彼が現役を引退した後に下されることになるでしょう。 |
比較すると、Temperatureを低く設定した場合は安定した回答になり、高く設定すると表現の幅が広がることが分かります。
Max tokensの設定方法と出力例
Max tokensを変更する場合も、generation_configに設定を追加します。
mychatbot/views.py
※赤字箇所を修正・変更
| response = model.generate_content( user_input, generation_config={“max_output_tokens”: 100} ) |
今回は、Max tokensを300と1000に設定して比較してみます。
質問は、Temperatureの比較と同じ、「大谷選手はMLB史上最高の選手でしょうか」としました。
■300の出力例
※手動で改行を入れています
| 大谷翔平選手は、MLBの歴史において類を見ない才能を持つ選手であることは間違いありません。 投打の二刀流で活躍し、どちらも高いレベルで成績を残している選手は、過去にいませんでした。彼の記録や活躍は、まさに歴史的なものです。 しかし、「MLB史上最高の選手」と断言するには、いくつかの点で議論の余地があります。「最高」の定義自体が主観的で、様々な基準(通算本塁打数、打率、勝利数、防御率、MVP受賞回数など)によって評価が変わるからです。 例えば、ベーブ・ルース、サイ・ヤング、ウィリー・メイズ、バリー・ボンズといったレジェンド選手たちは、それぞれの時代で圧倒的な成績を残し、MLBの歴史に大きな足跡を残しています。彼らの功績と大谷選手の功績を単純に比較することは難しく、どの基準を採用するかによって結論は変わってきます。大谷選手はまだ現役であり、彼のキャリアはこれからさらに続いていきます。今後、彼がさらに素晴らしい成績を残し、上記のレジェンドたちと比較できるだけのキャリアを積む可能性は十分にあります。 結論として、大谷翔平選手はMLB史上最高の選手候補の一人であることは間違いありませんが、現時点では「最高」と断言するには時期尚早であり、今後の活躍次第と言えるでしょう。 |
■1000の出力例
※手動で改行を入れています
| 大谷翔平選手は、MLBの歴史において類を見ない才能を持つ選手であることは間違いありません。投打の二刀流として活躍し、その高いレベルの両立は前例がなく、非常に高い評価を受けています。 しかし、「史上最高の選手」と断言するには、いくつかの要素を考慮する必要があります。 **大谷選手を史上最高の選手として主張できる点:** ***投打両面での卓越性:** 投手として強力な速球と多彩な変化球を武器に、打者としても高い打率、長打力、選球眼を兼ね備えている。これはMLB史上かつてないレベルの両立です ***記録的なシーズン:** 複数のシーズンで、投手と打者の両方でトップクラスの成績を残しており、シーズンMVPを獲得するなど、記録的な活躍を見せています。 ***インパクト:** 大谷選手の活躍は、野球界に大きなインパクトを与え、多くのファンを獲得し、野球の人気を高めています。 **大谷選手を史上最高の選手として主張しづらい点:** ***キャリアの継続性:** まだキャリアの比較的早い段階にいます。長年に渡り、高いレベルで活躍し続けなければ、「史上最高」の称号を得るには不十分です。ベーブ・ルースのようなレジェンドと比較するには、更なる実績が必要です。 ***比較の難しさ:** 異なる時代、異なるルール、異なる環境で活躍した選手たちを直接比較することは困難です。統計指標だけでは、選手の真価を完全に測りきれません。 ***主観的な要素:** 「史上最高」の判断には、個人の価値観や評価基準が大きく影響します。ある人は打撃成績を重視し、ある人は投球成績を重視するなど、様々な意見が存在します。 結論として、大谷翔平選手はすでにMLBの歴史に大きな足跡を残しており、将来「史上最高の選手」と呼ばれる可能性は十分にあります。しかし、現在の段階では、断定的に「史上最高の選手」と呼ぶのは時期尚早であり、今後の活躍に期待するべきでしょう。彼のキャリアがどのように展開するかによって、その評価は大きく変わってくるでしょう。 |
比較すると、Max tokensを小さく設定した場合は要点をまとめた回答になり、大きく設定すると、より詳しい回答になることが分かります。
今回のまとめ
今回は、TemperatureとMax tokensを固定値で設定して比較しましたが、実際に運用する場合は、ユーザーが用途に応じて設定を変更できるようにすると、さらに使いやすいチャットボットになります。
例えば、画面上にラジオボタンやスライダーを用意し、
・創造性を重視した回答
・論理的で安定した回答
などを選択できるようにすることで、利用シーンに合わせた柔軟な回答を提供できます。
最後に
以上で、「Gemini APIでチャットボット作成」全4回の連載は終了です!
第1回ではアプリケーションの概要、第2回では環境構築、第3回では実装、そして今回はチューニング方法についてご紹介しました。
今回の内容が、これからGemini APIを使ったアプリケーション開発に挑戦する方の参考になれば幸いです。
最後までご覧いただき、ありがとうございました!👋