Nuta
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
LangChain to struktura przeznaczona do upraszczania tworzenia aplikacji przy użyciu dużych modeli językowych (LLMs). Podczas tworzenia agenta sztucznej inteligencji za pomocą usługi LangChain usługa LLM interpretuje dane wejściowe użytkownika i generuje odpowiedź. Agent sztucznej inteligencji często zmaga się, gdy musi wykonać matematyczne i symboliczne rozumowanie w celu utworzenia odpowiedzi. Integrując dynamiczne sesje usługi Azure Container Apps z aplikacją LangChain, możesz udostępnić agentowi interpreter kodu do wykonywania wyspecjalizowanych zadań.
Z tego samouczka dowiesz się, jak uruchomić agenta sztucznej inteligencji LangChain w internetowym interfejsie API. Interfejs API akceptuje dane wejściowe użytkownika i zwraca odpowiedź wygenerowaną przez agenta sztucznej inteligencji. Agent używa interpretera kodu w sesjach dynamicznych do wykonywania obliczeń.
Wymagania wstępne
- Konto platformy Azure z aktywną subskrypcją.
- Jeśli nie masz konta, możesz je utworzyć teraz za darmo.
- Zainstaluj interfejs wiersza polecenia platformy Azure.
- Git.
- Środowisko Python w wersji 3.10 lub nowszej.
Tworzenie zasobów platformy Azure
Przykładowa aplikacja w tym przewodniku Szybki start używa rozwiązania LLM z poziomu usługi Azure OpenAI. Używa również sesji usługi Azure Container Apps do uruchamiania kodu wygenerowanego przez usługę LLM.
Zaktualizuj interfejs wiersza polecenia platformy Azure do najnowszej wersji.
az upgradeUsuń rozszerzenie usługi Azure Container Apps, jeśli jest już zainstalowane i zainstaluj wersję zapoznawcza rozszerzenia Azure Container Apps zawierające polecenia dla sesji:
az extension remove --name containerapp az extension add \ --name containerapp \ --allow-preview true -yLogowanie do platformy Azure:
az loginUstaw zmienne używane w tym przewodniku Szybki start:
RESOURCE_GROUP_NAME=aca-sessions-tutorial AZURE_OPENAI_LOCATION=swedencentral AZURE_OPENAI_NAME=<UNIQUE_OPEN_AI_NAME> SESSION_POOL_LOCATION=eastasia SESSION_POOL_NAME=code-interpreter-poolZastąp
<UNIQUE_OPEN_AI_NAME>ciąg unikatową nazwą, aby utworzyć konto usługi Azure OpenAI.Tworzenie grupy zasobów:
az group create --name $RESOURCE_GROUP_NAME --location $SESSION_POOL_LOCATIONTworzenie konta usługi Azure OpenAI:
az cognitiveservices account create \ --name $AZURE_OPENAI_NAME \ --resource-group $RESOURCE_GROUP_NAME \ --location $AZURE_OPENAI_LOCATION \ --kind OpenAI \ --sku s0 \ --custom-domain $AZURE_OPENAI_NAMEUtwórz wdrożenie modelu GPT 3.5 Turbo o nazwie
gpt-35-turbona koncie usługi Azure OpenAI:az cognitiveservices account deployment create \ --resource-group $RESOURCE_GROUP_NAME \ --name $AZURE_OPENAI_NAME \ --deployment-name gpt-35-turbo \ --model-name gpt-35-turbo \ --model-version "1106" \ --model-format OpenAI \ --sku-capacity "100" \ --sku-name "Standard"Utwórz pulę sesji interpretera kodu:
az containerapp sessionpool create \ --name $SESSION_POOL_NAME \ --resource-group $RESOURCE_GROUP_NAME \ --location $SESSION_POOL_LOCATION \ --max-sessions 100 \ --container-type PythonLTS \ --cooldown-period 300
Uruchamianie przykładowej aplikacji lokalnie
Przed wdrożeniem aplikacji w usłudze Azure Container Apps możesz uruchomić ją lokalnie, aby ją przetestować.
Klonowanie aplikacji
Sklonuj repozytorium przykładów sesji usługi Azure Container Apps.
git clone https://github.com/Azure-Samples/container-apps-dynamic-sessions-samples.gitPrzejdź do katalogu zawierającego przykładową aplikację:
cd container-apps-dynamic-sessions-samples/langchain-python-webapi
Konfigurowanie aplikacji
Utwórz środowisko wirtualne języka Python i aktywuj je:
python3.11 -m venv .venv source .venv/bin/activateZmień wersję języka Python w poleceniu, jeśli używasz innej wersji. Zaleca się używanie języka Python w wersji 3.10 lub nowszej.
Uwaga
Jeśli używasz systemu Windows, zastąp ciąg
.venv/bin/activateciąg ..venv\Scripts\activateZainstaluj wymagane pakiety języka Python:
python -m pip install -r requirements.txtAby uruchomić aplikację, należy skonfigurować zmienne środowiskowe.
Pobierz punkt końcowy konta usługi Azure OpenAI:
az cognitiveservices account show \ --name $AZURE_OPENAI_NAME \ --resource-group $RESOURCE_GROUP_NAME \ --query properties.endpoint \ --output tsvPobierz punkt końcowy zarządzania pulą sesji usługi Azure Container Apps:
az containerapp sessionpool show \ --name $SESSION_POOL_NAME \ --resource-group $RESOURCE_GROUP_NAME \ --query properties.poolManagementEndpoint \ --output tsv.envUtwórz plik w katalogu głównym przykładowej aplikacji (w tej samej lokalizacji comain.py). Dodaj następującą zawartość do pliku:AZURE_OPENAI_ENDPOINT=<AZURE_OPENAI_ENDPOINT> POOL_MANAGEMENT_ENDPOINT=<SESSION_POOL_MANAGEMENT_ENDPOINT>Zastąp
<AZURE_OPENAI_ENDPOINT>element punktem końcowym konta usługi Azure OpenAI i<SESSION_POOL_MANAGEMENT_ENDPOINT>punktem końcowym zarządzania pulą sesji.
Aplikacja używa
DefaultAzureCredentialfunkcji do uwierzytelniania za pomocą usług platformy Azure. Na komputerze lokalnym używa on bieżących poświadczeń logowania interfejsu wiersza polecenia platformy Azure. Musisz przyznać sobie rolę użytkownika openAI usług Cognitive Services na koncie usługi Azure OpenAI, aby aplikacja uzyskiwała dostęp do punktów końcowych modelu, oraz rolę funkcji wykonawczej sesji usługi Azure ContainerApps w puli sesji, aby aplikacja uzyskiwała dostęp do puli sesji.Pobierz nazwę użytkownika interfejsu wiersza polecenia platformy Azure:
az account show --query user.name --output tsvUruchom następujące polecenia, aby pobrać identyfikator zasobu konta usługi Azure OpenAI:
az cognitiveservices account show --name $AZURE_OPENAI_NAME --resource-group $RESOURCE_GROUP_NAME --query id --output tsvPrzypisz rolę użytkownika interfejsu wiersza polecenia platformy Azure w usłudze Cognitive Services OpenAI na koncie usługi Azure OpenAI:
az role assignment create --role "Cognitive Services OpenAI User" --assignee <CLI_USERNAME> --scope <AZURE_OPENAI_RESOURCE_ID>Zastąp
<CLI_USERNAME>ciąg nazwą użytkownika interfejsu wiersza polecenia platformy Azure i<AZURE_OPENAI_RESOURCE_ID>identyfikatorem zasobu konta usługi Azure OpenAI.Uruchom następujące polecenia, aby pobrać identyfikator zasobu puli sesji:
az containerapp sessionpool show --name $SESSION_POOL_NAME --resource-group $RESOURCE_GROUP_NAME --query id --output tsvPrzypisz rolę funkcji wykonawczej sesji usługi Azure ContainerApps przy użyciu jego identyfikatora do użytkownika interfejsu wiersza polecenia platformy Azure w puli sesji:
az role assignment create \ --role "Azure ContainerApps Session Executor" \ --assignee <CLI_USERNAME> \ --scope <SESSION_POOL_RESOURCE_ID>Zastąp
<CLI_USERNAME>ciąg nazwą użytkownika interfejsu wiersza polecenia platformy Azure i<SESSION_POOL_RESOURCE_ID>identyfikatorem zasobu puli sesji.
Uruchom aplikację
Przed uruchomieniem przykładowej aplikacji otwórz main.py w edytorze i przejrzyj kod. Aplikacja używa interfejsu FastAPI do utworzenia internetowego interfejsu API, który akceptuje komunikat użytkownika w ciągu zapytania.
Następujące wiersze kodu tworzy wystąpienie narzędzia SessionPythonREPLTool i udostępniają go agentowi LangChain:
repl = SessionsPythonREPLTool(pool_management_endpoint=pool_management_endpoint)
tools = [repl]
prompt = hub.pull("hwchase17/openai-functions-agent")
agent = agents.create_tool_calling_agent(llm, tools, prompt)
Gdy konieczne jest wykonanie obliczeń, agent uruchamia kod przy użyciu narzędzia SessionPythonREPLTool . Kod jest wykonywany w sesji w puli sesji. Domyślnie podczas tworzenia wystąpienia narzędzia jest generowany identyfikator sesji losowej. Jeśli agent używa narzędzia do uruchamiania wielu fragmentów kodu w języku Python, używa tej samej sesji. Aby upewnić się, że każdy użytkownik końcowy ma unikatową sesję, użyj oddzielnego agenta i narzędzia dla każdego użytkownika.
Narzędzie SessionPythonREPLTool jest dostępne w pakiecie langchain-azure-dynamic-sessions .
Uruchom przykładową aplikację:
fastapi dev main.pyOtwórz przeglądarkę i przejdź pod adres
http://localhost:8000/docs. Zostanie wyświetlony interfejs użytkownika struktury Swagger dla przykładowej aplikacji./chatRozwiń punkt końcowy i wybierz pozycję Wypróbuj.Wprowadź
What time is it right now?wmessagepolu i wybierz pozycję Wykonaj.Agent odpowiada z bieżącą godziną. W terminalu zobaczysz dzienniki pokazujące kod języka Python wygenerowany przez agenta, aby uzyskać bieżący czas i uruchomić go w sesji interpretera kodu.
Aby zatrzymać aplikację, wprowadź
Ctrl+Cpolecenie w terminalu.
Opcjonalnie: wdrażanie przykładowej aplikacji w usłudze Azure Container Apps
Aby wdrożyć aplikację FastAPI w usłudze Azure Container Apps, musisz utworzyć obraz kontenera i wypchnąć go do rejestru kontenerów. Następnie możesz wdrożyć obraz w usłudze Azure Container Apps. Polecenie az containerapp up łączy te kroki w jedno polecenie.
Następnie należy skonfigurować tożsamość zarządzaną dla aplikacji i przypisać jej odpowiednie role, aby uzyskać dostęp do usługi Azure OpenAI i puli sesji.
Ustaw zmienne dla środowiska usługi Container Apps i nazwy aplikacji:
ENVIRONMENT_NAME=aca-sessions-tutorial-env CONTAINER_APP_NAME=chat-apiSkompiluj i wdróż aplikację w usłudze Azure Container Apps:
az containerapp up \ --name $CONTAINER_APP_NAME \ --resource-group $RESOURCE_GROUP_NAME \ --location $SESSION_POOL_LOCATION \ --environment $ENVIRONMENT_NAME \ --env-vars "AZURE_OPENAI_ENDPOINT=<OPEN_AI_ENDPOINT>" "POOL_MANAGEMENT_ENDPOINT=<SESSION_POOL_MANAGEMENT_ENDPOINT>" \ --source .Zastąp
<OPEN_AI_ENDPOINT>element punktem końcowym konta usługi Azure OpenAI i<SESSION_POOL_MANAGEMENT_ENDPOINT>punktem końcowym zarządzania pulą sesji.Włącz tożsamość zarządzaną przypisaną przez system dla aplikacji:
az containerapp identity assign \ --name $CONTAINER_APP_NAME \ --resource-group $RESOURCE_GROUP_NAME \ --system-assignedAby aplikacja uzyskiwała dostęp do usługi Azure OpenAI i puli sesji, musisz przypisać tożsamość zarządzaną odpowiednie role.
Pobierz identyfikator podmiotu zabezpieczeń tożsamości zarządzanej:
az containerapp show \ --name $CONTAINER_APP_NAME \ --resource-group $RESOURCE_GROUP_NAME \ --query identity.principalId \ --output tsvPobierz identyfikator zasobu puli sesji:
az containerapp sessionpool show \ --name $SESSION_POOL_NAME \ --resource-group $RESOURCE_GROUP_NAME \ --query id \ --output tsvPrzypisz tożsamość zarządzaną i
Azure ContainerApps Session ExecutorContributorrole w puli sesji:Przed uruchomieniem następującego polecenia zastąp
<PRINCIPAL_ID>wartości i<SESSION_POOL_RESOURCE_ID>wartościami pobranymi w poprzednich krokach.az role assignment create \ --role "Azure ContainerApps Session Executor" \ --assignee <PRINCIPAL_ID> \ --scope <SESSION_POOL_RESOURCE_ID> az role assignment create \ --role "Contributor" \ --assignee <PRINCIPAL_ID> \ --scope <SESSION_POOL_RESOURCE_ID>Pobierz identyfikator zasobu konta usługi Azure OpenAI:
az cognitiveservices account show \ --name $AZURE_OPENAI_NAME \ --resource-group $RESOURCE_GROUP_NAME \ --query id \ --output tsvPrzypisz tożsamość zarządzaną
Cognitive Services OpenAI Userrolę na koncie usługi Azure OpenAI:Przed uruchomieniem następującego polecenia zastąp
<PRINCIPAL_ID>wartości i<AZURE_OPENAI_RESOURCE_ID>wartościami pobranymi w poprzednich krokach.az role assignment create \ --role "Cognitive Services OpenAI User" \ --assignee <PRINCIPAL_ID> \ --scope <AZURE_OPENAI_RESOURCE_ID>
Pobierz w pełni kwalifikowaną nazwę domeny aplikacji (FQDN):
az containerapp show \ --name $CONTAINER_APP_NAME \ --resource-group $RESOURCE_GROUP_NAME \ --query properties.configuration.ingress.fqdn \ --output tsvOtwórz przeglądarkę, aby przetestować
https://<FQDN>/docswdrożona aplikację.
Czyszczenie zasobów
Gdy skończysz z zasobami, możesz je usunąć, aby uniknąć naliczania opłat:
az group delete --name $RESOURCE_GROUP_NAME --yes --no-wait