Copyright (c) 2024-2025 led-mirage
APIを使ってAIとチャットするアプリなのだ。 キャラクターをカスタマイズできることと、VOICEVOXなどと連携して質問と回答を音声で読み上げてくれるのが特徴なのだ。
このアプリのアピールポイントは次のとおりなのだ✨
- 3大AIサービス(OpenAI、Google Gemini、Anthropic Claude)に対応
- キャラクターカスタマイズ機能
- メッセージ自動読み上げ機能
- マークダウン表示、TeX形式の数式表示機能
- 過去ログ管理機能
- リプレイ機能
- 印刷機能
- Raspberry Pi対応✨(X11/LXDE、日本語入力はIBus限定、印刷機能は非対応)
- Linux Mint対応✨(Cinnamon/x64、日本語入力はIBus限定、印刷機能は非対応)
- ダークモード対応✨
アプリの紹介と、もっとも手軽な導入方法をZennの記事にしたので、そちらも参考にしてほしいのだ✨
Raspberry Pi、Linuxへの導入に関してもZennの記事にしたので、そちらを参考にしてほしいのだ✨
記事はZundaGPT2のものだけど、導入方法はほぼ同じなのだ。
- Windows 11 Pro 23H2、24H2
- Raspberry Pi OS Bookworm 64bit
- Linux Mint 22.1 Cinnamon Edition
- Python 3.10-3.13(開発環境は 3.12.0)
- VOICEVOX 0.23.0
- A.I.VOICE Editor 1.4.10.0
- COEIROINK v.2.3.4
動作確認済みのモデルは以下の通りなのだ。
OpenAI(2025/04/27現在)
- GPT-4.1 (モデル名:gpt-4.1)
- GPT-4.1 mini (モデル名:gpt-4.1-mini) 無料枠あり
- GPT-4.1 nano (モデル名:gpt-4.1-nano) 無料枠あり
- GPT-4o (モデル名:gpt-4o)
- GPT-4o mini (モデル名:gpt-4o-mini) 無料枠あり
- GPT-3.5 Turbo (モデル名:gpt-3.5-turbo)
- ChatGPT-4o (モデル名:chatgpt-4o-latest)
- GPT-4o Search Preview (モデル名:gpt-4o-search-preview)
- GPT-4o mini Search Preview (モデル名:gpt-4o-mini-search-preview) 無料枠あり
- o4-mini (モデル名:o4-mini)
- o3-mini (モデル名:o3-mini)
- o1 (モデル名:o1)
- o1-mini (モデル名:o1-mini)
Anthropic Claude(2025/05/24現在)
- Claude Opus 4 (モデル名:claude-opus-4-0)
- Claude Sonnet 4 (モデル名:claude-sonnet-4-0)
- Claude Sonnet 4 Extended Thinking Mode (モデル名:claude-sonnet-4-0)
- Claude Sonnet 3.7 (モデル名:claude-3-7-sonnet-latest)
- Claude Sonnet 3.7 Extended Thinking Mode (モデル名:claude-3-7-sonnet-latest)
- Claude Haiku 3.5 (モデル名:claude-3-5-haiku-latest)
- Claude Sonnet 3.5 V2 (モデル名:claude-3-5-sonnet-latest)
- Claude Opus 3 (モデル名:claude-3-opus-latest)
- Claude Haiku 3 (モデル名:claude-3-haiku-20240307)
Google Gemini(2025/04/27現在)
- Gemini 2.5 Flash Preview (モデル名:gemini-2.5-flash-preview-04-17) 無料枠あり
- Gemini 2.5 Pro Preview (モデル名:gemini-2.5-pro-exp-03-25)
- Gemini 2.0 Flash (モデル名:gemini-2.0-flash) 無料枠あり
- Gemini 2.0 Flash Lite (モデル名:gemini-2.0-flash-lite) 無料枠あり
- Gemini 1.5 Flash (モデル名:gemini-1.5-flash) 無料枠あり
- Gemini 1.5 Flash 8B (モデル名:gemini-1.5-flash-8b) 無料枠あり
- Gemini 1.5 Pro (モデル名:gemini-1.5-pro)
使用する言語を変更するにはappConfig.json
ファイルのlanguage
設定を変更すればいいのだ。
"language": "en"
設定できる値は以下の通りなのだ。
設定値 | 言語 | キャラクター設定ファイル | 実装バージョン |
---|---|---|---|
ja | 日本語 | settings.json | 1.6.0 |
en | 英語 | settings.en.json | 1.6.0 |
fi | フィンランド語 | settings.fi.json | 1.10.0 |
es | スペイン語 | settings.es.json | 1.10.0 |
de | ドイツ語 | settings.de.json | 1.15.0 |
このアプリを動かすには以下のいずれかのAPIキーが必要なのだ。
OpenAI PlatformのアカウントとAPIの利用登録(課金およびAPIキーの作成)が必要なのだ。
Google AI StudioでAPIキーを作成する必要があるのだ。
※2025年6月時点でGoogle Gemini APIには無料プランが設定されているので、他社のAPIよりも気軽に利用することができるのだ。このことはZennの記事にも書いたので、そちらを参照して欲しいのだ。
Anthropic ConsoleのアカウントとAPIの利用登録(課金およびAPIキーの作成)が必要なのだ。
このアプリは以下のテキスト読み上げソフトウェアに対応しているのだ。メッセージを読み上げてもらうには、どれか一つでいいからPCにインストールしておく必要があるのだ。でもなくても動作するから、声がいらない人は不要なのだよ。
- VOICEVOX(無料)
- COEIROINK(無料)
- A.I.VOICE(有料・Windows Only)
- Google Text-to-Speech(無料)… FFmpegが必要
- SAPI5(無料・Windows Only)… インストール不要
用意ができたら、次の実行方法にゴーなのだ。
使用するAIのAPIキーをOSの環境変数に登録しておく必要があるのだ。
AI | 変数名 | 値 |
---|---|---|
OpenAI | OPENAI_API_KEY | OpenAIで取得したAPIキー |
Google Gemini | GEMINI_API_KEY | Googleで取得したAPIキー |
Anthropic Claude | ANTHROPIC_API_KEY | Anthropicで取得したAPIキー |
Windowsの場合は、Windowsの検索窓で「環境変数を編集」で検索すると設定画面が立ち上がるので、そこでユーザー環境変数を追加すればいいのだ。

任意の場所にプロジェクト用のフォルダを作成するのだ。
以下のリンクから ZundaGPT2.ZIP をダウンロードして、作成したフォルダに展開するのだ。
https://github.com/led-mirage/ZundaGPT2/releases/tag/v1.23.0
ZundaGPT2.exeをダブルクリックすればアプリが起動するのだ。
※起動時にスプラッシュ画面を表示したくない人は、ZundaGPT2.ns.exe
を替わりに使ってほしいのだ。
この実行ファイル(EXEファイル)は PyInstaller というライブラリを使って作成しているんだけど、割と頻繁にウィルス対策ソフトにマルウェアとかウィルスとかに誤認されるのだ。ネットとかを見るとこの問題が結構書かれているので、よくある事象のようだけど、残念なことに根本的な解決策は見つかっていないのだ。
もちろん、このアプリに悪意のあるプログラムは入っていないのだけど、気になる人は下の「Pythonで実行する方法」で実行してほしいのだ。
あらかじめ Python 3.12.0 が動く環境を作っておくのだ。他のバージョンでも動くかもしれないけど、確認はしていないのだよ。
ボクは pyenv-win + venv で仮想環境を作ってそこで開発しているから、そういった方法でも問題ないのだ。
任意の場所にプロジェクト用のフォルダを作成するのだ。
ターミナルかコマンドプロンプトを起動して、作成したプロジェクトフォルダに移動するのだ。
ZIPファイルをダウンロードして作成したフォルダに展開するのだ。
または、Gitが使える方は以下のコマンドを実行してクローンしてもOKなのだ。
git clone https://github.com/led-mirage/ZundaGPT2.git
コマンドプロンプトから以下のコマンドを実行して、必要なライブラリをインストールするのだ。
pip install -r requirements.txt
コマンドプロンプトから以下のコマンドを実行するとアプリが起動するのだ。
python app\main.py
以下のような起動用のバッチファイルを用意しておくと便利なのだ。
start pythonw app\main.py
Pythonの仮想環境を使用している場合は、以下の例のようにすればOKなのだ。
call venv\scripts\activate
start pythonw app\main.py
画面右上の⚙️ボタンを押すことで、使用するキャラクターを選択することができるのだ。
いくつかのデフォルトの設定がすでにあるけれど、設定ファイルをコピーして自分で編集することで自分好みのキャラクターを作ることができるのだ。
キャラクターの設定ファイル(settings_xxx.json)はsettingsフォルダの中に格納されているから、それをコピーして編集すればOKなのだ。
詳しい設定方法はこちらをみて欲しいのだ。
このアプリは無料だけど、AI各社のAPIを使うには別途料金が発生するのだ(お試し用の無料枠もあるけど)。なので、使い過ぎには注意するのだ。定期的に各社の管理サイトで現在の利用状況を確認するなどして自己管理して欲しいのだ。
各AIのAPIキーはあなただけのものなので、人に教えたらダメなのだ。流出すると悪い人に勝手に使われてしまう可能性があるのだ。もし流出してしまったら、各AIの管理サイトで現在使っているAPIキーを削除して、使えなくして欲しいのだ。
上でも書いているけれど、配布している実行ファイル(EXEファイル)が、マルウェアやウィルスに誤認されてしまうことがあるのだ。問題はPythonのプログラムを一つの実行ファイル(EXEファイル)にまとめることにあるようなのだが、回避方法がないためどうしようもないのだ。
これが嫌な人は(ボクも嫌だけど)、Python本体をインストールしてPythonから普通に実行して欲しいのだ。実行ファイルのほうが手軽だし、そのほうがPythonに詳しくない人にとっては簡単なんだけど、誤認問題がついて回ることは覚えておいて欲しいのだ
VirusTotalでのチェック結果はこちらなのだ。
Windows版: (72個中2個のアンチウィルスエンジンで検出 :2025/07/27 v1.23.0)[https://www.virustotal.com/gui/file/87a35738504bd10ee3718dfa399b3f14836bab228c133f487b6b3b7c9208a302?nocache=1] Raspberry Pi版: (62個中0個のアンチウィルスエンジンで検出 :2025/07/27 v1.23.0)[https://www.virustotal.com/gui/file/9514e68b2c3b54b1b17e5a8ce728e88ac6cbae99b4ac4dd87b6218f366b4b2c1?nocache=1] Linux版: (63個中0個のアンチウィルスエンジンで検出 :2025/07/27 v1.23.0)[https://www.virustotal.com/gui/file/5a976bb965d21154c02c8526a40aa4c9a6656aa64daa4bbc549632ec8e8777d3?nocache=1]

いまのところ特に問題点は見つかっていないけど、バグなんてものは潜在的に必ずあるし、0になるなんてことはあり得ないのだ。また、もしバグがあってそのせいで貴方に損害を与えたとしても、著作権者はいかなる責任も負いかねるのでその点を理解して使って欲しいのだ。
- VOICEVOXキャラクターリスト
- COEIROINKキャラクターリスト
- 炬燵で快適!VOICEVOXとZundaGPT2を別のPCで連携する方法
- 炬燵で快適!COEIROINKとZundaGPT2を別のPCで連携する方法
このアプリがお世話になってるOSSは以下の通りなのだ✨
ホームページ: https://github.com/r0x0r/pywebview
ライセンス:BSD-3-Clause license
ホームページ: https://github.com/openai/openai-python
ライセンス:Apache License 2.0
ホームページ: https://github.com/googleapis/python-genai
ライセンス:Apache License 2.0
ホームページ: https://github.com/anthropics/anthropic-sdk-python
ライセンス:MIT license
ホームページ: https://github.com/pndurette/gTTS
ライセンス:MIT License
ホームページ: https://requests.readthedocs.io/en/latest/
ライセンス:Apache License 2.0
ホームページ: https://people.csail.mit.edu/hubert/pyaudio/
ライセンス:MIT License
ホームページ:https://github.com/pythonnet/pythonnet
ライセンス:MIT License
ホームページ:https://github.com/Mimino666/langdetect
ライセンス:Apache License 2.0
ホームページ: https://github.com/asweigart/pyperclip ライセンス:BSD 3-Clause "New" or "Revised" License
ホームページ:https://github.com/jiaaro/pydub
ライセンス:MIT License
ホームページ:https://github.com/mhammond/pywin32
ライセンス:Python Software Foundation License (PSF)
ホームページ: https://github.com/mathjax/MathJax
ライセンス:Apache License 2.0
ホームページ:https://github.com/highlightjs/highlight.js
ライセンス:BSD-3-Clause license
ホームページ:https://github.com/markedjs/marked
ライセンス:MIT license
ホームページ:https://github.com/julkue/mark.js
ライセンス:MIT license
ホームページ:https://fontawesome.com/
ライセンス:Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License
ホームページ:https://github.com/DudeNr33/pyinstaller-versionfile
ライセンス:MIT license
ホームページ: https://github.com/pyinstaller/pyinstaller
ライセンス: GPL 2.0 License / Apache License 2.0
© 2024-2025 led-mirage
本アプリケーションは MITライセンス の下で公開されているのだ。詳細については、プロジェクトに含まれる LICENSE ファイルを参照して欲しいのだ。
過去のバージョンアップの軌跡はこちらなのだ
- Raspberry Pi OS Bookwork 64bit に対応
- Linux Mint 22.1 Cinnamon Edition に対応
- ダークモードの実装
- appConfig.jsonファイルの "system"."theme" に
dark
またはlight
を指定する
- appConfig.jsonファイルの "system"."theme" に
- PyInstallerのバージョンを6.14.2に更新
- fix: OpenAI、Claudeの場合に
api_key_envvar
オプションが効かないバグを修正
- クリップボードにテキストをコピーする処理をJS側からPython側に移設
ZundaGPT2 Lite
の修正にあわせてこちらも修正
- fix: 過去ログがロードできないバグを修正
- fix: f-Stringの書式を修正(Python 3.10-3.11に対応)
- 会話履歴送信時に文字数上限を指定できる
history_char_limit
オプションを追加history_size
(履歴の最大件数)に加えて、合計文字数でも履歴送信を制御可能history_char_limit
が 0 の場合、文字数制限はなし- 文字数が上限を超えていても、過去3回分の会話は必ず送信される
- PyInstallerのバージョンを6.14.1に更新
- チャット画面のストリーミング表示を改善
- 受信中のメッセージもリアルタイムにマークダウンレンダリングするよう変更
- 読みやすさ・見た目を向上
- コードブロックは正しく閉じられるまでテキスト表示され、途中レンダリングによる崩れを防止
- openaiライブラリを1.91.0に更新
- anthropicライブラリを0.55.0に更新
- google-genaiのバージョンを1.21.1に更新
- 受信中のメッセージもリアルタイムにマークダウンレンダリングするよう変更
- AzureOpenAIで使用するAPIバージョンを
2025-04-01-preview
に更新- o4-miniなどの推論系のモデルに対応
- openaiライブラリを1.88.0に更新
- anthropicライブラリを0.54.0に更新
- requestsライブラリを2.32.4に更新(CVE-2024-47081対応)
- Fix: リプレイ時に空行は読み上げをスキップするように修正
- Fix: Geminiを使用した場合、チャットの要約機能が動かないバグを修正
- キャラクター設定ファイルのAIモデルのデフォルト値を最近のモデルに変更
- リリースモジュールのみの更新(機能の追加、変更はありません)
- settingsフォルダ内の設定ファイルで設定されているAIモデルを最近のモデルに変更
- 各EXEファイルのバージョンは1.17.0のまま変更はありません
- アプリケーションログ出力機能追加
- 設定ファイル(appConfig.json)に出力するログレベルの閾値を追加
- 現在出力されるのは一部エラーのみ
- リファクタリングのみ(機能の追加、変更はありません)
- google gemini用のライブラリを
google-genai
に変更google-generativeai
ライブラリが Deprecated になったことによる措置
- タイポ修正
- appConfig.json中の
safty
をsafety
に修正- これによりGeminiのコンテンツフィルタの設定が初期されます
- 設定を変更されていた方はお手数ですが再設定してください
- appConfig.json中の
- google gemini用のライブラリを
- リファクタリングのみ(機能の追加、変更はありません)
- バックエンド側の構造整理
- api/ … フロントとの橋渡しやルーティング処理
- services/ … 各画面・機能ごとのロジック(サービス層)
- config/ … 設定ファイル
- utility/ … 共通関数、多言語処理などの補助的な処理
- ステートクラスの導入、Windowクラスの導入
- タイポ修正
- バックエンド側の構造整理
- リファクタリングのみ(機能の追加、変更はありません)
- アプリケーション定数を別ファイルに分離
- ビルドバッチの変更
- PyInstallerのバージョンを6.13.0に更新
- リファクタリングのみ(機能の追加、変更はありません)
- View側にESMを導入して整理
- アプリケーション設定ファイルにフォントファミリとフォントサイズの項目を追加
- font_family: フォントの一覧(優先順)
- font_size: フォントサイズ(px単位)
- Fix: 日本語の「」が重なって表示される問題を修正(CSSの修正)
- キャラクター設定ファイル(settings_xxx.json)に以下の項目を追加
- api_key_envvar: APIキーを格納する環境変数名
- api_endpoint_envvar: APIエンドポイントを格納する環境変数名(AzureOpenAI Serviceにのみ影響)
- ドイツ語に対応
- openaiのバージョンを1.76.0に更新
- anthropicのバージョンを0.50.0に更新
- google-generativeaiのバージョンを0.8.5に更新
- PyInstallerのバージョンを6.12.0に更新
- タイポ修正
- Claude 3.7 Sonnet の Extended Thinking(拡張思考モード)に対応
- モーダルダイアログのCSSのリファクタリング
- OpenAI o1-preview、o1-miniモデルに対応
- o1、o3-miniはティア制限のため未検証
- チャットを要約する機能を追加
- チャット全体をクリップボードにコピーする機能を追加
- Fix: ファイル横断検索画面でのHTMLエンコード抜けの修正
- Fix: プログラムコード部分や、ユーザーのメッセージ部分はMathJaxで数式に変換しないように修正
- 設定切替画面で設定ファイルのグルーピングができるようにした
- ファイル横断検索機能の実装
- デザインを一部変更
- フィンランド語とスペイン語に対応
- メッセージをコピーするボタンを追加
- カスタムコンテキストメニューを追加して、選択したテキストをコピーできるようにした
- Fix: 設定ウィンドウをキャンセルしたときに、Welcomeメッセージが表示される問題を修正
- Fix: AIに再回答を依頼したときに、メッセージの順序がおかしくなる問題を修正
- コードブロックにクリップボードにコピーするボタンを追加
- 設定画面にチャット設定ファイルをオープンする機能を追加
- Fix: 文字列のエスケープ処理が抜けている個所を修正
- Fix: 環境変数がセットされていないときのエラー処理を変更
- ZundaGPT2Liteに合わせるために、バージョン1.6.1は欠番
- 言語サポート機能の追加(英語)
- Fix: index.htmlで使っているscriptタグにSRIハッシュを追加
- チャットアイコンを表示する機能を追加
- リプレイ機能(実験的機能)の実装… Ctrl + R でリプレイ開始
- Anthropic APIでエラーが発生したときのメッセージを分かりやすくした
- コードブロック中にURLがあった場合に、不要な変換がおこなわれてしまう不具合を修正
- appConfig.jsonの
voicevox_server
とcoeiroink_server
がプログラムに反映されないバグを修正
- Anthropic社のAI、Claudeシリーズに対応
- チャット内容の表示を改善
- 起動時に表示されるスプラッシュ画面を追加
- pywebviewのバージョンを5.3.2に更新
- openaiのバージョンを1.57.0に更新
- google-generativeaiのバージョンを0.8.3に更新
- 回答表示処理中にブラウザでエラー(OUT OF MEMORYなど)が発生する場合がある問題に対処
parsedSentenceメソッド中のMathJax.typesetPromise()をコメントアウト
- アプリケーションアイコンの追加
- 印刷する場合、codeブロックの中のテキストを右端で折り返すように修正
- 印刷機能の追加
- 画面上部のボタンにツールチップを追加
- PyInstallerのバージョンを6.8.0に更新
- openaiのバージョンを1.33.0に更新
- google-generativeaiのバージョンを0.6.0に更新
- requestsのバージョンを2.32.3に更新
- 再生環境による文末の音声途切れ問題を軽減するため、再生終了後に0.2秒間の待機時間を追加
- Google Text-to-Speechに対応
- SAPI5に対応
- requestsのバージョンを2.32.2に更新
- バージョンを1.x.xに改定
- Google Gemini APIに対応
- Tex形式の行列式が正しく表示されない問題を解消
- Readmeの使用しているライブラリ欄に、pywebviewの記載が洩れていたため追記
- openaiのバージョンを1.12.0から1.23.2に更新
- ChatAPIのタイムアウト値を設定ファイル(app_config.json)に持つように変更
- AIの回答中にあるURLが正しくリンク表示にならない問題に対処
- メッセージ送信中止機能を追加
- Ctrl + F でテキストを検索する機能を追加(F3 or Shift + F3で候補移動)
- Welcomeメッセージの追加
- 設定ファイルのフォーマット変更(Welcome関連項目追加)
- Copyrightを動的に設定するように修正
- 英文が右端で折り返さない問題を修正
- 再回答ボタンを追加
- チャットログが1つしかない場合に、そのログを削除できないバグを修正
- メッセージの削除ボタンを追加
- PyInstallerの更新(6.4.0を使用)
- 0.5.0で発生した数式が正しくレンダリングされないバグ(デグレード)を修正
- マークダウン形式のテキストをHTMLに変換するように変更
- チャットリクエストがタイムアウトした際、リトライするかユーザーに選択してもらうように修正
- 設定ファイルをappConfig.jsonとsettings.jsonに分離
- settings.jsonを配置するフォルダをsettingsフォルダに変更
- 設定の切り替えを行うUIを追加
- 画面左上に現在の設定のdisplay_nameを表示するように変更
- ウィンドウがフォーカスを失った後に再度戻ってくると、IMEの変換がうまくいかなくなる問題に対処
- チャットリクエスト時のタイムアウト処理を変更
- スピーカーのON/OFFを切り替えれるように変更
- ウィンドウサイズの初期値を設定ファイルで指定できるように変更
- その他、バグ修正、微調整など
- 表示しているチャットのログファイル名をタイトルバーに表示するようにした
- 数式を左寄せ表示するように修正
- 発声時のエラー処理を修正
- ログに記録した以前のチャットに移動する機能を追加(prev、next)
- 新しいチャットを開始している機能を追加(new)
- チャットを削除する機能を追加
- TeX形式の数式を表示する機能を追加
- ログファイルの形式を変更
- チャットリクエスト時のタイムアウト処理の追加
- その他バグ修正など
- ソース添付のsettings.jsonを変更。プログラムに変更なし。
- ファーストリリース