Gå till huvudinnehåll Gå till ytterligare innehåll

Exempel 1: Konfiguration med "OpenAI Completions API (GPT-3) – Rader"

I det här exemplet lär du dig hur du använder OpenAI-analyskopplingen tillsammans med konfigurationen " OpenAI Completions API (GPT-3) – Rader".  Den vägleder dig genom grundläggande övningar där du får se hur du inkorporerar funktionaliteten i din datamodell och dina diagramuttryck.

Den här kopplingskonfigurationens funktionalitet är väldigt lik konfigurationen "OpenAI Chat Completions API (GPT-3.5, GPT-4) - Rader". Men de här två konfigurationer använder olika modeller som i sin tur leder till olika svar. Eftersom parameternamnen mellan de här två konfigurationerna skiljer sig åt ska du dessutom se vägledningsexemplet som matchar din konfiguration. Läs om konfigurationen för Chat Completions i Exempel 3: Konfiguration med "OpenAI Chat Completions API (GPT-3.5, GPT-4,) – Rader".

Du kan också slutföra det här exemplet med Azure OpenAI-kopplingen. När du använder den kopplingen interagerar du med modellerna via Microsoft Azure-plattformen snarare än OpenAI-plattformen.

Innan du börjar

Innan du kan slutföra det här exemplet måste du slutföra följande steg.

  • Skapa ett konto på OpenAI-plattformen

  • Skaffa en OpenAI-API-nyckel

  • Aktivera funktionaliteten för analyskopplingen i Qlik Cloud

  • Skapa anslutningar med tillämpliga anslutningskonfigurationer

Använda OpenAI-kopplingen i ditt laddningsskript

Skapa en ny Qlik Sense-app som du lägger till ett laddningsskript i för att kommunicera med OpenAI-plattformen. De tabeller som du laddar med det här skriptet kommer att vara tillgängligt i din apps datamodell.

Anteckning om informationOm du använder samma app för att slutföra det här avsnittet som du använde i avsnittet om laddningsskript i exempel 2 måste du kommentera bort eller ta bort skriptet från exempel 2 innan du laddar nedanstående skript. Om du inte gör det kommer datamodellen att få problem och du kan till och med stöta på ett fel när du laddar data.

Följ nedanstående steg. Ytterligare information finns i Välj och ladda data från en OpenAI-koppling.

Skapa tabellen som skickas till OpenAI

Det första steget är att skapa en tabell som innehåller den förfrågan som du skickar till OpenAI. Raderna med data i förfrågan benämns "kompletteringar". Texten för varje post måste finnas som rader i ett enda fält (kolumn) i tabellen. Varje rad i den här kolumnen representerar text som ska kompletteras av OpenAI:s API.

Det kan finnas ett andra extra fält för associationsfältet, men det måste matcha det fältnamn som anges i konfigurationen. Detta är ett specialfält som inte skickas till OpenAI, men som är kopplat till svaren i syfte att generera en Qlik-datamodell.

I din app öppnar du skriptredigeraren och klistrar in följande kod i ett nytt skriptavsnitt:

SourceTable:
NoConcatenate
LOAD 
RowNo() as RowId,
Text
Inline
[Text
translate from English to French: What is the time you go to work?];					

 

Den här tabellen innehåller ett fält benämnt Text som innehåller en enda fråga som vi ställer till OpenAI. Ytterligare frågor kan läggas till som nya individuella celler nedanför den befintliga frågans cell. RowId-fältet är associationsfältet som används i nästa steg för att länka svaren till appens datamodell.

Skapa OpenAI-loadsatsen

Nästa steg är att skapa ytterligare en loadsats för att kommunicera med OpenAI. Den tabell som du laddar med den här satsen pekar på namnen på tabellen och de fält som du använder för att skicka förfrågningsdata. Kort sagt, en andra tabell laddas av skriptet för att tillhanda OpenAI:s svar på dina förfrågningsposter.

För att generera den här delen av skriptet kan du använda guiden Välj data för den koppling som du använder. Då genereras ett mallskript där namnen på de egenskaper som du anger ingår. Alternativt kan du lägga till den här tabellen manuellt i skripteditorn utan att använda guiden.

Sök reda på anslutningen som du använder i panelen Datakällor i skriptredigeraren och klicka på Välj data. Det öppnar guiden Välj data.

Välj data-knapp för en analyskoppling i skriptredigeraren

"Välj data"-flik i skriptredigeraren med ikon för "välj data" framhävd

När du använder guiden Välj data måste du tillhandahålla två egenskaper:

  • Namnet på den residenta tabellen. Detta är tabellen med frågor som skickas till OpenAI. I det här fallet är det SourceTable.

  • Namnet på datafältet. Detta är det fält som innehåller frågor som skickas till OpenAI. I det här fallet är det Text.

Under Tabeller klickar du på kryssrutan för tabellen som heter openai.

Välja data-guide i skriptredigeraren

"Välj data"-flik i skriptredigeraren med ikon för "välj data" framhävd

När du klickar på Infoga skript läggs den nya tabellen till i laddningsskriptet.

När OpenAI-loadsatsen nu har lagts till ska ditt laddningsskript se ut så här:

SourceTable: NoConcatenate LOAD RowNo() as RowId, Text Inline [Text translate from English to French: What is the time you go to work?]; [openai]: LOAD [id], [object], [created], [model], [prompt_tokens], [completion_tokens], [total_tokens], [choices.text], [choices.index], [choices.logprobs], [choices.finish_reason], [RowId] EXTENSION endpoints.ScriptEval('{"RequestType":"endpoint", "endpoint":{"connectionname":"OpenAI Connection for Rows Completions (GPT-3)"}}', SourceTable{RowId,Text});

 

Anteckning om informationFör att exakt den här koden ska fungera korrekt i din app måste din OpenAI-koppling också vara konfigurerad med samma Namn-värde som den connectionname som anges i laddningsskriptet ovan. Läs mer om värdena som används i den här vägledningen i Skapa kopplingarna.

Du är nu redo att köra laddningsskriptet.

Ladda data i appen

När skriptet har slutförts klickar du på Ladda data. Då utförs kommunikationen med OpenAI och tabellerna infogas i din apps datamodell.

Anteckning om informationOm du får ett felmeddelande när du laddar skriptet kan det bero på att det finns en felmatchning mellan det valfria, sekundära associationsfältet i kopplingens konfiguration och laddningsskriptet. Om du har definierat ettassociationsfält i konfigurationen för din koppling ska du kontrollera att det också finns med i förfrågningsskriptet.

Öppna datamodellvyn och kontrollera att de två tabellerna har länkats på förväntat sätt. I rutan Förhandsgranska visas OpenAI:s svar på den fråga som vi ställde i den andra tabellen.

Datamodell skapad från OpenAI-kopplingen

Datamodellvy som visar den resulterande datamodellen. I den ingår två tabeller.

Du kan nu generera analysinnehåll med de data som har laddats i appen. Du behöver inte hänvisa till OpenAI-kopplingen i några diagram som du skapar med hjälp av dessa data. Läs mer om hur du använder OpenAI-kopplingen direkt i diagramuttryck (snarare än att använda den direkt i laddningsskriptet) i Använda OpenAI-kopplingen i diagramuttryck.

Använda OpenAI-kopplingen i diagramuttryck

Förutom att lägga till OpenAI-frågor och -svar i din apps datamodell med laddningsskriptet kan du också utföra de här åtgärderna direkt i ett diagram i din app. Det kan vara ett alternativ till att använda tabeller i laddningsskriptet för att kommunicera med OpenAI.

Data för ett enstaka fält skickas fram och tillbaka mellan dig och OpenAI. I många fall kan koden som används för en laddningsskriptskoppling modifieras och återanvändas i ett diagram, med några tydliga skillnader.

Ytterligare information finns i Använda OpenAI-kopplingar i visualiseringsuttryck.

Överväganden för dataförfrågningsvolymer

Vi rekommenderar att du endast använder OpenAI-kopplingar i diagramuttryck för en rad eller ett fåtal rader med data. Vi avråder från att använda diagramuttryck för att skicka stora mängder data till OpenAI.

Det är viktigt att vara medveten om hur många rader du skickar med varje begäran. Fel vid konfigurering av kopplingen i ett diagramuttryck kan leda till oavsiktligt stora förfrågningar (t.ex. identiska rader med samma fråga på grund av felaktig användning av datamodellen i ett diagram). Innan du interagerar med en tredjepartsplattform bör du se till att du är medveten om hur de fält som används i beräkningen av diagramuttryck, och deras plats i datamodellen, påverkar ditt finansiella avtal och faktureringsarrangemang med tredje part. Högre användning av den externa plattformen kan leda till högre kostnader.

Följ dessa riktlinjer för att begränsa storleken på dina förfrågningar.

  • Använd bara  kopplingen i ett text- och bild-diagramuttryck Vi avråder starkt från att använda OpenAI-kopplingen i ett tabellobjekt, framför allt om du lägger till uttrycket i en tabell där en eller flera dimensioner redan har lagts till.

  • Om diagramuttrycket är länkat till din apps datamodell använder du en if-sats i uttrycket för att enbart beräkna diagrammet när ett enda urval görs i appen. Då reducerar du drastiskt antalet rader i de begäran som ditt diagram kommer att skicka till OpenAI.

  • Om du använder OpenAI-kopplingen för att skicka stora förfrågningar använder du kopplingen i ditt laddningsskript i stället för i ett diagramuttryck, så att data förladdas i din datamodell.

Övning: Skapa ett enkelt diagramuttryck

  1. Skapa en Qlik Sense-app och öppna ett nytt ark i avancerat redigeringsläge.

    Anteckning om informationAnalyskopplingen som du använder för diagramuttrycket måste redan ha skapats i det utrymme där du skapade appen. Du kan göra det i skriptredigeraren i en app, eller från Qlik Cloud-analys-hubben. Mer information finns i Skapa en OpenAI-koppling.
  2. Dra ett text och bild-diagram till arket.

  3. Gå till panelen Egenskaper och välj sedan Data > Mått, och lägg till ett mått och klicka på Uttryck för att öppna uttrycksredigeraren. 4.

  4. Klistra in följande uttryck i uttrycksredigeraren:

    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.')
    Anteckning om informationI det här exemplet är det godkänt att inte använda en if-sats, eftersom vi bara skickar en enkel rad med data och det inte finns någon koppling till en datamodell. I andra scenarier, använder du en if-sats för att säkerställa att diagrammet endast beräknas när ett enskilt fältvärde har valts i appen. Exempel finns här: Snabbexempel.
    Anteckning om informationFör att exakt den här koden ska fungera korrekt i din app måste din OpenAI-koppling också vara konfigurerad med samma Namn-värde som den connectionname som anges i uttrycket. Läs mer om värdena som används i den här vägledningen i Skapa kopplingarna.
  5. Klicka på Tillämpa.

Qlik SenseText och bild-diagram med OpenAI-svar

Qlik Sense-arkobjekt med svar från OpenAI.

Övning: Skapa en textindatabox med en variabel

Alternativt kan du byta ut frågesträngen mot namnet på en variabel som du har skapat i appen. Därigenom skapas en indataruta där appkonsumenter kan skriva in sina egna frågor utan att interagera med uttryck.

Det här enkla uttrycket kan användas för att förstärka din app med kontextuell information som genereras i realtid.

  1. Skapa en app och lägg till lite data och visualiseringar i ett nytt ark.

  2. Klicka på Variabler för att spara en variabel. I den här övningen ger du den namnet vUserQuestion. Lämna övriga parametrar tomma.

  3. Dra ett variabelinmatningsdiagram till arket i resurspanelen. Den finns under Komplement Qliks instrumentpanelspaket.

  4. Expandera Utseende > Variabel i egenskapspanelen för diagrammet Variabel indata.

  5. Välj vUserQuestion under Namn.

  6. Välj Inmatningsruta under Visa som.

  7. I resurspanelen drar du ett text- och bild-diagram till arket.

  8. Gå till panelen Egenskaper och välj sedan Data > Mått, och lägg till ett mått och klicka på Uttryck för att öppna uttrycksredigeraren. 4.

  9. Klistra in följande uttryck i uttrycksredigeraren:

    if(vUserQuestion <> '', endpoints.scriptAggrStr('{"RequestType":"endpoint", "endpoint":{"connectionname":"OpenAI Connection for Rows Completions (GPT-3)","column":"choices.text"}}',vUserQuestion))
    Anteckning om informationFör att exakt den här koden ska fungera korrekt i din app måste din OpenAI-koppling också vara konfigurerad med samma Namn-värde som den connectionname som anges i uttrycket. Läs mer om värdena som används i den här vägledningen i Skapa kopplingarna.
  10. Klicka på Tillämpa.

  11. Ändra storleken för de här inmatnings- och svarsrutorna efter dina behov.

Du bör nu kunna lämna redigeringsläget och skriva in en fråga i inmatningsrutan. När du trycker på Retur eller klickar någon annanstans i arket kommer svarsrutan att fylla i ett svar från OpenAI.

Enkelt ark med generiska data och inmatningsruta för att ställa frågor till OpenAI

Qlik Sense-arkobjekt med svar från OpenAI.

OpenAI-kopplingen i den här övningen kommunicerar inte alls med appens datamodell, men det går att skapa mycket mer sofistikerade appar som är helt integrerade med data som laddas i appen och responsiva för urval som du gör i appen.

Mer information om hur du arbetar med variabler finns i Skapa en variabel och Kontrollen för variabelinmatning.

Skillnader mellan laddningsskriptet och diagramuttryckets kod

I de här diagramuttrycken har vi modifierat och återanvänt koden från den tidigare laddningsskriptslektionen. I den följande listan lyfter vi fram de viktigaste skillnaderna mellan laddningsskriptsversionen och diagramuttrycken:

  • Vi ändrade ScriptEval till ScriptAggrStr. Detta anger att vi skickar en enda rad med data och förväntar oss att få en enda rad tillbaka Detta krävs när du arbetar med anpassade data, till exempel en variabel eller en konstant som i det här fallet. "Str" anger att vi skickar och tar emot textvärden.

  • Vi lade till en ny egenskap, column, med värdet choice.text. Den är nästlad inuti endpoint-objektet. Det här tillägget till konfigurationssträngen krävs för att ange vilket fält som ska returneras från kopplingen. I ett diagramuttryck används bara ett fält och vi måste ange vilket.

Mer information finns i Syntax för komplement på serversidan.

Var den här sidan till hjälp för dig?

Om du hittar några fel på denna sida eller i innehållet – ett stavfel, ett steg som saknas eller ett tekniskt fel – berätta för oss så att vi kan blir bättre!