LoginSignup
3
2

OpenAIのChatGPTのAPIをcurlコマンドで利用する

Posted at

はじめに

API KeysでAPIキーを取得しておきます。

image.png

キーを環境変数に入れる

export OPENAI_KEY=sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx

呼び出し

呼び出す

curl https://api.openai.com/v1/chat/completions  \
  -H "Content-Type: application/json" \
  -H "Authorization: Bearer ${OPENAI_KEY}" \
  -d '{"model": "gpt-3.5-turbo","messages": [{"role": "system", "content": "語尾 ににゃーと付けてください"}, {"role": "user", "content": "どうやってAPIで呼び出しを行ったらいいですか?"}]}'

プロンプト部分を改行する

プロンプトにフォーカスしてコマンドラインからAPIを呼ぶ場合、各行をシングルクォートで括り、バックスラッシュでつなげる。
行頭のスペースは削る。

curl https://api.openai.com/v1/chat/completions -H "Content-Type: application/json" -H "Authorization: Bearer ${OPENAI_KEY}" \
  -d '{"model": "gpt-3.5-turbo",'\
'"messages": [{"role": "system", "content": "語尾ににゃーと付けてください"},'\
'{"role": "user", "content": "どうやってAPIで呼び出しを行ったらいいですか?"}]}'

プロンプトをファイルから読み込む

ターミナルで cat > prompt.json を実行してプロンプトの内容を書き出す。終わるときは Ctrl+d

cat > prompt.md

{"model": "gpt-3.5-turbo","messages": [{"role": "system", "content": "語尾 ににゃーと付けてください"}, {"role": "user", "content": "どうやってAPIで呼び出しを行ったらいいですか?"}]}

普通にエディタで書いても良いです。

prompt.json
{
  "model": "gpt-3.5-turbo",
  "messages": [
    { "role": "system", "content": "語尾 ににゃーと付けてください" },
    {
      "role": "user",
      "content": "どうやってAPIで呼び出しを行ったらいいですか?"
    }
  ]
}

curlで読み込むときはファイル名にアットマークをつける。

curl https://api.openai.com/v1/chat/completions -H "Content-Type: application/json" -H "Authorization: Bearer ${OPENAI_KEY}" \
  -d @prompt.json

出力を書き出す

curl https://api.openai.com/v1/chat/completions -H "Content-Type: application/json" -H "Authorization: Bearer ${OPENAI_KEY}" \
  -d '{"model": "gpt-3.5-turbo", "messages": [{ "role": "user", "content": "Have a nice day ;)" }]}'\
> output.json

jqで返答の本文だけを抜き出す

jq '.choices[0].message.content' で抜き出す。

curl https://api.openai.com/v1/chat/completions -H "Content-Type: application/json" -H "Authorization: Bearer ${OPENAI_KEY}" \
  -d '{"model": "gpt-3.5-turbo", "messages": [{ "role": "user", "content": "Have a nice day ;)" }]}'\
> output.json
 | jq '.choices[0].message.content'


"Thank you! You too! Have a great day!"

jqの使い方

返答をファイルに書き出しながらjqにも流す

レスポンスが遅かったりするので、返答をファイルにも流す。

tee output.json とするとファイルに書き出しを行い、さらに標準出力にも流す。

curl -s https://api.openai.com/v1/chat/completions -H "Content-Type: application/json" -H "Authorization: Bearer ${OPENAI_KEY}" \
  -d '{"model": "gpt-3.5-turbo", "messages": [{ "role": "user", "content": "Have a nice day ;)" }]}' | tee output.json | jq '.choices[0].message.content'

上記でjqを調整する。

jq '.choices[0].message.content' < output.json
3
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
2