はじめに
普段、構築したサーバーが仕様書通りに作られているかを自動でチャックするスクリプトを書いているのですが、今回はそこにAIを絡められないかと思い、Azure OpenAIを使って簡単なシステムを作ってみました。
前提条件
- 基本的には、Microsoft社が提供するAzure OpenAI ServiveのクイックスタートとREST API リファレンスに従って、システムを作っていきます。
- Azure OpenAI Service リソースでgpt-35-turbo または gpt-4 モデルをデプロイしたあとについて説明します。
作り方
- gpt-35-turbo または gpt-4 モデルがデプロイされたAzure OpenAI Service リソースでキーとエンドポインを取得し、環境変数に加えます。
AZURE_OPENAI_KEY="REPLACE_WITH_YOUR_KEY_VALUE_HERE" AZURE_OPENAI_ENDPOINT="REPLACE_WITH_YOUR_ENDPOINT_HERE"
- モデルの名前とAPIのバージョンの情報も環境変数に加えます。
DEPLOYMENTID="YOUR_DEPLOYMENT_NAME" APIVERSION="YYYY-MM-DD"
- サーバーにインストールされているphpのバージョンが7.4を満たしているかを確認するスクリプトを、Azure OpenAI Serviceを使って書いてみたいと思います。
COMMAND="php -v" RESULT=`$COMMAND` QUESTION="Answer whether the version of php is 7.4." echo "Q: "$QUESTION MESSAGES="{\"messages\":[{\"role\":\"system\",\"content\":\"$QUESTION\"},{\"role\":\"user\",\"content\":\"${RESULT//$'\n'/}\"}]}" curl -s $AZURE_OPENAI_ENDPOINT"openai/deployments/"$DEPLOYMENTID"/chat/completions?api-version="$APIVERSION -H "Content-Type: application/json" -H "api-key: $AZURE_OPENAI_KEY" -d "$MESSAGES" | jq -r '.choices[].message.content'
ここで、MESSAGES
について簡単に説明します。MESSAGES
はrole
とcontent
で構成されます。
role
はチャットでの役割を表します。role
には、user
、assistant
、system
、function
(今回はfunction
を使わないので、説明を省略します)の4種類あり、user
が質問をする側、assistant
がその質問に対して答えを返す側です。
ではsystem
とは何なのでしょうか?
system
とは、そのチャットボットの機能を示すものです。今回は、phpのバージョンが7.4であるかを確認したいので、その旨をsystem
のcontent
に記述します。
それでは上記のスクリプトを実行してみましょう。user
の質問には、php -v
の結果を与えてあります。
出力は以下のようになります。(インストールされているphpが7.4.XXの場合)
Q: Answer whether the version of php is 7.4. Yes, the version of PHP is 7.4.XX.
phpのバージョンが7.4であると正しい答えが得られました。
試しに、同じ環境でphpのバージョンが7.3であるかを質問してみます。
Q: Answer whether the version of php is 7.3. No, the version of PHP is 7.4.33.
こちらも正しく判定できていそうです。
このようにsystem
のcontent
を指定することで、答えて欲しい情報だけに特化したチャットボットを作ることができます。