Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
In dit artikel wordt beschreven hoe u de chat implementeert en uitvoert met uw eigen gegevensvoorbeeldmet behulp van voorbeeldcode voor Python. Deze voorbeeldchattoepassing is gebouwd met Python, Azure OpenAI Service en Rag (Retrieval Augmented Generation) via Azure AI Search.
De app biedt antwoorden op vragen van gebruikers over werknemersvoordelen bij een fictief bedrijf. Het maakt gebruik van Retrieval-Augmented Generation (RAG) om te verwijzen naar inhoud van opgegeven PDF-bestanden, waaronder:
- Een handboek voor werknemers
- Een overzichtsdocument met voordelen
- Een lijst met bedrijfsrollen en verwachtingen
Door deze documenten te analyseren, kan de app reageren op query's in natuurlijke taal met nauwkeurige, contextuele relevante antwoorden. Deze benadering laat zien hoe u uw eigen gegevens kunt gebruiken om intelligente, domeinspecifieke chatervaringen met Azure OpenAI en Azure AI Search mogelijk te maken.
U leert ook hoe u de instellingen van de app configureert om het reactiegedrag te wijzigen.
Nadat u de stappen in dit artikel hebt voltooid, kunt u beginnen met het aanpassen van het project met uw eigen code. Dit artikel maakt deel uit van een reeks die u begeleidt bij het bouwen van een chat-app met Azure OpenAI Service en Azure AI Search. Andere artikelen in de reeks zijn:
Notitie
Dit artikel is gebaseerd op een of meer AI-app-sjablonen, die goed onderhouden referentie-implementaties dienen. Deze sjablonen zijn ontworpen om eenvoudig te implementeren en een betrouwbaar, kwalitatief goed uitgangspunt te bieden voor het bouwen van uw eigen AI-toepassingen.
Voorbeeld-app-architectuur
In het volgende diagram ziet u een eenvoudige architectuur van de chat-app.
Belangrijke onderdelen van de architectuur zijn:
- Een webtoepassing die als host fungeert voor de interactieve chatinterface (meestal gebouwd met Python Flask of JavaScript/React) en gebruikersvragen verzendt naar de back-end voor verwerking.
- Een Azure AI Search-resource die intelligente zoekopdrachten uitvoert op geïndexeerde documenten (PDF's, Word-bestanden, enzovoort) en relevante documentfragmenten (segmenten) retourneert voor gebruik in antwoorden.
- Een Azure OpenAI Service-exemplaar dat:
- Converteert documenten en gebruikersvragen naar vectorweergaven voor semantische overeenkomsten zoeken.
- Extraheert belangrijke trefwoorden om Azure AI Search-query's te verfijnen.
- Synthetiseert definitieve antwoorden met behulp van de opgehaalde gegevens en gebruikersquery.
De typische stroom van de chat-app is als volgt:
- Gebruiker verzendt een vraag: Een gebruiker voert een vraag in natuurlijke taal in via de web-app-interface.
-
Azure OpenAI verwerkt de vraag: De back-end maakt gebruik van Azure OpenAI om:
- Genereer een insluiting van de vraag met behulp van het model text-embedding-ada-002.
- Optioneel trefwoorden extraheren om de relevantie van zoekopdrachten te verfijnen
- Azure AI Search haalt relevante gegevens op: het insluiten of trefwoorden worden gebruikt om een semantische zoekopdracht uit te voeren op geïndexeerde inhoud (zoals PDF's) in Azure AI Search.
- Resultaten combineren met de vraag: De meest relevante documentfragmenten (segmenten) worden gecombineerd met de oorspronkelijke vraag van de gebruiker.
- Azure OpenAI genereert een antwoord: de gecombineerde invoer wordt doorgegeven aan een GPT-model (zoals gpt-35-turbo of gpt-4), waarmee een contextbewust antwoord wordt gegenereerd.
- Het antwoord wordt geretourneerd aan de gebruiker: het gegenereerde antwoord wordt weergegeven in de chatinterface.
Vereisten
Een ontwikkelcontaineromgeving is beschikbaar met alle afhankelijkheden die nodig zijn om dit artikel te voltooien. U kunt de ontwikkelcontainer uitvoeren in GitHub Codespaces (in een browser) of lokaal met behulp van Visual Studio Code.
Als u dit artikel wilt gebruiken, hebt u de volgende vereisten nodig:
Een Azure-abonnement. Maak een gratis account voordat u begint.
Machtigingen voor Azure-accounts. Uw Azure-account moet beschikken over Microsoft.Authorization/roleAssignments/write-machtigingen. Rollen zoals Gebruikerstoegangsbeheerder of Eigenaar voldoen aan deze vereiste.
Toegang verleend aan Azure OpenAI in uw Azure-abonnement. In de meeste gevallen kunt u aangepaste inhoudsfilters maken en ernstniveaus beheren met algemene toegang tot Azure OpenAI-modellen. Registratie voor op goedkeuring gebaseerde toegang is niet vereist voor algemene toegang. Zie Functies voor beperkte toegang voor Azure AI-services voor meer informatie.
Wijzigingen in inhoudsfilters of misbruik (optioneel). Als u aangepaste inhoudsfilters wilt maken, ernstniveaus wilt wijzigen of misbruikcontrole wilt ondersteunen, hebt u formele goedkeuring van toegang nodig. U kunt toegang aanvragen door de benodigde registratieformulieren in te vullen. Zie Registratie voor gewijzigde inhoudsfilters en/of misbruikcontrole voor meer informatie.
Ondersteuning en probleemoplossing van toegang. Open een ondersteuningsprobleem in de GitHub-opslagplaats voor toegang tot het oplossen van problemen.
Een GitHub-account. Het is vereist om de repository te forken en GitHub Codespaces te gebruiken of deze lokaal te klonen.
Gebruikskosten voor voorbeeldbronnen
De meeste resources die in deze architectuur worden gebruikt, vallen onder basisniveaus of op verbruik gebaseerde prijscategorieën. Dit betekent dat u alleen betaalt voor wat u gebruikt en dat de kosten doorgaans minimaal zijn tijdens het ontwikkelen of testen.
Voor het voltooien van dit voorbeeld zijn er mogelijk kleine kosten verbonden aan het gebruik van services zoals Azure OpenAI, AI Search en opslag. Zodra u klaar bent met het evalueren of implementeren van de app, kunt u alle ingerichte resources verwijderen om lopende kosten te voorkomen.
Voor een gedetailleerde uitsplitsing van de verwachte kosten, zie de kostenschatting in de GitHub-repository voor de voorbeeld.
Open ontwikkelomgeving
Begin met het instellen van een ontwikkelomgeving waarop alle afhankelijkheden zijn geïnstalleerd om dit artikel te voltooien.
- Een Azure-abonnement. Maak gratis een account.
- Machtigingen voor Azure-accounts. Uw Azure-account moet beschikken over Microsoft.Authorization/roleAssignments/write-machtigingen. Rollen zoals Gebruikerstoegangsbeheerder of Eigenaar voldoen aan deze vereiste.
- Een GitHub-account. Het is vereist om de repository te forken en GitHub Codespaces te gebruiken of deze lokaal te klonen.
Een ontwikkelomgeving openen
Gebruik de volgende instructies om een vooraf geconfigureerde ontwikkelomgeving met alle vereiste afhankelijkheden te implementeren om dit artikel te voltooien.
Gebruik GitHub Codespaces voor de eenvoudigste en meest gestroomlijnde installatie. GitHub Codespaces voert een ontwikkelcontainer uit die wordt beheerd door GitHub en biedt Visual Studio Code voor het web als de gebruikersinterface (UI). Deze omgeving bevat alle vereiste hulpprogramma's, SDK's, extensies en afhankelijkheden die vooraf zijn geïnstalleerd, zodat u direct kunt beginnen met ontwikkelen zonder handmatige configuratie.
Het gebruik van Codespaces zorgt voor het volgende:
- De juiste ontwikkelhulpprogramma's en -versies zijn al geïnstalleerd.
- U hoeft Docker, VS Code of extensies niet lokaal te installeren.
- Snelle onboarding en reproduceerbare omgeving instellen.
Belangrijk
Alle GitHub-accounts kunnen Elke maand maximaal 60 uur gratis GitHub Codespaces gebruiken met 2 kernexemplaren. Als u het gratis quotum overschrijdt of grotere rekenopties gebruikt, zijn de standaard factureringstarieven voor GitHub Codespaces van toepassing. Zie GitHub Codespaces - Maandelijks opgenomen opslag en kernuren voor meer informatie.
Als u met het voorbeeldproject wilt beginnen, maakt u een nieuwe GitHub-coderuimte op de
mainvertakking van deAzure-Samples/azure-search-openai-demoGitHub-opslagplaats.Klik met de rechtermuisknop op de GitHub Codespaces - Open-optie boven aan de opslagplaatspagina en selecteer Koppeling openen in een nieuw venster. Dit zorgt ervoor dat de ontwikkelcontainer wordt gestart op een volledig scherm, toegewezen browsertabblad, zodat u toegang hebt tot zowel de broncode als de ingebouwde documentatie.
Controleer op de pagina Een nieuwe codespace maken de configuratie-instellingen voor codespace en selecteer vervolgens Codespace maken:
Wacht totdat de GitHub-coderuimte is gestart. Het opstartproces kan enkele minuten duren.
Nadat de GitHub-codespace is geopend, meldt u zich aan bij Azure met de Azure Developer CLI door de volgende opdracht in het terminaldeelvenster van de coderuimte in te voeren:
azd auth loginGitHub geeft een beveiligingscode weer in het deelvenster Terminal.
Kopieer de beveiligingscode in het terminalvenster en selecteer Enter. Er wordt een browservenster geopend.
Plak bij de prompt de beveiligingscode in het browserveld.
Volg de instructies voor verificatie met uw Azure-account.
U voltooit de resterende GitHub Codespaces-taken in dit artikel in de context van deze ontwikkelingscontainer.
Chat-app implementeren in Azure
De voorbeeldopslagplaats bevat alles wat u nodig hebt om een chat met uw eigen gegevenstoepassing te implementeren in Azure, waaronder:
- Broncode van toepassing (Python)
- Infrastructure-as-code-bestanden (Bicep)
- Configuratie voor GitHub-integratie en CI/CD (optioneel)
Gebruik de volgende stappen om de app te implementeren met de Azure Developer CLI (azd).
Belangrijk
Azure-resources die in deze sectie zijn gemaakt, met name Azure AI Search, kunnen onmiddellijk na voorziening kosten gaan maken, zelfs als de implementatie wordt onderbroken voordat deze voltooid is. Als u onverwachte kosten wilt voorkomen, controleert u uw Azure-gebruik en verwijdert u na het testen onmiddellijk ongebruikte resources.
Maak in het deelvenster Visual Studio Code Terminal de Azure-resources en implementeer de broncode door de volgende
azdopdracht uit te voeren:azd upHet proces vraagt u om een of meer van de volgende instellingen op basis van uw configuratie:
Omgevingsnaam: deze waarde wordt gebruikt als onderdeel van de naam van de resourcegroep. Voer een korte naam in met kleine letters en streepjes (
-), zoals myenv. Hoofdletters, cijfers en speciale tekens worden niet ondersteund.Abonnement: Selecteer een abonnement om de resources te maken. Als u uw gewenste abonnement niet ziet, gebruikt u de pijltoetsen om door de volledige lijst met beschikbare abonnementen te schuiven.
Locatie: Deze regiolocatie wordt gebruikt voor de meeste resources, waaronder hosting. Selecteer een regiolocatie bij u in de buurt.
Locatie voor OpenAI-model of Document Intelligence-resource: selecteer de locatie die het dichtst bij u in de buurt is. Als de regio die u hebt geselecteerd voor uw locatie beschikbaar is voor deze instelling, selecteert u dezelfde regio.
Het kan enige tijd duren voordat de app is geïmplementeerd. Wacht totdat de implementatie is voltooid voordat u doorgaat.
Nadat de app is geïmplementeerd, wordt in het terminalvenster een eindpunt-URL weergegeven:
Selecteer de eindpunt-URL om de chattoepassing in een browser te openen:
Chat-app gebruiken om antwoorden te krijgen uit PDF-bestanden
De chat-app wordt vooraf geladen met informatie over werknemersvoordelen van PDF-bestanden. U kunt de chat-app gebruiken om vragen te stellen over de voordelen. Met de volgende stappen doorloopt u het proces voor het gebruik van de chat-app. Uw antwoorden kunnen variëren wanneer de onderliggende modellen worden bijgewerkt.
Selecteer in de chat-app de optie Wat gebeurt er in een prestatiebeoordeling? of voer dezelfde tekst in het chattekstvak in. De app retourneert het eerste antwoord:
Selecteer een bronvermelding in het antwoordvak:
GitHub Codespaces opent het rechterdeelvenster Bronvermelding met drie gebieden met tabbladen en de focus bevindt zich op het tabblad Bronvermelding :
GitHub Codespaces biedt drie tabbladen met informatie om te begrijpen hoe de chat-app het antwoord heeft gegenereerd:
Tabblad Beschrijving Gedachtenproces Geeft een script weer van de interacties tussen vraag en antwoord in de chat. U kunt de inhoud van de chat-app systembekijken, vragen die door hetusersysteemassistantzijn ingevoerd en verduidelijkingen.Ondersteunende inhoud Hier vindt u de informatie die wordt gebruikt om uw vraag en het bronmateriaal te beantwoorden. Het aantal bronmateriaalvermeldingen wordt opgegeven door de instellingen voor ontwikkelaars. Het standaardaantal bronvermeldingen is 3. Gegevensvermelding Hiermee wordt de oorspronkelijke bron voor de geselecteerde bronvermelding weergegeven. Wanneer u klaar bent, selecteert u het geselecteerde tabblad in het rechterdeelvenster. Het rechterdeelvenster wordt gesloten.
Instellingen gebruiken om reactiegedrag te wijzigen
Het specifieke OpenAI-model bepaalt de intelligentie van de chat en de instellingen die worden gebruikt om met het model te communiceren. Met de optie Instellingen voor ontwikkelaars opent u het deelvenster Antwoord genereren configureren , waar u instellingen voor de chat-app kunt wijzigen:
| Instelling | Beschrijving |
|---|---|
| Promptsjabloon overschrijven | Overschrijft de prompt die wordt gebruikt om het antwoord te genereren op basis van de vraag en zoekresultaten. |
| Temperatuur | Hiermee stelt u de temperatuur van de aanvraag in op het grote taalmodel (LLM) waarmee het antwoord wordt gegenereerd. Hogere temperaturen resulteren in meer creatieve reacties, maar ze zijn misschien minder geaard. |
| Zaad | Hiermee stelt u een seed in om de reproduceerbaarheid van de reacties van het model te verbeteren. Het zaad kan elk geheel getal zijn. |
| Minimale zoekscore | Hiermee stelt u een minimumscore in voor zoekresultaten die worden geretourneerd door Azure AI Search. Het scorebereik is afhankelijk van of u hybride (standaard), alleen vectoren of alleen tekst gebruikt voor de instelling voor de ophaalmodus . |
| Minimale rerankerscore | Hiermee stelt u een minimumscore in voor zoekresultaten die worden geretourneerd door de semantische reranker. De score varieert altijd tussen 0-4. Hoe hoger de score, hoe semantisch relevanter het resultaat is voor de vraag. |
| Dit aantal zoekresultaten ophalen | Hiermee stelt u het aantal zoekresultaten in dat moet worden opgehaald uit Azure AI Search. Meer resultaten kunnen de kans vergroten dat het juiste antwoord wordt gevonden, maar kan ertoe leiden dat het model 'verloren in het midden' komt. U kunt de geretourneerde bronnen zien op de tabbladen Gedachtenproces en Ondersteunende inhoud van het deelvenster Bronvermelding . |
| Categorie opnemen | Hiermee geeft u de categorieën op die moeten worden opgenomen bij het genereren van de zoekresultaten. Gebruik de vervolgkeuzelijst om uw selectie te maken. De standaardactie is het opnemen van alle categorieën. |
| Categorie uitsluiten | Hiermee geeft u categorieën op die moeten worden uitgesloten van de zoekresultaten. Er zijn geen categorieën die worden gebruikt in de standaardgegevensset. |
| Semantische ranker gebruiken voor ophalen | Hiermee schakelt u de semantische ranker van Azure AI Search in, een model dat zoekresultaten herschikt op basis van semantische overeenkomsten met de query van de gebruiker. |
| Semantische bijschriften gebruiken | Hiermee worden semantische bijschriften naar de LLM verzonden in plaats van het volledige zoekresultaat. Een semantisch bijschrift wordt geëxtraheerd uit een zoekresultaat tijdens het proces van semantische rangschikking. |
| Vervolgvragen voorstellen | Vraagt de LLM om vervolgvragen voor te stellen op basis van de query van de gebruiker. |
| Ophaalmodus | Hiermee stelt u de ophaalmodus voor de Azure AI Search-query in. De standaardactie is Vectors + Text (Hybride) die gebruikmaakt van een combinatie van vectorzoekopdrachten en zoeken in volledige tekst. De optie Vectoren maakt alleen gebruik van vectorzoekopdrachten. De optie Tekst maakt alleen gebruik van zoekopdrachten in volledige tekst. De hybride benadering is optimaal. |
| Antwoorden op voltooiing van de Stream-chat | Streamt continu het antwoord naar de chatinterface terwijl de inhoud wordt gegenereerd. |
Met de volgende stappen doorloopt u het proces voor het wijzigen van de instellingen.
Selecteer in de browser de optie Instellingen voor ontwikkelaars .
Schakel het selectievakje Vervolgvragen voorstellen in om de optie in te schakelen en selecteer Sluiten om de instellingswijziging toe te passen.
In de chat-app kunt u de vraag deze keer opnieuw bekijken door de tekst in het vragenvak in te voeren:
What happens in a performance review?Het antwoord op de chat-app bevat nu voorgestelde vervolgvragen:
Selecteer opnieuw de optie Instellingen voor ontwikkelaars en deselecteer de optie Gebruik semantische ranker voor ophalen. Sluit de instellingen.
Stel dezelfde vraag opnieuw en let op het verschil in het antwoord van de chat-app.
Met de Semantische rangschikking: "Tijdens een prestatiebeoordeling bij Contoso Electronics zal uw supervisor uw prestaties in het afgelopen jaar bespreken en feedback geven over gebieden voor verbetering. U krijgt ook de mogelijkheid om uw doelstellingen en doelstellingen voor het komende jaar te bespreken. De beoordeling is een tweerichtingsdialoog tussen managers en werknemers en wordt aangemoedigd voor werknemers om eerlijk en open te zijn tijdens het proces (1). De feedback die tijdens de beoordeling wordt gegeven, moet positief en constructief zijn, gericht op het helpen van werknemers bij het ontwikkelen en groeien van hun rollen. Werknemers ontvangen een schriftelijk overzicht van hun prestatiebeoordeling, waaronder een beoordeling van hun prestaties, feedback en doelstellingen voor het komende jaar (1)."
Zonder de Semantische rangschikking: "Tijdens een prestatiebeoordeling bij Contoso Electronics zal uw supervisor uw prestaties in het afgelopen jaar bespreken en feedback geven over gebieden voor verbetering. Het is een tweerichtingsdialoog waarbij u wordt aangemoedigd eerlijk en open te zijn (1). De feedback die tijdens de beoordeling wordt gegeven, moet positief en constructief zijn, gericht op het helpen ontwikkelen en groeien van uw rol. U ontvangt een schriftelijk overzicht van de beoordeling, inclusief een beoordeling van uw prestaties, feedback en doelstellingen voor het komende jaar (1)."
Resources opschonen
Nadat u de oefening hebt voltooid, kunt u het beste alle resources verwijderen die niet meer nodig zijn.
Azure-resources opschonen
De Azure-resources die in dit artikel zijn gemaakt, worden gefactureerd voor uw Azure-abonnement. Als u deze resources in de toekomst niet meer nodig hebt, verwijdert u deze om te voorkomen dat er meer kosten in rekening worden gebracht.
Verwijder de Azure-resources en verwijder de broncode door de volgende azd opdracht uit te voeren:
azd down --purge --force
De opdrachtopties omvatten:
-
purge: Verwijderde hulpbronnen worden onmiddellijk gewist. Met deze optie kunt u de metrische gegevens van Azure OpenAI-tokens per minuut (TPM) opnieuw gebruiken. force: het verwijderen gebeurt op de achtergrond, zonder dat hiervoor toestemming van de gebruiker is vereist.
Het opschonen van GitHub Codespaces
Als u de GitHub Codespaces-omgeving verwijdert, zorgt u ervoor dat u de hoeveelheid gratis rechten per kernuren die u voor uw account krijgt, kunt maximaliseren.
Belangrijk
Zie GitHub Codespaces - Maandelijks inbegrepen opslag- en kernuren voor meer informatie over de rechten van uw GitHub-account.
Meld u aan bij het GitHub Codespaces-dashboard.
Zoek op het dashboard de momenteel actieve codespaces die afkomstig zijn uit de
Azure-Samples/azure-search-openai-demoGitHub-opslagplaats.Open het contextmenu voor de codespace en selecteer Verwijderen:
Hulp vragen
Deze voorbeeldopslagplaats biedt informatie over probleemoplossing.
Als uw probleem niet is opgelost, voegt u het probleem toe aan de webpagina Problemen van de opslagplaats.
Verwante inhoud
- Verkrijg de broncode voor het voorbeeld dat in dit artikel wordt gebruikt
- Een chat-app bouwen met Azure OpenAI: best practice-oplossingsarchitectuur
- Toegangsbeheer in Generatieve AI-apps met Azure AI Search
- Een bedrijfsklare OpenAI-oplossing bouwen met Azure API Management
- Uitblinken in vectorzoekopdrachten met hybride ophaal- en rangschikkingsmogelijkheden