labunix's blog

labunixのラボUnix

bash+curlでChatGPTのAPIを叩いて翻訳してもらう

■bash+curlでChatGPTのAPIを叩いて翻訳してもらう
 アカウントを作ってAPIキーを保存する。

 https://openai.com/api/
 https://platform.openai.com/account/api-keys

■Chatについては以下を参照
 https://platform.openai.com/docs/guides/chat

■こんな感じで使う。
 このコマンド自体に面白味は特にない。どんなアウトプットが返ってくるのか雰囲気を見るくらい。

$ ./chatGPT_jp2en.sh 英語に翻訳するとどうなる? 2>/dev/null | jq -r '.["choices"]'
[
  {
    "message": {
      "role": "assistant",
      "content": "What will it be translated to in English?"
    },
    "finish_reason": "stop",
    "index": 0
  }
]

■あるいはこんな風に

$ ./chatGPT_jp2en.sh こんにちは 2>/dev/null | jq -r '.["choices"][]["message"]["content"]'
"Konnichiwa" which means "Hello" in English.

■読み取り専用にしたAPIキーと引数に渡した日本語を使うだけ

$ cat chatGPT_jp2en.sh
#!/bin/bash
DEBUG=#

if [ $# -lt 1 ];then
  echo "Usage $0 [message]"
  exit 2
fi

keyfile=~/.openai-api-key

if [ $(wc -c < ${keyfile}) -ne 52 ];then
  echo "https://platform.openai.com/account/api-keys"
  echo "API keys"
  echo "Create new secret key"
  echo "and write file to [${keyfile}]"
  exit 2
else
  chmod 400 ${keyfile}
fi

myContent="$*"

if [ "$DEBUG" != "#" ];then
  echo "$(cat ${keyfile})"
  echo "${myContent}"
  exit 0
fi

curl https://api.openai.com/v1/chat/completions \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer $(cat ${keyfile})" \
  -d @- <<EOS
  {
    "model": "gpt-3.5-turbo",
    "messages": [
       {"role": "assistant", "content": "Translate the following Japanese text to English text"},
       {"role": "user", "content": "${myContent}"}
    ]
  }
EOS

■とりあえず試行錯誤してAPIをたたいた費用

$0.01 / $5.00

■日本語訳も同様に。

$ ./chatGPT_en2jp.sh 'You are currently on the free trial. Head over to your Usage page to view how many free trial credits are remaining on your account.' \
    2>/dev/null | jq -r '.["choices"][]["message"]["content"]'
現在、無料トライアルをご利用いただいています。ご利用クレジット残高を確認するには、ご利用状況のページにアクセスしてください。

■2023/03/31追記
 githubにアップした。
 「I will ask you a question in Japanese, so please answer in Japanese.」を埋め込むだけで良かった。
 入力の「check」とcurl本体の「chatGPT」を関数にしてわかりやすくした。
 「chatGPT」を関数にしたので、jqも埋め込んだ。

github.com

$ ./chatGPT.sh GPTのバージョン345のそれぞれの機能の違いについて教えてください。
  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current
                                 Dload  Upload   Total   Spent    Left  Speed
100  1430    0  1115  100   315     44     12  0:00:26  0:00:25  0:00:01   273
はい、GPTのバージョン345の主な機能の違いは以下のとおりです。

1. GPT-3:最新のGPTで、最も高い言語処理能力を持っています。驚異的な数に及ぶパラメータを持ち、多様なタスクに対応できます。テキスト生成、自然言語理解、対話など幅広い用途に使用されます。

2. GPT-4: GPT-3よりも高速で、より大きなモデルを使用します。多様なタスクに対応する能力を向上させます。

3. GPT-5: GPT-4と比較して10倍以上のパラメータを持っており、極めて高度なテキスト生成、自然言語処理、対話システム、翻訳機能など、非常に多くの用途に対応可能です。

以上が、GPTのバージョン345の主な機能の違いです。