Copyright (c) 2024-2025 led-mirage
この追加資料では、より詳しい情報を記載しているのだ。
チャットの部分はOpenAIのAIを使用しているので、OpenAIのアカウントとAPIの利用登録(課金およびAPIキーの作成)が必要なのだ。
アカウントを作成すると、作ってから3ヵ月間有効な無料枠($18)があるようなので、それを使ってもいいのだ。ボクの場合は利用開始から3ヵ月以上経ってしまっていたので、無料枠は利用できなくて、仕方ないから$10課金したのだ。
APIキーの作成は特に難しくないのだ。OpenAI APIの設定画面に入って、左側のAPI Keys
というメニューから新しいAPIキーを作成すればいいのだ。作成するときに表示されるAPIキーは、作成後には2度と表示できないからメモ帳などにコピペして保存しておくといいのだ。このキーはあとから設定に必要になるのだ。
OpenAI … https://platform.openai.com/
バージョン0.7.0からGoogle Gemini APIにも対応したので、OpenAIの代わりにGoogle Gemini APIを使用することもできるのだ。
現時点でGoogle Gemini APIには無料プランが設定されているので、OpenAIのAPIよりも気軽に利用することができるのだ。Google Gemini APIを使用したい場合は、専用の資料を用意したので、それを参照して欲しいのだ。
バージョン1.4.0からAnthropic API(Claudeシリーズ)にも対応したのだ。APIを利用するにはAnthropic ConsoleのアカウントとAPIの利用登録(課金およびAPIキーの作成)が必要なのだ。
設定ファイルは2つあるのだ。ひとつはシステムの設定が書かれているapp_config.json。もうひとつはチャットするキャラクターの情報が書かれているsettings.jsonなのだ。
チャットのログファイルを保存するフォルダを指定するのだ。この値が空文字の場合はログは保存されないのだ。
新規チャットを開始したときに使われるキャラクター設定ファイルを指定するのだ。GUIから変更できるのだ。
ウィンドウの幅の初期値なのだ。
ウィンドウの高さの初期値なのだ。
Chat APIのタイムアウト値を秒数で指定するのだ。
Gemini用の安全性フィルタ設定なのだ。ハラスメントに関するしきい値を設定できるのだ。詳しくはこちらの資料を参照して欲しいのだ。
Gemini用の安全性フィルタ設定なのだ。ヘイトスピーチに関するしきい値を設定できるのだ。詳しくはこちらの資料を参照して欲しいのだ。
Gemini用の安全性フィルタ設定なのだ。性表現に関するしきい値を設定できるのだ。詳しくはこちらの資料を参照して欲しいのだ。
Gemini用の安全性フィルタ設定なのだ。危険な内容に関するしきい値を設定できるのだ。詳しくはこちらの資料を参照して欲しいのだ。
settings.jsonはsettingsフォルダの中に格納されているのだ。声のキャラクターを変えたいときなどは、このファイルを編集するといいのだ。また、このファイルをコピーして別の名前を付けて保存することで、複数の設定を保存しておくことができるのだ。設定を切り替えるには、ウィンドウの設定ボタンを押すといいのだ。
ウィンドウの左上に表示されるタイトルなのだ。
設定切替画面で表示される説明文なのだ。どんな設定なのかを書いておくといいのだ。
新しくチャットを始めたときに画面に表示されるメッセージなのだ。
新しくチャットを始めたときに画面に表示されるメッセージなのだ。welcome_titleの下に表示されるのだ。
設定のグループ分けに使用するのだ。設定ファイルが多くなった時に便利なのだ。
あなたの名前の設定なのだ。
あなたの名前の色の設定なのだ。
発言者名の横に表示するアイコンの設定なのだ。PNG形式の画像ファイルを指定できるのだ。空文字にするとアイコンは表示されないのだ。
例:chat_icons/user_black.png
chat_iconsフォルダの中にいくつかアイコン用の画像を用意してあるのだ。
チャットアシスタントの名前の設定なのだ。
チャットアシスタントの名前の色の設定なのだ。
発言者名の横に表示するアイコンの設定なのだ。PNG形式の画像ファイルを指定できるのだ。空文字にするとアイコンは表示されないのだ。
例:chat_icons/zunda_lime.png
chat_iconsフォルダの中にいくつかアイコン用の画像を用意してあるのだ。
使用するAPIの設定なのだ。設定できる値はOpenAI
とAzureOpenAI
とGemini
とClaude
の4つなのだ。
使用するAPIによって設定しないといけない環境変数が異なるから注意して欲しいのだ。
OpenAI
変数名 | 値 |
---|---|
OPENAI_API_KEY | OpenAIで取得したAPIキー |
AzureOpenAI
変数名 | 値 |
---|---|
AZURE_OPENAI_ENDPOINT | Azure OpenAI Serviceの通信先(エンドポイント) |
AZURE_OPENAI_API_KEY | Azureで取得したAPIキー |
Gemini
変数名 | 値 |
---|---|
GEMINI_API_KEY | Googleで取得したAPIキー |
Claude
変数名 | 値 |
---|---|
ANTHROPIC_API_KEY | Anthropicで取得したAPIキー |
使用するAIのモデル名を指定するのだ。使用するAPIによって指定できるモデル名が異なるので注意して欲しいのだ。
OpenAI
既定はリーズナブルなGTP-4o miniを使用しているのだ。もっと賢くしたい場合はGPT-4o系も使えるけれど、その分利用量が上がるので注意するのだ。使用できるモデルの一覧と利用料金は以下のリンクで確認できるのだ。
モデルの一覧 … https://platform.openai.com/docs/models
利用料金 … https://openai.com/pricing#language-models
o1、o1-miniにも対応しているけれど、これらのモデルはsystem
メッセージが使えないので、AIのキャラ付けができないので注意して欲しいのだ(settings.jsonのinstruction
は無効になるのだ)。
AzureOpenAI
Azure上でモデルをデプロイする際につけてモデル名を指定するのだ。
Gemini
Geminiでは以下のモデル名を指定できるのだ。詳しくは、こちらの資料を参照して欲しいのだ。
- gemini-1.0-pro-latest
- gemini-1.5-flash-latest
- gemini-1.5-pro-latest
Claude
Anthropicの場合、2024年12月29日時点で、以下のモデルを指定できるのだ。
- Claude 3.5 Sonnet 2024-10-22
- Claude 3.5 Sonnet 2024-06-20
- Claude 3.5 Haiku
- Claude 3 Opus
- Claude 3 Sonnet
- Claude 3 Haiku
AIのキャラづけの設定なのだ。ここで、AIの台詞をずんだもんっぽくするようお願いしているのだ。ここを変更することで、ずんだもん以外のキャラクターっぽい回答を生成することも可能なのだ。
何らかの原因でAIが回答できなかった場合に表示するセリフを設定するのだ。無理なお願いをするとAIが答えてくれない場合があるから気を付けるといいのだ。
AIに送信する過去の会話の履歴数を設定するのだ。この値が大きいほど前の回答、質問を考慮した回答をAIが生成するようになって、会話のつながりがよくなるのだ。ただ、その分利用料金も増えるので注意が必要なのだ。
この設定がある理由を考えればわかるけど、OpenAIのAIは過去の会話を覚えていないのだ。質問をするたびに、過去の会話もAIに送信することで、AIは会話のつながりを知ることができるのだ。ただ利用料金は送信するデータ量が増えるとその分加算されるので、バランスをとることが大事なのだ。
claudeの最大出力トークン数を指定するのだ。この値が大きいほどclaudeは長い回答を生成できるようになるのだよ。
claude 3.7 SonnetのExtended Thinkingモードの有効・無効を設定するのだ。この値をtrueにするとより深く考えるようになるけど、出力時間も長くなるから注意して欲しいのだよ。
claude 3.7 SonnetのExtended Thinkingモードが有効のときの予算トークン数を指定するのだ。この値が大きいほどClaudeは深く考えるようになるのだ。ただ大きくすると出費も増えるから注意して欲しいのだ。この値は1024以上で、max_tokensよりも小さい値を指定する必要があるのだ。
このアプリの通信先は以下の通りなのだ。
chat/apiにOpenAI
を指定した場合は、チャットの回答を取得するために OpenAIのサーバーと通信を行うのだ。通信方法は、OpenAIのライブラリを使用しているのだ。
chat/apiにAzureOpenAI
を指定した場合は、チャットの回答を取得するために Microsoft Azure OpenAI Serviceと通信を行うのだ。通信方法は、OpenAIのライブラリを使用しているのだ。
chat/apiにGemini
を指定した場合は、チャットの回答を取得するために Googleのサーバーと通信を行うのだ。通信方法は、Googleのライブラリを使用しているのだ。
chat/apiにClaude
を指定した場合は、チャットの回答を取得するために Anthropicのサーバーと通信を行うのだ。通信方法は、Anthropicのライブラリを使用しているのだ。
このアプリではGUIをpywebviewで作ってるんだけど、UI(HTML)とバックエンドのPythonプログラムとの連携をとるのにTCPでリスニングしているみたい。詳しいことはわからないのだ。
システムの設定を記載したファイル。初回起動時に自動的に作成されるのだ。
チャットするキャラクターの情報を記載したファイル。これも、初回起動時に自動的に作成されるのだ。
チャットの内容を記載したファイル。ファイル名の日時はチャットを開始した日時なのだ。