見出し画像

【bash】LLMを利用したオリジナルコマンド【Linux】

割引あり

はじめに

LLMはWebインターフェースで利用する事が一般的ですが、ローカルLLMをシェルと組み合わせて利用するとさらに便利になります。

もちろん開発者や技術者であれば、Python言語で直接利用する方法もありますが、ollamaを利用する事でプログラミングに精通しない人でも簡単なコマンドを作る事ができます。

インストールは、Windowsの場合は「OllamaSetup.exe」実行、Linuxの場合は「curl -fsSL https://ollama.com/install.sh | sh」とするのが一般的です。

簡単なコマンド

例えば、ollamaコマンドがインストールされていれば

ollama run gemma2 <<< "何か冗談を言って。"

どうしてクジラはいつも笑っているの?
> 彼は、みんなが「ホエール・カム!」と叫ぶのが好きだから!
他に聞きたいジョークがあれば教えてね! 😄

by Gemma2

と出力を得られます。さらに、.bashrc等にalias登録しておくと

alias jodan="ollama run gemma2 <<< \"何か冗談を言って。\""

$ jodan
どうしてパンダは夜に笑うの?
だって、その時は「クマ」で! 🐼😂

もう一つ?

by Gemma2

と「jodan」コマンドを作成できます。

基本的に、この手法で作成したのが下記事です。sd-promptというコマンドで、簡単に画像生成用のプロンプトを作成できます。

$ sd-prompt "美女の画像"

Here's a possible Stable Diffusion prompt:

"An elegant woman in her mid-20s with long, dark hair and piercing brown eyes, wearing a traditional kimono with intricate designs and vibrant colors, standing in front of a serene garden surrounded by lush greenery and delicate cherry blossom trees."

by 脱獄llama3

プロンプト追従性が良いFlux.1を利用すると、次の結果を得られます。

Flux.1(dev)で生成
$ sd-prompt "ジャンプする猫の画像"
A cat jumping in mid-air, with its paws spread wide apart to showcase the height of its jump, while its tail forms a perfect spiral above its head. (flux.1-dev)

少し機能を入れたコマンド

次に、少し工夫したコマンドを作ってみます。例として、翻訳コマンドを作成します。

主機能は翻訳ですが、語学勉強も兼ねて、単語の意味も同時に表示するものとします。

Environmental protection is crucial for the survival of our planet. Climate change, pollution, and deforestation are just a few of the major environmental problems facing the world today. We must take action to reduce our carbon footprint and protect our natural resources.

翻訳すべき英文

(英語に限らず)文章をクリップボードにコピーし、指定言語へ翻訳します。コマンド名はllm-translateとします。

$ llm-translate ja

原文:Environmental protection is crucial for the survival of our planet. Climate change, pollution, and deforestation are just a few of the major environmental problems facing the world today. We must take action to reduce our carbon footprint and protect our natural resources.
---
Here is the translation:

「環境保護は我々の惑星の生存に不可欠である。気候変動、汚染、森林伐採などが世界で直面している主要な環境問題の一部である。我々は行動を起こし、炭素足跡を減らし、自然資源を守らなければならない。」

Here are the abstracted words with their translations:

- Environmental protection: 環境保護
+ 環境を保全・改善するための活動や政策のこと。環境を汚染から守り、自然のバランスを維持するために行う措置。
- Climate change: 気候変動
+ 地球の気温や天候が長期的に変化する現象。主な原因は人為的活動による温室効果ガスの増加とされる。
- Pollution: 汚染
+ 環境中の物質が適切に処理されず、自然に悪影響を及ぼすこと。水や空気、大地などが有害な物質で汚されること。
- Deforestation: 森林伐採
+ 森林を切り倒し、破壊すること。主に森林の木材を伐採するために行われる。
- Carbon footprint: 炭素足跡
+ 人間活動が原因で大気中に放出される温室効果ガス(二酸化炭素など)の量やその影響。日常生活や経済活動が温暖化に与える印象を指す。
- Natural resources: 自然資源
+ 地球の自然環境から得られる資源のこと。水、空気、森林、鉱物など。

llm-translateの出力

コマンドの引数に翻訳先の言語として入力します。LLM側が対応している言語を入力・出力共に利用する事ができます。フランス語やドイツ語などのメジャーな言語であれば、実用的に利用できるはずです。

翻訳コマンドのコード例

llm-translate コマンド例
  • llm_model変数に「ollama list」で取得できるモデル名を入力します。

  • WSLでネイティブのWindows版ollamaを利用する場合は、ollamaを「/mnt/c/Users/usr01/AppData/Local/Programs/Ollama/ollama.exe」等に差し替えてください。

  • 引数にjaやenの省略形を利用できるようにしています。Frenchなどの登録されていない文字列の場合はそのままlang変数になります。

  • 「llm-tranlate」ファイル名で「/usr/local/bin」等のパスの通ったディレクトリに保存し、実行属性「sudo chmod +x /usr/local/bin/llm-translate」を付与してください。

  • プロンプト欄(EOF文字列で囲まれた部分)を変更する事で、様々な事ができると思います。

  • basenameやsedはデフォルトでインストールされていると思いますが、クリップボードを扱うxclipがない場合は「sudo apt install xclip」として導入してください。

付録

上記llm-translateコマンド例のスクリプトを記事最下部の有料欄でダウンロードできます。記事支援いただける場合はよろしくお願いします。

関連記事の【PR】

ここから先は

0字 / 1ファイル
この記事のみ ¥ 200〜

この記事が気に入ったらサポートをしてみませんか?