前回(Step 1)では、自宅NASのHDD休止(スリープ)を守りつつ、動画管理を行っている1TB SSD搭載ラズパイを「常時稼働Botサーバー」として選定・セットアップしました。

Step 2となる今回は、いよいよAIたちが住むDiscordサーバーのレイアウト設計と、Google Gemini & Anthropic ClaudeのAPIを接続する実装編です!

すでに他の通知Botが動いているDiscordサーバーで「通知と雑談がごちゃ混ぜにならない」チャンネル設計の工夫や、気になるAPI利用料金のリアル、そして開発現場で直面した「2026年最新モデルへの世代交代による404エラーの罠」を詳しく解説します。

💡 生成AI活用のメモ 本記事で解説しているDiscordチャンネルの設計およびGemini 3.6 / Claude Sonnet 5のマルチAI連携コードは Gemini および Claude とのペアプログラミングで実装し、本記事の執筆もGeminiでまとめています。

混ざらない!Discordの「カテゴリー&チャンネル設計」

今回の環境構築では、すでに稼働日数250日を超えて稼働している「本番運用の自動売買通知用Discordサーバー」をリニューアルし、個人開発の総合拠点として拡張しました。

ここで最も重要なのは、「シビアな取引・監視通知」と「AIたちとの気軽な雑談・開発相談」が混ざってしまわないことです。

Discordの「カテゴリー機能」を活用し、以下のように役割を明確に分離しました。

graph TD
    subgraph Discord["Discord サーバー (個人開発ラボ)"]
        subgraph CatTrade["📊 自動売買・システム監視(既存カテゴリー)"]
            ChReport["📋 #trade-report (日次・週次レポート)"]
            ChAlert["🚨 #system-alerts (死活監視・エラー通知)"]
        end

        subgraph CatAI["🤖 AI-COWORKING(新規カテゴリー)"]
            ChTask["💬 #task-room (日常の依頼・共同開発相談)"]
            ChLog["📝 #bot-log (Bot起動ログ・接続確認)"]
        end
    end

💬 #task-room(作業用メインチャンネル)

ユーザー、Gemini、Claudeがひとつの部屋に集まるコワーキングスペースです。
- 自由な質問: メッセージをそのまま書き込むと、GeminiとClaudeがお互いの回答を踏まえながらピアレビュー(意見交換)を行います。
- 個別呼び出し:
- !gemini <質問>:Geminiだけにサクッとアイデア出しを依頼したいとき
- !claude <質問>:Claudeだけに緻密なコードレビューを依頼したいとき
- !ask <質問>:両者を巻き込んでディスカッションさせたいとき

通知設定もカテゴリー単位で個別にミュート・通知制御ができるため、日々の開発に集中できる快適な住み分けが実現しました。


気になるAPI課金と利用枠のリアル(無料枠の真実とClaudeへの投資)

「生成AIのAPIを使うと、毎月とんでもない従量課金が発生するのでは……?」
と不安に思う方も多いのではないでしょうか。

実際に調べて運用してみると、個人開発の範囲であれば想像以上にコストパフォーマンス抜群であることが分かりました。

1. Google Gemini:破格の無料枠(クレジットカード登録不要!)

Google AI Studio(Gemini API)の最大の強みは、「無料枠(Free Tier)が圧倒的に手厚い」という点です。

  • クレジットカード登録すら不要: アカウントを作成してAPIキーを発行するだけで即座に利用可能。
  • 1日1,500リクエストまで完全無料: 個人が日常の開発相談やテキスト生成で使う分には、無料枠の数%〜10%も使えば十分すぎるほど。
  • お財布への安心感: 意図しない課金が発生する心配が根本からゼロなので、気軽に24時間Botに組み込めます。

2. Anthropic Claude:APIクレジットの賢い活用法

Claude側は従量課金のAPIクレジットを購入して利用します。

  • Web版「Claude Pro」との違い: 月額定額($20/月)のClaude Proとは別会計ですが、APIは使ったトークン分だけが微量に引かれる仕組みです。
  • ターミナル開発ツール「Claude Code」とも共用可能: チャージしたクレジットはDiscord Botだけでなく、Anthropic公式のターミナル開発エージェント Claude Code とも同一APIキーで共用できます。
  • 1回チャージしておけば、Botとの会話程度なら長期間にわたって有効活用できるため、非常に無駄のない投資になります。

【ハマりどころ】2026年最新モデルの罠と世代交代劇

APIキーを取得し、いざBotを起動した瞬間、ターミナルにまさかのエラーが吐き出されました!

google.genai.errors.APIError: 404 NOT_FOUND. 
This model models/gemini-2.5-flash is no longer available to new users. 
Please update your code to use models/gemini-3.6-flash...

さらに、Claude側でも旧世代のモデルID(claude-3-7-sonnet)を指定していたため、同様に404エラーが発生。

「2026年現在、旧来の gemini-2.5-flash や 3.7系モデルは引退しており、最新の gemini-3.6-flash および Claude Sonnet 5(claude-sonnet-5)への世代交代が完了していた」のです!

開発現場でエラーログの末尾を注意深く確認したことで、
「これ、2.5じゃなくて 3.6-flash を指定しなきゃいけないんだ!」
と即座に気づき、最新モデルへの移行を完了できました。

最新モデル対応のクライアント実装例

以下が、2026年最新モデルに対応させた各AIの呼び出し実装です。

1. Geminiクライアント (ai_clients/gemini_client.py)

新しい統合SDK google-genai を使用し、最新の gemini-3.6-flash を指定します。

from google import genai
from google.genai import types

class GeminiClient:
    def __init__(self, api_key: str):
        self.client = genai.Client(api_key=api_key)
        # 2026年最新モデルを指定
        self.model_name = "gemini-3.6-flash"

    async def generate_response(self, system_instruction: str, prompt: str) -> str:
        config = types.GenerateContentConfig(
            system_instruction=system_instruction,
            temperature=0.7,
        )
        response = await self.client.aio.models.generate_content(
            model=self.model_name,
            contents=prompt,
            config=config,
        )
        return response.text

2. Claudeクライアント (ai_clients/claude_client.py)

Anthropic SDKの非同期クライアントを使用し、最新の claude-sonnet-5 を指定します。

import anthropic

class ClaudeClient:
    def __init__(self, api_key: str):
        self.client = anthropic.AsyncAnthropic(api_key=api_key)
        # 2026年最新モデルを指定
        self.model_name = "claude-sonnet-5"

    async def generate_response(self, system_instruction: str, prompt: str) -> str:
        response = await self.client.messages.create(
            model=self.model_name,
            system=system_instruction,
            max_tokens=2000,
            messages=[{"role": "user", "content": prompt}]
        )
        return response.content[0].text
⚠️ WARNING

APIキーの厳重管理(.gitignoreの徹底)
Discordトークンや各社のAPIキーは、絶対にコード内に直接ハードコードしてはいけません。
必ずプロジェクトルートの .env ファイルに記述し、Git管理対象外(.gitignore)に指定しておきましょう。


まとめと次回予告

Discordサーバーのカテゴリー設計を整え、Google Gemini(3.6-flash)とAnthropic Claude(Sonnet 5)という2大最新AIモデルをひとつの部屋に招集することができました!

  • カテゴリー分離: 既存のシビアな取引通知とAI雑談を綺麗に住み分け。
  • コスト最適化: Geminiの手厚い無料枠(1日1,500回無料)と、Claude Codeと共用できるAPIクレジットの併用。
  • 最新モデル対応: 2026年現行の最強モデル(Gemini 3.6 & Claude Sonnet 5)を導入。

これでいよいよAIたちと楽しくおしゃべりできる……と思いきや、テスト運用を始めた途端に「毎回、最初に古いエラー枠が出てから正常な回答が返ってくる!?」という謎の怪現象に直面することになります。

次回は、「【Discord×AIチャット】Step 3:謎のエラー退治とMarkdown性格調整!完全常時稼働へ」をお届けします。
デバッグの顛末と、Botを再起動せずにAIの性格を変えられるMarkdown動的ロード、そしてLinuxでの24時間完全常時稼働化までを一挙に公開します!