Notatka
Dostęp do tej strony wymaga autoryzacji. Może spróbować zalogować się lub zmienić katalogi.
Dostęp do tej strony wymaga autoryzacji. Możesz spróbować zmienić katalogi.
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 z listą zadań. 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ść | Wymagane niestandardowe wdrożenie | 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 na potrzeby połączenia przy użyciu tożsamości zarządzanej.
Wymagania wstępne
- Konto platformy Azure z aktywną subskrypcją — utwórz bezpłatne konto.
- Konto usługi GitHub do korzystania z usługi GitHub Codespaces — dowiedz się więcej o usłudze GitHub Codespaces.
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.
Przejdź do repozytorium GitHub pod adresem https://github.com/Azure-Samples/app-service-agentic-langgraph-foundry-python.
Wybierz przycisk Kod , wybierz kartę Codespaces i wybierz pozycję Utwórz przestrzeń kodu w obszarze głównym.
Zaczekaj chwilę na zainicjowanie usługi Codespace. Gdy wszystko będzie gotowe, zobaczysz w przeglądarce w pełni skonfigurowane środowisko programistyczne.
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 3000Gdy 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.
Przejrzyj kod 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).
- Wybiera jeden wątek konwersacji zarządzany przez serwer dla uwierzytelnionej próbki.
self.memory = InMemorySaver()
# App Service authentication protects this sample, which intentionally
# keeps one server-managed conversation thread per worker process.
self.thread_id = "authenticated-conversation"
try:
endpoint = os.getenv("AZURE_OPENAI_ENDPOINT")
deployment_name = os.getenv("AZURE_OPENAI_DEPLOYMENT_NAME")
if not endpoint or not deployment_name:
print("Azure OpenAI configuration missing for LangGraph agent")
return
# 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)
Podczas przetwarzania wiadomości użytkownika agent wywołuje ainvoke() z identyfikatorem wątku zarządzanego przez serwer:
config = {"configurable": {"thread_id": self.thread_id}}
# Process the message
result = await self.agent.ainvoke(
{"messages": [("user", message)]},
config=config
)
Żądanie przeglądarki zawiera tylko tę wiadomość. Nie może wybrać innego wątku, podając identyfikator sesji lub rozmowy.
Wdrażanie przykładowej aplikacji
Przykładowe repozytorium zawiera szablon Azure Developer CLI (AZD), który tworzy aplikację App Service i wdraża Twoją przykładową aplikację. Tożsamość zarządzana przypisana przez system usługi App Service jest zachowana na potrzeby wychodzących wywołań do usługi Azure AI. Oddzielna zarządzana tożsamość przypisana przez użytkownika oraz federacja tożsamości pozwalały uwierzytelniać App Service jako wygenerowana aplikacja Microsoft Entra bez tajemnicy klienta.
W terminalu zaloguj się do Azure, używając Azure Developer CLI:
azd auth loginPostępuj zgodnie z instrukcjami, aby ukończyć proces uwierzytelniania.
Wdrożenie aplikacji Azure App Service za pomocą szablonu AZD:
azd upPo 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. W danych wyjściowych usługi AZD znajdź adres URL aplikacji i przejdź do niej w przeglądarce. Skopiuj też wartość „audience” tożsamości zarządzanej Foundry OpenAPI do późniejszego użycia. Dane wyjściowe wyglądają następująco:
Deploying services (azd deploy) (✓) Done: Deploying service web - Endpoint: <URL> Foundry OpenAPI managed identity audience: api://<generated-client-id>Gdy Microsoft cię o to poprosi, zaloguj się, używając konta w tenantzie wdrożenia i sprawdź, czy lista zadań się ładuje.
W tej samej uwierzytelnionej przeglądarce dodaj
/openapi.jsonna końcu punktu końcowego usługi App Service. Skopiuj lub zapisz wygenerowany schemat OpenAPI na później.Uwaga / Notatka
Uwierzytelnianie usługi App Service zwraca przekierowanie HTTP 302 dla nieuwierzytelnionych żądań z przeglądarki. Ten przykład zawiera zarówno interfejs przeglądarki, jak i API, dzięki czemu przekierowanie zapewnia użyteczne doświadczenie logowania. Aplikacje oparte wyłącznie na API często korzystają z HTTP 401.
Tworzenie i konfigurowanie zasobu rozwiązania Microsoft Foundry
W portalu Foundry stwórz projekt.
Wdróż wybrany model (zobacz Przewodnik Szybki start firmy Microsoft Foundry: tworzenie zasobów).
W górnej części placu zabaw modelu skopiuj nazwę modelu.
Na stronie głównej skopiuj endpoint Azure OpenAI na później.
Przypisywanie wymaganych uprawnień
W portalu Foundry wybierz Zarządzaj w górnym menu.
W Szczegóły projektu wybierz zasób nadrzędny dla projektu, a następnie wybierz Otwórz w portalu Azure.
Z portalu Azure możesz przypisać dostęp do zasobów opartych na rolach.
Dodaj następującą rolę zarówno do zarządzanej tożsamości aplikacji usługi App Service, jak i do użytkownika, którego używasz z
az login: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
Otwórz plik env. Korzystając z wartości skopiowanych wcześniej z portalu Foundry, skonfiguruj następujące zmienne:
Variable Description AZURE_OPENAI_ENDPOINTAzure OpenAI endpoint (skopiowany ze strony głównej portalu Foundry). AZURE_OPENAI_DEPLOYMENT_NAMENazwa 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.
Wartości w .env konfigurują połączenie wychodzące aplikacji z Foundry.
AZURE_AI_FOUNDRY_ACCOUNT_CLIENT_IDkonfiguruje oddzielne przychodzące połączenie OpenAPI z Foundry do App Service i jest przechowywane w środowisku AZD.Zaloguj się do platformy Azure przy użyciu interfejsu wiersza polecenia platformy Azure:
az loginDzię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.
Uruchom aplikację lokalnie:
source venv/bin/activate uvicorn src.app:app --host 0.0.0.0 --port 3000Gdy zobaczysz, że aplikacja uruchomiona na porcie 3000 jest dostępna, wybierz pozycję Otwórz w przeglądarce.
Walidacja obu pivotów osobno:
- LangGraph: Wybierz Agenta LangGraph i poproś agenta o utworzenie zadania. LangGraph wywołuje narzędzie zadań działające w tym samym procesie.
-
Usługa agenta Foundry: Wybierz Foundry Agent i poproś agenta o utworzenie zadania. Zdalny agent Foundry wywołuje wdrożony, chroniony
/api/taskspunkt końcowy przy użyciu tożsamości zarządzanej.
Zadanie tworzone przez agenta Foundry pojawia się w wdrożonej instancji App Service, a nie w lokalnej bazie danych SQLite. Narzędzie Foundry OpenAPI zawsze korzysta z adresu URL serwera osadzonego w schemacie OpenAPI.
W usłudze GitHub codespace wdróż zmiany aplikacji.
azd upPrzejdź ponownie do wdrożonej aplikacji i przetestuj obu agentów czatu. Przeglądarka wysyła jedynie tekst wiadomości; nie wysyła identyfikatora sesji ani identyfikatora rozmowy dla żadnego z agentów.
Często zadawane pytania
Jak dodać generowanie wspomagane wyszukiwaniem (RAG) w agencie Foundry?
Te wskazówki dotyczą ścieżki Foundry Agent Service w tym samouczku. Nie zmienia to implementacji LangGraph, Semantic Kernel ani Microsoft Agent Framework pokazanych w drugiej karcie.
Stwórz lub wybierz bazę wiedzy Foundry IQ, a następnie połącz tę bazę z agentem Foundry Agent Service. Połączenie jest udostępniane agentowi jako zarządzane narzędzie wiedzy MCP.
Kod usługi App Service nadal wywołuje tego samego agenta po nazwie za pośrednictwem istniejącego klienta Foundry oraz agent_reference. Aplikacja webowa nie potrzebuje bezpośredniej integracji z Wyszukiwanie AI platformy Azure ani własnego klienta MCP. Jeśli interfejs wyświetla źródła, przetworz adnotacje cytowań zwrócone przez agenta.
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
Hak AZD postdown usuwa także aplikację Microsoft Entra na poziomie dzierżawcy stworzoną do uwierzytelniania App Service.
Następnie usuń zasób Foundry, jeśli utworzyłeś go osobno.