ビジュアライゼーション数式での Azure OpenAI 接続の使用
ロード スクリプトを使用してアプリのデータ モデルに Azure OpenAI の質問と回答を追加するだけでなく、アプリのチャートで直接これらの操作を実行することもできます。単一項目のデータは、ユーザーと Azure OpenAI サービス間で行ったり来たりします。
多くの場合、ロード スクリプト接続に使用されるコードは、いくつかの相違点はあるものの、チャートで再利用することができます。
使用例がユーザー入力に基づくものである場合は、チャートの数式で分析接続および対応するサーバーサイド拡張構文を使用して、モデルのエンドポイントから受信したデータを視覚化するインタラクティブ チャートを作成できます。
データ リクエスト ボリュームに関する注意事項
Azure OpenAI 接続は、データ行が 1 行または少数のチャートの数式でのみ使用することをお勧めします。チャートの数式を使用してサービスに大量のデータを送信することは推奨されていません。
各リクエストで送信する行数を把握しておくことが重要です。チャートの数式での Azure OpenAI 接続の設定に誤りがあると、想定外の大きいリクエストが発生する可能性があります (例えば、チャートでのデータモデルの使用が不適切なため、同じ質問で同じ行が表示されるなど)。Azure OpenAI サービスに送信するリクエストが大きいほど、Microsoft Azure から発生するコストは高くなります。このコネクタには 1 件のリクエストあたり 25 行というリクエスト制限がありますが、これを認識しておくことは重要です。
次のガイドラインに従って、Azure OpenAI リクエストのサイズを軽減して、制限してください。
-
テキストと画像チャート数式でのみ Azure OpenAI 接続を使用します。テーブル オブジェクトで Azure OpenAI 接続を使用することは、特に、1 つ以上の軸がすでに追加されているテーブルに式を追加する場合は、絶対にやめてください。
-
チャートの数式がアプリのデータ モデルにリンクされている場合、アプリで 1 つの選択が行われたときだけチャートを計算するように、式の中で if 文を使用します。これにより、チャートが Azure OpenAI サービスに送信するリクエストの行数を大幅に減らすことができます。
-
Azure OpenAI 接続を使用して大きなリクエストを送信する場合、チャートの数式ではなくロード スクリプトで接続を使用し、データがデータ モデルに事前にロードされるようにします。
簡単な例
ここでは、Azure OpenAI コネクタを使い始めるときに使用できるサンプル式を見つけることができます。次の詳細を考慮してください。
-
式は [テキストと画像] オブジェクトでのみ使用します。
-
if ステートメントを式に追加して、チャートが再計算されるタイミングを制御し、アプリでのユーザーの選択に応じて更新することを検討します。
-
式が機能するには、connectionname 値と項目名を独自の接続とアプリに一致するように置き換える必要があります。
追加の例については、「チュートリアル – Qlik Cloud での OpenAI 分析コネクタの使用 」を参照してください。
コネクタの構成 | 式 | 概要 |
---|---|---|
OpenAI Completions API (GPT-3) - 行 | endpoints.ScriptAggrStr('{"RequestType":"endpoint", "endpoint":{"connectionname":"OpenAI Connection for Rows Completions (GPT-3)","column":"choices.text"}}', 'Translate this text from english to spanish: The sun was rising over the new tomorrow with a tinge of excitement.') |
このステートメントは、式に入力された 1 つの質問に対する応答を返します。 警告メモ
この式は if ステートメントを使用しないため、データ モデルの項目に関連付けられた場合の使用には適していません。これは、ハードコードされた値を含む単一の入力セルを含むスタンドアロン式での使用にのみ適しています。 |
OpenAI Completions API (GPT-3) - 行 | if(vQuestion <> '', endpoints.scriptAggrStr('{"RequestType":"endpoint", "endpoint":{"connectionname":"My_OpenAI_Connection_Rows_3","column":"choices.text"}}',vQuestion)) |
これは、変数入力コントロールにリンクされた [テキストと画像] オブジェクトで使用できるステートメントです。チャートに入力された場合にのみ計算されます。ユーザーがオブジェクトに入力して Enter キーを押すと、その入力に対する応答がチャートに表示されます。 手順については、「演習: 変数を使用してテキスト入力ボックスを作成する」を参照してください。 |
OpenAI Chat Completions API (GPT-3.5、GPT-4) - 行 | if(GetSelectedCount(BusinessTopic)=1, endpoints.ScriptAggrStr('{"RequestType":"endpoint", "endpoint":{"connectionname":"My_OpenAI_Connection_Rows_3", "column":"choices.message.content"}}', 'What are people saying about ' & 'BusinessTopic'), 'Please select a single value for BusinessTopic.') | これは、ユーザーが項目 BusinessTopic に 1 つの値を選択した場合にのみチャートが計算される複雑な if ステートメントです。ユーザーがアプリでこの選択を行っている場合にのみチャートが更新され、選択していない場合は代替メッセージの「Please select a single value for BusinessTopic」が表示されます。 |
OpenAI Chat Completions API (GPT-3.5、GPT-4) - 行 | if(vQuestion <> '', endpoints.scriptAggrStr('{"RequestType":"endpoint", "endpoint":{"connectionname":"My_OpenAI_Connection_Rows_3","column":"choices.message.content"}}',vQuestion)) |
これは、変数入力コントロールにリンクされた [テキストと画像] オブジェクトで使用できるステートメントです。チャートに入力された場合にのみ計算されます。ユーザーがオブジェクトに入力して Enter キーを押すと、その入力に対する応答がチャートに表示されます。 手順については、「演習: 変数を使用してテキスト入力ボックスを作成する」を参照してください。 |
OpenAI Chat Completions API (GPT-3.5、GPT-4) - 行 | if( count(distinct [IssueCategory]) = 1, endpoints.ScriptAggrStr('{"RequestType":"endpoint", "endpoint":{"connectionname":"My_OpenAI_Connection_Chat_3_5","column":"choices.message.content"}}', 'write me a sample response from a technical support department for a customer complaint about ' & [IssueCategory])) | この例では、アプリのデータ モデルの項目 IssueCategory から 1 つの個別の値が選択された場合にのみチャートが計算されます。一般的な種類の問題についてテクニカル サポート部門からのサンプル応答を求めるリクエストが送信されます。そのリストは IssueCategory 項目に含まれています。 チャートはユーザーが選択した値に応じて更新されます。 |
詳細な例
チャートの数式で Azure OpenAI 接続を使用する方法を示す例は、OpenAI コネクタのチュートリアルにあります。Azure OpenAI コネクタは、OpenAI プラットフォームではなく Microsoft Azure プラットフォームを通じてモデルと通信します。
チュートリアル – Qlik Cloud での OpenAI 分析コネクタの使用
例 1: 「OpenAI Completions API (GPT-3) - 行」の構成
例 3: 「OpenAI Chat Completions API (GPT-3.5、GPT-4) - 行」の構成