【Python】ChatworkログをGeminiで自動分析!APIキー管理機能付きGUIツール『Chat-Partner-AI』開発チュートリアル

AIがチャットデータを分析している様子を描いた、未来的なコマンドセンターのCGアート。中央に輝くコアがあり、周囲にデータストリームが流れている。 ツール構築・実装
Python GUI開発チュートリアル
Chatwork分析を自動化するGUIツールを自作しよう
Pythonとttkbootstrapを使い、Chatwork APIと最新のGemini APIを連携。面倒なログ分析から解放されるデスクトップアプリの開発手順を、APIキーの自動切換え機能といった高度なテクニックも交えて解説します。


1. Chat-Partner-AIとは? – 概要と完成形

動画で紹介された「Chat-Partner AI」は、Chatworkのチャット履歴をAIで分析する非常に強力なツールです。この記事では、その核心的な機能を抽出し、『Chat-Partner-AI』という名のデスクトップアプリケーションとして自作する手順を解説します。

このツールを開発することで、あなたは以下のメリットを得られます。

  • 業務効率の劇的な向上: 面倒なログのコピペや目視確認から解放されます。
  • 実践的なスキル習得: PythonによるGUI開発、外部API連携、そして最新AIモデルの活用法まで、一気通貫で学べます。
  • 高度なAPI管理技術: 複数のAPIキーを自動で切り替え、レート制限(APIの利用回数制限)を回避する高度なテクニックを実装します。

最終的には、ChatworkのルームIDを指定してボタンを押すだけで、AIによる分析レポートが生成・保存される、実用的なツールが完成します。

2. 開発環境の準備

開発を始める前に、必要なツールとAPIキーを準備しましょう。

2.1. Pythonとライブラリのインストール

まず、PCにPython (3.9以上推奨) をインストールしてください。次に、プロジェクトに必要なライブラリをまとめたrequirements.txtを使って一括でインストールします。

ターミナル(またはコマンドプロンプト)で以下のコマンドを実行してください。

pip install google-genai requests ttkbootstrap python-dotenv

【重要】Googleの公式Pythonライブラリはgoogle-genaiです。古い情報源にあるgoogle-generativeaiではない点にご注意ください。

2.2. APIキーの準備

このツールは2種類のAPIキーを必要とします。

  • Chatwork APIトークン: Chatworkの公式サイトの手順に従い、APIトークンを発行します。
  • Google AI APIキー: Google AI Studioにアクセスし、APIキーを作成します。複数のアカウントでキーを作成しておくと、後述するキーローテーション機能が活きてきます。

取得したAPIキーは、プロジェクト内のsystem/api_key.txtというファイルに1行ずつ記述して保存してください。

3. プロジェクト構造と主要ファイル解説

今回のプロジェクトは、役割ごとにファイルを整理した構造になっています。

Chat-Partner-AI/
├── gui/ (GUI関連のコード)
├── lib/ (API連携などの主要ロジック)
├── system/ (設定ファイルやAPIキー)
├── main.py (アプリケーションの起動ファイル)
└── requirements.txt (必要なライブラリ一覧)

特に重要なのはlib/ディレクトリ内の3つのファイルです。これらがツールの心臓部となります。

4. 実装解説:主要ロジックを深掘り

ここでは、ツールの核となる3つのロジックを解説します。

4.1. Chatwork API連携 (lib/chatwork_client.py)

このファイルは、Chatwork APIに接続し、指定されたルームのメッセージを取得・整形する役割を担います。AIが読みやすいように、[info][qt]といったChatwork特有のタグをクリーンなテキストに変換する処理が含まれています。

import requests
import re

class ChatworkClient:
    BASE_URL = "https://api.chatwork.com/v2"

    def __init__(self, api_token):
        self.headers = {'X-ChatWorkToken': api_token}

    def get_messages(self, room_id):
        url = f"{self.BASE_URL}/rooms/{room_id}/messages?force=1"
        response = requests.get(url, headers=self.headers)
        response.raise_for_status() # エラーチェック
        return response.json() if response.status_code == 200 else []

    # (clean_message, fetch_formatted_logsなどの関数が続く...)

4.2. 【重要】Gemini API連携とキーローテーション (lib/api_manager.py)

ここがこのツールの最も高度な部分です。system/api_key.txtから複数のGoogle AI APIキーを読み込み、APIの利用回数制限(レートリミット)エラーが発生した際に、自動で次のキーに切り替えて処理を続行する仕組みを実装しています。

【注意】提供されたプロジェクトのコードは古いGemini APIの構文を使用しています。ここでは、現在の公式ライブラリgoogle-genaiの正しい構文に修正して解説します。

# lib/api_manager.py (抜粋・最新構文に修正)
import google.genai as genai
import time

class APIManager:
    # ... (キー読み込み処理)

    def execute_with_retry(self, operation_func, *args, **kwargs):
        max_retries = len(self.api_keys)
        for i in range(max_retries):
            key = self.api_keys[(self.last_used_index + 1 + i) % len(self.api_keys)]
            try:
                # 正しいクライアントの初期化
                client = genai.Client(api_key=key)
                print(f"Using API Key ending in ...{key[-4:]}")
                # clientを引数として渡す
                return operation_func(client, *args, **kwargs)
            except Exception as e:
                if "429" in str(e) or "Quota" in str(e):
                    print(f"Rate limit on key ...{key[-4:]}. Switching...")
                    time.sleep(1)
                    continue
                else:
                    raise e
        raise Exception("All API keys failed.")

この仕組みにより、無料枠のAPIキーを複数用意しておけば、長時間の連続利用にも耐えられる堅牢なシステムを構築できます。

4.3. GUIの構築 (gui/modules/main_frame.py)

ユーザーインターフェースはttkbootstrapライブラリで構築されています。これにより、モダンなデザインのGUIを少ないコードで実現できます。ボタンが押されたときの処理 (on_sync_logs, on_analyze) は、API通信などで時間がかかるため、threadingを使ってバックグラウンドで実行します。これにより、処理中にUIがフリーズするのを防いでいます。

5. 使い方と応用

ツールの使い方は非常にシンプルです。

  1. _setup.batを実行して仮想環境を構築します。
  2. system/api_key.txtにAPIキーを設定します。
  3. _run.batを実行してツールを起動します。
  4. ChatworkトークンとルームIDを入力し、「ログ同期」ボタンを押します。
  5. 分析したい内容のボタンを押すか、自由指示を入力して実行します。

生成されたログやレポートはoutput/フォルダ内にルームIDごとのフォルダが作成され、自動で保存されます。system/config.pyを編集すれば、デフォルトで使用するGeminiモデルを変更することも可能です。

6. まとめ

この記事では、ChatworkのログをGeminiで分析するGUIツール「Chat-Partner-AI」の開発手順を解説しました。単にAPIを繋ぐだけでなく、GUIによる操作性の向上や、APIキーの自動ローテーションといった実践的なテクニックを盛り込みました。

このプロジェクトをベースに、プロンプトを改良したり、対応する分析パターンを増やしたりすることで、あなただけの最強の業務効率化ツールへと進化させることができるでしょう。


【免責事項】本記事は、AI技術を用いて作成された部分を含みます。公開時点の情報に基づいていますが、AIの仕様変更やサービスの更新により、内容が現状と異なる場合があります。最新の情報は公式サイト等でご確認ください。

コメント

タイトルとURLをコピーしました