ビジュアライゼーション数式での OpenAI 接続の使用
ロード スクリプトを使用してアプリのデータ モデルに OpenAI の質問と回答を追加するだけでなく、分析モードのアプリのチャートで直接これらの操作を実行することもできます。単一項目のデータは、ユーザーと OpenAI 間で行ったり来たりします。
多くの場合、ロード スクリプト接続に使用されるコードは、いくつかの相違点はあるものの、チャートで再利用することができます。
使用例がユーザー入力に基づくものである場合は、チャートの数式で分析接続および対応するサーバーサイド拡張構文を使用して、モデルのエンドポイントから受信したデータを視覚化するインタラクティブ チャートを作成できます。
データ リクエスト ボリュームに関する注意事項
OpenAI 接続は、データ行が 1 行または少数のチャートの数式でのみ使用することをお勧めします。チャートの数式を使用して OpenAI に大量のデータを送信することは推奨されていません。
各リクエストで送信する行数を把握しておくことが重要です。チャートの数式での接続の設定に誤りがあると、想定外の大きいリクエストが発生する可能性があります (例: チャートでのデータモデルの使用が不適切なため、同じ質問で同じ行が表示される)。サードパーティのプラットフォームとやり取りする前に、チャートの数式の計算で使用される項目と、データ モデルにおけるそれらの位置づけが、サードパーティとの財務契約や請求の取り決めにどのような影響を与えるかを必ず認識してください。外部プラットフォームの使用量が増えると、発生するコストも高くなる可能性があります。
次のガイドラインに従って、リクエストのサイズを軽減および制限してください。
-
[テキストと画像] チャートの数式でのみ接続を使用します。特に 1 つ以上の軸がすでに追加されているテーブルに式を追加する場合は、テーブル オブジェクトで OpenAI 接続を使用しないことを強く推奨します。
-
チャートの数式がアプリのデータ モデルにリンクされている場合、アプリで 1 つの選択が行われたときだけチャートを計算するように、式の中で if 文を使用します。これにより、チャートが OpenAI に送信するリクエストの行数を大幅に減らすことができます。
-
OpenAI 接続を使用して大きなリクエストを送信する場合、チャートの数式ではなくロード スクリプトで接続を使用し、データがデータ モデルに事前にロードされるようにします。
チャートの数式の作成
次の手順を実行します。
-
ビジュアライゼーションを編集する際は、 [] をクリックして数式エディタに入ります。
-
数式エディタでは、数式項目に数式を入力します。数式は、サーバーサイド拡張構文を使用して作成する必要があります。
簡単な例
ここでは、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 つの質問に対する OpenAI の応答を返します。 警告メモ
この式は 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 の応答がチャートに表示されます。 手順については、「演習: 変数を使用してテキスト入力ボックスを作成する」を参照してください。 |
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 の応答がチャートに表示されます。 手順については、「演習: 変数を使用してテキスト入力ボックスを作成する」を参照してください。 |
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 つの個別の値が選択された場合にのみチャートが計算されます。一般的な種類の問題についてテクニカル サポート部門からのサンプル応答を求めるリクエストが OpenAI に送信されます。そのリストは IssueCategory 項目に含まれています。 チャートはユーザーが選択した値に応じて更新されます。 |
詳細な例
OpenAI 接続を使用したビジュアライゼーション式の作成方法の詳細な例については、「チュートリアル – Qlik Cloud での OpenAI 分析コネクタの使用 」を参照してください。