やりたいこと
最近のAPIは猫も杓子もJSONをContent-Typeとして受け付けるのがほとんどである。別にそれはいいのだがJSONは人間には優しくない。特にターミナル上でJSONを記述しようものなら死ぬ。
ターミナルで編集させる気が1ミリも感じさせないcurlコマンドの例
#!/bin/bash curl 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": "こんにちは、今日の天気を教えてください。"} ], "temperature": 0.7 }'
そこでコマンドラインからJSONを簡単に生成できるjoコマンドを使ってみる。
インストール
# Ubuntu apt install jo # MacOS brew install jo
使い方
joコマンドは、コマンドラインからJSONデータを簡単に生成するためのツールで、キーと値のペアや配列を引数として渡すことで、JSONオブジェクトを作成できる
❯ jo name=かぐや age=17
すると出力が
{"name":"かぐや","age":17}
となる。最高
# pretty出力 jo -p name=かぐや age=17 # 配列の生成 jo -a 春 夏 秋 冬 # ブール値の指定 jo is_student@true # ファイルの内容を埋め込む jo content=@file.txt # ネスト jo -p name=Alice info=$(jo age=30 city=Tokyo)
curlと組み合わせた例
jo単体で使うっていうよりcurlとパイプで組み合わせると便利
jo -p message=hello | curl -XPOST -H "Content-Type: application/json" -d @- https://httpbin.org/post
ちなみに冒頭のcurlのオプションをjoで書き直すと
jo messages=$(jo -a $(jo role=user content='こんにちは、今日の天気を教えてください。')) temperature=0.7
になる。