Console Chat Gpt について
console-chat-gpt は、OpenAI、Anthropic、Google AI、Ollama など複数のモデルとコマンドラインで対話する Python 製のクライアントです。OpenAI SDK 互換のエンドポイントにも対応し、設定ファイルから MCP サーバーを読み込めます。README では非推奨とされ、後継として tellm が案内されています。
主な機能
- 01OpenAI SDK 互換エンドポイントによる複数プロバイダー対応
- 02Ollama によるローカルモデルの実行
- 03プロンプトごとにモデルを選ぶ AI Managed モード
- 04mcp_config.json からの MCP サーバー読み込み
- 05会話履歴の保存と再開
活用シーン
- 01ターミナルで異なるプロバイダーの回答を比較する
- 02コマンドラインからローカルの Ollama モデルと対話する
- 03既存の MCP サーバーをコマンドラインでのチャットに使う
MCP 対応
本プロジェクトは MCP クライアントとして動作し、mcp_config.json に定義された MCP サーバーへチャットセッション中に接続します。
詳細
非推奨/後継: 新規インストールには、代わりに tellm をご利用ください。Claude、GPT/Grok、Gemini、互換エンドポイント、ローカルの Ollama に対応した、小規模な Rust 製 Telegram アシスタントです。ルームごとのモデル選択と、キーチェーンで保護されたシークレットに対応しています。
console-chat-gpt v6
AI モデルとのチャットに最適な CLI コンパニオン
OpenAI、MistralAI、Anthropic、xAI、Google AI、その他の OpenAI SDK 互換 LLM プロバイダー(DeepSeek、Alibaba、Inception、Moonshot AI、OpenRouter など)、または Ollama ホストモデルと、コマンドラインからシームレスにやり取りできます。
効率的で手軽なチャット体験をお楽しみください。
目次
免責事項: このコードの意図および実装は、OpenAI、MistralAI、Anthropic、xAI、Google AI、その他の LLM 研究機関または関連組織とは一切関係ありません。いかなる形でも、OpenAI、MistralAI、Anthropic、xAI、Google、その他の LLM 研究機関またはその子会社との提携や関係はありません。
機能
- :new: Telegram ボットを介した会話に対応しており、利用可能な場合は Bot API 10.1 のリッチメッセージ形式も使用できます。作成方法はこちらをご覧ください:BotFather から「Hello World」まで :new:
- :star: Responses API による OpenAI の画像生成。 :star:
- :star: OpenAI Responses API に対応しています。 :star:
- :star: OpenAI SDK 互換のものなら何でも実行できます。関連する
model_nameとbase_urlを含むモデル構造をconfig.tomlファイルに追加するだけです。 :star: - :star: Ollama でホストされているモデルをローカルで実行できます。Ollama をインストールし、選択したモデルをあらかじめダウンロードしておく必要があります :star:
- :star: Anthropic のプロンプトキャッシュ に完全対応しています :star:
- :star: Model Context Protocol(MCP) に対応しています!すでに MCP サーバーを使用している場合は、
claude_desktop_config.jsonをルートディレクトリにコピーしてmcp_config.jsonに名前を変更するだけで、あらゆるモデルで使い始められます! :star: - 統合されたチャット補完関数は、あらゆるアプリケーションでプロバイダーをまたいだ API をシームレスに利用できるよう、独立したライブラリとして分離されています。ソースコードは Python と TypeScript で利用できます。
- 対応するすべてのモデルでストリーミングを利用できます。デフォルトでは無効ですが、
settingsメニューで有効にできます。 - OpenAI Assistants Beta に対応しています。
- AI 管理モード:タスクの複雑さに基づいて、使用するモデルを自動的に判断します。
- 設定ファイル:
config.tomlファイルを使ってアプリの設定を簡単にカスタマイズし、動作を完全に制御できます。アプリ内ではsettingsコマンドでも設定できます。 - ロールの選択:会話における AI の役割を定義でき、よりパーソナライズされた対話的な体験が得られます。
- 温度の制御:生成される応答の温度を調整し、会話の創造性やランダム性を制御できます。
- コマンド処理:入力したさまざまなコマンドにアプリが応答するため、簡単かつ直感的に操作できます。
- 画像入力:選択したモデルで利用できます。
- エラー処理:問題を理解して解決しやすい、明確で役立つエラーメッセージを表示します。
- 会話履歴:過去のやり取りを確認し、会話を保存して後から参照できます。これにより、文脈と一貫性を保てます。
- 安全な終了:中断を適切に処理し、進捗の損失を防ぐため、終了前に会話を保存します。
- 素晴らしいチーム:機能を積極的に追加し、アイデアを歓迎しながらバグを修正しています。
全体として、このアプリは、パーソナライズ性、制御性、利便性を高める機能を備え、使いやすくカスタマイズ可能な体験を提供することに重点を置いています。
インストールと使用方法
このスクリプトは Linux と MacOS のターミナルで問題なく動作します。Windows では WSL の使用をおすすめします。
-
リポジトリをクローンします。
git clone https://github.com/amidabuddha/console-chat-gpt.git -
フォルダーに移動します。
cd console-chat-gpt -
必要な依存関係をインストールします。
python3 -m pip install -r requirements.txt -
選択した LLM に応じて、OpenAI、MistralAI、Anthropic、xAI、Google AI Studio、または該当するプラットフォームから API キーを取得します。
-
初回実行時に
config.toml.sampleが自動的にconfig.tomlにコピーされ、API キーの入力を求められます。アプリ内のsettingsメニューから変更できないその他のデフォルト値は、必要に応じて変更してください。 -
実行ファイルを実行します。
python3 main.py便利なヒント: どこからでも実行できるように、実行ファイルのエイリアスを作成してください。
-
チャット内で
helpコマンドを使い、利用可能なオプションを確認します。 -
お楽しみください。
config.toml で設定可能なオプション
| [chat.defaults] | チャットの補完/応答を生成するための主要なプロパティです。 |
|---|---|
| temperature | 使用するサンプリング温度です。範囲は 0 から 2 です。0.8 のような高い値では出力がよりランダムになり、0.2 のような低い値ではより焦点が絞られます。[chat.features] の adjust_temperature が true の場合、新しいチャットセッションごとに設定できます。 |
| system_role | モデルのコンテキストに挿入されるシステム(または開発者)メッセージです。[chat.roles] セクションに記載されているものを指定してください。[chat.features] の role_selector が true の場合、新しいチャットセッションごとに設定できます。 |
| model | チャットの補完/応答の生成に使用するモデル ID です。gpt-4o や o3 などがあります。関連するパラメーターとともに、[chat.models] セクションに記載されている必要があります。[chat.features] の model_selector が true の場合、新しいチャットセッションごとに設定できます。 |
| [chat.managed] | AI Managed モード専用の設定です。チャットセッション内からは編集できません。 |
|---|---|
| assistant | プロンプトを評価し、以下で設定された 4 つのモデルの中から最適なものを選んで処理させるための、優先モデルです。関連するパラメーターとともに、[chat.models] セクションに記載されている必要があります。 |
| assistant_role | 評価モデルに対するカスタム指示です。何をしているか正確に理解している場合に限り、変更してください! |
| assistant_generalist | 優先する汎用モデルです。通常は、あらゆる種類のクエリで最もよく使用するモデルです。関連するパラメーターとともに、[chat.models] セクションに記載されている必要があります。 |
| assistant_fast | 正確さよりも速度を優先する場合に使用するモデルです。関連するパラメーターとともに、[chat.models] セクションに記載されている必要があります。 |
| assistant_thinker | 複雑なタスクに対応する推論モデルです。関連するパラメーターとともに、[chat.models] セクションに記載されている必要があります。 |
| assistant_coder | コーディングや数学の質問への対応に優先して使用するモデルです。関連するパラメーターとともに、[chat.models] セクションに記載されている必要があります。 |
| prompt | AI Managed mode を頻繁に使用する場合、これを false に変更すると、Y/N プロンプトを無効にできます。 |
| [chat.features] | チャットアプリケーションの設定可能なオプションです。一部のオプションは、チャットセッション中に settings コマンドから利用できます。 |
| - | - |
| model_selector | config.toml の [chat.models] セクションで利用できるモデルの選択リストです。true の場合、新しいチャットセッションの開始時にこのリストを変更できます。 |
| adjust_temperature | 各チャットセッションの温度を変更するためのプロンプトです。true の場合、新しいチャットセッションの開始時に温度の値を変更できます。 |
| role_selector | config.toml の [chat.roles] セクションで利用できるロールの選択リストです。true の場合、新しいチャットセッションの開始時にこのリストを変更できます。 |
| save_chat_on_exit | true の場合、チャットで exit コマンドを実行すると、チャットセッションを自動的に保存します。 |
| continue_chat | true の場合、新しいセッションで再開できる、以前に保存したチャットセッションのリストを表示します。このリストは、チャットセッション中に chats コマンドから変更できます。 |
| アプリケーションのロギングです。未実装です。 | |
| disable_intro_help_message | チャットの初期化時に、help で利用できるすべてのチャットコマンドを表示します。新規ユーザー向けの機能で、false に設定すると無効にできます。 |
| assistant_mode | チャットの初期化時に、Open AI Assistants API を選択肢として有効にします。 |
| ai_managed | AI Managed mode を有効にすると、プロンプトに応じて最適なモデルをモデルが自動的に選択できるようになります。詳しい設定は以下を参照してください。 |
| streaming | true に設定すると、モデルの応答データがターミナルクライアントにストリーミングされます。Telegram モードでは常に、完了した応答が送信されます。 |
| mcp_client | false に設定すると、不要な場合に、各チャットで MCP サーバーがデフォルトで初期化されないようにします。 |
| [chat.telegram] | 会話で Telegram UI を有効にします。 |
|---|---|
| enabled | true に設定すると、ターミナルのチャット UI の代わりに Telegram ボットのポーリングループを開始します。 |
| bot_token | BotFather から取得した Telegram ボットのトークンです。形式は <digits>:<token> です。 |
| allowed_chat_ids | ボットの使用を許可するチャット ID のリストです。このリストが空で、モデルルームのマッピング(telegram_chat_id/telegram_chat_ids)も設定されていない場合、ペアリングモードが有効になります。ボットはターミナルに一度限りのコードを表示し、/pair <code> を送信したチャットが登録され、ここに保存されます。それ以外のすべてのチャットは拒否されます。コードは 10 分ごとに更新され、誤ったコードを繰り返し入力すると、そのチャットは一時的にロックアウトされます。 |
| admin_chat_ids | /shutdown などの管理者専用コマンドを実行できるチャット ID のリストです。 |
| debug_context | true の場合、コンテキストの問題をトラブルシューティングするため、Telegram セッション/メモリのデバッグスナップショットをターミナルログに出力します。 |
| max_concurrent_updates | 並列処理する Telegram アップデートの最大数です。省略した場合のデフォルトは 8 です。異なるチャットは並行して処理されますが、各チャット内の処理順序は厳密に保たれ、互いに分離されます。 |
Bot API が対応している場合、Telegram の返信は sendRichMessage を通じて送信されるため、モデルの Markdown を、見出し、リスト、表、引用、数式、詳細ブロックなどの構造化されたリッチテキストとして表示できます。リッチメッセージを配信できない場合や、不正なリッチブロックを Telegram が拒否した場合、ボットは従来の sendMessage を使用する方式にフォールバックします。
モデルごとの Telegram ルームマッピングは、各モデルブロック内で次のように設定することもできます。
telegram_chat_id = <chat_id>telegram_chat_ids = [<chat_id_1>, <chat_id_2>]
チャットルームをモデルにマッピングすると、そのルームではそのモデルが固定され(モデル切り替えコマンドは無効になります)が、その他のコマンド(/mode、/role、/reasoning、/websearch、/webfetch など)は引き続き利用できます。
OpenAI SDK がサポートするモデルを追加する
config.toml ファイルの末尾にエントリーを追加します。
次の例の構成を使用してください。
[chat.models.{{model name that makes sense to you}}]
api_key = "YOUR_API_KEY"
base_url = {{the custom base URL, for example "https://api.deepseek.com/v1"}}
model_input_pricing_per_1k = 0.015 (currently the price is not calculated but you may adjust this for your reference)
model_max_tokens = 32000 (the suported context window of the selected model)
model_name = {{model name exactly as specified in the relevant API reference, for example "deepseek-reasoner"}}
model_output_pricing_per_1k = 0.075 (currently the price is not calculated but you may adjust this for your reference)
reasoning_effort = (the desired value if supported, such as "medium", otherwise false)
例
-
プロンプト例:

-
Markdown ビジュアライゼーション例:

-
設定とヘルプ:

その他の例については、例のページをご覧ください。
貢献
貢献を歓迎します。バグを見つけたり、機能リクエストがあったり、改善に貢献したい場合は、Issue を開くか、プルリクエストを送信してください。
コメント
AI アプリケーションが外部のツールやデータソースに統一的な方法で接続するためのオープンなプロトコルです。クライアントはモデルとの対話を担い、MCP サーバーはツール・リソース・プロンプトテンプレートを提供します。標準メッセージでやり取りするため、1 つのサーバーを複数のクライアントで再利用できます。