Udostępnij przez


Samouczek: zbuduj aplikację internetową opartą na agencie w Azure App Service przy użyciu LangGraph lub Foundry Agent Service (Python)

W tym samouczku pokazano, jak dodać funkcję agenta do istniejącej aplikacji FASTAPI CRUD opartej na danych. Robi to przy użyciu dwóch różnych podejść: LangGraph i Foundry Agent Service.

Jeśli aplikacja internetowa ma już przydatne funkcje, takie jak zakupy, rezerwacja hotelowa lub zarządzanie danymi, stosunkowo proste jest dodanie funkcji agenta do aplikacji internetowej przez opakowywanie tych funkcji w wtyczki (dla LangGraph) lub jako punkt końcowy OpenAPI (dla usługi Agenta Foundry). W tym samouczku zaczniesz od prostej aplikacji listy to-do. Na koniec będziesz mieć możliwość tworzenia, aktualizowania i zarządzania zadaniami za pomocą agenta w aplikacji usługi App Service.

Zarówno LangGraph, jak i Foundry Agent Service umożliwiają tworzenie agentowych aplikacji internetowych z wykorzystaniem funkcji opartych na sztucznej inteligencji. LangGraph jest podobny do Microsoft Agent Framework i jest SDK. W poniższej tabeli przedstawiono niektóre zagadnienia i kompromisy:

Kwestie wymagające rozważenia LangGraph lub Microsoft Agent Framework Usługa agenta programu Foundry
Performance Szybkie (działa lokalnie) Wolniejsze (zarządzana, zdalna usługa)
Rozwój Pełny kod, maksymalna kontrolka Niski kod, szybka integracja
Testing Testy ręczne/jednostkowe w kodzie Wbudowany plac zabaw do szybkiego testowania
Skalowalność Zarządzane przez aplikację Zarządzane przez platformę Azure, autoskalowane
Wytyczne bezpieczeństwa Wymagane niestandardowe wdrożenie Wbudowane bezpieczeństwo i moderowanie zawartości
Tożsamość Wymagana niestandardowa implementacja Wbudowany identyfikator agenta i uwierzytelnianie
Enterprise Wymagana integracja niestandardowa Wbudowane wdrożenie platformy Microsoft 365/Teams i zintegrowane wywołania narzędzi platformy Microsoft 365.

W tym poradniku nauczysz się, jak:

  • Przekonwertuj istniejącą funkcjonalność aplikacji na wtyczkę langgraph.
  • Dodaj wtyczkę do agenta LangGraph i użyj jej w aplikacji internetowej.
  • Przekonwertuj istniejące funkcje aplikacji na punkt końcowy interfejsu OpenAPI dla usługi Foundry Agent Service.
  • Wywołaj agenta Foundry w aplikacji internetowej.
  • Przypisz wymagane uprawnienia do łączności tożsamości zarządzanej.

Wymagania wstępne

Otwieranie przykładu za pomocą usługi Codespaces

Najprostszym sposobem rozpoczęcia pracy jest użycie usługi GitHub Codespaces, która udostępnia kompletne środowisko programistyczne ze wszystkimi wymaganymi wstępnie zainstalowanymi narzędziami.

  1. Przejdź do repozytorium GitHub pod adresem https://github.com/Azure-Samples/app-service-agentic-langgraph-foundry-python.

  2. Wybierz przycisk Kod , wybierz kartę Codespaces i wybierz pozycję Utwórz przestrzeń kodu w obszarze głównym.

  3. Zaczekaj chwilę na zainicjowanie usługi Codespace. Gdy wszystko będzie gotowe, zobaczysz w przeglądarce w pełni skonfigurowane środowisko programistyczne.

  4. Uruchom aplikację lokalnie:

    python3 -m venv venv
    source venv/bin/activate
    pip install -r requirements.txt
    uvicorn src.app:app --host 0.0.0.0 --port 3000
    
  5. Gdy zobaczysz, że aplikacja uruchomiona na porcie 3000 jest dostępna, wybierz pozycję Otwórz w przeglądarce i dodaj kilka zadań.

    Agenci nie są w pełni skonfigurowani, więc jeszcze nie działają. Skonfigurujesz je później.

Przeglądanie kodu agenta

Oba podejścia używają tego samego wzorca implementacji, w którym agent jest inicjowany podczas uruchamiania aplikacji i odpowiada na komunikaty użytkowników według żądań POST.

Element LangGraphTaskAgent jest inicjowany w konstruktorze w pliku src/agents/langgraph_task_agent.py. Kod inicjowania wykonuje następujące czynności:

  • Konfiguruje klienta AzureChatOpenAI przy użyciu zmiennych środowiskowych.
  • Tworzy wstępnie utworzonego agenta ReAct z pamięcią i zestawem narzędzi CRUD do zarządzania zadaniami (zobacz LangGraph Quickstart).
# Initialize Azure OpenAI client
credential = DefaultAzureCredential()
azure_ad_token_provider = get_bearer_token_provider(
    credential, "https://cognitiveservices.azure.com/.default"
)

self.llm = AzureChatOpenAI(
    azure_endpoint=endpoint,
    azure_deployment=deployment_name,
    azure_ad_token_provider=azure_ad_token_provider,
    api_version="2024-10-21"
)

# Define tools
tools = [
    self._create_task_tool(),
    self._get_tasks_tool(),
    self._get_task_tool(),
    self._update_task_tool(),
    self._delete_task_tool()
]

# Create the agent
self.agent = create_react_agent(self.llm, tools, checkpointer=self.memory)
print("LangGraph Task Agent initialized successfully")

Podczas przetwarzania komunikatów użytkownika agent jest wywoływany przy użyciu ainvoke() komunikatu użytkownika i identyfikatora wątku dla ciągłości konwersacji:

result = await self.agent.ainvoke(
    {"messages": [("user", message)]},
    config=config
)

Wdrażanie przykładowej aplikacji

Przykładowe repozytorium zawiera szablon interfejsu wiersza polecenia dla deweloperów platformy Azure (AZD), który tworzy aplikację usługi App Service z tożsamością zarządzaną i wdraża przykładową aplikację.

  1. W terminalu zaloguj się do platformy Azure przy użyciu interfejsu wiersza polecenia dla deweloperów platformy Azure:

    azd auth login
    

    Postępuj zgodnie z instrukcjami, aby ukończyć proces uwierzytelniania.

  2. Wdróż aplikację usługi Azure App Service przy użyciu szablonu AZD:

    azd up
    
  3. Po wyświetleniu monitu podaj następujące odpowiedzi:

    Question Odpowiedź
    Wprowadź nową nazwę środowiska: Wpisz unikatową nazwę.
    Wybierz subskrypcję platformy Azure do użycia: Wybierz subskrypcję.
    Wybierz grupę zasobów do użycia: Wybierz pozycję Utwórz nową grupę zasobów.
    Wybierz lokalizację, w ramach których chcesz utworzyć grupę zasobów: Wybierz pozycję Szwecja Środkowa.
    Wprowadź nazwę nowej grupy zasobów: Wpisz Enter.
  4. W danych wyjściowych usługi AZD znajdź adres URL aplikacji i przejdź do niej w przeglądarce. Adres URL wygląda następująco w danych wyjściowych usługi AZD:

     Deploying services (azd deploy)
    
       (✓) Done: Deploying service web
       - Endpoint: <URL>
     
  5. Otwórz automatycznie wygenerowany schemat OpenAPI w ścieżce https://....azurewebsites.net/openapi.json . Ten schemat będzie potrzebny później.

    Masz teraz aplikację usługi App Service z tożsamością zarządzaną przypisaną przez system.

Tworzenie i konfigurowanie zasobu rozwiązania Microsoft Foundry

  1. W portalu Foundry upewnij się, że górny przycisk radiowy New Foundry jest ustawiony na aktywny i utwórz projekt.

  2. Wdróż wybrany model (zobacz Przewodnik Szybki start firmy Microsoft Foundry: tworzenie zasobów).

  3. W górnej części placu zabaw modelu skopiuj nazwę modelu.

  4. Najprostszym sposobem na uzyskanie punktu końcowego Azure OpenAI nadal jest korzystanie z portalu klasycznego. Wybierz przycisk radiowy New Foundry , a następnie pozycję Azure OpenAI, a następnie skopiuj adres URL w punkcie końcowym usługi Azure OpenAI na później.

    Zrzut ekranu przedstawiający sposób kopiowania punktu końcowego interfejsu OpenAI i punktu końcowego projektu foundry w portalu foundry.

Przypisywanie wymaganych uprawnień

  1. W górnym menu nowego portalu Foundry wybierz pozycję Obsługa, a następnie wybierz pozycję Administrator. W wierszu projektu Foundry powinny zostać wyświetlone dwa linki. Element w kolumnie Name to zasób projektu Foundry, a ten w kolumnie Zasób nadrzędny to zasób Foundry.

    Zrzut ekranu przedstawiający sposób szybkiego przechodzenia do zasobu foundry lub zasobu projektu foundry.

  2. Wybierz zasób Foundry w zasobie nadrzędnym , a następnie wybierz pozycję Zarządzaj tym zasobem w witrynie Azure Portal. W witrynie Azure Portal możesz przypisać dostęp oparty na rolach dla zasobu do wdrożonej aplikacji internetowej.

  3. Dodaj następującą rolę dla zarządzanej tożsamości aplikacji App Service.

    Zasób docelowy Wymagana rola Wymagane do
    Odlewnia Użytkownik Usług Cognitive Services OpenAI Usługa uzupełniania czatu w programie Microsoft Agent Framework.

    Aby uzyskać instrukcje, zobacz Przypisywanie ról platformy Azure przy użyciu witryny Azure Portal.

Konfigurowanie zmiennych połączenia w przykładowej aplikacji

  1. Otwórz plik env. Korzystając z wartości skopiowanych wcześniej z portalu Foundry, skonfiguruj następujące zmienne:

    Variable Description
    AZURE_OPENAI_ENDPOINT Punkt końcowy usługi Azure OpenAI (skopiowany z klasycznego portalu Foundry).
    AZURE_OPENAI_DEPLOYMENT_NAME Nazwa modelu we wdrożeniu (skopiowana z obszaru roboczego modelu w nowym portalu Foundry).

    Uwaga / Notatka

    Aby zachować prostotę samouczka, użyjesz tych zmiennych w pliku env zamiast zastępowania ich ustawieniami aplikacji w usłudze App Service.

    Uwaga / Notatka

    Aby zachować prostotę samouczka, użyjesz tych zmiennych w pliku env zamiast zastępowania ich ustawieniami aplikacji w usłudze App Service.

  2. Zaloguj się do platformy Azure przy użyciu interfejsu wiersza polecenia platformy Azure:

    az login
    

    Dzięki temu biblioteka klienta tożsamości platformy Azure w przykładowym kodzie może odbierać token uwierzytelniania dla zalogowanego użytkownika. Pamiętaj, że wcześniej dodano wymaganą rolę dla tego użytkownika.

  3. Uruchom aplikację lokalnie:

    npm run build
    npm start
    
  4. Gdy zobaczysz, że aplikacja uruchomiona na porcie 3000 jest dostępna, wybierz pozycję Otwórz w przeglądarce.

  5. Wybierz link LangGraph Agent i link Agent usługi Foundry , aby wypróbować interfejs czatu. Jeśli otrzymasz odpowiedź, aplikacja łączy się pomyślnie z zasobem Microsoft Foundry.

  6. W usłudze GitHub codespace wdróż zmiany aplikacji.

    azd up
    
  7. Przejdź ponownie do wdrożonej aplikacji i przetestuj agentów czatu.

Uprzątnij zasoby

Po zakończeniu pracy z aplikacją możesz usunąć zasoby usługi App Service, aby uniknąć ponoszenia dodatkowych kosztów:

azd down --purge

Ponieważ szablon AZD nie zawiera zasobów rozwiązania Microsoft Foundry, należy je usunąć ręcznie, jeśli chcesz.

Więcej zasobów