Dela via


Viktiga begrepp och överväganden för att skapa generativa AI-lösningar

Stora språkmodeller (LLM) är kraftfulla, men de har gränser. Du behöver veta vad LLM:er kan göra som standard och hur du justerar dem för att få bästa resultat för dina generativa AI-appar. Den här artikeln beskriver de största utmaningarna med LLM:er och visar enkla sätt att lösa dem och förbättra hur du genererar innehåll, oavsett vilken typ av generativ AI-funktioner du skapar.

Tekniska utmaningar när du arbetar med LLM:er

Här är de viktigaste utmaningarna och begränsningarna att tänka på när du arbetar med LLM:er:

  • Kunskapsavstängning: LLM:er vet bara vad de har tränats på fram till ett visst datum. Utan externa dataanslutningar kan de inte komma åt realtidsinformation eller privat information.

  • Hallucination: LLM:er kan generera felaktig eller vilseledande information. Funktionen grundidentifiering i Azure AI Foundry hjälper dig att avgöra om en LLM:s svar baseras på det källmaterial du tillhandahåller. Ogrundade svar innehåller information som inte stöds av dina data. Lär dig hur du använder identifiering av markighet i den här snabbstarten.

  • Transparens: Du kan inte alltid spåra källan eller noggrannheten för genererat innehåll och det finns inget inbyggt verifieringssteg.

  • Ingen domänspecifik kunskap: LLM:er känner inte till dina interna eller proprietära data om du inte integrerar dem.

  • Oförmåga att lära sig av interaktioner: LLM:er har inte minne eller medvetenhet om tidigare interaktioner, så de kan inte anpassa sig eller förbättras över tid baserat på användarfeedback. För att lösa dessa utmaningar och få bästa resultat kan du komplettera LLM:s kunskaper med dina egna data och använda valideringsverktyg.

Var LLM:er får sin information

LLM:er tränas på stora datamängder från böcker, artiklar, webbplatser och andra källor. Deras svar återspeglar mönster i dessa data, men allt som hände efter träningsavstängningen ingår inte. Utan externa anslutningar kan LLM:er inte komma åt realtidsinformation eller bläddra på Internet, vilket kan leda till inaktuella eller ofullständiga svar.

Faktorer som påverkar hur slutsatsdragning fungerar

När du använder en LLM kan det se ut som om modellen kommer ihåg hela konversationen. I verkligheten innehåller varje ny fråga du skickar alla dina tidigare frågor och modellens svar. LLM använder den här fullständiga historiken som kontext för att skapa nästa svar. Den här körningshistoriken är kontextfönstret.

Varje LLM har en maximal kontextfönsterstorlek som ändras efter modell och version. Om konversationen överskrider den här gränsen släpper modellen de äldsta delarna och ignorerar dem i sitt svar.

Längre kontextfönster innebär att modellen måste bearbeta mer data, vilket kan göra saker långsammare och kosta mer.

Kontextfönstrets storlek använder token, inte ord. Token är den minsta text som modellen kan hantera– dessa delar kan vara hela ord, delar av ord eller enkla tecken, beroende på språk och tokeniserare.

För utvecklare påverkar tokenanvändningen direkt:

  • Den maximala mängden konversationshistorik som modellen kan tänka på (kontextfönster)
  • Kostnaden för varje fråga och slutförande, eftersom faktureringen baseras på antalet bearbetade token

Vad är tokenisering?

Tokenisering är processen för att dela upp text i token – de minsta enheter som en modell kan bearbeta. Tokenisering är viktigt för både träning och slutsatsdragning med LLM:er. Beroende på språk och tokeniserare kan token vara hela ord, underord eller till och med enkla tecken. Tokenisering kan vara så enkelt som att dela upp mellanslag och skiljetecken, eller så komplext som att använda algoritmer som står för språkstruktur och morfologi.

Sidan OpenAI-tokeniserare förklarar tokenisering i detalj och innehåller en kalkylator som visar hur meningar delas upp i token.

I typisk engelsk text är en token ungefär fyra tecken. I genomsnitt är 100 token ungefär 75 ord.

För utvecklare hjälper följande bibliotek till att beräkna antalet token för frågor och slutföranden, vilket är användbart för att hantera begränsningar och kostnader för kontextfönster:

Tokenanvändning påverkar fakturering

Varje Azure OpenAI-API har olika faktureringsmetoder. För bearbetning och generering av text med API:et för chattslutsättning debiteras du baserat på antalet token som du skickar som en uppmaning och antalet token som genereras som ett resultat (slutförande).

Varje LLM-modell (till exempel GPT-4.1, GPT-4o eller GPT-4o mini) har vanligtvis ett annat pris, vilket återspeglar den mängd beräkning som krävs för att bearbeta och generera token. Många gånger visas priset som "pris per 1 000 tokens" eller "pris per 1 miljon token".

Den här prismodellen har en betydande effekt på hur du utformar användarinteraktioner och mängden förbearbetning och efterbearbetning som du lägger till.

Systemprompter jämfört med användarprompter

Hittills har den här artikeln diskuterat användarfrågor. En användarprompt är det du skickar till modellen och vad modellen svarar på.

OpenAI har också lagt till systemprompten (eller anpassade instruktioner). En systemprompt är en uppsättning regler som du lägger till i varje chatt. Du kan till exempel be LLM att "alltid svara i haiku-form". Efter det blir varje svar en haiku.

Det här haiku-exemplet visar hur du kan ändra LLM:s svar genom att ändra prompten.

Varför ändra användarens uppmaning? Om du skapar en generativ AI-app för arbete, kunder eller partner kanske du vill lägga till regler för att begränsa vad modellen kan svara på.

Men att ändra användarprompten är bara ett sätt att göra textgenereringen bättre.

Metoder för att förbättra textgenereringsupplevelsen för användare

För att förbättra textgenereringsresultaten är utvecklarna begränsade till att helt enkelt förbättra uppmaningen, och det finns många tekniska tekniker som kan vara till hjälp. Men om du skapar ett eget generativt AI-program finns det flera sätt att förbättra textgenereringsupplevelsen för användare, och du kanske vill experimentera med att implementera alla:

  • Ändra användarprompterna programmatiskt.
  • Implementera en slutsatsdragningspipeline.
  • Retrieval-Augmented Generation (beskrivs i andra artiklar).
  • Finjustering (beskrivs i andra artiklar).

Ändra användarprompter programmatiskt

Om du vill lägga till en systemprompt i en användarkonversation använder du inte ett särskilt API. Du lägger bara till instruktioner i prompten efter behov.

Men du kan använda några tekniker för att förbättra användaruppmaningar:

  • Kontextuell inramning: Craft system prompts som uttryckligen anger kontexten för konversationen inom ämnet. Den här metoden omfattar en kort beskrivning eller en uppsättning instruktioner i början av varje interaktion. Anvisningarna hjälper AI att hålla sig inom problemdomänen.
  • Exempelbaserad vägledning: I den första prompten innehåller du exempel på de typer av frågor och svar som är relevanta för din domän. Den här metoden hjälper AI att förstå vilken typ av svar som kan förväntas.

Du kan använda valfri teknik för promptdesign. Om du kan göra det programmatiskt kan du förbättra användarens upplevelse på deras vägnar.

Nackdelen med den här metoden är att ju längre uppmaningen är, desto högre blir kostnaden för varje anrop till LLM. Trots detta är den här metoden förmodligen den billigaste metoden som beskrivs i den här artikeln.

Implementera en slutsatsdragningspipeline

När du har förbättrat användarens uppmaning är nästa steg att skapa en slutsatsdragningspipeline.

En slutsatsdragningspipeline är en process som:

  1. Rensar råa indata (till exempel text eller bilder)
  2. Skickar den till modellen (förbearbetning)
  3. Kontrollerar modellens svar för att se till att den uppfyller användarens behov innan den visas (efterbearbetning).

Förbearbetning kan vara att söka efter nyckelord, bedöma relevans eller ändra frågan så att den passar din domän bättre. Titta till exempel på användarens första fråga. Fråga LLM om uppmaningen är meningsfull, följer dina regler, baseras på en korrekt idé eller behöver skrivas om för att undvika bias. Om LLM hittar problem kan du be den att skriva om uppmaningen för att få ett bättre svar.

Efterbearbetning kan innebära att du kontrollerar om svaret passar din domän och uppfyller dina standarder. Du kan ta bort eller flagga svar som inte matchar dina regler. Kontrollera till exempel LLM:s svar för att se om det uppfyller dina kvalitets- och säkerhetsbehov. Du kan be LLM att granska dess svar och ändra det om det behövs. Upprepa den här processen tills du får ett bra resultat.

Tänk på följande: varje gång du anropar en LLM i din slutsatsdragningspipeline tar det längre tid att svara och kostar mer. Du måste balansera dessa kompromisser med din budget, hastighet och hur bra systemet fungerar.

Information om de specifika åtgärder som ska utföras för att skapa en slutsatsdragningspipeline finns i Skapa ett avancerat hämtningsförhöjd generationssystem.

Andra faktorer som påverkar slutföranden

Förutom att programmatiskt ändra prompten, skapa en inferenspipeline och använda andra tekniker, diskuteras mer information i , Utöka en storspråksmodell med hämtningsförstärkt generation och finjustering. Du kan också ändra parametrar när du gör anrop till Azure OpenAI-API:et.

Information om hur du granskar obligatoriska och valfria parametrar som kan påverka olika aspekter av slutförandet finns i dokumentationen om Chat-slutpunkt. Om du använder ett SDK kan du läsa SDK-dokumentationen för det språk du använder. Du kan experimentera med parametrarna i Playground-.

  • Temperature: Kontrollera slumpmässigheten i utdata som modellen genererar. Vid noll blir modellen deterministisk och väljer konsekvent den mest sannolika nästa token från sina träningsdata. Vid en temperatur på 1 balanserar modellen mellan att välja token med hög sannolikhet och att införa slumpmässighet i utdata.

  • Max Tokens: Styr svarets maximala längd. Att ange en högre eller lägre gräns kan påverka informationen och omfattningen för det genererade innehållet.

  • Top P (nucleus sampling): Används med Temperature för att kontrollera slumpmässigheten i svaret. Top P begränsar AI till att endast ta hänsyn till den högsta procenten av sannolikhetsmassan (P) när varje token genereras. Lägre värden leder till text som är mer fokuserad och förutsägbar. Högre värden möjliggör mer mångfald.

  • Frequency Penalty: Minskar sannolikheten för att modellen upprepar samma rad eller fras. Om du ökar det här värdet kan du undvika redundans i den genererade texten.

  • Presence Penalty: Uppmuntrar modellen att introducera nya begrepp och termer i slutförandet. Presence Penalty är användbart för att generera mer mångsidiga och kreativa resultat.

  • Stop Sequences: Du kan ange en eller flera sekvenser för att instruera API:et att sluta generera fler token. Store Sequences är användbara för att kontrollera strukturen för utdata, till exempel att avsluta ett slutförande i slutet av en mening eller ett stycke.

  • Logit Bias: Gör att du kan ändra sannolikheten för att angivna token visas i slutförandet. Logit Bias kan användas för att vägleda slutförandet i en viss riktning eller för att utelämna specifikt innehåll.

Microsoft Azure OpenAI-skydd

Förutom att hålla LLM:s svar bundna till specifika ämnen eller domäner är du förmodligen också bekymrad över de typer av frågor som användarna ställer till LLM. Det är viktigt att tänka på vilka typer av svar det genererar.

Först anropar API:et till Microsoft Azure OpenAI Services automatiskt innehåll som API:et hittar potentiellt stötande och rapporterar detta tillbaka till dig i många filtreringskategorier.

Du kan använda API:et för innehållsmoderering direkt för att kontrollera innehåll om det finns potentiellt skadligt innehåll.

Sedan kan du använda Azure AI Content Safety för att hjälpa till med textmoderering, bildmoderering, riskidentifiering av jailbreak och identifiering av skyddat material. Den här tjänsten kombinerar en portalkonfiguration, konfiguration och rapportering med kod som du kan lägga till i ditt program för att identifiera skadligt innehåll.

AI-agenter

AI-agenter är ett nytt sätt att skapa generativa AI-appar som fungerar på egen hand. De använder LLM:er för att läsa och skriva text, och de kan även ansluta till externa system, API:er och datakällor. AI-agenter kan hantera komplexa uppgifter, göra val med hjälp av realtidsdata och lära sig hur människor använder dem. Mer information om AI-agenter finns i Snabbstart: Skapa en ny agent.

Verktygsanrop

AI-agenter kan använda externa verktyg och API:er för att hämta information, vidta åtgärder eller ansluta till andra tjänster. Med den här funktionen kan de göra mer än att bara generera text och hantera mer komplexa uppgifter.

En AI-agent kan till exempel hämta väderuppdateringar i realtid från ett väder-API eller hämta information från en databas baserat på vad en användare frågar. Mer information om verktygssamtal finns i Verktygsanrop i Azure AI Foundry.

McP (Model Context Protocol)

Med MCP (Model Context Protocol ) kan appar tillhandahålla funktioner och kontext till en stor språkmodell. En viktig funktion i MCP är att definiera verktyg som AI-agenter använder för att utföra uppgifter. MCP-servrar kan köras lokalt, men fjärranslutna MCP-servrar är avgörande för att dela verktyg i molnskala. Mer information finns i Skapa agenter med hjälp av Model Context Protocol i Azure.

Slutliga överväganden för programdesign

Att förstå tokenisering, prissättning, kontextfönster och implementering av programmässiga förbättringar för att förbättra användarnas textgenerering påverkar hur du utformar ditt generativa AI-system.

Här är en kort lista över saker att tänka på och andra lärdomar från den här artikeln som kan påverka dina beslut om programdesign:

  • Utvärdera nödvändigheten av att använda den senaste AI-modellen mot kostnadsöverväganden. Modeller som är billigare kan räcka för din applikations behov. Balansera prestanda med budgetbegränsningar.
  • Överväg att optimera kontextfönstrets längd för att hantera kostnader utan att avsevärt påverka användarupplevelsen. Att trimma onödiga delar av konversationen kan minska bearbetningsavgifterna samtidigt som kvalitetsinteraktioner bibehålls.
  • Utvärdera hur tokenisering och kornigheten för dina indata och utdata påverkar prestandan. Att förstå hur din valda LLM hanterar tokenisering kan hjälpa dig att optimera effektiviteten för dina API-anrop, vilket kan minska kostnaderna och förbättra svarstiderna.

Om du vill börja experimentera med att skapa en generativ AI-lösning omedelbart rekommenderar vi att du tar en titt på Kom igång med chatten med hjälp av ditt eget dataexempel för Python. Handledning finns också tillgänglig i .NET, Javaoch JavaScript.