Udostępnij za pośrednictwem


Opracowywanie przepływu monitów

Przepływ monitów to narzędzie programistyczne, które usprawnia cykl programowania aplikacji sztucznej inteligencji obsługiwanych przez duże modele językowe (LLMs). Z tego artykułu dowiesz się, jak utworzyć i opracować przepływ monitów oraz przepływ czatu w usłudze Azure Machine Learning Studio.

Wraz ze wzrostem tempa rozwoju aplikacji sztucznej inteligencji opartych na usłudze LLM przepływ monitów zapewnia kompleksowe rozwiązanie, które upraszcza proces tworzenia prototypów, eksperymentowania, iteracji i wdrażania aplikacji sztucznej inteligencji. Korzystając z przepływu monitu, można wykonywać następujące czynności:

  • Orkiestruj przepływy wykonywalne za pomocą narzędzi LLM, monitów i języka Python za pomocą wizualizowanego grafu.
  • Łatwe testowanie, debugowanie i iterowanie przepływów.
  • Utwórz warianty monitów i porównaj ich wydajność.

Tworzenie i opracowywanie przepływu monitów

Aby utworzyć przepływ monitu, wybierz pozycję Monituj przepływ w obszarze nawigacji po lewej stronie usługi Azure Machine Learning Studio, a następnie wybierz pozycję Utwórz na stronie Przepływ monitu .

Na ekranie Tworzenie nowego przepływu możesz utworzyć przepływ, wykonując następujące czynności:

  • Tworzenie przepływu standardowego, czatu lub oceny na podstawie szablonu.
  • Klonowanie dostępnego przykładu z galerii Eksploruj.
  • Importowanie istniejącego przepływu z plików lokalnych lub udziału plików.

Zrzut ekranu przedstawiający tworzenie przepływu monitu od podstaw lub galerii.

Aby utworzyć przepływ, wybierz pozycję Utwórz lub Sklonuj na żądanej karcie przepływu. W następnym okienku ekranu możesz zmienić nazwę nowego przepływu, jeśli chcesz, a następnie wybrać pozycję Utwórz lub Sklonuj. Nowy przepływ zostanie otwarty w interfejsie użytkownika tworzenia.

Sesja obliczeniowa

Przed rozpoczęciem tworzenia uruchom sesję obliczeniową, wybierając pozycję Rozpocznij sesję obliczeniową w górnej części strony tworzenia przepływu. Sesja obliczeniowa jest niezbędna do wykonywania przepływu. Sesja obliczeniowa zarządza zasobami obliczeniowymi wymaganymi do uruchomienia aplikacji, w tym obrazem platformy Docker zawierającym wszystkie niezbędne pakiety zależności.

Zrzut ekranu przedstawiający uruchamianie sesji obliczeniowej w programie Studio.

Strona tworzenia

Rozpoczęcie sesji obliczeniowej może potrwać kilka minut. Podczas uruchamiania sesji obliczeniowej sprawdź części strony tworzenia przepływu.

  • Widok Przepływ lub spłaszczony po lewej stronie to główny obszar roboczy, w którym tworzysz przepływ. W widoku spłaszczanych można edytować węzły, narzędzia, monity i dane wejściowe; uruchamianie węzłów lub całego przepływu; i zdefiniuj i wyświetl dane wyjściowe.

  • Pliki w prawym górnym rogu pokazują folder i strukturę plików przepływu. Każdy przepływ ma folder zawierający plik flow.dag.yaml, pliki kodu źródłowego i foldery systemowe. Możesz dodawać, edytować, usuwać, przekazywać lub pobierać pliki na potrzeby testowania, wdrażania lub współpracy.

  • Widok wykresu w prawym dolnym rogu wizualizuje strukturę przepływu. Możesz powiększyć lub zmniejszyć lub użyć automatycznego układu. Nie można edytować tego widoku bezpośrednio, ale możesz wybrać węzeł, aby go zlokalizować i edytować w widoku spłaszczanym.

Dane wejściowe i wyjściowe przepływu

W sekcjach Dane wejściowe i wyjściowe można wyświetlać, dodawać lub usuwać oraz edytować dane wejściowe i wyjściowe.

  • Dane wejściowe przepływu to dane przekazywane do przepływu jako całości. Należy zdefiniować schemat wejściowy, określając nazwę i typ, a następnie ustawić wartość poszczególnych danych wejściowych w celu przetestowania przepływu. Możesz odwołać się do danych wejściowych przepływu w węzłach przepływu przy użyciu polecenia ${input.<input name>}.

  • Dane wyjściowe przepływu to dane generowane przez przepływ jako całość, które podsumowuje wyniki wykonywania przepływu. Wartość wyjściową przepływu można zdefiniować, odwołując się do danych wyjściowych pojedynczego węzła przy użyciu składni ${<node name>.output} lub ${<node name>.output.<field name>}. Możesz wyświetlić i wyeksportować tabelę wyników wyjściowych po zakończeniu przebiegu przepływu lub przebiegu wsadowego.

Narzędzia przepływu

W przepływie można korzystać z różnych rodzajów narzędzi, takich jak LLM, Python, Prompt, Serp API i Content Safety. Wybranie narzędzia powoduje dodanie nowego węzła dla tego narzędzia na końcu przepływu. Należy określić nazwę węzła i ustawić niezbędne konfiguracje. Za pomocą kontrolek węzłów można zmienić położenie węzła w przepływie.

Dane wejściowe i wyjściowe węzła

Narzędzia LLM i Prompt używają jinja jako języka tworzenia szablonów do dynamicznego generowania monitu. Na przykład można użyć {{}} polecenia , aby ująć nazwę wejściową zamiast używać stałego tekstu, aby można było go zastąpić na bieżąco.

Dane wejściowe i wyjściowe węzła można ustawić na następujące sposoby:

  • Ustaw wartość wejściową bezpośrednio.
  • Odwołuj się do danych wejściowych przepływu przy użyciu polecenia ${input.<input name>}.
  • Odwołuj się do danych wyjściowych węzła przy użyciu polecenia ${<node name>.output} lub ${<node name>.output.<field name>}.

Po zakończeniu tworzenia monitu lub skryptu języka Python wybierz pozycję Weryfikuj i przeanalizuj dane wejściowe dla systemu, aby automatycznie analizować dane wejściowe węzła na podstawie szablonu monitu i danych wejściowych funkcji języka Python.

Węzły można połączyć, odwołując się do danych wyjściowych węzła. Można na przykład odwołać się do danych wyjściowych węzła LLM w danych wejściowych węzła języka Python, aby węzeł języka Python zużywał dane wyjściowe węzła LLM. W widoku grafów można wyświetlić dwa połączone węzły.

Węzły LLM

W przypadku węzła Azure OpenAI LLM należy wybrać pozycję Połączenie, interfejs API i deployment_name, a następnie ustawić monit. Połączenie służy do bezpiecznego przechowywania kluczy tajnych lub innych poufnych poświadczeń wymaganych do interakcji z usługą Azure OpenAI oraz zarządzania nimi.

Jeśli nie masz jeszcze połączenia, utwórz je przed dodaniem węzła LLM i upewnij się, że zasób usługi Azure OpenAI ma wdrożenie czatu lub ukończenia . Aby uzyskać więcej informacji, zobacz Konfigurowanie połączenia i Tworzenie zasobu i wdrażanie modelu przy użyciu usługi Azure OpenAI.

Węzły języka Python

Aby użyć narzędzia języka Python, należy ustawić skrypt języka Python, wartość wejściową i inne konfiguracje. Nowy węzeł języka Python udostępnia następującą funkcję języka Python, która definiuje dane wejściowe i wyjściowe.

from promptflow import tool

# The inputs section will change based on the arguments of the tool function, after you save the code
# Adding type to arguments and return value will help the system show the types properly
# Please update the function name/signature per need
@tool
def my_python_tool(input1: str) -> str:
    return 'hello ' + input1

Kontrola warunkowa

Przepływ monitów oferuje kontrolę warunkową, która umożliwia ustawienie warunków wykonywania dowolnego węzła w przepływie.

Kontrola warunkowa umożliwia kojarzenie każdego węzła w przepływie z konfiguracją aktywacji. Ta konfiguracja to when instrukcja określająca, kiedy należy wykonać węzeł. Możliwości tej funkcji są realizowane w złożonych przepływach, w których wykonywanie niektórych zadań zależy od wyniku poprzednich zadań. Za pomocą kontroli warunkowej można skonfigurować określone węzły do wykonania tylko wtedy, gdy zostaną spełnione określone warunki.

Ustaw konfigurację aktywacji dla węzła, wybierając przycisk Aktywuj konfigurację na karcie węzła. Dodaj instrukcję When i ustaw warunek. Warunki można ustawić, odwołując się do danych wejściowych przepływu lub danych wyjściowych węzła. Można na przykład ustawić warunek ${input.<input name>} lub ${<node name>.output} jako określone wartości. Jeśli warunek nie zostanie spełniony, węzeł zostanie pominięty, a stan węzła będzie wyświetlany jako Pominięto.

Zrzut ekranu przedstawiający ustawienie aktywuj konfigurację w celu włączenia kontroli warunkowej.

Testowanie przepływu

Przepływ można przetestować, uruchamiając jeden węzeł lub uruchamiając cały przepływ.

  • Aby uruchomić jeden węzeł, wybierz ikonę Uruchom na karcie węzła. Po zakończeniu uruchamiania węzła można szybko sprawdzić wyniki w sekcji Dane wyjściowe węzła.
  • Aby uruchomić cały przepływ, wybierz pozycję Uruchom w górnej części strony.

Dane wyjściowe przepływu

Po wybraniu pozycji Uruchom , aby wykonać przepływ, stan uruchomienia będzie widoczny na banerze w górnej części strony. Wybierz pozycję Wyświetl dane wyjściowe na górnym banerze lub górnym pasku menu, aby wyświetlić szczegółowe dane wejściowe, wyjściowe, wykonywanie przepływu i informacje o aranżacji.

 Zrzut ekranu przedstawiający przycisk wyświetl dane wyjściowe w dwóch lokalizacjach.

Po zakończeniu przebiegu przepływu możesz wybrać pozycję Wyświetl dane wyjściowe , aby sprawdzić wszystkie dane wyjściowe historyczne na ekranie Dane wyjściowe .

Zrzut ekranu przedstawiający wynik testu przepływu.

Wybierz kartę Ślad na ekranie Dane wyjściowe, aby wyświetlić wykres zawierający informacje o czasie trwania i skojarzonym koszcie tokenu przepływu. Wybierz przepływ pod nazwą węzła, aby wyświetlić szczegółowe informacje o przepływie w okienku po prawej stronie.

Rozwiń przepływ i wybierz dowolny krok, aby wyświetlić szczegółowe informacje dotyczące tego kroku. Czas trwania każdego wykonania węzła można zobaczyć w drzewie rozpiętości. Aby uzyskać więcej informacji, zobacz Trace Span Specification (Specyfikacja zakresu śledzenia).

 Zrzut ekranu przedstawiający szczegóły śledzenia.

Opracowywanie przepływu czatu

Przepływ czatu to określony typ przepływu monitów przeznaczony do tworzenia aplikacji konwersacyjnych. Przepływ czatów opiera się na standardowych możliwościach przepływu, aby zapewnić rozszerzoną obsługę danych wejściowych/wyjściowych czatu i historii czatów. Korzystając z przepływu czatu, można łatwo utworzyć czatbot, który obsługuje dane wejściowe i wyjściowe czatu.

Aby utworzyć przepływ czatu, na ekranie Tworzenie nowego przepływu wybierz pozycję Utwórz na karcie Przepływ czatu lub wybierz pozycję Czat w galerii Eksploruj i sklonuj jeden z dostępnych przepływów.

Na stronie tworzenia przepływu czatu przepływ czatu przepływ czatu jest oznaczony etykietą Czat , aby odróżnić go od standardowych i ewaluacyjnych przepływów. Aby przetestować przepływ czatu, wybierz pozycję Czat w górnej części strony, aby otworzyć pole czatu na potrzeby konwersacji.

Zrzut ekranu przedstawiający stronę tworzenia przepływu czatu.

Dane wejściowe czatu, dane wyjściowe czatu i historia czatów

Najważniejszymi elementami, które odróżniają przepływ czatu od standardowego przepływu, są dane wejściowe czatu, historia czatu i dane wyjściowe czatu. Historia czatu i dane wejściowe czatu są wymagane w przepływach czatów.

  • Dane wejściowe czatu odnoszą się do wiadomości lub zapytań przesłanych przez użytkowników do czatbota. Efektywne obsługa danych wejściowych czatu ma kluczowe znaczenie dla pomyślnej konwersacji, ponieważ obejmuje zrozumienie intencji użytkownika, wyodrębnienie odpowiednich informacji i wyzwolenie odpowiednich odpowiedzi.

  • Historia czatów to rekord wszystkich interakcji między użytkownikiem a czatbotem, w tym zarówno danych wejściowych użytkownika, jak i danych wyjściowych generowanych przez sztuczną inteligencję. Utrzymywanie historii czatów jest niezbędne do śledzenia kontekstu konwersacji i zapewnienia, że sztuczna inteligencja może generować kontekstowo odpowiednie odpowiedzi.

  • Dane wyjściowe czatu odnoszą się do wygenerowanych przez sztuczną inteligencję wiadomości wysyłanych do użytkowników w odpowiedzi na ich dane wejściowe. Generowanie kontekstowo odpowiednich i angażujących danych wyjściowych czatu jest niezbędne dla pozytywnego środowiska użytkownika.

Przepływ czatu może zawierać wiele danych wejściowych. W sekcji Dane wejściowe przepływu czatu oznaczysz jedno z danych wejściowych jako dane wejściowe czatu i wypełnisz wartość danych wejściowych czatu, wprowadzając pytanie w polu Czat .

Zrzut ekranu przedstawiający pytanie testowe w sekcji Dane wejściowe i pole Czat.

Zarządzanie historią czatów

Aby ułatwić zarządzanie historią czatów, chat_history w sekcji Dane wejściowe są zarezerwowane do reprezentowania historii czatów. Nie można ręcznie edytować chat_historypliku .

Historia czatów jest ustrukturyzowana jako lista danych wejściowych i wyjściowych. Wszystkie interakcje w polu czatu, w tym dane wejściowe czatu użytkownika, wygenerowane dane wyjściowe czatu i inne dane wejściowe i wyjściowe przepływu, są automatycznie przechowywane w historii czatów. Poniższy kod przedstawia strukturę historii czatów.

[
{
    "inputs": {
    "<flow input 1>": "xxxxxxxxxxxxxxx",
    "<flow input 2>": "xxxxxxxxxxxxxxx",
    "<flow input N>""xxxxxxxxxxxxxxx"
    },
    "outputs": {
    "<flow output 1>": "xxxxxxxxxxxx",
    "<flow output 2>": "xxxxxxxxxxxxx",
    "<flow output M>": "xxxxxxxxxxxxx"
    }
},
{
    "inputs": {
    "<flow input 1>": "xxxxxxxxxxxxxxx",
    "<flow input 2>": "xxxxxxxxxxxxxxx",
    "<flow input N>""xxxxxxxxxxxxxxx"
    },
    "outputs": {
    "<flow output 1>": "xxxxxxxxxxxx",
    "<flow output 2>": "xxxxxxxxxxxxx",
    "<flow output M>": "xxxxxxxxxxxxx"
    }
}
]

Uwaga

Podczas przeprowadzania testów w polu Czat automatycznie zapisujesz historię czatów. W przypadku przebiegów wsadowych należy uwzględnić historię czatów w zestawie danych przebiegu wsadowego. Jeśli nie ma dostępnej historii czatów, ustaw chat_history wartość na pustą listę [] w zestawie danych przebiegu wsadowego.

Aby pobrać wcześniejsze interakcje, zapoznaj się chat_history z monitami. Następnie możesz odwołać się do poprzednich danych wejściowych i wyjściowych, aby utworzyć kontekstowe odpowiedzi. Włączenie historii czatów do monitów jest niezbędne do tworzenia kontekstowych i angażujących odpowiedzi czatbota.

Możesz użyć języka Jinja for-loop gramatyki, aby wyświetlić listę danych wejściowych i wyjściowych z pliku chat_history.

{% for item in chat_history %}
user:
{{item.inputs.question}}
assistant:
{{item.outputs.answer}}
{% endfor %}

Testowanie przy użyciu pola czatu

Pole czatu zapewnia interaktywny sposób testowania przepływu czatu, symulując rozmowę z czatbotem. Aby przetestować przepływ czatu przy użyciu pola Czat :

  1. Wybierz pozycję Czat, aby otworzyć pasek boczny czatu.
  2. Wprowadź pytania testowe w polu czatu w dolnej części ekranu, aby wysłać je do czatbota.
  3. Przejrzyj odpowiedzi czatbota, aby upewnić się, że są one kontekstowo odpowiednie i dokładne.
  4. Wybierz pozycję Wyświetl dane wyjściowe w górnej części strony tworzenia, aby szybko wyświetlać i debugować dane wejściowe czatu, dane wyjściowe i historię.
  5. Na ekranie Dane wyjściowe wybierz kartę Śledzenie , a następnie wybierz przepływ , aby wyświetlić szczegółowe informacje o przepływie w okienku po prawej stronie. Rozwiń przepływ i wybierz dowolny krok, aby wyświetlić szczegółowe informacje dotyczące tego kroku.

 Zrzut ekranu przedstawiający środowisko czatu przepływu czatu.