Exemplo 3: configuração de "API de complementações do OpenAI Chat (GPT-3.5, GPT-4) - Linhas"
Este exemplo ensina a usar o conector analítico do OpenAI com a configuração "API de complementações do OpenAI Chat (GPT-3.5, GPT-4) - Linhas". Ele orienta você através de exercícios básicos mostrando como incorporar a funcionalidade em seu modelo de dados e expressões de gráfico.
A funcionalidade dessa configuração de conector é muito semelhante à configuração "API de complementações do OpenAI (GPT-3) - Linhas". No entanto, essas duas configurações usam modelos diferentes, o que, por sua vez, leva a respostas diferentes. Além disso, devido a nomes de parâmetros diferentes entre essas duas configurações, consulte o exemplo do tutorial que corresponde à sua configuração. Para a configuração de complementações, consulte Exemplo 1: configuração de "API de complementações do OpenAI (GPT-3) - Linhas".
Você também pode concluir este exemplo usando o conector Azure OpenAI. Ao usar esse conector, você interage com os modelos por meio da plataforma do Microsoft Azure, em vez da plataforma do OpenAI.
Antes de iniciar
Antes de concluir este exemplo, você precisa realizar as etapas a seguir.
-
Criar uma conta na plataforma OpenAI
-
Obter uma chave de API do OpenAI
-
Ative a funcionalidade de conexão analítica no Qlik Cloud
-
Crie conexões com as configurações de conector aplicáveis
Usando o conector OpenAI no seu script de carregamento
Crie um novo aplicativo Qlik Sense, ao qual você adicionará um script de carregamento para se comunicar com a plataforma OpenAI. As tabelas carregadas com este script estarão acessíveis no modelo de dados do seu aplicativo.
Siga as etapas abaixo. Para detalhes adicionais, consulte Selecione e carregue os dados de uma conexão OpenAI.
Criando a tabela de dados a serem enviados para o OpenAI
O primeiro passo é criar uma tabela que contenha a requisição que você está enviando para o OpenAI. As linhas de dados na solicitação são conhecidas como "conclusões". O texto de cada item deve estar contido em linhas em um único campo (coluna) da tabela. Cada linha nesta coluna representa o texto a ser preenchido pela API do OpenAI.
Pode haver um segundo campo adicional para o Campo de associação, mas precisa corresponder ao nome do campo especificado na configuração. Este é um campo especial que não será enviado ao OpenAI, mas é anexado às respostas com o objetivo de gerar um modelo de dados do Qlik.
Em seu aplicativo, abra o editor de carregamento de dados e cole o seguinte código em uma nova seção de script:
SourceTable:
NoConcatenate
LOAD
RowNo() as RowId,
Text
Inline
[Text
translate from English to French: What is the time you go to work?];
Esta tabela contém um campo chamado Text, que contém uma única pergunta que estamos fazendo ao OpenAI. Perguntas adicionais podem ser adicionadas como novas células individuais abaixo da célula da pergunta existente. O campo RowId é o Campo de sssociação, que será usado na próxima etapa para vincular as respostas ao modelo de dados do aplicativo.
Criando a instrução de carregamento do OpenAI
A próxima etapa é criar outra instrução de carregamento para se comunicar com o OpenAI. A tabela que você carrega com esta instrução aponta para os nomes da tabela e campos que você está usando para enviar os dados da solicitação. Resumindo, uma segunda tabela está sendo carregada pelo script para fornecer as respostas do OpenAI aos seus itens de solicitação.
Para gerar esta parte do script, você pode usar o assistente Selecionar dados para a conexão que você está usando. Isso gera um script de modelo incluindo os nomes das propriedades que você fornece. Alternativamente, você pode adicionar esta tabela manualmente no editor de script sem usar o assistente.
Localize a conexão que você está usando no painel Fontes de dados painel do editor de carregamento de dados e clique em . Isso abre o assistente Selecionar dados.
Ao usar o assistente Selecionar dados, você precisa fornecer duas propriedades:
-
O nome da Tabela residente. Esta é a tabela com as perguntas que estão sendo enviadas para o OpenAI. Neste caso, é SourceTable.
-
O nome do Campo de dados. Este é o campo que contém as perguntas que estão sendo enviadas ao OpenAI. Neste caso, é Text.
Em Tabelas, clique na caixa de seleção da tabela chamada openai.
Quando você clica em Inserir script, a nova tabela é incluída no script de carregamento.
Com a instrução de carregamento do OpenAI agora adicionada, seu script de carregamento deve se parecer com o seguinte:
Agora, você está pronto para executar o script de carregamento.
Carregando os dados no aplicativo
Após a conclusão do script, clique em Carregar dados. Isso realiza as comunicações com o OpenAI e insere as tabelas no modelo de dados do seu aplicativo.
Abra o visualizador de modelo de dados e observe que as duas tabelas estão vinculadas conforme o esperado. No painel Visualização, a resposta do OpenAI à pergunta que fizemos está incluída na segunda tabela.
Agora você pode gerar conteúdo analítico usando os dados que foram carregados no aplicativo. Você não precisará se referir à conexão com o OpenAI em nenhum gráfico criado usando esses dados. Para saber como usar a conexão com OpenAI diretamente em expressões de gráfico (em vez de usá-la no script de carregamento), consulte Usar o conector OpenAI em expressões de gráfico.
Usar o conector OpenAI em expressões de gráfico
Além de adicionar perguntas e respostas do OpenAI ao modelo de dados do seu aplicativo usando o script de carregamento, você também pode executar essas operações diretamente em um gráfico no seu aplicativo. Essa pode ser uma alternativa ao uso de tabelas no script de carregamento para se comunicar com o OpenAI.
Os dados de um único campo são enviados e recebidos entre você e o 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 notáveis.
Para detalhes adicionais, consulte Usando conexões OpenAI em expressões de visualização.
Considerações para volumes de solicitação de dados
Recomenda-se usar apenas conexões OpenAI em expressões de gráfico para uma ou algumas linhas de dados. Não é recomendado o uso de expressões de gráfico para enviar grandes quantidades de dados para o OpenAI.
É importante estar ciente de quantas linhas você está enviando com cada solicitação. Erros na configuração da conexão 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). Antes de interagir com uma plataforma de terceiros, certifique-se de estar ciente de como os campos usados no cálculo da expressão do gráfico e seu lugar no modelo de dados afetam seu contrato financeiro e acordos de cobrança com terceiros. Uma maior utilização da plataforma externa pode resultar em custos mais elevados.
Siga estas diretrizes para moderar e limitar o tamanho das suas solicitações:
-
Use a conexão apenas em uma expressão de gráfico Texto e imagem. É desaconselhável usar uma conexão com o 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 se 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 enviará ao OpenAI.
-
Se você estiver usando uma conexão com o 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.
Exercício: criando uma expressão de gráfico básica
Faça o seguinte:
-
Crie um aplicativo Qlik Sense e abra uma nova pasta no modo de edição avançada.
Nota informativaA conexão analítica que você está usando para a expressão do gráfico já deve estar criada no espaço onde você cria o aplicativo. Você pode fazer isso no editor da carga de dados em um aplicativo ou na página Criar do Análises do Analytics. Para obter mais informações, consulte Criando uma conexão OpenAI. -
Arraste um gráfico de Texto e imagem para a pasta.
-
No painel de propriedades, em Dados > Medidas, adicione uma medida e clique em para abrir o editor de expressão.
-
Cole a seguinte expressão no editor de expressão:
endpoints.ScriptAggrStr('{"RequestType":"endpoint", "endpoint":{"connectionname":"Chat_Completions_GPT_3.5_4_Rows","column":"choices.message.content"}}', 'Translate this text from english to spanish: The sun was rising over the new tomorrow with a tinge of excitement.')
Nota informativaNeste exemplo, é aceitável não usar uma instrução if, pois estamos enviando apenas uma única linha de dados e não há conexão com um modelo de dados. Em outros cenários, use uma instrução if para garantir que o gráfico seja calculado somente quando um único valor de campo for selecionado no aplicativo. Para exemplos, consulte Exemplos rápidos.Nota informativaPara que esse código exato funcione corretamente em seu aplicativo, sua conexão OpenAI também deve ser configurada com o mesmo valor de Nome que o connectionname especificado na expressão. Para os valores usados para os fins deste tutorial, consulte Criar as conexões. -
Clique em Aplicar.
Exercício: criando uma caixa de entrada de texto usando uma variável
Alternativamente, você pode substituir a string da pergunta pelo nome de uma variável que você criou no aplicativo, permitindo a criação de uma caixa de entrada onde os consumidores do aplicativo podem inserir suas próprias perguntas sem interagir com expressões.
Essa interface simples pode ser usada para enriquecer os dados do seu aplicativo com informações contextuais geradas em tempo real.
Faça o seguinte:
-
Crie um aplicativo e adicione alguns dados e visualizações a uma nova pasta.
-
Clique em para criar uma variável. Para este exercício, use o Nome vUserQuestion. Deixe os parâmetros restantes em branco.
-
No painel de ativos, arraste um gráfico de Entrada variável para pasta. Este está localizado sob Extensões > Pacote Qlik Dashboard.
-
No painel de propriedades do gráfico de entrada variável, expandir Aparência > Variável.
-
Sob Nome, selecione vUserQuestion.
-
Sob Mostrar como, selecione Caixa de entrada.
-
No painel de ativos, arraste um gráfico de Texto e imagem para a pasta.
-
No painel de propriedades, em Dados > Medidas, adicione uma medida e clique em para abrir o editor de expressão.
-
Cole a seguinte expressão no editor de expressão:
if(vUserQuestion <> '', endpoints.scriptAggrStr('{"RequestType":"endpoint", "endpoint":{"connectionname":"Chat_Completions_GPT_3.5_4_Rows","column":"choices.message.content"}}',vUserQuestion))
Nota informativaPara que esse código exato funcione corretamente em seu aplicativo, sua conexão OpenAI também deve ser configurada com o mesmo valor de Nome que o connectionname especificado na expressão. Para os valores usados para os fins deste tutorial, consulte Criar as conexões. -
Clique em Aplicar.
-
Redimensione essas caixas de entrada e resposta para atender às suas necessidades.
Agora você deve ser capaz de sair do modo de edição e digitar uma pergunta na caixa de entrada. Quando você pressiona Enter ou clica em qualquer outro lugar na pasta, a caixa de resposta preencherá uma resposta do OpenAI.
A conexão com o OpenAI neste exercício não se comunica com o modelo de dados do aplicativo, mas é possível criar aplicativos muito mais sofisticados totalmente integrados aos dados carregados no aplicativo e responsivos às seleções feitas no aplicativo.
Para obter mais informações sobre como trabalhar com variáveis, consulte Criando uma variável e Controle de entrada de variável.
Diferenças entre o script de carregamento e o código de expressão de gráfico
Nessas expressões de gráfico, reaproveitamos o código inserido na lição de script de carregamento anterior. A lista a seguir destaca as diferenças mais importantes entre a versão do script de carregamento e as expressões do gráfico:
-
Nós mudamos o ScriptEval para ScriptAggrStr. Isso descreve que estamos enviando uma única linha de dados e esperando uma única linha de volta. Isso é necessário ao trabalhar com dados personalizados, como uma variável ou constante, como neste caso. O “Str” indica que estamos enviando e recebendo valores de texto.
-
Adicionamos uma nova propriedade, column, com o valor de choices.message.content. Está aninhado dentro do objeto endpoint. Essa adição à string de configuração é necessária para especificar qual campo deve ser retornado do conector. Em uma expressão de gráfico, apenas um campo é usado e devemos especificar qual.
Para obter mais informações, consulte Sintaxe das extensões no lado do servidor.