Dela via


AI: Azure OpenAI på dina data

Integreringen av AZURE OpenAI Natural Language Processing (NLP) och kompletteringsfunktionerna ger en betydande potential för att förbättra användarproduktiviteten. Genom att använda lämpliga uppmaningar och regler kan en AI-assistent effektivt generera olika former av kommunikation, till exempel e-postmeddelanden, SMS med mera. Den här funktionen leder till ökad användareffektivitet och effektivare arbetsflöden.

Även om den här funktionen är ganska kraftfull på egen hand kan det finnas fall där användarna behöver generera slutföranden baserat på företagets anpassade data. Du kan till exempel ha en samling produkthandböcker som kan vara svåra för användarna att navigera när de hjälper kunder med installationsproblem. Du kan också ha en omfattande uppsättning vanliga frågor och svar om sjukvårdsförmåner som kan vara svåra för användarna att läsa igenom och få de svar de behöver. I dessa fall och många andra gör Azure OpenAI Service att du kan använda dina egna data för att generera slutföranden, vilket säkerställer ett mer skräddarsytt och kontextuellt korrekt svar på användarfrågor.

Här är en snabb översikt över hur funktionen "bring your own data" fungerar från Azure OpenAI-dokumentationen.

Anmärkning

En av de viktigaste funktionerna i Azure OpenAI för dina data är dess förmåga att hämta och använda data på ett sätt som förbättrar modellens utdata. Azure OpenAI på dina data, tillsammans med Azure AI Search, avgör vilka data som ska hämtas från den avsedda datakällan baserat på användarens indata och tillhandahållen konversationshistorik. Dessa data utökas och skickas sedan igen som en uppmaning till OpenAI-modellen, med hämtad information som läggs till i den ursprungliga prompten. Även om hämtade data läggs till i prompten bearbetas de resulterande indata fortfarande av modellen som alla andra uppmaningar. När data har hämtats och prompten har skickats till modellen använder modellen den här informationen för att tillhandahålla ett slutförande.

I den här övningen ska du:

  • Skapa en anpassad datakälla med hjälp av Azure AI Foundry-portalen.
  • Distribuera en inbäddningsmodell med hjälp av Azure AI Foundry-portalen.
  • Ladda upp anpassade dokument.
  • Starta en chattsession på chattlekplatsen för att experimentera med att generera slutföranden baserat på dina egna data.
  • Utforska kod som använder Azure AI Search och Azure OpenAI för att generera slutföranden baserat på dina egna data.

Nu ska vi komma igång genom att distribuera en inbäddningsmodell och lägga till en anpassad datakälla i Azure AI Foundry.

Lägga till en anpassad datakälla i Azure AI Foundry

  1. Gå till Azure OpenAI Studio och logga in med autentiseringsuppgifter som har åtkomst till din Azure OpenAI-resurs.

  2. Välj Distributioner på navigeringsmenyn.

  3. Välj Välj Distribuera modell –->Distribuera basmodell i verktygsfältet.

  4. Välj modellen text-embedding-ada-002 i listan över modeller och välj Bekräfta.

  5. Välj ett av följande alternativ:

    • Distributionsnamn: text-embedding-ada-002
    • Modellversion: Standard
    • Distributionstyp: Standard
    • Ange värdet token per minuthastighetsgräns (tusentals) till 120 000
    • Innehållsfilter: DefaultV2
    • Aktivera dynamiskt citat: Aktiverat
  6. Välj knappen Distribuera .

  7. När modellen har skapats väljer du Start på navigeringsmenyn för att gå till välkomstskärmen.

  8. Leta upp panelen Bring your own data (Ta med egna data ) på välkomstskärmen och välj Prova nu.

    Ta med egna data i Azure OpenAI Studio

  9. Välj Lägg till dina data följt av Lägg till en datakälla.

  10. I listrutan Välj datakälla väljer du Ladda upp filer.

  11. Under listrutan Välj Azure Blob Storage-resurs väljer du Skapa en ny Azure Blob Storage-resurs.

  12. Välj din Azure-prenumeration i listrutan Prenumeration .

  13. Under listrutan Välj Azure Blob Storage-resurs väljer du Skapa en ny Azure Blob Storage-resurs.

  14. Detta tar dig till Azure Portal där du kan utföra följande uppgifter:

    • Ange ett unikt namn för lagringskontot, till exempel byodstorage[Ditt efternamn].
    • Välj en region som är nära din plats.
    • Välj Granska följt av Skapa.
  15. När bloblagringsresursen har skapats går du tillbaka till dialogrutan Azure AI Foundry och väljer den nyligen skapade bloblagringsresursen i listrutan Välj Azure Blob Storage-resurs . Om du inte ser den i listan väljer du uppdateringsikonen bredvid listrutan.

  16. Resursdelning mellan ursprung (CORS) måste aktiveras för att ditt lagringskonto ska kunna nås. Välj Aktivera CORS i dialogrutan Azure AI Foundry.

    Azure OpenAI Studio Aktivera CORS med egna data

  17. Under listrutan Välj Azure AI Search-resurs väljer du Skapa en ny Azure AI Search-resurs.

  18. Detta tar dig tillbaka till Azure Portal där du kan utföra följande uppgifter:

    • Ange ett unikt namn för AI Search-resursen, till exempel byodsearch-[Ditt efternamn].
    • Välj en region som är nära din plats.
    • I avsnittet Prisnivå väljer du Ändra prisnivå och sedan Basic följt av Välj. Den kostnadsfria nivån stöds inte, så du rensar AI Search-resursen i slutet av den här självstudien.
    • Välj Granska följt av Skapa.
  19. När AI Search-resursen har skapats går du till resursöversiktssidan och kopierar URL-värdet till en lokal fil.

    Url för Azure OpenAI Studio AI-sökning

  20. Välj Inställningar –>Nycklar i navigeringsmenyn.

  21. På sidan API-åtkomstkontroll väljer du Båda för att aktivera tjänsten som ska nås med hjälp av hanterad identitet eller med hjälp av en nyckel. Välj Ja när du uppmanas att göra det.

    Anmärkning

    Även om vi använder en API-nyckel i den här övningen eftersom det kan ta upp till 10 minuter att lägga till rolltilldelningar, kan du med lite extra ansträngning göra det möjligt för en systemtilldelad hanterad identitet att komma åt tjänsten på ett säkrare sätt.

  22. Välj Nycklar i den vänstra navigeringsmenyn och kopiera värdet primär administratörsnyckel till en lokal fil. Du behöver URL-adressen och nyckelvärdena senare i övningen.

  23. Välj Inställningar -->Semantisk ranker i navigeringsmenyn och se till att Kostnadsfri är valt.

    Anmärkning

    Om du vill kontrollera om semantisk rankning är tillgänglig i en viss region kontrollerar du sidan Tillgängliga produkter per region på Azure-webbplatsen för att se om din region visas.

  24. Gå tillbaka till dialogrutan Lägg till data i Azure AI Foundry och välj din nyligen skapade sökresurs i listrutan Välj Azure AI Search-resurs . Om du inte ser den i listan väljer du uppdateringsikonen bredvid listrutan.

  25. Ange ett värde för byod-search-index för värdet Ange indexnamnet .

  26. Markera kryssrutan Lägg till vektorsökning i den här sökresursen .

  27. I listrutan Välj en inbäddningsmodell väljer du modellen text-embedding-ada-002 som du skapade tidigare.

  28. I dialogrutan Ladda upp filer väljer du Bläddra efter en fil.

  29. Gå till projektets kunddokumentmapp (som finns i projektets rot) och välj följande filer:

    • Klocka A102 Installation Instructions.docx
    • Företagets FAQs.docx

    Anmärkning

    Den här funktionen stöder för närvarande följande filformat för att skapa lokala index: .txt, .md, .html, .pdf, .docx och .pptx.

  30. Välj Ladda upp filer. Filerna laddas upp till en fileupload-byod-search-index-container i bloblagringsresursen som du skapade tidigare.

  31. Välj Nästa för att gå till dialogrutan Datahantering .

  32. I listrutan Söktyp väljer du Hybrid + semantik.

    Anmärkning

    Det här alternativet ger stöd för nyckelords- och vektorsökning. När resultaten har returnerats tillämpas en sekundär rangordningsprocess på resultatuppsättningen med hjälp av djupinlärningsmodeller som förbättrar användarens sökrelevans. Mer information om semantisk sökning finns i dokumentationen för semantisk sökning i Azure AI Search .

  33. Kontrollera att värdet Välj en storlek är inställt på 1024.

  34. Välj Nästa.

  35. Som Azure-resursautentiseringstyp väljer du API-nyckel. Läs mer om att välja rätt autentiseringstyp i dokumentationen för Azure AI Search-autentisering.

  36. Välj Nästa.

  37. Granska informationen och välj Spara och stäng.

  38. Nu när dina anpassade data har laddats upp indexeras data och är tillgängliga för användning i chattlekplatsen. Processen kan ta några minuter. När det är klart fortsätter du till nästa avsnitt.

Använda din anpassade datakälla i chattlekplatsen

  1. Leta upp avsnittet Chattsession på sidan i Azure OpenAI Studio och ange följande användarfråga:

    What safety rules are required to install a clock?
    
  2. När du har skickat användarfrågan bör du se ett resultat som liknar följande som visas:

    Azure OpenAI Studio-chattsession – Säkerhetsregler för klockinstallation

  3. Expandera avsnittet 1 referenser i chattsvaret och observera att filen Clock A102 Installation Instructions.docx visas och att du kan välja den för att visa dokumentet.

  4. Ange följande användarmeddelande:

    What should I do to mount the clock on the wall?
    
  5. Du bör se ett resultat som liknar följande som visas:

    Azure OpenAI Studio Chat Session – Instruktioner för klockmontering

  6. Nu ska vi experimentera med dokumentet Vanliga frågor och svar om företag. Ange följande text i fältet Användarfråga :

    What is the company's policy on vacation time?
    
  7. Du bör se att ingen information hittades för den begäran.

  8. Ange följande text i fältet Användarfråga :

    How should I handle refund requests?
    
  9. Du bör se ett resultat som liknar följande som visas:

    Azure OpenAI Studio-chattsession – Vanliga frågor och svar

  10. Expandera avsnittet 1 referenser i chattsvaret och observera att filen Company FAQs.docx visas och att du kan välja den för att visa dokumentet.

  11. Välj Visa kod i verktygsfältet i chattlekplatsen.

    Azure OpenAI Studio-chattsession – Visa kod

  12. Observera att du kan växla mellan olika språk, visa slutpunkten och komma åt slutpunktens nyckel. Stäng dialogrutan Exempelkod .

    Azure OpenAI Studio-chattsession – Exempelkod

  13. Aktivera växlingsknappen Visa rå JSON ovanför chattmeddelandena. Observera att chattsessionen börjar med ett meddelande som liknar följande:

    {
        "role": "system",
        "content": "You are an AI assistant that helps people find information."
    }
    
  14. Nu när du har skapat en anpassad datakälla och experimenterat med den i chattlekplatsen ska vi se hur du kan använda den i projektets program.

Använda funktionen Bring Your Own Data i programmet

  1. Gå tillbaka till projektet i VS Code och öppna .env-filen . Uppdatera följande värden med din AI Services-slutpunkt, nyckel och indexnamn. Du kopierade slutpunkten och nyckeln till en lokal fil tidigare i den här övningen.

    AZURE_AI_SEARCH_ENDPOINT=<AI_SERVICES_ENDPOINT_VALUE>
    AZURE_AI_SEARCH_KEY=<AI_SERVICES_KEY_VALUE>
    AZURE_AI_SEARCH_INDEX=byod-search-index
    
  2. I en tidigare övning startade du databasen, API:erna och programmet. Du har också uppdaterat .env filen. Om du inte har slutfört de här stegen följer du anvisningarna i slutet av den tidigare övningen innan du fortsätter.

  3. När programmet har lästs in i webbläsaren väljer du ikonen Chatthjälp längst upp till höger i programmet.

    Chatthjälpikon

  4. Följande text bör visas i chattdialogrutan:

    How should I handle a company refund request?
    
  5. Välj knappen Hämta hjälp . Du bör se resultat som returneras från dokumentet Company FAQs.docx som du laddade upp tidigare i Azure OpenAI Studio. Om du vill läsa igenom dokumentet kan du hitta det i mappen kunddokument i projektets rot.

  6. Ändra texten till följande och välj knappen Hämta hjälp :

    What safety rules are required to install a clock?
    
  7. Du bör se resultat som returneras från dokumentet Clock A102 Installation Instructions.docx som du laddade upp tidigare i Azure OpenAI Studio. Det här dokumentet är också tillgängligt i mappen kunddokument i projektets rot.

Utforska koden

Tips/Råd

Om du använder Visual Studio Code kan du öppna filer direkt genom att välja:

  • Windows/Linux: Ctrl + P
  • Mac: Cmd + P

Skriv sedan namnet på den fil som du vill öppna.

  1. Gå tillbaka till projektets källkod i Visual Studio Code.

  2. Öppna filen server/apiRoutes.ts och leta upp completeBYOD vägen. Det här API:et anropas när knappen Hämta hjälp har valts i dialogrutan Chatthjälp. Den hämtar användarprompten från begärandetexten och skickar den completeBYOD() till funktionen i filen server/openAI.ts . Resultatet returneras sedan till klienten.

    router.post('/completeBYOD', async (req, res) => {
        const { prompt } = req.body;
    
        if (!prompt) {
            return res.status(400).json({ 
                status: false, 
                error: 'The prompt parameter must be provided.' 
            });
        }
    
        let result;
        try {
            // Call OpenAI to get custom "bring your own data" completion
        result = await completeBYOD(prompt);
        }
        catch (e: unknown) {
            console.error('Error parsing JSON:', e);
        }
    
        res.json(result);
    });
    
  3. Öppna filen server/openAI.ts och leta upp completeBYOD() funktionen.

    async function completeBYOD(userPrompt: string): Promise<string> {
        const systemPrompt = 'You are an AI assistant that helps people find information in documents.';
        return await callOpenAI(systemPrompt, userPrompt, 0, true);
    }
    

    Den här funktionen har följande funktioner:

    • Parametern userPrompt innehåller den information som användaren skrev i chatthjälpdialogrutan.
    • variabeln systemPrompt definierar att en AI-assistent som är utformad för att hjälpa människor att hitta information kommer att användas.
    • callOpenAI() används för att anropa Azure OpenAI-API:et och returnera resultatet. Den skickar systemPrompt värdena och userPrompt samt följande parametrar:
      • temperature - Mängden kreativitet att ta med i svaret. Användaren behöver konsekventa (mindre kreativa) svar i det här fallet så värdet är inställt på 0.
      • useBYOD – Ett booleskt värde som anger om AI Search ska användas tillsammans med Azure OpenAI. I det här fallet är den inställd på så att true AI Search-funktioner används.
  4. Funktionen callOpenAI() accepterar en useBYOD parameter som används för att avgöra vilken OpenAI-funktion som ska anropas. I det här fallet anges useBYOD den true till så att getAzureOpenAIBYODCompletion() funktionen anropas.

    function callOpenAI(systemPrompt: string, userPrompt: string, temperature = 0, useBYOD = false) {
        const isAzureOpenAI = OPENAI_API_KEY && OPENAI_ENDPOINT && OPENAI_MODEL;
    
        if (isAzureOpenAI) {
            if (useBYOD) {
                return getAzureOpenAIBYODCompletion(systemPrompt, userPrompt, temperature);
            }
            return getAzureOpenAICompletion(systemPrompt, userPrompt, temperature);
        }
    
        return getOpenAICompletion(systemPrompt, userPrompt, temperature);
    }
    
  5. getAzureOpenAIBYODCompletion() Leta upp funktionen i server/openAI.ts. Det liknar den getAzureOpenAICompletion() funktion som du undersökte tidigare, men visas som en separat funktion för att markera några viktiga skillnader som är unika för scenariot "Azure OpenAI på dina data" som är tillgängligt i Azure OpenAI.

    async function getAzureOpenAIBYODCompletion(systemPrompt: string, userPrompt: string, temperature: number): Promise<string> {
        const dataSources = [
            {
                type: 'azure_search',
                parameters: {
                    authentication: {
                        type: 'api_key',
                        key: AZURE_AI_SEARCH_KEY
                    },
                    endpoint: AZURE_AI_SEARCH_ENDPOINT,
                    index_name: AZURE_AI_SEARCH_INDEX
                }
            }
        ];
    
        const completion = await createAzureOpenAICompletion(systemPrompt, userPrompt, temperature, dataSources) as AzureOpenAIYourDataResponse;
        console.log('Azure OpenAI Add Your Own Data Output: \n', completion.choices[0]?.message);
        for (let citation of completion.choices[0]?.message?.context?.citations ?? []) {
            console.log('Citation Path:', citation.filepath);
        }
        return completion.choices[0]?.message?.content?.trim() ?? '';
    }
    

    Observera följande funktioner i getAzureOpenAIBYODCompletion() funktionen:

    • En dataSources egenskap skapas som innehåller AI Search-resursens key, endpointoch index_name värden som lades till i filen tidigare i den här övningen .env
    • Funktionen createAzureOpenAICompletion() anropas med systemPromptvärdena , userPrompt, temperatureoch dataSources . Den här funktionen används för att anropa Azure OpenAI API och returnera resultatet.
    • När svaret har returnerats loggas dokumentcitaten till konsolen. Innehållet i slutförandemeddelandet returneras sedan till anroparen.
  6. Några sista punkter att tänka på innan du går vidare till nästa övning:

    • Exempelprogrammet använder ett enda index i Azure AI Search. Du kan använda flera index och datakällor med Azure OpenAI. Egenskapen dataSources i getAzureOpenAIBYODCompletion() funktionen kan uppdateras så att den innehåller flera datakällor efter behov.
    • Säkerheten måste utvärderas noggrant med den här typen av scenario. Användare ska inte kunna ställa frågor och få resultat från dokument som de inte kan komma åt.
  7. Nu när du har lärt dig mer om Azure OpenAI, frågor, slutföranden och hur du kan använda dina egna data går vi till nästa övning för att lära dig hur kommunikationsfunktioner kan användas för att förbättra programmet. Om du vill veta mer om Azure OpenAI kan du visa utbildningsinnehållet Kom igång med Azure OpenAI Service . Mer information om hur du använder dina egna data med Azure OpenAI finns i Azure OpenAI i din datadokumentation .

Nästa steg