Dela via


Generativa AI-lösningar för utvecklare

Generativ AI, som möjliggörs av stora språkmodeller (LLM), öppnar nya spännande möjligheter för programutvecklare och organisationer. Tjänster som Azure OpenAI Service gör AI-utveckling tillgänglig med lättåtkomliga API:er. Utvecklare på alla kompetensnivåer kan integrera avancerade AI-funktioner i sina program utan särskilda kunskaper eller maskinvaruinvesteringar.

Som programutvecklare kanske du vill förstå vilken roll du kan spela och var du passar in. Du kanske till exempel undrar på vilken nivå i "AI-stacken" för att fokusera din inlärning. Eller så kanske du undrar vad du kan skapa med tanke på befintlig teknik.

För att besvara dessa frågor är det viktigt att du först utvecklar en mental modell som mappar hur 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.

I en serie artiklar visar vi hur din nuvarande programvaruutvecklingsupplevelse gäller för generativ AI. Artiklarna beskriver även nyckelord och begrepp som du kan bygga vidare på när du börjar utveckla dina första generativa AI-lösningar.

Så här drar företag nytta av generativ AI

För att förstå hur din nuvarande programvaruutvecklingsupplevelse gäller för generativ AI är det viktigt att förstå hur företag har för avsikt att dra nytta av generativ AI.

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å specifika frågor om en organisation eller dess produkter eller tjänster.

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. Det här scenariot 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.
    • Använd "chatta med dina data". Det vill: gör det möjligt för en användare att ställa frågor i en chattupplevelse genom att använda data som lagras i organisationens databaser eller 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.
    • Använd semantisk sökning. Det innebär att användarna kan söka i dokument och data utan att använda exakta nyckelordsmatchningar.
    • Översätt 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.

En programvaruutvecklare har möjlighet att dramatiskt öka sin påverkan genom att integrera generativa AI-program och funktioner i den programvara som organisationen förlitar sig på.

Så här skapar du generativa AI-program

Även om LLM utför de tunga lyften, bygger du system som integrerar, samordnar och övervakar resultaten. Det finns mycket att lära sig, men du kan använda de kunskaper du redan har, inklusive hur du:

  • Anropa API:er med hjälp av REST, JSON eller språkspecifika programutvecklingspaket (SDK:er)
  • Dirigera 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

Att utveckla generativa AI-lösningar bygger på dina befintliga kunskaper.

Utvecklarverktyg och -tjänster

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 ett stort problem eller ansvar som krävs för att skapa en generativ AI-lösning. Om du vill 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å typiska funktioner, roller och ansvarsområden i en viss typ av generativ AI-funktion. Till exempel, som vi utförligt diskuterar i konceptuella artiklar som beskriver retrieval-augmented generation (RAG)-baserade chattsystem, 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å DE 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 hjälp av anpassad kod eller befintliga verktyg med låg kod/ingen kod, eller så kan du 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 dina kunskaper? Beroende på dina krav kan du vanligtvis sy ihop en kombination av tekniker och metoder (kod, kod utan kod, låg kod, verktyg).

Det finns inget enda rätt sätt att skapa generativa AI-funktioner i dina program. Du kan välja mellan många verktyg och metoder. Det är viktigt att utvärdera kompromisserna för var och en av dem.

Börja med programlagret

Du behöver inte förstå allt om hur generativ AI fungerar för att komma igång och vara produktiv. Som tidigare nämnts vet du förmodligen redan tillräckligt. Du kan använda API:er och använda befintliga kunskaper för att komma igång.

Du behöver till exempel inte träna din egen LLM från grunden. Utbildning av en LLM kräver tid och resurser som de flesta företag inte vill investera. Bygg i stället 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. Att lägga till generativa AI-funktioner i ett befintligt program skiljer sig inte frå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 förstå hur en LLM fungerar kräver en djup förståelse för datavetenskap och den matematiska bakgrund som stöder den. Att få denna förståelse kan omfatta kurser på forskarnivå om statistik, sannolikheter och informationsteori.

Om du har 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, till exempel tillgängliga API:er, verktyg och mönster.

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 förmodligen 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 förenklad representation av de kunskapslager som krävs för att implementera generativa AI-funktioner i ett nytt eller befintligt program:

diagram som visar de kunskapsnivåer som krävs för att implementera generativa AI-funktioner i ett program.

På den lägsta nivån gör dataforskare 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, implementerar dataforskare teoretiska begrepp i LLMs, bygger neurala nätverk och tränar vikter och fördomar för att tillhandahålla en praktisk programvara som kan acceptera indata (uppmaningar) och generera resultat (slutföranden). Beräkningsprocessen för att skapa slutföranden baserat på uppmaningar kallas slutsatsdragning. Dataforskare avgör hur neuronerna i det neurala nätverket förutsäger nästa ord eller pixel som ska genereras.

Med tanke på den mängd bearbetningskraft som krävs för att träna modeller och generera resultat baserat på indata tränas och hanteras modeller ofta i stora datacenter. Det går att träna eller vara värd för en modell på en lokal dator, men resultatet är ofta långsamt. Hastighet och effektivitet levereras med dedikerade GPU-grafikkort som hjälper till att hantera den beräkning som krävs för att generera resultat.

Programmatisk åtkomst till dessa modeller tillhandahålls via REST-API:er när de finns i stora datacenter. API:erna "omsluts" ibland av SDK:er och är 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 anropa dessa API:er för att implementera affärsfunktioner.

Förutom att fråga modellerna programmatiskt växer mönster och processer fram för att hjälpa organisationer att skapa tillförlitliga affärsfunktioner baserat på generativ AI. Mönster håller till exempel på att växa fram som hjälper företag att se till att den genererade texten, koden, bilderna och ljudet uppfyller etiska och säkerhetsmässiga standarder och med åtaganden om sekretess för kunddata.

Om du är en applikationsutvecklare som ansvarar för att bygga affärsfunktionalitet i denna lagerstruktur, är det möjligt för dig att gå bortom applikationslagret och utveckla samt träna din egen LLM. Men den här nivån av förståelse kräver en ny uppsättning färdigheter som ofta bara utvecklas genom avancerad utbildning.

Om du inte kan åta dig att utveckla kompetens inom datavetenskap akademiskt för att bygga nästa lager nedåt i stacken kan du fokusera på att utveckla dina kunskaper om programskiktsämnen:

  • API:er och SDK:er: Vad är tillgängligt och vad de olika slutpunkterna producerar.
  • Relaterade verktyg och tjänster som hjälper dig att skapa alla funktioner som krävs för en produktionsklar generativ AI-lösning.
  • Promptteknik: Så här får du bästa resultat genom att ställa eller omformulera frågor.
  • Där flaskhalsar uppstår och hur du skalar en lösning. Det här området omfattar att förstå vad som ingår i loggning eller erhålla telemetri utan att bryta mot kundens integritetsproblem.
  • Egenskaperna hos de olika LLM:erna: Deras styrkor, användningsfall, riktmärken och vad de mäter samt viktiga skillnader mellan leverantörer och modeller som produceras av varje leverantör. Den här informationen hjälper dig att välja rätt modell för organisationens behov.
  • De senaste mönstren, arbetsflödena och processerna som du kan använda för att skapa effektiva och motståndskraftiga generativa AI-funktioner i dina program.

Verktyg och tjänster från Microsoft

Du kan använda generativa AI-verktyg och tjänster med låg kod och ingen kod från Microsoft för att hjälpa dig att skapa en eller flera av dina lösningar. Olika Azure-tjänster kan spela viktiga roller. Var och en bidrar till lösningens effektivitet, skalbarhet och robusthet.

API och SDK:er för en kodcentrerad metod

Kärnan i varje generativ AI-lösning är en LLM-modell. 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. Du kan använda flera API:er för att utföra alla typiska funktioner i en LLM, inklusive att skapa inbäddningar och skapa en chattupplevelse. Du har fullständig åtkomst till inställningar och anpassningar för att få önskat resultat.

Körningsmiljöer

Eftersom du skapar affärslogik, presentationslogik eller API:er för att integrera generativ AI i organisationens program behöver du en tjänst som värd för och kör 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, så det är enklare att hantera klientdelskomponenterna i systemet.
Azure Functions Använd serverlös beräkning för att hantera händelsedrivna uppgifter i RAG-chattsystemet. Använd den till exempel för att utlösa datahämtningsprocesser, bearbeta användarfrågor eller hantera bakgrundsuppgifter som datasynkronisering och rensning. Det ger en mer modulär, skalbar metod för att skapa systemets serverdel.

Lösningar med låg kod och ingen kod

En del av den logik som du behöver för att implementera din generativa AI-vision kan skapas snabbt och hanteras på ett tillförlitligt sätt med hjälp av en lösning med låg kod eller ingen kod.

Produkt beskrivning
Azure AI Foundry Du kan använda Azure AI Foundry för att träna, testa och distribuera anpassade maskininlärningsmodeller för att förbättra ett RAG-chattsystem. Du kan till exempel använda Azure AI Foundry för att anpassa svarsgenereringen eller för att 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. Ett exempel är ett RAG-baserat 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 Du kan använda den här tjänsten för att effektivt söka igenom stora datamängder för att hitta relevant information som informerar svaren som genereras av språkmodellen. Det är användbart för hämtningskomponenten i ett RAG-system, så de genererade svaren är så informativa och kontextuellt relevanta som möjligt.
Azure 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 komma åt. Dess funktioner för snabb läsning och skrivning gör den idealisk för att leverera realtidsdata till språkmodellen och för att 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.
Azure Database for PostgreSQL – flexibel server 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 så 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. De hjälper utvecklare att komma åt och använda det bästa av Azures molnfunktioner och AI-tekniker.

Kodcentrerad generativ AI-utveckling med hjälp av 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 fungerar språkspecifika eller plattformsspecifika SDK:er som omslutningar runt REST API-anropen för att göra upplevelsen mer idiomatisk.

Här är listan över Azure OpenAI REST API-omslutningar:

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:erna:

De flesta utvecklare är 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, så att utvecklare kan 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:et för slutförande av chattar: Det här API:et fokuserar på scenarier för textgenerering, inklusive konversationsfunktioner för att skapa 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. Den används dock för alla scenarier för textgenerering, inklusive sammanfattning, automatisk komplettering, skrivning av dokument, analys av text och översättning. Det är startpunkten för visionsfunktioner som för närvarande är i förhandsversion (det vill: för att ladda upp en bild och ställa frågor om den).
  • API för moderering: Det här API:et är utformat för att hjälpa utvecklare att identifiera och filtrera bort potentiellt skadligt innehåll i text. Det är ett verktyg som hjälper till 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. Den 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: Använd det här API:et för att 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.
  • Audio API: Det här API:et ger åtkomst till OpenAI:s ljudmodell och är utformat 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.

Även om du kan använda generativ AI för att arbeta med många olika mediemodaliteter fokuserar vi i resten av den här artikeln på textbaserade generativa AI-lösningar. Dessa lösningar omfattar scenarier som chatt och sammanfattning.

Kom igång med att utveckla 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 som visar hur du skapar 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 skicklighet. Att utveckla program med generativ AI har unika utmaningar. I traditionell programvaruutveckling kan du till exempel förlita dig på deterministiska utdata. Det innebär att för alla indatauppsättningar kan du förvänta dig exakt samma utdata varje gång. Men generativ AI är icke-terministisk. Du får aldrig exakt samma svar två gånger för en viss fråga, vilket är roten till många nya utmaningar.

Tänk på de här tipsen när du kommer igång.

Tips 1: Var tydlig med vad du vill uppnå

  • Var specifik 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 2: Använd 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 för uppgifter som skapande av innehåll, sammanfattning och språköversättning. Även om deras beslutsfunktioner och diskriminerande funktioner blir starkare för 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: Använd bra frågor för att få bra resultat

  • 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 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 ytterligare förfina dina frågor.

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 chatt med hjälp av ditt eget dataexempel för Python. Självstudien är också tillgänglig för .NET, Javaoch JavaScript.

Slutliga överväganden för programdesign

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:

  • Definiera problemutrymmet och målgruppen tydligt för att anpassa AI:s funktioner till användarnas förväntningar. Optimera 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. Utvärdera kompromissen mellan utvecklingshastighet och anpassningsbarhet. Utforska möjligheterna med lågkods- och kodfria lösningar 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.