Integrowanie aplikacji LangChain w przepływach monitów
Biblioteka języka Python LangChain to platforma do tworzenia aplikacji opartych na dużych modelach językowych (LLMs), agentach i narzędziach zależności. W tym artykule pokazano, jak uzupełnić programowanie langchain za pomocą przepływu monitów usługi Azure Machine Learning.
Integracja aplikacji LangChain z przepływem monitów jest zaawansowaną kombinacją, która ułatwia tworzenie i testowanie niestandardowych modeli językowych. Możesz użyć modułów LangChain do skompilowania przepływu, a następnie użyć procesu przepływu monitu, aby skalować eksperymenty na potrzeby testowania zbiorczego, oceny i wdrożenia ostatecznego. Na przykład można przeprowadzać eksperymenty na dużą skalę na podstawie większych zestawów danych.
Jeśli masz już lokalny przepływ monitów oparty na kodzie LangChain, możesz łatwo przekonwertować go na przepływ monitu usługi Azure Machine Learning w celu dalszego eksperymentowania. Jeśli wolisz bezpośrednio używać klas i funkcji zestawu SDK języka LangChain, możesz łatwo tworzyć przepływy usługi Azure Machine Learning z węzłami języka Python, które używają niestandardowego kodu LangChain.
Wymagania wstępne
- Lokalny przepływ LangChain, który jest prawidłowo przetestowany i gotowy do wdrożenia.
- Sesja obliczeniowa, która może uruchomić przepływ monitu usługi Machine Learning, dodając pakiety wymienione w pliku requirements.txt, w tym
langchain
. Aby uzyskać więcej informacji, zobacz Zarządzanie sesją obliczeniową przepływu monitów.
Konwertowanie kodu LangChain na przepływ monitu
Użyj poniższego procesu, aby przekonwertować lokalny kod LangChain na uruchamiany przepływ monitów usługi Azure Machine Learning.
Konwertowanie poświadczeń na połączenie przepływu monitów
Kod LangChain może definiować zmienne środowiskowe do przechowywania poświadczeń, takich jak klucz interfejsu API AzureOpenAI niezbędny do wywoływania modeli AzureOpenAI. Na przykład poniższy kod przedstawia zmienne środowiskowe ustawiane dla typu interfejsu API OpenAI, klucza, bazy i wersji.
os.environ["OPENAI_API_TYPE"] = "azure"
os.environ["OPENAI_API_VERSION"] = "2023-05-15"
os.environ["OPENAI_API_BASE"] = "https://contosobamiopenai.openai.azure.com/"
os.environ["OPENAI_API_KEY"] = "abc123abc123abc123abc123abc123ab"
Po uruchomieniu przepływu monitu usługi Azure Machine Learning w chmurze lepiej nie uwidaczniać poświadczeń jako zmiennych środowiskowych. Aby bezpiecznie przechowywać poświadczenia i zarządzać nimi niezależnie od kodu, należy przekonwertować zmienne środowiskowe na połączenie przepływu monitu.
Aby utworzyć połączenie, które bezpiecznie przechowuje poświadczenia niestandardowe, takie jak klucz interfejsu API LLM lub inne wymagane klucze, wykonaj następujące instrukcje:
Na stronie Monituj przepływ w obszarze roboczym usługi Azure Machine Learning wybierz kartę Połączenia , a następnie wybierz pozycję Utwórz.
Wybierz typ połączenia z listy rozwijanej. W tym przykładzie wybierz pozycję Niestandardowe.
W okienku po prawej stronie zdefiniuj nazwę połączenia, a następnie dodaj pary Klucz-wartość do przechowywania poświadczeń i kluczy, wybierając pozycję Dodaj pary klucz-wartość.
Aby zapisać zaszyfrowaną wartość klucza, zaznacz pole wyboru is secret obok co najmniej jednej pary klucz-wartość. Aby pomyślnie utworzyć połączenie niestandardowe, musisz ustawić co najmniej jedną wartość jako wpis tajny.
Wybierz pozycję Zapisz.
Połączenie niestandardowe może zastąpić klucze i poświadczenia lub odpowiednie zmienne środowiskowe jawnie zdefiniowane w kodzie LangChain. Aby użyć połączenia niestandardowego w przepływie, zobacz Konfigurowanie połączenia.
Konwertowanie kodu LangChain na przepływ możliwy do uruchomienia
Aby utworzyć przepływ, wybierz pozycję Utwórz na stronie Monituj przepływ w usłudze Azure Machine Learning Studio i wybierz typ przepływu. Na stronie tworzenia przepływu uruchom sesję obliczeniową przed utworzeniem przepływu. Wybierz typy narzędzi w górnej części strony, aby wstawić odpowiednie węzły do przepływu. Aby uzyskać szczegółowe instrukcje tworzenia przepływu, zobacz Tworzenie przepływu monitów.
Cały kod LangChain może być uruchamiany bezpośrednio w węzłach języka Python w przepływie, o ile sesja obliczeniowa zawiera langchain
zależność pakietu.
Istnieją dwa sposoby konwertowania kodu LangChain na przepływ monitu usługi Azure Machine Learning. Typ przepływu do zaimplementowania zależy od przypadku użycia.
Aby lepiej zarządzać eksperymentami, możesz przekonwertować kod, aby używać języka Python usługi Azure Machine Learning i narzędzi monitowania w przepływie. Możesz wyodrębnić szablon monitu z kodu do węzła monitu i umieścić pozostały kod w jednym lub wielu węzłach lub narzędziach języka Python. Ta opcja ułatwia dostrajanie monitów przez uruchamianie wariantów i umożliwia wybranie optymalnych monitów na podstawie wyników oceny.
W poniższym przykładzie przedstawiono przepływ, który używa węzłów monitu i węzłów języka Python:
W przypadku prostszego procesu konwersji można wywołać bibliotekę LANGChain LLM bezpośrednio z poziomu węzłów języka Python. Cały kod jest uruchamiany w węzłach języka Python, w tym w definicjach monitów. Ta opcja obsługuje szybsze testowanie wsadowe na podstawie większych zestawów danych lub innych konfiguracji.
W poniższym przykładzie pokazano przepływ, który używa tylko węzłów języka Python:
Konfigurowanie połączenia
Po skonfigurowaniu struktury przepływu i przeniesieniu kodu do określonych węzłów narzędzi należy zastąpić oryginalne zmienne środowiskowe odpowiednimi kluczami z połączenia. Aby użyć utworzonego połączenia niestandardowego, wykonaj następujące kroki:
W kodzie języka Python zaimportuj niestandardową bibliotekę połączeń, wprowadzając polecenie
from promptflow.connections import CustomConnection
.Uwaga
Aby zaimportować połączenie azure OpenAI, użyj polecenia
from promptflow.connections import AzureOpenAIConnection
.W funkcji narzędzia zdefiniuj parametr wejściowy typu
CustomConnection
.Zastąp zmienne środowiskowe, które pierwotnie zdefiniowały klucze lub poświadczenia odpowiednimi kluczami z połączenia.
Przeanalizuj dane wejściowe w sekcji wejściowej interfejsu użytkownika węzła, a następnie wybierz połączenie niestandardowe z listy rozwijanej Wartość w interfejsie użytkownika.
Należy również skonfigurować parametry połączenia we wszystkich innych węzłach, które ich wymagają, takich jak węzły LLM.
Konfigurowanie danych wejściowych i wyjściowych
Przed uruchomieniem przepływu skonfiguruj dane wejściowe i wyjściowe węzła oraz ogólne dane wejściowe i wyjściowe przepływu. Ten krok ma kluczowe znaczenie dla upewnienia się, że wszystkie wymagane dane są prawidłowo przekazywane przez przepływ i dają pożądane wyniki. Aby uzyskać więcej informacji, zobacz Flow inputs and outputs (Dane wejściowe i wyjściowe przepływu).