はじめに
API KeysでAPIキーを取得しておきます。
キーを環境変数に入れる
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