この記事は、「Microsoft Azure Advent Calendar 2024」の 22日目の記事です。
はじめに
諸事情により、Azure OpenAI Service でのキー認証を使った API利用の動作確認を行うことがありました。
その時に試した内容を、メモとして残すための記事になります。
実際に試してみる
前提条件
この後の内容を進めるにあたり、Azure OpenAI Service関連で以下が準備できている前提となります。
- エンドポイント
- デプロイID
- APIバージョン
- APIキー
公式の「Azure OpenAI Service の REST API リファレンス」での記載の以下にあたる部分です。
参考にしたページで書かれた内容でいうと、以下になります。
VS Code の REST Client + Azure OpenAI Service
それでは以下の参考情報を元に、VS Code の REST Client で Azure OpenAI Service の API を使ってみます。
●Azure Open AI Chat-Completions API試してみる|maito17s
https://note.com/maito17s/n/naeca2a8cc0d0
VS Code の REST Client で実行する内容
VS Code の REST Client で実行する内容として、以下を用意しました。
# 設定
@endpoint = 【エンドポイント】
@deployment_id = 【デプロイID】
@api_version = 【APIバージョン】
@api_key = 【APIキー】
@message = 【送信するメッセージ】
POST {{endpoint}}/openai/deployments/{{deployment_id}}/chat/completions?api-version={{api_version}}
api-key: {{api_key}}
Content-Type: application/json
{
"messages": [
{ "role": "user", "content": "{{message}}" }
]
}
自分が上記を試した際には、デプロイしたモデルなどは以下としました。
- デプロイID(デプロイしたモデルの名称と一致させた形): gpt-4o
- APIバージョン: 2024-05-01-preview
なお、参照したページの内容を簡素化しており、例えば送信する JSON の部分は最小限にしています。
Windows のコマンドプロンプトで curl + Azure OpenAI Service
次に Windows のコマンドプロンプトで curl を利用した形でやってみます。
VS Code の REST Client で試した内容をもとに、curl で実行する内容を作ります。
以下が具体的な内容で、ここでは文字コードが UTF-8 のバッチファイルを作り、そこで curl の処理を実行しています。
chcp 65001
set ENDPOINT=【エンドポイント】
set DEPLOYMENT_ID=【デプロイID】
set API_VERSION=【APIバージョン】
set API_KEY=【APIキー】
set MESSAGE=【送信するメッセージ】
curl %ENDPOINT%openai/deployments/%DEPLOYMENT_ID%/chat/completions?api-version=%API_VERSION% -X POST -H Content-Type:application/json -H api-key:%API_KEY% -d "{\"messages\": [{ \"role\": \"user\", \"content\": \"%MESSAGE%\"}]}"
pause
コマンドプロンプトで UTF-8 を扱うため「chcp 65001
」という処理を入れています。
また、その他で自分が少しはまったところは、API で送る JSON の部分です。
以下に書かれているように、「送る内容全体は「"」(ダブルクォーテーション)で囲み、JSON内のキー名と値は「"」(バックスラッシュ+ダブルクォーテーション)で囲む」というやり方になります。
●curl linuxとwindowsの違いまとめ
https://tako-xyz.com/curl-linux-windows-difference-summary/
その他
なお今回は詳細には触れないですが、PowerShell で実行する場合は「Invoke-RestMethod」を使った方法があります。
●Invoke-RestMethod (Microsoft.PowerShell.Utility) - PowerShell | Microsoft Learn
https://learn.microsoft.com/ja-jp/powershell/module/microsoft.powershell.utility/invoke-restmethod
●Quickstart - Get started using GPT-35-Turbo and GPT-4 with Azure OpenAI Service - Azure OpenAI Service | Microsoft Learn
https://learn.microsoft.com/en-us/azure/ai-services/openai/chatgpt-quickstart?tabs=command-line%2Cjavascript-keyless%2Ctypescript-keyless%2Cpython-new&pivots=programming-language-powershell