# ビジュアライゼーション数式での OpenAI 接続の使用

ロード スクリプトを使用してアプリケーションのデータ モデルに OpenAI の質問と回答を追加するだけでなく、分析モードのアプリケーションのチャートで直接これらの操作を実行することもできます。単一項目のデータは、ユーザーと OpenAI 間で行ったり来たりします。

多くの場合、ロード スクリプト接続に使用されるコードは、いくつかの相違点はあるものの、チャートで再利用することができます。

使用例がユーザー入力に基づくものである場合は、チャートの数式で分析接続および対応するサーバーサイド拡張構文を使用して、モデルのエンドポイントから受信したデータを視覚化するインタラクティブ チャートを作成できます。

## データ リクエスト ボリュームに関する注意事項

OpenAI 接続は、データ行が 1 行または少数のチャートの数式でのみ使用することをお勧めします。チャートの数式を使用して OpenAI に大量のデータを送信することは推奨されていません。

各リクエストで送信する行数を把握しておくことが重要です。チャートの数式での接続の設定に誤りがあると、想定外の大きいリクエストが発生する可能性があります (例: チャートでのデータモデルの使用が不適切なため、同じ質問で同じ行が表示される)。サードパーティのプラットフォームとやり取りする前に、チャートの数式の計算で使用される項目と、データ モデルにおけるそれらの位置づけが、サードパーティとの財務契約や請求の取り決めにどのような影響を与えるかを必ず認識してください。外部プラットフォームの使用量が増えると、発生するコストも高くなる可能性があります。

次のガイドラインに従って、リクエストのサイズを軽減および制限してください。

* チャートの数式を操作するときは、テキスト オブジェクト (Dashboard bundle から) 内の接続のみを使用します。特に 1 つ以上の軸がすでに追加されているテーブルに式を追加する場合は、テーブル オブジェクトで OpenAI 接続を使用しないことを強く推奨します。

* チャートの数式がアプリケーションのデータ モデルにリンクされている場合、アプリケーションで 1 つの選択が行われたときだけチャートを計算するように、式の中で if 文を使用します。これにより、チャートが OpenAI に送信するリクエストの行数が大幅に削減されます。

* OpenAI 接続を使用して大きなリクエストを送信する場合、チャートの数式ではなくロード スクリプトで接続を使用し、データがデータ モデルに事前にロードされるようにします。

## チャートの数式の作成

次の手順を実行します。

1. ビジュアライゼーションを編集する際は、 [the 式 icon] をクリックして数式エディタに入ります。

2. 数式エディタでは、数式項目に数式を入力します。数式は、サーバーサイド拡張構文を使用して作成する必要があります。

## 簡単な例

ここでは、OpenAI コネクタを使い始めるときに使用できるサンプル式を見つけることができます。次の詳細を考慮してください。

* 式は [テキスト] オブジェクト (Dashboard bundle から) でのみ使用します。「[テキスト](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/Visualizations/DashboardBundle/text-object.htm)」を参照してください。

* `if` ステートメントを式に追加して、チャートが再計算されるタイミングを制御し、アプリケーションでのユーザーの選択に応じて更新することを検討します。

* 式が機能するには、`connectionname` 値と項目名を独自の接続とアプリケーションに一致するように置き換える必要があります。

追加の例については、「[チュートリアル – Qlik Cloud での OpenAI 分析コネクタの使用](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/LoadData/ac-openai-tutorial.htm)」を参照してください。

OpenAI 分析コネクタのチャートの数式の例

OpenAI 分析コネクタのチャートの数式の例

| コネクタの構成 | 式 | 概要 |
| --- | --- | --- |
| OpenAI Chat Completions API | `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 | `if(vQuestion <> '', endpoints.scriptAggrStr('{"RequestType":"endpoint", "endpoint":{"connectionname":"My_OpenAI_Connection_Rows_3","column":"choices.message.content"}}',vQuestion))` | これは、 [変数入力] コントロールにリンクされた [テキスト] (Dashboard bundle から)オブジェクトで使用できるステートメントです。チャートに入力された場合にのみ計算されます。ユーザーがオブジェクトに入力して Enter キーを押すと、その入力に対するモデルの応答がチャートに表示されます。<br><br>手順については、「[演習: 変数を使用してテキスト入力ボックスを作成する](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/LoadData/ac-openai-tutorial-example-3.htm#Exercise)」を参照してください。 |
| OpenAI Chat Completions API | `if(<br>count(distinct [IssueCategory]) = 1,<br>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 分析コネクタの使用](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/LoadData/ac-openai-tutorial.htm)」を参照してください。

## 詳細を見る

* [サーバーサイド拡張構文](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/LoadData/sse-syntax.htm)
* [GetSelectedCount - チャート関数](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/FieldFunctions/getselectedcount.htm)
* [数式での変数の使用](https://help.qlik.com/ja-JP/cloud-services/Subsystems/Hub/Content/Sense_Hub/Variables/work-with-variables.htm)