Skip to content
Copied!
published on 2026-09-12

1. GPTsの発想をコマンドラインへ

TranslateGemmaから始まった自動化

最初に作成したtranslateスクリプトは,選択したテキストまたはクリップボードの内容をOllamaへ送り,TranslateGemmaの結果を受け取るためのものでした。定型プロンプト,言語方向の判定,API呼び出しをひとつのコマンドにまとめたことで,翻訳のたびに同じ指示を入力する必要がなくなりました。

この仕組みを使い続けると,翻訳以外にも同じ操作が必要だと気づきます。文章の推敲,要約,平易な説明,定型的な文体への変換などは,入力と指示が異なるだけで,処理の流れは共通しています。用途ごとにBashスクリプトを増やす方法では,API呼び出しやモデル設定も重複します。プロバイダーを変更するたびに複数のスクリプトを修正する構成にもなります。

そこで,入力処理,プロンプト構築,API接続,出力処理を共通化し,用途固有の指示だけを設定ファイルへ移しました。これがmyllm-cliの出発点です。

GPTsとの対応

発想の原型はChatGPTのGPTsです。GPTsでは,特定の用途に対する指示をあらかじめ設定し,目的に合わせたChatGPTを呼び出せます。myllm-cliでは,同じ考え方を名前付きのタスクとして表現します。たとえば,文章を整える指示をpolishとして登録すると,毎回その指示を貼り付ける代わりに,次のように実行できます。

bash
echo "下書きの文章" | myllm polish

両者の対応は次のように整理できます。

観点GPTsmyllm-cli
用途別の指示GPTごとに設定[tasks.<id>]ごとに設定
呼び出し方ChatGPT上でGPTを選択myllm <task>を実行
主な操作形態対話1回の入力と出力
モデルの接続先ChatGPTOllama,OpenAI API,Anthropic API
他のコマンドとの連携ChatGPTの画面内stdinとstdoutによるパイプ
設定の保存先ChatGPTローカルのconfig.toml

ただし,myllm-cliはGPTsをそのまま再実装するものではありません。会話履歴,アップロードした知識,Web検索,外部ツールやActionsに相当する機能は持たず,ひとつの入力をひとつのタスクで処理することに範囲を限定しています。この単純さにより,エディター,シェルスクリプト,パイプラインなど,コマンドラインを呼び出せる場所から同じタスクを利用できます。

一回の処理

通常のタスクでは,設定した指示の後に空行と入力テキストを連結し,単一のユーザーメッセージとしてプロバイダーへ送ります。処理の全体像は次のとおりです。

text
引数・stdin・クリップボード


      myllm <task>

            ├── config.tomlから指示を取得
            ├── プロバイダーとモデルを決定

  Ollama・OpenAI・Anthropic


      stdoutへ逐次出力

入力と出力をUnixの標準ストリームに置くことで,myllm-cli自身は特定のエディターやランチャーに依存しません。macOSではクリップボードと通知を追加で利用できますが,コア部分はBash,curljqで構成されており,LinuxやWSL2でも同じタスクを実行できます。

三つの名前

本プロジェクトでは,次の名前を使い分けています。

  • myllm-cli
    GitHubリポジトリとCLI版の名称です。
  • myllm
    インストールされるコマンドと,中核となるBashスクリプトの名称です。
  • My LLM
    ツール群全体の名称です。CLIの機能を利用するmacOSメニューバーアプリの名称でもあります。

以下ではCLI版をmyllm-cli,実行するコマンドをmyllmと表記します。