はじめに
1つのインプットから、複数の答えが欲しい時、従来だと
(1) 複数のサイトをググる
(2) 各サイトの調べた結果をマージ
といった手順になるでしょうか。少し面倒ですね。
AIは、こういった場合に「色んな結果を収集→フィルタ→良い感じにマージ」ってしてくれるのも得意かなと思って、「選択した英単語の類義語を教えてくれるミニアプリ」を作ってみました。(というのは建前で、本当はMacのショートカットアプリを触ってみたくなったので、適当にテーマ決めて作ってみたものです)
完成形
Webサイトでも何でも良いのですが、意味を調べたい英単語を選択します。
今回は"meeting"の意味と、その類義語を調べてみます。
英単語を選択後、右クリック→サービス→英単語の意味を類義語と併せて調べる(今回作ったアプリがこれです)
をクリックします。
すると、AIが教えてくれた英単語の意味と複数の類義語が表示される、といったアプリになります。
どうやって作ったか
Macには、「ショートカット」というアプリが標準でインストールされており、これを使うと、上記のような右クリック→サービスに登録できるアプリを自分で作れたりします。
今回はこのショートカットと、ショートカットから呼び出すちょっとしたシェルスクリプトで作ってみました。
まずはショートカット
長くなるので詳細は省きますが、まずはショートカットから。
ショートカットでは「クイックアクション」というものが作れます。
ここで作ったものが、右クリック→サービスから呼び出せるようになります。
画面上の+アイコンから新規作成すると、以下のようにローコードのブロックエディタのような作成画面が開かれます。
今回は上記のように作ってみました。
(1) マウスで選択したテキストを受け取り
(2) そのテキストを入力パラメータとしてシェルスクリプトを呼び出し(このシェルスクリプトは後述する自作のものです)
(3) シェルスクリプト内でOpenAI APIを呼び出し(後述します)
(4) レスポンスのJSONを良い感じに整形して
(5) 最後に表示
といった流れになってます。
今回ショートカット初めて触ってみたので、もっとシンプルに作れそうですが、それでも普段書いてる何十行もあるソースコードと比べるとかなり直感的にシンプルに作れて楽でした。
次にシェルスクリプト
こんな感じで作りました。ほぼOpenAI APIを呼び出してるだけです。
API_KEY
のところに、自分のOpenAIのAPI Keyを設定します。(今回はレガシーのキーを使ってます)
最後の置換は突貫のエスケープです。
#!/usr/bin/env bash # OpenAI API Key API_KEY="XXXXXXXXXXXXXX" # read read input # PROMPT prompt="英単語「$input」の日本語訳を教えて。また、似た意味の英単語も、日本語訳と一緒に3つ教えて。" # call OpenAI API res=$(curl -s https://api.openai.com/v1/chat/completions \ -H "Content-Type: application/json" \ -H "Authorization: Bearer $API_KEY" \ -d "{ \"model\": \"gpt-3.5-turbo\", \"messages\": [{\"role\": \"user\", \"content\": \"$prompt\"}], \"temperature\": 0.7 }") printf "${res//\\n/=}"
おわりに
今回これやろうと思ったのも、ChatGPTのMac版アプリがショートカットに対応してるという噂を聞いたからですね。
ただ同時に、ChatGPTのMac版アプリがintelチップに対応していないという噂も聞きました(未検証)。
私はAppleシリコンまだ持ってないので、今回初めてのショートカットを触ってみつつ、シェルスクリプトでも一応いけるな、ということでやってみました。
今回作ったアプリは正直辞書アプリ使えよってものですが、アイデア次第で色々便利ツール自作できそうで面白かったです。