Delen via


AI: Azure OpenAI op uw gegevens

De integratie van De integratie van Azure OpenAI Natural Language Processing (NLP) en voltooiingsmogelijkheden biedt een aanzienlijk potentieel voor het verbeteren van de productiviteit van gebruikers. Door gebruik te maken van de juiste prompts en regels, kan een AI-assistent efficiënt verschillende vormen van communicatie genereren, zoals e-mailberichten, sms-berichten en meer. Deze functionaliteit leidt tot verbeterde gebruikersefficiëntie en gestroomlijnde werkstromen.

Hoewel deze functie vrij krachtig is, kunnen er gevallen zijn waarin gebruikers voltooiingen moeten genereren op basis van de aangepaste gegevens van uw bedrijf. U kunt bijvoorbeeld een verzameling producthandleidingen hebben die lastig kunnen zijn voor gebruikers om te navigeren wanneer ze klanten helpen met installatieproblemen. U kunt ook een uitgebreide reeks veelgestelde vragen (FAQ's) met betrekking tot gezondheidszorgvoordelen onderhouden die lastig kunnen zijn voor gebruikers om door te lezen en de antwoorden te krijgen die ze nodig hebben. In deze gevallen en vele andere, kunt u met Azure OpenAI Service gebruikmaken van uw eigen gegevens om voltooiingen te genereren, zodat u een meer op maat gemaakte en contextuele nauwkeurige reactie op vragen van gebruikers kunt garanderen.

Hier volgt een kort overzicht van hoe de functie 'Bring Your Own Data' werkt vanuit de Documentatie van Azure OpenAI.

Opmerking

Een van de belangrijkste functies van Azure OpenAI op uw gegevens is de mogelijkheid om gegevens op te halen en te gebruiken op een manier die de uitvoer van het model verbetert. Azure OpenAI op uw gegevens, samen met Azure AI Search, bepaalt welke gegevens moeten worden opgehaald uit de aangewezen gegevensbron op basis van de gebruikersinvoer en de opgegeven gespreksgeschiedenis. Deze gegevens worden vervolgens uitgebreid en opnieuw verzonden als een prompt naar het OpenAI-model, waarbij opgehaalde informatie wordt toegevoegd aan de oorspronkelijke prompt. Hoewel opgehaalde gegevens worden toegevoegd aan de prompt, wordt de resulterende invoer nog steeds verwerkt door het model, net als elke andere prompt. Zodra de gegevens zijn opgehaald en de prompt is verzonden naar het model, gebruikt het model deze informatie om een voltooiing te bieden.

In deze oefening gaat u het volgende doen:

  • Maak een aangepaste gegevensbron met behulp van de Azure AI Foundry-portal.
  • Implementeer een insluitmodel met behulp van de Azure AI Foundry-portal.
  • Aangepaste documenten uploaden.
  • Start een chatsessie in de Chat-speeltuin om te experimenteren met het genereren van voltooiingen op basis van uw eigen gegevens.
  • Verken code die gebruikmaakt van Azure AI Search en Azure OpenAI om voltooiingen te genereren op basis van uw eigen gegevens.

Laten we aan de slag gaan door een insluitmodel te implementeren en een aangepaste gegevensbron toe te voegen in Azure AI Foundry.

Een aangepaste gegevensbron toevoegen aan Azure AI Foundry

  1. Navigeer naar Azure OpenAI Studio en meld u aan met referenties die toegang hebben tot uw Azure OpenAI-resource.

  2. Selecteer Implementaties in het navigatiemenu.

  3. Selecteer Model implementeren -->Basismodel implementeren op de werkbalk.

  4. Selecteer het model text-embedding-ada-002 in de lijst met modellen en selecteer Bevestigen.

  5. Selecteer de volgende opties:

    • Implementatienaam: tekst-insluiten-ada-002
    • Modelversie: standaard
    • Implementatietype: Standaard
    • Stel de waarde tokens per minuutfrequentielimiet (duizenden) in op 120K
    • Inhoudsfilter: DefaultV2
    • Dynamische aanhalingstekens inschakelen: ingeschakeld
  6. Selecteer de knop Implementeren .

  7. Nadat het model is gemaakt, selecteert u Start in het navigatiemenu om naar het welkomstscherm te gaan.

  8. Zoek de tegel Bring Your Own Data op het welkomstscherm en selecteer Nu proberen.

    Azure OpenAI Studio Breng uw eigen gegevens mee

  9. Selecteer Uw gegevens toevoegen gevolgd door Een gegevensbron toevoegen.

  10. Selecteer Bestanden uploaden in de vervolgkeuzelijst Gegevensbron selecteren.

  11. Selecteer in de vervolgkeuzelijst Azure Blob Storage-resource selecteren een nieuwe Azure Blob Storage-resource maken.

  12. Selecteer uw Azure-abonnement in de vervolgkeuzelijst Abonnement .

  13. Selecteer in de vervolgkeuzelijst Azure Blob Storage-resource selecteren een nieuwe Azure Blob Storage-resource maken.

  14. Hiermee gaat u naar Azure Portal, waar u de volgende taken kunt uitvoeren:

    • Voer een unieke naam in voor het opslagaccount, zoals byodstorage[Uw achternaam].
    • Selecteer een regio die zich dicht bij uw locatie bevindt.
    • Selecteer Controleren gevolgd door Maken.
  15. Zodra de blob-opslagresource is gemaakt, gaat u terug naar het dialoogvenster Azure AI Foundry en selecteert u de zojuist gemaakte blobopslagresource in de vervolgkeuzelijst Azure Blob Storage-resource selecteren. Als de lijst niet wordt weergegeven, selecteert u het vernieuwingspictogram naast de vervolgkeuzelijst.

  16. CorS (Cross-Origin Resource Sharing) moet zijn ingeschakeld om toegang te krijgen tot uw opslagaccount. Selecteer CORS inschakelen in het dialoogvenster Azure AI Foundry.

    CORS inschakelen in Azure OpenAI Studio Bring Your Own Data

  17. Selecteer in de vervolgkeuzelijst Azure AI Search-resource selecteren een nieuwe Azure AI Search-resource maken.

  18. Hiermee gaat u terug naar Azure Portal, waar u de volgende taken kunt uitvoeren:

    • Voer een unieke naam in voor de AI Search-resource, zoals byodsearch-[Uw achternaam].
    • Selecteer een regio die zich dicht bij uw locatie bevindt.
    • Selecteer In de sectie Prijscategoriede optie Prijscategorie wijzigen en Selecteer Basic , gevolgd door Selecteren. De gratis laag wordt niet ondersteund, dus u schoont de AI Search-resource aan het einde van deze zelfstudie op.
    • Selecteer Controleren gevolgd door Maken.
  19. Zodra de AI Search-resource is gemaakt, gaat u naar de pagina Overzicht van de resource en kopieert u de URL-waarde naar een lokaal bestand.

    AZURE OpenAI Studio AI Search-URL

  20. Selecteer Instellingen -->Sleutels in het navigatiemenu.

  21. Selecteer op de pagina Toegangsbeheer voor APIbeide om toegang te krijgen tot de service via beheerde identiteit of met behulp van een sleutel. Selecteer Ja wanneer u hierom wordt gevraagd.

    Opmerking

    Hoewel we in deze oefening een API-sleutel gebruiken omdat het toevoegen van roltoewijzingen maximaal tien minuten kan duren, kunt u met wat extra moeite een door het systeem toegewezen beheerde identiteit inschakelen voor toegang tot de service.

  22. Selecteer Sleutels in het linkernavigatiemenu en kopieer de waarde van de primaire beheersleutel naar een lokaal bestand. U hebt de URL- en sleutelwaarden later in de oefening nodig.

  23. Selecteer Instellingen -->Semantische ranker in het navigatiemenu en zorg ervoor dat Gratis is geselecteerd.

    Opmerking

    Als u wilt controleren of de semantische rangschikking beschikbaar is in een specifieke regio, controleert u de pagina Producten beschikbaar per regio op de Azure-website om te zien of uw regio wordt vermeld.

  24. Ga terug naar het dialoogvenster Gegevens toevoegen van Azure AI Foundry en selecteer uw zojuist gemaakte zoekresource in de vervolgkeuzelijst Azure AI Search-resource selecteren. Als de lijst niet wordt weergegeven, selecteert u het vernieuwingspictogram naast de vervolgkeuzelijst.

  25. Voer een waarde van byod-search-index in voor de indexnaamwaarde invoeren .

  26. Schakel het selectievakje Vectorzoekopdrachten toevoegen in dit zoekresourcevak in.

  27. Selecteer in de vervolgkeuzelijst Een insluitmodel selecteren het model text-embedding-ada-002 dat u eerder hebt gemaakt.

  28. Selecteer Bladeren naar een bestand in het dialoogvenster Bestanden uploaden.

  29. Navigeer naar de map met klantdocumenten van het project (in de hoofdmap van het project) en selecteer de volgende bestanden:

    • Clock A102 Installatie Instructions.docx
    • Bedrijf FAQs.docx

    Opmerking

    Deze functie ondersteunt momenteel de volgende bestandsindelingen voor het maken van lokale indexen: .txt, .md, .html, .pdf, .docx en .pptx.

  30. Selecteer Bestanden uploaden. De bestanden worden geüpload naar een fileupload-byod-search-index-container in de blob-opslagresource die u eerder hebt gemaakt.

  31. Selecteer Volgende om naar het dialoogvenster Gegevensbeheer te gaan.

  32. Selecteer Hybride en semantisch in de vervolgkeuzelijst Zoektype.

    Opmerking

    Deze optie biedt ondersteuning voor trefwoorden en vectorzoekopdrachten. Zodra resultaten worden geretourneerd, wordt een secundair classificatieproces toegepast op de resultatenset met behulp van Deep Learning-modellen die de relevantie van de zoekfunctie voor de gebruiker verbeteren. Bekijk de Semantische zoekopdracht in de Documentatie van Azure AI Search voor meer informatie over semantische zoekopdrachten .

  33. Zorg ervoor dat de waarde Selecteer een grootte is ingesteld op 1024.

  34. Kies Volgende.

  35. Selecteer DE API-sleutel voor het type Azure-resourceverificatie. Meer informatie over het selecteren van het juiste verificatietype in de documentatie voor Azure AI Search-verificatie.

  36. Kies Volgende.

  37. Controleer de details en selecteer Opslaan en sluiten.

  38. Nu uw aangepaste gegevens zijn geüpload, worden de gegevens geïndexeerd en beschikbaar voor gebruik in de Chat-speeltuin. Dit proces kan enkele minuten in beslag nemen. Zodra dit is voltooid, gaat u verder met de volgende sectie.

Uw aangepaste gegevensbron gebruiken in de chatspeeltuin

  1. Zoek de sectie Chatsessie van de pagina in Azure OpenAI Studio en voer de volgende gebruikersquery in:

    What safety rules are required to install a clock?
    
  2. Nadat u de gebruikersquery hebt ingediend, ziet u een resultaat dat lijkt op het volgende:

    Azure OpenAI Studio Chat-sessie - Veiligheidsregels voor klokinstallatie

  3. Vouw de sectie 1 verwijzingen in het chatantwoord uit en u ziet dat het bestand Clock A102 Installation Instructions.docx wordt weergegeven en dat u het kunt selecteren om het document weer te geven.

  4. Voer het volgende gebruikersbericht in:

    What should I do to mount the clock on the wall?
    
  5. Als het goed is, ziet u een resultaat dat lijkt op het volgende:

    Azure OpenAI Studio Chat-sessie - Instructies voor het koppelen van de klok

  6. Laten we nu experimenteren met het document Veelgestelde vragen over het bedrijf. Voer de volgende tekst in het queryveld Gebruiker in:

    What is the company's policy on vacation time?
    
  7. U ziet dat er geen informatie is gevonden voor die aanvraag.

  8. Voer de volgende tekst in het queryveld Gebruiker in:

    How should I handle refund requests?
    
  9. Als het goed is, ziet u een resultaat dat lijkt op het volgende:

    Chatsessie van Azure OpenAI Studio - Veelgestelde vragen

  10. Vouw de sectie 1 verwijzingen in het chatantwoord uit en u ziet dat het bestand Company FAQs.docx wordt weergegeven en dat u het kunt selecteren om het document weer te geven.

  11. Selecteer Code weergeven op de werkbalk van de chatspeeltuin.

    Azure OpenAI Studio Chat-sessie - Code weergeven

  12. U kunt schakelen tussen verschillende talen, het eindpunt weergeven en de sleutel van het eindpunt openen. Sluit het dialoogvenster Voorbeeldcode .

    Azure OpenAI Studio Chat-sessie - Voorbeeldcode

  13. Schakel de wisselknop Onbewerkte JSON weergeven boven de chatberichten in. U ziet dat de chatsessie begint met een bericht dat lijkt op het volgende:

    {
        "role": "system",
        "content": "You are an AI assistant that helps people find information."
    }
    
  14. Nu u een aangepaste gegevensbron hebt gemaakt en ermee hebt geëxperimenteerd in de Chat-speeltuin, gaan we kijken hoe u deze kunt gebruiken in de toepassing van het project.

De functie Bring Your Own Data gebruiken in de toepassing

  1. Ga terug naar het project in VS Code en open het .env-bestand . Werk de volgende waarden bij met uw AI Services-eindpunt, -sleutel en -indexnaam. U hebt het eindpunt en de sleutel eerder in deze oefening gekopieerd naar een lokaal bestand.

    AZURE_AI_SEARCH_ENDPOINT=<AI_SERVICES_ENDPOINT_VALUE>
    AZURE_AI_SEARCH_KEY=<AI_SERVICES_KEY_VALUE>
    AZURE_AI_SEARCH_INDEX=byod-search-index
    
  2. In een vorige oefening hebt u de database, API's en toepassing gestart. U hebt het .env bestand ook bijgewerkt. Als u deze stappen niet hebt voltooid, volgt u de instructies aan het einde van de vorige oefening voordat u doorgaat.

  3. Zodra de toepassing in de browser is geladen, selecteert u het pictogram Chat Help in de rechterbovenhoek van de toepassing.

    Pictogram Chat Help

  4. De volgende tekst moet worden weergegeven in het chatdialoogvenster:

    How should I handle a company refund request?
    
  5. Selecteer de knop Help ophalen . Als het goed is, ziet u resultaten die zijn geretourneerd uit het FAQs.docx-document van het bedrijf dat u eerder in Azure OpenAI Studio hebt geüpload. Als u het document wilt lezen, kunt u het vinden in de map met klantdocumenten in de hoofdmap van het project.

  6. Wijzig de tekst in het volgende en selecteer de knop Help ophalen :

    What safety rules are required to install a clock?
    
  7. U ziet resultaten die zijn geretourneerd uit de Clock A102 Installation Instructions.docx document dat u eerder in Azure OpenAI Studio hebt geüpload. Dit document is ook beschikbaar in de map documenten van de klant in de hoofdmap van het project.

De code verkennen

Aanbeveling

Als u Visual Studio Code gebruikt, kunt u bestanden rechtstreeks openen door het volgende te selecteren:

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

Typ vervolgens de naam van het bestand dat u wilt openen.

  1. Ga terug naar de broncode van het project in Visual Studio Code.

  2. Open het server-/apiRoutes.ts-bestand en zoek de completeBYOD route. Deze API wordt aangeroepen wanneer de knop Help ophalen is geselecteerd in het dialoogvenster Chat Help. Hiermee wordt de gebruikersprompt opgehaald uit de hoofdtekst van de aanvraag en doorgegeven aan de completeBYOD() functie in het server-/openAI.ts-bestand . De resultaten worden vervolgens geretourneerd naar de client.

    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. Open het server-/openAI.ts-bestand en zoek de completeBYOD() functie.

    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);
    }
    

    Deze functie heeft de volgende functies:

    • De userPrompt parameter bevat de informatie die de gebruiker heeft getypt in het dialoogvenster Chat Help.
    • de systemPrompt variabele definieert dat een AI-assistent die is ontworpen om mensen te helpen informatie te vinden, worden gebruikt.
    • callOpenAI() wordt gebruikt om de Azure OpenAI-API aan te roepen en de resultaten te retourneren. Hiermee worden de systemPrompt en waarden en userPrompt de volgende parameters doorgegeven:
      • temperature - De hoeveelheid creativiteit die in het antwoord moet worden opgenomen. In dit geval heeft de gebruiker consistente (minder creatieve) antwoorden nodig, zodat de waarde is ingesteld op 0.
      • useBYOD - Een Booleaanse waarde die aangeeft of AI Search al dan niet samen met Azure OpenAI moet worden gebruikt. In dit geval is deze zo ingesteld true dat ai-zoekfunctionaliteit wordt gebruikt.
  4. De callOpenAI() functie accepteert een useBYOD parameter die wordt gebruikt om te bepalen welke OpenAI-functie moet worden aangeroepen. In dit geval wordt de functie zo useBYOD ingesteld true dat de getAzureOpenAIBYODCompletion() functie wordt aangeroepen.

    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. Zoek de getAzureOpenAIBYODCompletion() functie in de server/openAI.ts. Het is vergelijkbaar met de getAzureOpenAICompletion() functie die u eerder hebt onderzocht, maar wordt weergegeven als een afzonderlijke functie om enkele belangrijke verschillen te markeren die uniek zijn voor het scenario 'Azure OpenAI op uw gegevens' dat beschikbaar is in 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() ?? '';
    }
    

    Let op de volgende functionaliteit in de getAzureOpenAIBYODCompletion() functie:

    • Er wordt een dataSources eigenschap gemaakt die de AI Search-resource bevatkeyendpoint, en index_name waarden die eerder in deze oefening aan het .env bestand zijn toegevoegd
    • De createAzureOpenAICompletion() functie wordt aangeroepen met de systemPrompt, userPrompten temperaturedataSources de waarden. Deze functie wordt gebruikt om de Azure OpenAI-API aan te roepen en de resultaten te retourneren.
    • Zodra het antwoord is geretourneerd, worden de bronvermeldingen van het document vastgelegd in de console. De inhoud van het voltooiingsbericht wordt vervolgens teruggezet naar de beller.
  6. Enkele laatste punten die u moet overwegen voordat u verdergaat met de volgende oefening:

    • De voorbeeldtoepassing maakt gebruik van één index in Azure AI Search. U kunt meerdere indexen en gegevensbronnen gebruiken met Azure OpenAI. De dataSources eigenschap in de getAzureOpenAIBYODCompletion() functie kan zo nodig worden bijgewerkt om meerdere gegevensbronnen op te nemen.
    • De beveiliging moet zorgvuldig worden geëvalueerd met dit type scenario. Gebruikers mogen geen vragen kunnen stellen en resultaten krijgen van documenten waartoe ze geen toegang hebben.
  7. Nu u meer hebt geleerd over Azure OpenAI, prompts, voltooiingen en hoe u uw eigen gegevens kunt gebruiken, gaan we verder met de volgende oefening om te leren hoe communicatiefuncties kunnen worden gebruikt om de toepassing te verbeteren. Als u meer wilt weten over Azure OpenAI, bekijkt u de trainingsinhoud van Azure OpenAI Service aan de slag met Azure OpenAI Service . Aanvullende informatie over het gebruik van uw eigen gegevens met Azure OpenAI vindt u in azure OpenAI in uw gegevensdocumentatie .

Volgende stap