はじめに
こんにちは、慶應義塾大学理工学部機械工学科3年の金賢佑です!
私は東大発AIベンチャーの株式会社2WINSの元でインターンをしています!
これからの記事では自分がインターンを通して最強のAIエンジニアを目指していきます!
第四回はチャットAPIをcurlで動かしてみました!
curlとは
curl
(カール)とはコマンドライン(ターミナルとか)でURLを指定してデータの送受信をするツールです!
また今回はWeb API、特にREST APIを使ってopenaiとデータの送受信をします。
また、REST APIに含まれるHTTPメソッドは以下の4つです。
GET
:データを取得する
POST
:データを作成する
PUT
:データを更新する
DELETE
:データを消去する
今回はデータを作成するのでPOST
を使います。
curlでチャットAPIを使ってみよう
まずは以下のコマンドAPIKEYを設定します!
export OPENAI_API_KEY='ここにAPIKEYを入力してください!'
その後実際にAPIリクエストを送ってみましょう!
curl -X POST https://api.openai.com/v1/chat/completions \
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "gpt-4o",
"messages": [
{"role": "user", "content": "こんにちは、元気ですか?"}
]
}'
では重要な部分を解説していきます。
curl -X POST https://api.openai.com/v1/chat/completions \
curl
:Webリクエストを送るためのコマンドラインツールです。
-X POST
:POSTメソッドを使う!
https://api.openai.com/v1/chat/completions
:エンドポイント
\
は改行を意味します。
-H "Authorization: Bearer $OPENAI_API_KEY" \
-H
はHTTPヘッダーって言って、付属情報みたいなもの!
OPENAI_API_KEY
を使って認証
-H "Content-Type: application/json" \
送るデータはJSON形式だよ!
-d '{
"model": "gpt-4o",
"messages": [
{"role": "user", "content": "こんにちは、元気ですか?"}
]
}'
-d
はdata
の中身を書いているよ。
GPTからの回答が返ってきた!
{
"id": "chatcmpl-BJalri90pdkM5uEatpPVtEsOoLNeS",
"object": "chat.completion",
"created": 1744009279,
"model": "gpt-4o-2024-08-06",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "こんにちは!元気です、ありがとうございます。お手伝いできることがあれば教えてくださいね。",
"refusal": null,
"annotations": []
},
"logprobs": null,
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 14,
"completion_tokens": 24,
"total_tokens": 38,
"prompt_tokens_details": {
"cached_tokens": 0,
"audio_tokens": 0
},
"completion_tokens_details": {
"reasoning_tokens": 0,
"audio_tokens": 0,
"accepted_prediction_tokens": 0,
"rejected_prediction_tokens": 0
}
},
"service_tier": "default",
"system_fingerprint": "fp_898ac29719"
}
これはこの前Google colabでopenaiのライブラリを使った時と同じ結果が返ってきたね。
curlコマンド vs openai
curlでもも両方やっていることは同じ
# Google colab
import openai
openai.api_key = "YOUR_OPENAI_KEY"
response = openai.ChatCompletion.create(
model="gpt-4o",
messages=[
{"role": "user", "content": "こんにちは!"}
]
)
print(response.choices[0].message.content)
でも一回一回APIリクエストを送るcurlはかなり面倒。。。
だからこそ一連のリクエストをフレームワークしたopenaiライブラリがめっちゃ優秀なわけ!
まとめ
openaiライブラリの優秀さがわかりましたね
今回は以上です!
参考文献
LangChainとLangGraphによるRAG・AIエージェント〈実践〉入門/西見公宏/吉田真吾/大嶋勇樹