Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować się zalogować lub zmienić katalog.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
Integracja usługi Azure OpenAI Natural Language Processing (NLP) i możliwości uzupełniania zapewnia znaczący potencjał zwiększania produktywności użytkowników. Dzięki wykorzystaniu odpowiednich monitów i reguł asystent sztucznej inteligencji może efektywnie generować różne formy komunikacji, takie jak wiadomości e-mail, wiadomości SMS i inne. Ta funkcja prowadzi do zwiększenia wydajności użytkownika i usprawnionych przepływów pracy.
Chociaż ta funkcja jest bardzo zaawansowana, mogą wystąpić przypadki, w których użytkownicy muszą generować uzupełnienia na podstawie niestandardowych danych firmy. Na przykład może istnieć kolekcja podręczników produktów, które mogą być trudne dla użytkowników, aby poruszać się, gdy pomagają klientom w rozwiązywaniu problemów z instalacją. Alternatywnie możesz zachować kompleksowy zestaw często zadawanych pytań związanych z świadczeniami opieki zdrowotnej, które mogą okazać się trudne dla użytkowników do przeczytania i uzyskania potrzebnych odpowiedzi. W takich przypadkach i wielu innych usługa Azure OpenAI Service umożliwia wykorzystanie własnych danych do generowania uzupełniania, zapewniając bardziej dopasowaną i kontekstową dokładniejszą odpowiedź na pytania użytkowników.
Poniżej przedstawiono krótkie omówienie działania funkcji "bring your own data" z dokumentacji usługi Azure OpenAI.
Uwaga / Notatka
Jedną z kluczowych funkcji usługi Azure OpenAI na danych jest możliwość pobierania i wykorzystywania danych w sposób zwiększający dane wyjściowe modelu. Usługa Azure OpenAI na danych wraz z usługą Azure AI Search określa, jakie dane mają być pobierane z wyznaczonego źródła danych na podstawie danych wejściowych użytkownika i podanej historii konwersacji. Te dane są następnie rozszerzane i ponownie przesyłane jako monit o model OpenAI z pobranymi informacjami dołączanymi do oryginalnego monitu. Mimo że pobrane dane są dołączane do monitu, wynikowe dane wejściowe są nadal przetwarzane przez model jak każdy inny monit. Po pobraniu danych i przesłaniu monitu do modelu model model używa tych informacji w celu zapewnienia ukończenia.
W tym ćwiczeniu wykonasz następujące czynności:
- Utwórz niestandardowe źródło danych przy użyciu portalu azure AI Foundry.
- Wdrażanie modelu osadzania przy użyciu portalu usługi Azure AI Foundry.
- Przekazywanie dokumentów niestandardowych.
- Rozpocznij sesję czatu na placu zabaw czatu, aby poeksperymentować z generowaniem uzupełnień na podstawie własnych danych.
- Zapoznaj się z kodem, który używa usług Azure AI Search i Azure OpenAI do generowania uzupełniania na podstawie własnych danych.
Zacznijmy od wdrożenia modelu osadzania i dodania niestandardowego źródła danych w rozwiązaniu Azure AI Foundry.
Dodawanie niestandardowego źródła danych do rozwiązania Azure AI Foundry
Przejdź do usługi Azure OpenAI Studio i zaloguj się przy użyciu poświadczeń, które mają dostęp do zasobu usługi Azure OpenAI.
Wybierz pozycję Wdrożenia z menu nawigacji.
Wybierz pozycję Wybierz pozycję Wdróż model -->Wdróż model podstawowy na pasku narzędzi.
Wybierz model text-embedding-ada-002 z listy modeli i wybierz pozycję Potwierdź.
Wybierz jedną z następujących opcji:
- Nazwa wdrożenia: text-embedding-ada-002
- Wersja modelu: domyślna
- Typ wdrożenia: Standardowa
- Ustaw wartość limitu szybkości tokenów na minutę (tysiące) na 120 0000
- Filtr zawartości: DefaultV2
- Włącz cudzysłów dynamicznych: włączone
Wybierz przycisk Wdróż.
Po utworzeniu modelu wybierz pozycję Strona główna z menu nawigacji, aby przejść do ekranu powitalnego.
Znajdź kafelek Bring your own data (Przynieś własne dane ) na ekranie powitalnym i wybierz pozycję Wypróbuj teraz.
Wybierz pozycję Dodaj dane , a następnie pozycję Dodaj źródło danych.
Z listy rozwijanej Wybierz źródło danych wybierz pozycję Przekaż pliki.
Na liście rozwijanej Wybierz zasób usługi Azure Blob Storage wybierz pozycję Utwórz nowy zasób usługi Azure Blob Storage.
Wybierz swoją subskrypcję platformy Azure na liście rozwijanej Subskrypcja .
Na liście rozwijanej Wybierz zasób usługi Azure Blob Storage wybierz pozycję Utwórz nowy zasób usługi Azure Blob Storage.
Spowoduje to przejście do witryny Azure Portal, w której można wykonać następujące zadania:
- Wprowadź unikatową nazwę konta magazynu, na przykład byodstorage[Twoje nazwisko].
- Wybierz region, który znajduje się blisko lokalizacji.
- Wybierz pozycję Przejrzyj , a następnie pozycję Utwórz.
Po utworzeniu zasobu magazynu obiektów blob wróć do okna dialogowego Odnajdywanie sztucznej inteligencji platformy Azure i wybierz nowo utworzony zasób magazynu obiektów blob z listy rozwijanej Wybierz zasób usługi Azure Blob Storage . Jeśli nie widzisz jej na liście, wybierz ikonę odświeżania obok listy rozwijanej.
Aby można było uzyskać dostęp do konta magazynu, należy włączyć współużytkowanie zasobów między źródłami (CORS). Wybierz pozycję Włącz mechanizm CORS w oknie dialogowym Odnajdywanie sztucznej inteligencji platformy Azure.
Na liście rozwijanej Wybierz zasób usługi Azure AI Search wybierz pozycję Utwórz nowy zasób usługi Azure AI Search.
Spowoduje to powrót do witryny Azure Portal, w której można wykonać następujące zadania:
- Wprowadź unikatową nazwę zasobu wyszukiwania sztucznej inteligencji, taką jak byodsearch-[Twoje nazwisko].
- Wybierz region, który znajduje się blisko lokalizacji.
- W sekcji Warstwa cenowa wybierz pozycję Zmień warstwę cenową i wybierz pozycję Podstawowa , a następnie pozycję Wybierz. Warstwa Bezpłatna nie jest obsługiwana, dlatego na końcu tego samouczka wyczyścisz zasób wyszukiwania sztucznej inteligencji.
- Wybierz pozycję Przejrzyj , a następnie pozycję Utwórz.
Po utworzeniu zasobu wyszukiwania sztucznej inteligencji przejdź do strony Przegląd zasobu i skopiuj wartość Adresu URL do pliku lokalnego.
Wybierz pozycję Ustawienia ->Klucze w menu nawigacji.
Na stronie Kontrola dostępu do interfejsu API wybierz pozycję Oba , aby umożliwić dostęp do usługi przy użyciu tożsamości zarządzanej lub klucza. Po wyświetleniu monitu wybierz pozycję Tak .
Uwaga / Notatka
Mimo że w tym ćwiczeniu użyjemy klucza interfejsu API, ponieważ dodanie przypisań ról może potrwać do 10 minut, przy niewielkim dodatkowym wysiłku można włączyć tożsamość zarządzaną przypisaną przez system, aby bezpieczniej uzyskać dostęp do usługi.
Wybierz pozycję Klucze w menu nawigacji po lewej stronie i skopiuj wartość podstawowego klucza administratora do pliku lokalnego. W dalszej części ćwiczenia będziesz potrzebować wartości adresu URL i klucza.
Wybierz pozycję Ustawienia -->Semantic ranker w menu nawigacji i upewnij się, że wybrano pozycję Bezpłatna .
Uwaga / Notatka
Aby sprawdzić, czy klasyfikator semantyczny jest dostępny w określonym regionie, sprawdź stronę Dostępność produktów według regionów w witrynie internetowej platformy Azure, aby sprawdzić, czy region znajduje się na liście.
Wróć do okna dialogowego Dodawanie danych usługi Azure AI Foundry i wybierz nowo utworzony zasób wyszukiwania z listy rozwijanej Wybierz zasób usługi Azure AI Search . Jeśli nie widzisz jej na liście, wybierz ikonę odświeżania obok listy rozwijanej.
Wprowadź wartość byod-search-index dla wartości Wprowadź nazwę indeksu .
Zaznacz pole wyboru Dodaj wyszukiwanie wektorów do tego zasobu wyszukiwania .
Na liście rozwijanej Wybierz model osadzania wybierz utworzony wcześniej model text-embedding-ada-002 .
W oknie dialogowym Przekazywanie plików wybierz pozycję Przeglądaj dla pliku.
Przejdź do folderu dokumentów klienta projektu (znajdującego się w katalogu głównym projektu) i wybierz następujące pliki:
- Instructions.docxinstalacji zegara A102
- FAQs.docxfirmy
Uwaga / Notatka
Ta funkcja obsługuje obecnie następujące formaty plików do tworzenia indeksu lokalnego: .txt, md, .html, .pdf, .docx i .pptx.
Wybierz pozycję Przekaż pliki. Pliki zostaną przekazane do kontenera fileupload-byod-search-index w utworzonym wcześniej zasobie magazynu obiektów blob.
Wybierz przycisk Dalej , aby przejść do okna dialogowego Zarządzanie danymi .
Na liście rozwijanej Typ wyszukiwania wybierz pozycję Hybryda i semantyka.
Uwaga / Notatka
Ta opcja zapewnia obsługę wyszukiwania słów kluczowych i wektorów. Po zwróceniu wyników pomocniczy proces klasyfikowania jest stosowany do zestawu wyników przy użyciu modeli uczenia głębokiego, co poprawia istotność wyszukiwania dla użytkownika. Aby dowiedzieć się więcej na temat wyszukiwania semantycznego, zapoznaj się z dokumentacją wyszukiwania semantycznego w usłudze Azure AI Search .
Upewnij się, że ustawiono wartość Wybierz rozmiarna 1024.
Wybierz Dalej.
W polu Typ uwierzytelniania zasobów platformy Azure wybierz pozycję Klucz interfejsu API. Dowiedz się więcej na temat wybierania odpowiedniego typu uwierzytelniania w dokumentacji uwierzytelniania usługi Azure AI Search.
Wybierz Dalej.
Przejrzyj szczegóły i wybierz pozycję Zapisz i zamknij.
Teraz, po przekazaniu danych niestandardowych, dane zostaną zindeksowane i będą dostępne do użycia na placu zabaw czatu. Ten proces może potrwać kilka minut. Po zakończeniu przejdź do następnej sekcji.
Używanie niestandardowego źródła danych na placu zabaw czatu
Znajdź sekcję Sesja czatu na stronie w programie Azure OpenAI Studio i wprowadź następujące zapytanie użytkownika:
What safety rules are required to install a clock?Po przesłaniu zapytania użytkownika powinien zostać wyświetlony wynik podobny do następującego:
Rozwiń sekcję 1 odwołań w odpowiedzi na czat i zwróć uwagę, że na liście znajduje się plik Instalacji zegara A102 Instructions.docx i że można go wybrać, aby wyświetlić dokument.
Wprowadź następujący komunikat użytkownika:
What should I do to mount the clock on the wall?Powinien zostać wyświetlony wynik podobny do następującego:
Teraz poeksperymentujmy z dokumentem Często zadawane pytania dotyczące firmy. Wprowadź następujący tekst w polu Zapytanie użytkownika :
What is the company's policy on vacation time?Powinien zostać wyświetlony komunikat, że dla tego żądania nie znaleziono żadnych informacji.
Wprowadź następujący tekst w polu Zapytanie użytkownika :
How should I handle refund requests?Powinien zostać wyświetlony wynik podobny do następującego:
Rozwiń sekcję 1 odwołań w odpowiedzi na czat i zwróć uwagę, że plik FAQs.docxfirmy znajduje się na liście i możesz wybrać go, aby wyświetlić dokument.
Wybierz pozycję Wyświetl kod na pasku narzędzi placu zabaw czatu.
Należy pamiętać, że możesz przełączać się między różnymi językami, wyświetlać punkt końcowy i uzyskiwać dostęp do klucza punktu końcowego. Zamknij okno dialogowe Przykładowy kod .
Włącz przełącznik Pokaż nieprzetworzone dane JSON powyżej wiadomości czatu. Zwróć uwagę, że sesja czatu rozpoczyna się od komunikatu podobnego do następującego:
{ "role": "system", "content": "You are an AI assistant that helps people find information." }Teraz, gdy utworzono niestandardowe źródło danych i poeksperymentowaliśmy je na placu zabaw czatu, zobaczmy, jak można go używać w aplikacji projektu.
Korzystanie z funkcji Bring Your Own Data w aplikacji
Wróć do projektu w programie VS Code i otwórz plik env . Zaktualizuj następujące wartości przy użyciu punktu końcowego, klucza i nazwy indeksu usług AI Services. Skopiowano punkt końcowy i klucz do pliku lokalnego wcześniej w tym ćwiczeniu.
AZURE_AI_SEARCH_ENDPOINT=<AI_SERVICES_ENDPOINT_VALUE> AZURE_AI_SEARCH_KEY=<AI_SERVICES_KEY_VALUE> AZURE_AI_SEARCH_INDEX=byod-search-indexW poprzednim ćwiczeniu uruchomiono bazę danych, interfejsy API i aplikację. Zaktualizowano
.envrównież plik. Jeśli nie wykonasz tych kroków, przed kontynuowaniem wykonaj instrukcje na końcu wcześniejszego ćwiczenia.Po załadowaniu aplikacji w przeglądarce wybierz ikonę Pomoc czatu w prawym górnym rogu aplikacji.
W oknie dialogowym czatu powinien zostać wyświetlony następujący tekst:
How should I handle a company refund request?Wybierz przycisk Uzyskaj pomoc . Powinny zostać wyświetlone wyniki zwrócone z dokumentu Company FAQs.docx przekazanego wcześniej w usłudze Azure OpenAI Studio. Jeśli chcesz przeczytać dokument, możesz go znaleźć w folderze dokumentów klienta w katalogu głównym projektu.
Zmień tekst na następujący i wybierz przycisk Uzyskaj pomoc :
What safety rules are required to install a clock?Powinny zostać wyświetlone wyniki zwrócone z dokumentu Instructions.docxinstalacji zegara A102 przekazanego wcześniej w narzędziu Azure OpenAI Studio. Ten dokument jest również dostępny w folderze dokumentów klienta w katalogu głównym projektu.
Eksplorowanie kodu
Wskazówka
Jeśli używasz programu Visual Studio Code, możesz otwierać pliki bezpośrednio, wybierając pozycję:
- Windows/Linux: Ctrl + P
- Mac: Cmd + P
Następnie wpisz nazwę pliku, który chcesz otworzyć.
Wróć do kodu źródłowego projektu w programie Visual Studio Code.
Otwórz plik serwera/apiRoutes.ts i znajdź
completeBYODtrasę. Ten interfejs API jest wywoływany po wybraniu przycisku Uzyskaj pomoc w oknie dialogowym Pomoc czatu. Pobiera on monit użytkownika z treści żądania i przekazuje go docompleteBYOD()funkcji w pliku serwera/openAI.ts . Wyniki są następnie zwracane do klienta.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); });Otwórz plik serwera/openAI.ts i znajdź
completeBYOD()funkcję.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); }Ta funkcja ma następujące funkcje:
- Parametr
userPromptzawiera informacje wpisane przez użytkownika w oknie dialogowym pomocy czatu. - zmienna
systemPromptdefiniuje, że asystent sztucznej inteligencji zaprojektowany w celu ułatwienia użytkownikom znajdowania informacji będzie używany. -
callOpenAI()służy do wywoływania interfejsu API usługi Azure OpenAI i zwracania wyników.systemPromptPrzekazuje wartości iuserPrompt, a także następujące parametry:-
temperature- Ilość kreatywności, którą należy uwzględnić w odpowiedzi. Użytkownik potrzebuje spójnych (mniej kreatywnych) odpowiedzi w tym przypadku, więc wartość jest ustawiona na 0. -
useBYOD— wartość logiczna wskazująca, czy należy używać funkcji wyszukiwania sztucznej inteligencji wraz z usługą Azure OpenAI. W takim przypadku jest ona ustawiona natruewartość , aby funkcja wyszukiwania sztucznej inteligencji była używana.
-
- Parametr
Funkcja
callOpenAI()akceptujeuseBYODparametr używany do określania, która funkcja OpenAI ma być wywoływana. W tym przypadku ustawiauseBYODwartość natrue, aby funkcja była wywoływanagetAzureOpenAIBYODCompletion().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); }getAzureOpenAIBYODCompletion()Znajdź funkcję na serwerze/openAI.ts. Jest ona bardzo podobna dogetAzureOpenAICompletion()funkcji, którą zbadano wcześniej, ale jest wyświetlana jako osobna funkcja, aby wyróżnić kilka kluczowych różnic, które są unikatowe dla scenariusza "Azure OpenAI on your data" dostępnego w usłudze 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() ?? ''; }Zwróć uwagę na następujące funkcje w
getAzureOpenAIBYODCompletion()funkcji:- Utworzono
dataSourceswłaściwość zawierającą wartości ,key, iendpointzasobuindex_namewyszukiwania sztucznej.envinteligencji, które zostały dodane do pliku wcześniej w tym ćwiczeniu - Funkcja jest wywoływana
createAzureOpenAICompletion()zasystemPromptpomocą wartości ,userPrompt,temperatureidataSources. Ta funkcja służy do wywoływania interfejsu API usługi Azure OpenAI i zwracania wyników. - Gdy odpowiedź zostanie zwrócona, cytaty dokumentu są rejestrowane w konsoli programu . Zawartość komunikatu ukończenia jest następnie zwracana do elementu wywołującego.
- Utworzono
Kilka ostatnich kwestii, które należy wziąć pod uwagę przed przejściem do następnego ćwiczenia:
- Przykładowa aplikacja używa pojedynczego indeksu w usłudze Azure AI Search. Za pomocą usługi Azure OpenAI można używać wielu indeksów i źródeł danych. Właściwość
dataSourceswgetAzureOpenAIBYODCompletion()funkcji można zaktualizować w celu uwzględnienia wielu źródeł danych w razie potrzeby. - Zabezpieczenia muszą być dokładnie oceniane przy użyciu tego typu scenariusza. Użytkownicy nie powinni mieć możliwości zadawania pytań i uzyskiwania wyników z dokumentów, do których nie mają dostępu.
- Przykładowa aplikacja używa pojedynczego indeksu w usłudze Azure AI Search. Za pomocą usługi Azure OpenAI można używać wielu indeksów i źródeł danych. Właściwość
Teraz, gdy znasz już interfejs Azure OpenAI, monity, uzupełnienia i sposób używania własnych danych, przejdźmy do następnego ćwiczenia, aby dowiedzieć się, jak można używać funkcji komunikacji w celu ulepszenia aplikacji. Jeśli chcesz dowiedzieć się więcej o usłudze Azure OpenAI, zapoznaj się z zawartością szkoleniową Wprowadzenie do usługi Azure OpenAI Service . Dodatkowe informacje na temat używania własnych danych z usługą Azure OpenAI można znaleźć w dokumentacji usługi Azure OpenAI .