# 在視覺化運算式中使用 Azure OpenAI 連線

除了使用載入指令碼將 Azure OpenAI 問題和答案新增至應用程式的資料模型，您也可以直接在應用程式的圖表中執行這些操作。會在您和 Azure OpenAI 服務之間來回傳送單一欄位的資料。

在許多情況下，用於載入指令碼連線的程式碼可以重新用於圖表，並具有差異。

如果使用案例是根據使用者輸入，您可以在圖表運算式中使用分析連線和對應的伺服器端延伸語法來建立互動式圖表，以視覺化從模型端點接收的資料。

## 資料請求量的考慮事項

在圖表運算式中使用 Azure OpenAI 連線建議僅用於一列或幾列資料。不建議使用圖表運算式將大量資料傳送至服務。

重要的是，應注意您對每個請求傳送多少列。若在圖表運算式中設定 Azure OpenAI 連線時發生錯誤，可能導致意外的大量 請求 (例如由於不當使用圖表中的資料模型而出現問題相同的相同列)。您傳送至 Azure OpenAI 服務的請求越大，從 Microsoft Azure 產生的財務成本越高。儘管對於此連接器有每個請求 25 列的請求限制，確認這點仍然很重要。

遵守這些準則以節制並限制 Azure OpenAI 請求的大小：

* 處理圖表運算式時，僅在文字物件中使用連線 (來自Dashboard bundle)。強烈不建議在表格物件中使用 Azure OpenAI 連線，尤其是若您正在將運算式新增至已新增一個或多個維度的表格。

* 若圖表運算式連結至應用程式的資料模型，請在運算式中使用 if 陳述式，以在應用程式中選取單一選項時僅計算圖表。這會在圖表將傳送至 Azure OpenAI 服務的請求中大幅降低列數。

* 若您正在使用 Azure OpenAI 連線傳送大量請求，請在載入指令碼 (而非圖表運算式) 中使用連線，讓資料預先載入到資料模型中。

## 快速範例

您可在此找到樣本運算式，這可在開始使用 Azure OpenAI 連接器時使用。考慮下列詳細資訊：

* 僅搭配文字物件使用運算式 (從 Dashboard bundle)。請參閱 [文字](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/Visualizations/DashboardBundle/text-object.htm)。

* 考慮將 `if` 陳述式新增至運算式，以控制何時重新計算圖表，以及根據應用程式中的使用者選項更新。

* 為了讓運算式運作，您必須替代 `connectionname` 值和任何欄位名稱，以配合自己的連線和應用程式。

如需其他範例，請參閱 [教學課程 – 在 Qlik Cloud 中使用 OpenAI 分析連接器](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/LoadData/ac-openai-tutorial.htm)。

Azure OpenAI 分析連接器的圖表運算式範例

Azure OpenAI 分析連接器的圖表運算式範例

| 連接器設定 | 運算式 | 摘要 |
| --- | --- | --- |
| OpenAI 聊天完成 API | `endpoints.ScriptAggrStr('{"RequestType":"endpoint", "endpoint":{"connectionname":"My_OpenAIConnection","column":"choices.message.content"}}', 'Translate this text from english to spanish: The sun was rising over the new tomorrow with a tinge of excitement.')` | 此陳述式將向已在運算式中輸入的單一問題傳回回應。<br><br>警告備註<br><br>此運算式不會使用 `if` 陳述式，因此若繫結至資料模型中的欄位，則不適合使用。這僅適合用於具有單一輸入儲存格 (包含硬式編碼值) 的獨立運算式。 |
| OpenAI 聊天完成 API | `if(vQuestion <> '', endpoints.scriptAggrStr('{"RequestType":"endpoint", "endpoint":{"connectionname":"My_OpenAI_Connection_Rows_3","column":"choices.message.content"}}',vQuestion))` | 此陳述式可用於連結至變數輸入控制的文字物件中 (來自Dashboard bundle)。只有在輸入時才會計算圖表。使用者在物件中輸入內容並按下 Enter 時，圖表會顯示模型對輸入內容的回應。 |
| OpenAI 聊天完成 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.')` | 此為複雜的 `if` 陳述式，其中只有在使用者已選取欄位 `BusinessTopic` 的一個值時，才會計算圖表。只有在使用者於應用程式中進行選取時，圖表才會更新，如使用者沒有選取，圖表將會顯示下列替代訊息：`Please select a single value for BusinessTopic`。 |
| OpenAI 聊天完成 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` 選取一個相異值時，才會計算圖表。會傳送請求，就一般問題類型從技術支援部門要求樣本回應，這是 `IssueCategory` 欄位中包含的清單。 會根據使用者選取的值更新圖表。 |

## 詳細範例

顯示如何在圖表運算式中使用 Azure OpenAI 連線的範例可見於OpenAI 連接器的教學課程。請注意，Azure OpenAI 連接器透過 Microsoft Azure 平台與模型通訊，而非透過 OpenAI 平台。

[教學課程 – 在 Qlik Cloud 中使用 OpenAI 分析連接器](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/LoadData/ac-openai-tutorial.htm)

[範例 – 為 OpenAI 分析連接器建立載入指令碼和圖表運算式](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/LoadData/ac-openai-tutorial-example-3.htm)

[OpenAI 分析連接器 – 互動式範例](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/LoadData/ac-openai-tutorial-example-interactive.htm)

## 瞭解更多資訊

* [伺服器端延伸語法](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/LoadData/sse-syntax.htm)
* [GetSelectedCount - 圖表函數](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/FieldFunctions/getselectedcount.htm)
* [在運算式中使用變數](https://help.qlik.com/zh-TW/cloud-services/Subsystems/Hub/Content/Sense_Hub/Variables/work-with-variables.htm)