Azure OpenAIを使ってミドルウェアのバージョン確認を自動化してみた

はじめに

普段、構築したサーバーが仕様書通りに作られているかを自動でチャックするスクリプトを書いているのですが、今回はそこに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について簡単に説明します。MESSAGESrolecontentで構成されます。

roleはチャットでの役割を表します。roleには、userassistantsystemfunction(今回はfunctionを使わないので、説明を省略します)の4種類あり、userが質問をする側、assistantがその質問に対して答えを返す側です。

ではsystemとは何なのでしょうか?

systemとは、そのチャットボットの機能を示すものです。今回は、phpのバージョンが7.4であるかを確認したいので、その旨をsystemcontentに記述します。

それでは上記のスクリプトを実行してみましょう。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.

こちらも正しく判定できていそうです。

このようにsystemcontentを指定することで、答えて欲しい情報だけに特化したチャットボットを作ることができます。