# Usando conexões Azure OpenAI em expressões de visualização

Além de adicionar perguntas e respostas do Azure OpenAI ao modelo de dados do seu aplicativo usando o script de carregamento, você também pode realizar essas operações diretamente em um gráfico no seu aplicativo. Os dados de um único campo são enviados e recebidos entre você e o serviço Azure OpenAI.

Em muitos casos, o código usado para uma conexão de script de carregamento pode ser reaproveitado para uso em um gráfico, com algumas diferenças.

Se o caso de uso for baseado na entrada do usuário, você poderá usar uma conexão analítica e a sintaxe de extensão no lado do servidor correspondente na sua expressão de gráfico para criar gráficos interativos que visualizam os dados recebidos dos terminais do modelo.

## Considerações para volumes de solicitação de dados

Recomenda-se usar apenas conexões Azure OpenAI em expressões de gráfico para uma ou algumas linhas de dados. O uso de expressões de gráfico para enviar grandes quantidades de dados ao serviço não é recomendado.

É importante estar ciente de quantas linhas você está enviando com cada solicitação. Erros na configuração da conexão com o Azure OpenAI em uma expressão de gráfico podem levar a solicitações involuntariamente grandes (por exemplo, linhas idênticas com a mesma pergunta devido ao uso indevido do modelo de dados em um gráfico). Quanto maior for o pedido que enviar ao serviço Azure OpenAI, maior será o custo financeiro que poderá incorrer do Microsoft Azure. Apesar de haver um limite de solicitações de 25 linhas por solicitação para esse conector, ainda é importante reconhecer isso.

Siga essas diretrizes para moderar e limitar o tamanho das suas solicitações do Azure OpenAI:

* Ao trabalhar com expressões de gráfico, use apenas a conexão em um objeto de Texto (do Dashboard bundle). É desaconselhável usar uma conexão com o Azure OpenAI em um objeto de Tabela, especialmente se você estiver adicionando a expressão a uma tabela com uma ou mais dimensões já adicionadas.

* Se a expressão de gráfico estiver vinculada ao modelo de dados do seu aplicativo, use uma instrução if nessa expressão para calcular o gráfico somente quando uma única seleção for feita no aplicativo. Isso reduz drasticamente a contagem de linhas nas solicitações que seu gráfico envia para o serviço Azure OpenAI.

* Se você estiver usando uma conexão com o Azure OpenAI para enviar solicitações grandes, use a conexão no seu script de carregamento em vez de em uma expressão de gráfico, para que os dados sejam pré-carregados no seu modelo de dados.

## Exemplos rápidos

Aqui você pode encontrar expressões de exemplo que podem ser usadas ao começar a usar o conector do Azure OpenAI. Considere os seguintes detalhes:

* Use as expressões apenas com um objeto Texto (do Dashboard bundle). Consulte [Texto](https://help.qlik.com/pt-BR/cloud-services/Subsystems/Hub/Content/Sense_Hub/Visualizations/DashboardBundle/text-object.htm).

* Considere adicionar uma instrução `if` às suas expressões para controlar quando o gráfico é recalculado e para atualizar dependendo das seleções do usuário no aplicativo.

* Para que as expressões funcionem, você deve substituir o valor `connectionname` e quaisquer nomes de campo para corresponder às suas próprias conexões e aplicativos.

Para exemplos adicionais, consulte [Tutorial – Usando o conector de análise do OpenAI no Qlik Cloud](https://help.qlik.com/pt-BR/cloud-services/Subsystems/Hub/Content/Sense_Hub/LoadData/ac-openai-tutorial.htm).

Exemplos de expressão de gráfico para o conector de análise do Azure OpenAI

Exemplos de expressão de gráfico para o conector de análise do Azure OpenAI

| Configuração do conector | Expressão | Resumo |
| --- | --- | --- |
| API de complementações do OpenAI Chat | `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.')` | Essa instrução retornará a resposta a uma única pergunta, que foi inserida na expressão.<br><br>Nota de advertência<br><br>Esta expressão não usa uma instrução `if` e, portanto, não é adequada para ser usada se estiver vinculada a um campo no seu modelo de dados. É adequado apenas para uso em uma expressão autônoma com uma única célula de entrada contendo um valor codificado. |
| API de complementações do OpenAI Chat | `if(vQuestion <> '', endpoints.scriptAggrStr('{"RequestType":"endpoint", "endpoint":{"connectionname":"My_OpenAI_Connection_Rows_3","column":"choices.message.content"}}',vQuestion))` | Esta é uma instrução que pode ser usada em um objeto Texto (do Dashboard bundle) vinculado a um controle de entrada Variável. O gráfico só é calculado quando a entrada é inserida. Quando o usuário digita a entrada no objeto e pressiona Enter, o gráfico exibe a resposta do modelo à sua entrada. |
| API de complementações do OpenAI Chat | `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.')` | Esta é uma instrução `if` complexa em que o gráfico só é calculado se o usuário tiver selecionado um valor para o campo `BusinessTopic`. O gráfico só será atualizado se o usuário tiver feito essa seleção no aplicativo e, caso não tenha feito, o gráfico exibirá a seguinte mensagem alternativa: `Please select a single value for BusinessTopic`. |
| API de complementações do OpenAI Chat | `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]))` | Neste exemplo, o gráfico só será calculado se um valor distinto tiver sido selecionado no campo `IssueCategory` no modelo de dados do aplicativo. Uma solicitação é enviada para solicitar um modelo de resposta de um departamento de suporte técnico sobre um tipo geral de problema, cuja lista está contida no campo `IssueCategory`. O gráfico é atualizado dependendo do valor selecionado pelo usuário. |

## Exemplos detalhados

Exemplos mostrando como usar a conexão do Azure OpenAI em expressões de gráfico podem ser encontradas no tutorial para o conector OpenAI. Observe que o conector Azure OpenAI se comunica com os modelos por meio da plataforma Microsoft Azure em vez da plataforma OpenAI.

[Tutorial – Usando o conector de análise do OpenAI no Qlik Cloud](https://help.qlik.com/pt-BR/cloud-services/Subsystems/Hub/Content/Sense_Hub/LoadData/ac-openai-tutorial.htm)

[Exemplos – Criando scripts de carregamento e expressões de gráfico para o conector de análise do OpenAI](https://help.qlik.com/pt-BR/cloud-services/Subsystems/Hub/Content/Sense_Hub/LoadData/ac-openai-tutorial-example-3.htm)

[Conector de análise do OpenAI – Exemplo interativo](https://help.qlik.com/pt-BR/cloud-services/Subsystems/Hub/Content/Sense_Hub/LoadData/ac-openai-tutorial-example-interactive.htm)

## Saiba mais

* [Sintaxe das extensões no lado do servidor](https://help.qlik.com/pt-BR/cloud-services/Subsystems/Hub/Content/Sense_Hub/LoadData/sse-syntax.htm)
* [GetSelectedCount - função de gráfico](https://help.qlik.com/pt-BR/cloud-services/Subsystems/Hub/Content/Sense_Hub/ChartFunctions/FieldFunctions/getselectedcount.htm)
* [Usando variáveis em expressões](https://help.qlik.com/pt-BR/cloud-services/Subsystems/Hub/Content/Sense_Hub/Variables/work-with-variables.htm)