これまでの演習で実践できたこと
演習を通じて、ロジックアプリを通じて Azure OpenAI の GPT/ChatGPT に問い合わせを行えることが理解できましたでしょうか? あらためて、Azure OpenAI について振り返ってみましょう。
Azure OpenAI で定義したモデルを理解する
モデルデプロイで設定した Azure OpenAI のモデルは様々なモデルが提供されていますが、2023.5 現在 Azure OpenAI のモデルと用途は以下のような違いがあります。
GPT model | 概要 |
---|---|
GPT-3.5 | - 米国東部、西ヨーロッパで利用可能 - 推論時間や性能を最適化するためのケース別モデル - 幅広いユースケースに対応 |
ChatGPT (preview) |
- ほとんどのユースケースでファーストチョイス - Azure OpenAI Service で最も経済的なモデル - チャットだけでなく、すべてのワークロードに対応 |
GPT4 (preview) |
- 問題解決能力、推論能力の向上 - 繰り返しの洗練(コードエラーの修正、ストーリーを繰り返し考える) - トークン制限の増加(長いコンテンツに効果的) |
情報元: https://www.youtube.com/watch?v=tFgqdHKsOME
演習で何が出来たのか理解できましたでしょうか?
このワークショップでは、ロジックアプリを用いて Azure OpenAI の GPT/ChatGPT に対して prompt による会話を行いました。
AI を活用するに際して、期待する答えをどのように導き出すか、prompt の依頼方法が重要となります。
Azure OpenAI の prompt を用いた活用例を考える
Azure OpenAI のプレイグラウンドを用いて、幾つかのモデル活用パターンを考えてみましょう。
https://oai.azure.com/portal/playground
GPT に対してコンテキストを要約依頼する例です。
インストラクションとコンテキストは ###
や """
を使って分離することを覚えましょう。
下記のテキストを一文で説明してください。
テキスト: """日本は前半、クロアチアにボールを保持されて押し込まれましたが、ゴールキーパーの権田修一選手がシュートを防ぐなどしてしのぎ、前半43分には、右サイドのコーナーキックから短いパスを受けた堂安律選手がクロスボールを入れて、最後は前田大然選手が左足で押し込み、日本が先制しました。後半は、10分にクロアチアのクロスボールからイバン・ペリシッチ選手にヘディングでシュートを決められ同点とされて、試合は1対1のまま今大会初めての延長戦に入り、試合は最終的にペナルティーキック戦に入りました。
日本は先攻となりましたが、1人目の南野拓実選手と2人目の三笘選手が連続で相手のゴールキーパーにシュートを防がれました。そして日本が1対2で迎えた4人目でキャプテンの吉田麻也選手も決められず、最後はクロアチアの4人目に決められてペナルティーキック戦で1対3で敗れました。"""
コンテキストを使って業界独自の文書や企業内 FAQ など、OpenAI GPT 知らないさまざまな文書も対象にすることが出来ます。
以下のテキストを使って下記の質問に答えてください。もし答えがない場合には、「私は知らない」と答えてください。
コンテキスト: """Surface Book が空の状態から完全に充電されるまで、2 ~ 4 時間かかります。Surface Book を充電しながらゲームやビデオ ストリーミングのような電力消費の多い活動に Surface を使用している場合、さらに時間がかかる可能性があります。電源アダプターに付いている USB ポートを使って、Surface Book の充電中にスマートフォンなどの他のデバイスを充電することもできます。電源アダプターの USB ポートは充電専用であり、データ転送用ではありません。"""
質問: Surface Book の充電時間を節約するにはどうするか。
インテント分類など、カスタムな分類にも対応出来ます。
テキストを不満、普通、満足の感情に分類してください。
テキスト: 食事はまあまあでした。
プロンプトとプレフィックスプロンプトの間にテキストを挿入させる活用事例です。
今日のセミナーの目次です。
1. OpenAI紹介
[ここに挿入してください]
2. OpenAIの仕組み
3. OpenAIの利用方法
4. OpenAIの導入手順
5. OpenAIの導入メリット
6. OpenAIの導入デメリット
7. OpenAIの事例
8. OpenAIを活用したAI開発
9. OpenAIの未来展望
10. まとめ
他にも、prompt の活用例は様々な手法が紹介されています。ご興味がある方は、公式サイトプロンプト エンジニアリングの手法を参照下さい。
ChatGPT3.5/GPT4 を用いる場合は、rule を設定しましょう。これからのスタンダードになります!
Chat GPT (gpt-3.5-turbo/GPT4) 以降からは、Chat Completion API を用いてメッセージオブジェクトに role (役割) を設定し、目的に応じたリクエストを設定することが出来ます。
期待した応答に近づけるように、system
/ assistant
/ user
の各項目に設定値を渡して、リクエストを送ることが出来ます。
[
{
"role": "system",
"content": "あなたはセキュリティアナリストです。"
},
{
"role": "user",
"content": "文章を日本語で100文字以内で解説して下さい。"
},
{
"role": "assistant",
"content": "This detection looks for the steps required to conduct a UAC bypass using Fodhelper.exe. By default this detection looks for the setting of the required registry keys and the invoking of the process within 1 hour - this can be tweaked as required."
}
]
パラメータ | 意味 |
---|---|
system | system メッセージでは、ChatGPTに与える役を設定するために使用します。 |
assistant | 以前の応答を保存するのに役立ちます。文章要約や翻訳を行う際の対象となるテキストをここのメッセージに設定します。また、望ましい動作の例や回答の選択肢を示す使い方も可能です。 |
user | ユーザーがChatGPTに提供したいテキストを含めるために使用されます。これにより、ChatGPTはユーザーの要求に応じた回答を提供することができます。 |
上記 JSON prompt を ChatGPT 3.5 (gpt-3.5-turbo) にリクエストしたサンプル例です。
この検出は、Fodhelper.exeを使用したUACバイパスを実行するために必要な手順を検出します。
デフォルトでは、必要なレジストリキーの設定と、1時間以内にプロセスを呼び出すことを検出します。必要に応じて調整できます。
なお、API request の設定では prompt
の代わりに messages
を用います。
Azure OpenAI でリクエストするパラメータを理解しましょう 今回の演習では、RESTAPI で Azure OpenAI に問い合わせを行う際に幾つかのパラメータを適用しました。 これらのパラメータにはどのような意味が有るのか考えてみましょう。
Azure OpenAI Service の REST API リファレンス
パラメータ | 意味 |
---|---|
prompt | 文字列、文字列の一覧。 またはトークン リストの一覧としてエンコードされた、入力候補の生成対象となるプロンプト。 |
messages | Chat Completion API 形式で送付する場合に使用。 |
max_tokens | 入力候補に生成するトークンの最大数。 日本語の場合はトークン量が増えるため、可能であれば英語で書いた方が安くなる。 |
temperature | ランダム性の制御[0-1] 使用するサンプリング温度 (0 から 2)。 値が大きいほど、モデルはより多くのリスクを負います。 よりクリエイティブなアプリケーションの場合は 0.9、明確に定義された回答の場合は 0 (argmax sampling) をお試しください。 |
frequency_penalty | 周波数制御[0-2]:高いと同じ話題を繰り返さなくなる -2.0 から 2.0 の数値。 値を正にすると、これまでのテキストに存在する頻度に基づいて新しいトークンにペナルティが課せられ、モデルが同じ行を逐語的に繰り返す可能性が低下します。 |
top_n | 多様性の制御[0-1] |
presence_penalty | 新規トピック制御[0-2]:高いと新規のトピックが出現しやすくなる |
参考 URL:
- OpenAI APIで設定するtemperatureは回答のランダム性を指定するもの。実験してみた
- ChatGPT API利用方法の簡単解説
- ChatGPT APIの各種パラメーターを指定して動作確認してみた。
- ChatGPTで用いられるGPT-3.5系のモデルをAPIから利用してみた
Microsoft Sentinel のインシデントから何が得られて、何を OpenAI に問い合わせるのか
セキュリティオペレーションセンターでは、インシデント運用を効率化するためにインシデント情報から AI を活用することを考えています。 Microsoft Sentinel からはどのような情報を Azure OpenAI に渡せるのか考えてみましょう。
インシデント情報から得られるパラメータ | 意味 |
---|---|
インシデントのタイトル | Analytics Rule に作成する分析ルール名。 |
インシデントの説明 | Analytics Rule に適用されているルール詳細。 |
インシデントの重要度 | Analytics Rule に適用されているルール詳細。 |
エンティティ | Analytics Rule にて検出したエンティティ情報 (JSON 出力) |
インシデントの戦術 | Analytics Rule にて検出した MITRE 戦術情報 |
Microsoft Sentinel のインシデントを操作する
Microsoft Sentinel のオートメーション機能では、インシデント内容の更新を行うことで内容を上書きすることが出来るようになっています。 本演習ではインシデント情報を以下のように更新することを実践しました。
- タグに正規化された
model
情報を付与 - インシデント説明の内容を正規化された
text
情報を付与
他にどのようなことが出来るのでしょうか? ロジックアプリの Microsoft Sentinel コネクターを用いると以下のような処理を実現することが出来ます。
- インシデントブックマークの登録
- インシデントに通知を追加する
- インシデントにタスクを追加する
- インシデントにコメントを追加する
Microsoft Sentinel の Azure OpenAI 活用ストーリーを考えてみましょう
- 各自アイデアを考えてみましょう。
- インシデント情報を元に、ChatGPT に問い合わせを行い、得られた情報をどのようにインシデント管理に活用出来ますか?
お疲れさまでした!最後の演習に移って下さい。