🙆♀️
shell_gpt(OpenAI APIのCLI)の紹介と最強コンバータの作成
概要
shell_gpt はOpenAIのChatGPTのベースとなっているtext-davinci-003のAPIを使ったCLIです。
機能
基本的な機能は下記の2つでシンプルですが非常に有用です。
- シェルコマンドの作成と実行
- 単純な問い合わせ
単純な問い合わせの例です。
ChatGPTのように質問など解答してくれます。(なぜか日本語がうまく出力されません)
sgpt "grepコマンドについて説明して"
# The grep command is a command-line utility used for searching plain-text data for lines that match a given pattern. It was originally developed for Unix-like systems, for which it remains an official standard, but its use has since expanded to Find Any File on Windows, OS X, and other operating systems. The grep command works by searching its input for lines that match a given pattern, and then prints those matching lines to the standard output.
シェルコマンドを作成する例
かなり複雑なコマンドも作ってくれますし、自分では気づかないような便利なコマンドを作ってくれることもあります。
sgpt --shell "srcディレクトリから再帰的に'hoge'か'foo'を含むテキストを探す"
# grep -r 'hoge\|foo' src/
応用して最強コンバーターを作る
下記の記事で解説しているのですが、ChatGPTやOpenAIのAPIは最強のテキストコンバーターとして機能します。
shell_gptのおかげで、コマンドをでそれを実現するのが簡単になりましたので、CLIの最強コンバーターを作ってみます。
下記のシェル関数を定義して, .bashrc もしくは .zshrc などに入れておきます。
function to {
sgpt "convert to $1: $(cat $2)"
}
完了です。
Java to Ruby
# Java to Ruby
to ruby A.java
変換前
class A {
private String aField1;
String f() {
return "A";
}
}
class B {
private String bField1;
private A a;
String callA() {
return this.a.f();
}
}
class C {
private B b;
String call() {
return this.b.callA();
}
}
変換後
class A
attr_accessor :aField1
def f
return "A"
end
end
class B
attr_accessor :bField1
attr_accessor :a
def callA
return self.a.f
end
end
class C
attr_accessor :b
def call
return self.b.callA
en
Json to Toml
cat a.json
# {"foo": 1, "bar": {"hoge": "piyo"}}
to toml a.json
# foo = 1
# [bar]
# hoge = "piyo"
MathML to LaTeX
cat sample.mathml
# <math>
# <mfrac>
# <mrow>
# <mi>a</mi>
# <mo>+</mo>
# <mn>1</mn>
# </mrow>
# <mi>b</mi>
# </mfrac>
# </math>
to latex sample.mathml
# \frac{a + 1}{b}
感想
sgptのおかげではありますが、たった三行でとんでもないコマンドができてしまいました。
OpenAIのAPIは非常に小さい労力ですごいものを作り出せるポテンシャルがあります。
2023年はとんでもない量のChatGPTアプリケーションが生まれるでしょう。楽しみで仕方ありません。
Discussion