Introduktion till att skapa generativa AI-lösningar för utvecklare
Generativ AI, som aktiveras av stora språkmodeller (LLM), öppnar nya spännande möjligheter för programutvecklare och organisationer. Tjänster som Azure OpenAI demokratiserar AI-utveckling genom att erbjuda lätthanterliga API:er, vilket gör det möjligt för utvecklare på valfri kompetensnivå att integrera avancerade AI-funktioner i sina program utan att behöva särskilda kunskaper eller kräva att organisationer investerar i maskinvara.
Som programutvecklare kan du få svårt att förstå vilken roll du kan spela och var du passar in. Du kanske till exempel undrar på vilken nivå i "AI-stacken" ska du fokusera din inlärning? Eller kanske du undrar vad du kan bygga med tanke på den befintliga tekniken?
För att besvara dessa frågor är det viktigt att du först utvecklar en mental modell som mappar hur all ny terminologi och teknik passar in i det du redan förstår. Genom att utveckla en mental modell kan du utforma och bygga generativa AI-funktioner i dina program. Syftet med den här serien med artiklar är därför att visa hur din nuvarande programvaruutvecklingsupplevelse gäller för generativ AI. Artiklarna innehåller också en nivåuppsättning för nyckelord och begrepp när du börjar utveckla dina första generativa AI-lösningar.
Vad hoppas företag uppnå med generativ AI?
För att förstå hur din nuvarande programvaruutvecklingsupplevelse gäller för generativ AI är det viktigt att börja med att förstå hur företag tänker dra nytta av den.
Företag ser generativ AI som ett sätt att förbättra kundengagemanget, öka drifteffektiviteten och förbättra problemlösningen och kreativiteten. Genom att integrera generativ AI i befintliga system kan företag förbättra sina programvaruekosystem. Den kan komplettera traditionella programvarufunktioner med avancerade AI-funktioner, till exempel anpassade rekommendationer för användare eller en intelligent agent som kan svara på organisations- eller produktspecifika frågor.
Här följer några vanliga scenarier där generativ AI kan hjälpa företag:
- Innehållsgenerering
- Generera text, kod, bilder och ljud. Detta kan vara användbart för marknadsföring, försäljning, IT, intern kommunikation med mera.
- Bearbetning av naturligt språk
- Skapa eller förbättra affärskommunikationen genom förslag eller fullständig generering av meddelanden.
- "Chatta med dina data", eller med andra ord, så att en användare kan ställa frågor i en chattupplevelse med hjälp av data som lagras i databaser eller i dokument som grund för svar.
- Sammanfattning, organisation och förenkling av stora innehållsförekomster för att göra innehållet mer tillgängligt.
- "Semantisk sökning", eller snarare, så att användare kan söka efter dokument och data utan att använda exakta nyckelordsmatchningar.
- Översätta språk för att öka innehållets räckvidd och tillgänglighet.
- Dataanalys
- Analysera marknader och identifiera trender i data.
- Modellera "tänk om"-scenarier för att hjälpa företag att planera för eventuella förändringar eller utmaningar inom alla områden i verksamheten.
- Analysera kod för att föreslå förbättringar, åtgärda buggar och generera dokumentation.
Som du ser har programvaruutvecklare möjlighet att dramatiskt öka sin påverkan genom att integrera generativa AI-program och funktioner i den programvara som deras organisationer förlitar sig på.
Hur skapar du dessa typer av program?
Även om LLM (Large Language Model) utför tunga lyft skapar du system som integrerar, samordnar och övervakar resultaten. Det finns mycket att lära sig, men du kan använda de kunskaper du redan känner till:
- Göra anrop till API:er med hjälp av REST, JSON eller språkspecifika SDK:er (Software Development Kits)
- Samordna anrop till API:er och utföra affärslogik
- Lagra till och hämta från datalager
- Integrera indata och resultat i användarupplevelsen
- Skapa API:er som kan anropas från LLM:er
På så sätt bygger utvecklingen av generativa AI-lösningar på dina befintliga kunskaper.
Vilka verktyg och tjänster är tillgängliga?
Microsoft investerar i att utveckla verktyg, tjänster, API:er, exempel och utbildningsresurser som hjälper dig när du påbörjar din generativa AI-utvecklingsresa. Var och en belyser några viktiga problem eller ansvar som krävs för att skapa en generativ AI-lösning. För att använda en viss tjänst, ETT API eller en resurs på ett effektivt sätt är utmaningen att se till att du:
- Förstå de typiska funktionerna, rollerna och ansvarsområdena i en viss typ av generativ AI-funktion? Som vi till exempel diskuterar länge i konceptuella artiklar som beskriver RAG-baserade chattsystem (Retrieval-Augmented Generation) finns det många arkitektoniska ansvarsområden i systemet. Det är viktigt att du förstår problemdomänen och begränsningarna intimt innan du utformar ett system som åtgärdar problemet.
- Förstå vilka API:er, tjänster och verktyg som finns för en viss funktion, roll eller ansvar? Nu när du förstår problemdomänen och begränsningarna kan du välja att skapa den aspekten av systemet själv med anpassad kod eller använda befintliga verktyg med låg kod/ingen kod eller anropa API:er för befintliga tjänster.
- Förstå alternativen, inklusive kodcentrerade lösningar och lösningar utan kod/låg kod. Du kan bygga allt själv, men är det en effektiv användning av din tid och skicklighet? Beroende på dina krav kan du vanligtvis sy ihop en kombination av tekniker och metoder (kod, kod utan kod, låg kod, verktyg).
Poängen här är att det inte finns något enda rätt sätt att skapa generativa AI-funktioner i dina program. Det finns många verktyg och metoder. Det är viktigt att utvärdera kompromisserna.
Börja med att fokusera på programskiktet
Du behöver inte förstå allt om generativ AI för att komma igång och vara produktiv. Som tidigare nämnts vet du förmodligen redan tillräckligt eftersom du kan använda API:er och tillämpa befintliga kunskaper.
Du behöver till exempel inte träna din egen LLM från grunden. Utbildning av en LLM skulle kräva tid och resurser som de flesta företag inte vill genomföra. I stället bygger du vidare på befintliga förtränad grundläggande modeller som GPT-4 genom att göra API-anrop till befintliga värdbaserade tjänster som Azure OpenAI API. På så sätt är det inte annorlunda att lägga till generativa AI-funktioner i ett befintligt program än att lägga till andra funktioner baserat på ett API-anrop.
Att undersöka hur LLM:er tränas eller hur de fungerar kan tillfredsställa din intellektuella nyfikenhet, men att verkligen förstå hur LLM:er fungerar kräver djup förståelse för datavetenskap och matematikbakgrunden för att stödja den. Detta kan omfatta kurser på forskarnivå om statistik, sannolikheter och informationsteori.
Om du kommer från en bakgrund inom datavetenskap kan du uppskatta att de flesta programutveckling sker på ett "högre lager i stacken" av forskning och teknik. Du kanske har viss förståelse för varje lager, men du är förmodligen specialiserad på programutvecklingsskiktet, med fokus på ett specifikt programmeringsspråk och en specifik plattform (tillgängliga API:er, verktyg, mönster och så vidare).
Samma sak gäller för AI-området. Du kan förstå och uppskatta den teori som går ut på att bygga ovanpå LLM:er, men du kommer sannolikt att fokusera din uppmärksamhet på programskiktet eller hjälpa till att implementera mönster eller processer för att möjliggöra en generativ AI-insats i ditt företag.
Här är en över förenklad representation av de kunskapsnivåer som krävs för att implementera generativa AI-funktioner i ett nytt eller befintligt program:
På den lägsta nivån har du dataforskare som gör datavetenskapsforskning för att lösa eller förbättra AI baserat på en djup matematisk förståelse av statistik, sannolikhetsteori och så vidare. Ett lager upp, baserat på det lägsta grundläggande lagret, har du dataforskare som implementerar deorietiska begreppen i LLM: er, skapar neurala nätverk och tränar vikter och fördomar för att tillhandahålla en praktisk programvara som kan acceptera indata (prompter) och generera resultat (slutföranden). Beräkningsprocessen för att skapa slutföranden baserat på uppmaningar kallas slutsatsdragning. Det finns de som ansvarar för att implementera hur neuronerna i det neurala nätverket förutsäger nästa ord eller pixel som ska genereras.
Med tanke på mängden bearbetningskraft som krävs för att träna modeller och generera resultat baserat på indata tränas modellerna ofta och hanteras i stora datacenter. Det är möjligt att träna eller vara värd för en modell på en lokal dator, men resultaten är ofta långsamma (utan dedikerade GPU-grafikkort för att hantera den beräkning som krävs för att generera resultat).
När programmatisk åtkomst till dessa modeller finns i stora datacenter tillhandahålls den via REST-API:er, och de är ibland "omslutna" av SDK:er och tillgängliga för programutvecklare för enkel användning. Andra verktyg kan hjälpa till att förbättra utvecklarupplevelsen och tillhandahålla observerbarhet eller andra verktyg. Programutvecklare kan göra anrop till dessa API:er för att implementera affärsfunktioner.
Förutom att fråga modellerna programmatiskt finns det mönster och processer som hjälper företag att bygga tillförlitliga affärsfunktioner baserat på generativ AI. Det finns till exempel mönster som hjälper företag att se till att genererad text, kod, bilder och ljud uppfyller etiska och säkerhetsmässiga standarder samt åtaganden om integriteten för kundernas data.
Om du är programutvecklare med ansvar för att skapa affärsfunktioner i den här högen med problem eller lager är det möjligt för dig att överföra bortom programskiktet till att utveckla och träna din egen LLM. Men att få den här nivån av förståelse kräver en ny uppsättning färdigheter som ofta bara är tillgängliga via en akademisk miljö. Om du inte kan åta dig att utveckla kompetens inom datavetenskap akademiskt för att hjälpa till att bygga "nästa lager nedåt i stacken" (så att säga) kanske du vill fokusera på att förstå saker på programskiktet som:
- Förstå tillgängliga API:er och SDK:er, vad som är tillgängligt, vad de olika slutpunkterna producerar osv.
- Förstå relaterade verktyg och tjänster som hjälper dig att skapa alla funktioner som krävs för en produktionsklar generativ AI-lösning.
- Förstå snabb teknik, till exempel hur du uppnår bästa resultat genom att ställa eller omformulera frågor.
- Förstå var flaskhalsar uppstår och hur du skalar en lösning. Förstå vad som ingår i loggning eller erhålla telemetri utan att bryta mot kundens integritetsproblem.
- Förstå egenskaperna hos de olika LLM:erna (deras styrkor, användningsfall, vad är riktmärkena och vad de mäter, viktiga differentieringar mellan leverantörer och modeller som produceras av varje leverantör osv.) för att välja rätt modell för företagets behov.
- Förstå de senaste mönstren, arbetsflödena och processerna som används för att skapa effektiva och motståndskraftiga generativa AI-funktioner i dina program.
Tillgängliga tjänster och verktyg från Microsoft
Det finns generativa AI-verktyg och tjänster med låg kod och ingen kod som är tillgängliga från Microsoft för att hjälpa dig att skapa en del eller hela lösningen. Olika Azure-tjänster kan spela viktiga roller som var och en bidrar till lösningens effektivitet, skalbarhet och robusthet:
API- och SDK:er för kodcentrerad metod
Kärnan i varje generativ AI-lösning är en LLM-modell och Azure OpenAI ger åtkomst till alla funktioner som är tillgängliga i modeller som GPT-4.
Produkt | beskrivning |
---|---|
Azure OpenAI | En värdbaserad tjänst som ger åtkomst till kraftfulla språkmodeller som GPT-4. Det finns flera olika API:er som gör att du kan utföra alla typiska funktioner i en LLM, till exempel att skapa inbäddningar, skapa en chattupplevelse osv. med fullständig åtkomst till inställningar och justeringar för att anpassa resultatet efter behov. |
Körningsmiljöer
Eftersom du skapar affärslogik, presentationslogik eller API:er för att integrera generativ AI i organisationens program behöver du någonstans att vara värd för och köra den logiken.
Produkt | beskrivning |
---|---|
Azure App Service (eller en av flera containerbaserade molntjänster) | Den här plattformen kan vara värd för webbgränssnitt eller API:er genom vilka användare interagerar med RAG-chattsystemet. Den stöder snabb utveckling, distribution och skalning av webbprogram, vilket gör det enklare att hantera klientdelskomponenterna i systemet. |
Azure Functions | Använd serverlös beräkning för att hantera händelsedrivna uppgifter i RAG-chat-systemet. Använd den till exempel för att utlösa datahämtningsprocesser, bearbeta användarfrågor eller hantera bakgrundsuppgifter som datasynkronisering och rensning. Det möjliggör en mer modulär, skalbar metod för att skapa systemets serverdel. |
Låg kod/ingen kod
Alternativt kan en del av den logik som krävs av lösningen skapas snabbt och hanteras på ett tillförlitligt sätt av lösningar med låg kod eller ingen kod.
Produkt | beskrivning |
---|---|
Azure AI Studio | Azure AI Studio kan användas för träning, testning och distribution av anpassade maskininlärningsmodeller som kan förbättra RAG-chattsystemet. Du kan till exempel använda Azure AI Studio för att anpassa svarsgenereringen eller förbättra relevansen för hämtad information. |
Vektordatabas
Vissa generativa AI-lösningar kan kräva lagring och hämtning av data som används för att öka genereringen (till exempel RAG-baserade chattsystem som gör det möjligt för användare att chatta med organisationens data). I det här användningsfallet behöver du ett vektordatalager.
Produkt | beskrivning |
---|---|
Azure AI Search | Den här tjänsten kan användas för att effektivt söka igenom stora datamängder för att hitta relevant information som kan användas för att informera de svar som genereras av språkmodellerna. Det är användbart för hämtningskomponenten i ett RAG-system, vilket säkerställer att de genererade svaren är så informativa och kontextuellt relevanta som möjligt. |
Cosmos DB | Den här globalt distribuerade databastjänsten med flera modeller kan lagra de stora mängder strukturerade och ostrukturerade data som RAG-chattsystemet behöver åtkomst till. Dess funktioner för snabb läsning och skrivning gör den idealisk för att leverera realtidsdata till språkmodellen och lagra användarinteraktioner för ytterligare analys. |
Azure Cache for Redis | Det här fullständigt hanterade minnesinterna datalagret kan användas för cachelagring av information som används ofta, vilket minskar svarstiden och förbättrar prestandan för RAG-chattsystemet. Det är särskilt användbart för att lagra sessionsdata, användarinställningar och vanliga frågor. |
Flexibel Server för Azure Database for PostgreSQL | Den här hanterade databastjänsten kan lagra programdata, inklusive loggar, användarprofiler och historiska chattdata. Dess flexibilitet och skalbarhet stöder de dynamiska behoven i ett RAG-chattsystem, vilket säkerställer att data är konsekvent tillgängliga och säkra. |
Var och en av dessa Azure-tjänster bidrar till att skapa en omfattande, skalbar och effektiv arkitektur för en generativ AI-lösning, så att utvecklare kan använda det bästa av Azures molnfunktioner och AI-tekniker.
Kodcentrerad generativ AI-utveckling med Azure OpenAI API
I det här avsnittet fokuserar vi på Azure OpenAI API. Som tidigare nämnts får du åtkomst till LLM-funktioner programmatiskt via ett RESTful-webb-API. Du kan använda bokstavligen vilket modernt programmeringsspråk som helst för att anropa dessa API:er. I många fall finns det språk- eller plattformsspecifika SDK:er som fungerar som "wrappers" runt REST API-anropen för att göra upplevelsen mer idiomatisk.
- Azure OpenAI-klientbibliotek för .NET
- Azuew OpenAI-klientbibliotek för Java
- Azure OpenAI-klientbibliotek för JavaScript
- Azure OpenAI-klientmodul för Go
- Python har inget Azure-specifikt klientbibliotek. Du använder OpenAI Python-paketet och ändrar flera alternativ.
Om ett språk eller plattforms-SDK inte är tillgängligt är det värsta scenariot att du måste göra REST-anrop direkt till webb-API:et. De flesta utvecklare är dock bekanta med hur de anropar webb-API:er.
Azure OpenAI erbjuder en rad API:er som är utformade för att underlätta olika typer av AI-baserade uppgifter, vilket gör det möjligt för utvecklare att integrera avancerade AI-funktioner i sina program. Här är en översikt över de viktiga API:er som är tillgängliga från OpenAI:
- API för chattavslut: Det här API:et fokuserar på scenarier för textgenerering, inklusive konversationsfunktioner, vilket möjliggör skapandet av chattrobotar och virtuella assistenter som kan delta i en naturlig, mänsklig dialog. Den är optimerad för interaktiva användningsfall, inklusive kundsupport, personliga assistenter och interaktiva utbildningsmiljöer. Men den används också för alla scenarier för textgenerering, inklusive sammanfattning, automatisk komplettering, skrivning av dokument, analys av text, översättning och så vidare. Det är startpunkten för visionsfunktioner som för närvarande är i förhandsversion (det vill: ladda upp en bild och ställa frågor om den).
- Modererings-API: Det här API:et är utformat för att hjälpa utvecklare att identifiera och filtrera bort potentiellt skadligt innehåll i text, vilket ger ett verktyg för att säkerställa säkrare användarinteraktioner genom att automatiskt identifiera stötande, osäkert eller på annat sätt olämpligt material.
- API för inbäddning: API:et embeddings genererar vektorrepresentationer av textindata, konverterar ord, meningar eller stycken till högdimensionella vektorer. Dessa inbäddningar kan användas för semantisk sökning, klustring, analys av innehållslikhet med mera. Den avbildar den underliggande innebörden och semantiska relationer i texten.
- API för bildgenerering: Med det här API:et kan du generera originalbilder och bilder av hög kvalitet från textbeskrivningar. Den baseras på OpenAI:s DALL· E-modell, som kan skapa bilder som matchar en mängd olika format och ämnen baserat på de uppmaningar som den tar emot.
- Ljud-API: Det här API:et ger åtkomst till OpenAI:s ljudmodell, utformad för automatisk taligenkänning. Det kan transkribera talat språk till text eller text till tal, med stöd för olika språk och dialekter. Det är användbart för program som kräver röstkommandon, transkription av ljudinnehåll med mera.
Generativ AI kan användas för att arbeta med många olika mediemodaliteter, men vi lägger resten av den här artikeln på textbaserade generativa AI-lösningar. Detta omfattar scenarier som chatt, sammanfattning och så vidare.
Så här börjar du utveckla program med generativ AI
Programvaruutvecklare som är nybörjare på ett okänt språk, API eller teknik börjar vanligtvis lära sig det genom att följa självstudier eller utbildningsmoduler för att skapa små program. Vissa programvaruutvecklare föredrar att använda en självstyrd metod och skapa små experimentella program. Båda metoderna är giltiga och användbara.
När du kommer igång är det bäst att börja små, lova lite, iterera och bygga din förståelse och kunskap eftersom det har unika utmaningar att utveckla med generativ AI. I traditionell programvaruutveckling kan du till exempel förlita dig på deterministiska utdata – för alla indata kan du förvänta dig exakt samma utdata varje gång. Generative är dock icke-deterministiskt – du får aldrig exakt samma svar två gånger för en viss fråga, som är roten till många nya utmaningar. När du kommer igång bör du tänka på följande tips innan du kommer för långt:
Tips nr 1: Få reda på vad du försöker uppnå.
- Få information om problemet du försöker lösa: Generativ AI kan lösa en mängd olika problem, men framgång kommer från att tydligt definiera det specifika problem som du vill lösa. Försöker du generera text, bilder, kod eller något annat? Ju mer specifik du är, desto bättre kan du skräddarsy AI:n efter dina behov.
- Förstå din målgrupp: Att känna din målgrupp hjälper till att skräddarsy AI:ns utdata så att de matchar deras förväntningar, oavsett om det är tillfälliga användare eller experter inom ett visst område.
Tips nr 2: Spela upp till styrkan hos LLM:er.
- Förstå begränsningar och fördomar för LLM:er: Även om LLM:er är kraftfulla har de begränsningar och inbyggda fördomar. Att känna till begränsningar och fördomar kan hjälpa dig att utforma runt dem eller införliva åtgärder.
- Förstå var LLM:er utmärker sig: LLM:er utmärker sig på uppgifter som skapande av innehåll, sammanfattning, språköversättning och så vidare. Även om deras beslutsfunktioner och diskriminerande funktioner blir starkare med varje ny version, kan det finnas andra typer av AI som är lämpligare för ditt scenario eller användningsfall. Välj rätt verktyg för jobbet.
Tips 3: De bästa resultaten börjar med bra frågor.
- Lär dig metodtips för snabbteknik: Att skapa effektiva frågor är en konst. Experimentera med olika uppmaningar för att se hur de påverkar utdata. Var kortfattad men ändå beskrivande.
- Genomför iterativ förfining: Ofta kanske den första prompten inte ger önskat resultat. Det är en process för utvärdering och fel. Använd utdata för att förfina dina frågor ytterligare.
Skapa din första generativa AI-lösning
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 ditt eget dataexempel för Python. Det finns även versioner av självstudien i .NET, Java och JavaScript.
Slutliga överväganden som kan påverka dina beslut om programdesign
Här är en kort lista över saker att tänka på och andra lärdomar från den här artikeln som påverkar dina beslut om programdesign:
- Definiera problemutrymmet och målgruppen tydligt för att anpassa AI:ns funktioner till användarnas förväntningar, vilket optimerar lösningens effektivitet för det avsedda användningsfallet.
- Använd plattformar med låg kod/ingen kod för snabba prototyper och utveckling om de uppfyller projektets krav och utvärderar kompromissen mellan utvecklingshastighet och anpassningsbarhet. Utforska möjligheterna med lösningar med låg kod och ingen kod för delar av ditt program för att påskynda utvecklingen och göra det möjligt för icke-tekniska teammedlemmar att bidra till projektet.