3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

Geminiの思考機能を検証してみた:障害分析への活用可能性

Posted at

はじめに

image.png

ThinkingConfigと呼ばれるこの機能を活用することで、AIの内部思考過程を可視化し、より多角的な視点で障害分析を行うことができました。

※注意事項

  • AIの利用にあたっては、ツールやサービスの使用を含め、必ず所属組織のルールやガイドラインに従ってください。
  • 本記事では、すべて架空のデータを用いて検証を行っています。

Geminiの思考機能とは

Frame.png

Gemini 2.5の「ThinkingConfig」機能は、AIがレスポンスを生成する際の内部思考過程をステップごとに追跡できます。これにより、AIがどのように結論に至ったかを可視化し、より深い洞察を得ることができます。

Googleの説明によると「Gemini 2.5シリーズのモデルは、レスポンス生成時に内部の『思考プロセス』を使用します。このプロセスは、推論能力の向上につながり、複雑なタスクを解決するために複数ステップの計画を使用するのに役立ちます」とのことです。

障害シナリオ概要

架空のWebアプリ「MyApp」で発生した認証エラーのシナリオ:

【障害概要】
- 発生日:2025-05-15
- 影響範囲:一部ユーザーでログイン失敗(発生率5%)
- 障害内容:APIタイムアウト → レスポンス待ち切れ

【原因調査結果】
- 認証リクエストヘッダー欠落(Authorization ヘッダーのキー名ミス)
- リトライロジック未実装

【対策案】
1. ヘッダー修正:キー名を正規化して再発防止  
2. リトライ機構追加:最大3回リトライ  
3. ログ詳細強化:障害発生時に全リクエスト情報を保存  

思考機能から得られた洞察

image.png

実際にコードを実行した結果、AIの思考過程では次のようなステップが記録されていました(一部抜粋):

- reflect: まず障害の全体像を整理する必要がある。認証エラーが発生している点、APIタイムアウトが原因と思われる点、発生率5%という限定的な範囲である点がポイントだ。
- reflect: 原因分析の妥当性を評価するには、現状の分析で説明できることと説明できないことを区別する必要がある。
- reflect: Authorizationヘッダーのキー名ミスがなぜ5%のユーザーにのみ影響したのかが不明瞭。すべてのユーザーに影響しないのはなぜか?
- reflect: 対策案を評価する際は、それぞれの対策が原因に対してどの程度効果的かを考慮すべき。また、各対策の実装コストや影響範囲も考慮する必要がある。

このような思考過程をたどりながら、AIは以下のような洞察を提供しました:

思考機能がもたらした主な価値

image.png

追加対策案の提案

AIの思考機能を通じて、以下のような追加対策案が導き出されました:

- reflect: 現状の3つの対策案は基本的に妥当だが、根本的な問題の再発防止には不十分かもしれない。
- reflect: 開発プロセスにおける検証強化やCI/CDパイプラインでのヘッダー検証自動化なども検討すべき。
- reflect: モニタリングとアラート体制の強化も必要ではないか。5%の影響があっても気づかなかった可能性がある。

これらの思考を踏まえ、次のような追加対策が提案されました。

  • API仕様の明確化と共有
     すべての開発者がアクセスできるAPI仕様書を整備し、必ずレビューを通すプロセスを導入する。

  • ヘッダー検証の自動テスト
     CI/CDパイプラインに、ヘッダーの正当性を確認するテストケースを追加する。

  • モニタリングの強化
     認証エラー率をリアルタイムで確認できるダッシュボードを設置し、閾値に達した際のアラートを設定する。

  • カナリアリリースの導入
     新機能のリリース時には、まず限定的なユーザーグループでの検証を行う運用を取り入れる。

このような「予防的対策」は、単なる障害対応にとどまらず、開発プロセス全体を改善するための重要なアプローチです。

実践的な活用ポイント

image.png

実装例

以下に、ThinkingConfigを使った完全なPythonコード例を示します。このコードはGoogle Colabでの実行を想定しています:

from google import genai
from google.genai import types
from google.colab import userdata

# Geminiクライアント初期化
client = genai.Client(api_key=userdata.get('GEMINI_API_KEY'))

# プロンプト(障害検証報告の深掘り)
prompt = """
以下は Webアプリ「MyApp」で発生した認証エラー障害の検証報告です。

【障害概要】
- 発生日:2025-05-15
- 影響範囲:一部ユーザーでログイン失敗(発生率5%)
- 障害内容:APIタイムアウト → レスポンス待ち切れ

【原因調査結果】
- 認証リクエストヘッダー欠落(Authorization ヘッダーのキー名ミス)
- リトライロジック未実装

【対策案】
1. ヘッダー修正:キー名を正規化して再発防止  
2. リトライ機構追加:最大3回リトライ  
3. ログ詳細強化:障害発生時に全リクエスト情報を保存  

上記検証報告をもとに、以下を出力してください:
1. 原因分析の妥当性評価(不足点・追加調査項目)  
2. 各対策案の効果と残リスクの検証指標  
3. 対策の十分性評価と、必要なら追加策の具体案  
4. 他の機能(例:API連携、セッション管理など)への水平展開可能性の検討
   - 展開メリット・注意点  
   - 適用条件や影響範囲  
5. 最終的な推奨アクションプラン(3〜5項目の短期フォローアップ)
"""

# コンテンツ生成リクエスト(Thinking付き)
response = client.models.generate_content(
    model="gemini-2.5-flash-preview-04-17",
    contents=prompt,
    config=types.GenerateContentConfig(
        thinking_config=types.ThinkingConfig(thinking_budget=1024)
    ),
)

# 出力表示
print("=== 障害検証報告の深掘り分析 ===")
print(response.text)

# 思考プロセスの表示
if hasattr(response, "thinking"):
    print("\n=== モデルの思考プロセス ===")
    for step in response.thinking.trace.steps:
        print(f"- {step.action.action_type}: {step.action.description}")

thinking_budget=1024で適切な思考予算を設定し、構造化されたプロンプトで障害情報と分析観点を明示します。hasattr(response, "thinking")で思考機能の有効性を確認し、action_typeやdescriptionを使って思考の流れを追跡します。

image.png

まとめ:思考機能の価値

Geminiの思考機能は、AIの結論に至る過程を可視化することで、分析の透明性を高めます。また、見過ごされがちな前提や因果関係の再検証を促し、個人やチームの分析力向上にもつながります。さらに、思考過程の共有を通じて、チーム内の視点統一や議論の活性化にも貢献します。

ただし、AIはあくまで判断材料の一つであり、最終的な対応にはエンジニアの経験が不可欠です。AIと人の力を組み合わせることで、より効果的な障害対応が可能になります。

3
1
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
3
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?