Kurz: Použití relací interpretu kódu v jazyce LangChain se službou Azure Container Apps

LangChain je architektura navržená tak, aby zjednodušila vytváření aplikací pomocí rozsáhlých jazykových modelů (LLM). Když vytvoříte agenta AI s jazykem LangChain, LLM interpretuje vstup uživatele a vygeneruje odpověď. Agent AI často bojuje, když potřebuje provádět matematické a symbolické důvody k vytvoření odpovědi. Integrací dynamických relací Azure Container Apps s jazykem LangChain dáte agentovi interpret kódu, který se použije k provádění specializovaných úloh.

V tomto kurzu se dozvíte, jak spustit agenta LangChain AI ve webovém rozhraní API. Rozhraní API přijímá vstup uživatele a vrací odpověď vygenerovanou agentem AI. Agent k provádění výpočtů používá interpret kódu v dynamických relacích.

Poznámka:

Dynamické relace Azure Container Apps jsou aktuálně ve verzi Preview. Další informace najdete v omezeních preview.

Požadavky

Vytvoření zdrojů Azure

Ukázková aplikace v tomto rychlém startu používá LLM z Azure OpenAI. Používá také relace Azure Container Apps ke spuštění kódu vygenerovaného LLM.

  1. Aktualizujte Azure CLI na nejnovější verzi.

     az upgrade
    
  2. Pokud už je nainstalované rozšíření Azure Container Apps, odeberte ho a nainstalujte verzi Preview rozšíření Azure Container Apps obsahující příkazy pro relace:

    az extension remove --name containerapp
    az extension add \
        --name containerapp \
        --allow-preview true -y
    
  3. Přihlaste se do Azure:

    az login
    
  4. Nastavte proměnné použité v tomto rychlém startu:

    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-pool
    

    Nahraďte <UNIQUE_OPEN_AI_NAME> jedinečným názvem pro vytvoření účtu Azure OpenAI.

  5. Vytvoření skupiny prostředků:

    az group create --name $RESOURCE_GROUP_NAME --location $SESSION_POOL_LOCATION
    
  6. Vytvořte účet 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_NAME
    
  7. Vytvořte nasazení modelu GPT 3.5 Turbo s názvem gpt-35-turbo v účtu 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"
    
  8. Vytvoření fondu relací interpreta kódu:

    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
    

Místní spuštění ukázkové aplikace

Než aplikaci nasadíte do Azure Container Apps, můžete ji spustit místně a otestovat ji.

Klonování aplikace

  1. Naklonujte úložiště ukázek relací Azure Container Apps.

    git clone https://github.com/Azure-Samples/container-apps-dynamic-sessions-samples.git
    
  2. Přejděte do adresáře, který obsahuje ukázkovou aplikaci:

    cd container-apps-dynamic-sessions-samples/langchain-python-webapi
    

Konfigurace aplikace

  1. Vytvořte virtuální prostředí Pythonu a aktivujte ho:

    python3.11 -m venv .venv
    source .venv/bin/activate
    

    Pokud používáte jinou verzi, změňte verzi Pythonu v příkazu. Doporučujeme použít Python 3.10 nebo novější.

    Poznámka:

    Pokud používáte Windows, nahraďte .venv/bin/activate ho ..venv\Scripts\activate

  2. Nainstalujte požadované balíčky Pythonu:

    python -m pip install -r requirements.txt
    
  3. Pokud chcete aplikaci spustit, musíte nakonfigurovat proměnné prostředí.

    1. Načtení koncového bodu účtu Azure OpenAI:

      az cognitiveservices account show \
          --name $AZURE_OPENAI_NAME \
          --resource-group $RESOURCE_GROUP_NAME \
          --query properties.endpoint \
          --output tsv
      
    2. Načtení koncového bodu správy fondu relací Azure Container Apps:

      az containerapp sessionpool show \
          --name $SESSION_POOL_NAME \
          --resource-group $RESOURCE_GROUP_NAME \
          --query properties.poolManagementEndpoint \
          --output tsv
      
    3. Vytvořte .env soubor v kořenovém adresáři ukázkové aplikace (stejné umístění jako main.py). Do souboru přidejte následující obsah:

      AZURE_OPENAI_ENDPOINT=<AZURE_OPENAI_ENDPOINT>
      POOL_MANAGEMENT_ENDPOINT=<SESSION_POOL_MANAGEMENT_ENDPOINT>
      

      Nahraďte <AZURE_OPENAI_ENDPOINT> koncovým bodem účtu Azure OpenAI a <SESSION_POOL_MANAGEMENT_ENDPOINT> koncovým bodem správy fondu relací.

  4. Aplikace se používá DefaultAzureCredential k ověřování pomocí služeb Azure. Na místním počítači používá vaše aktuální přihlašovací údaje Azure CLI. Aby aplikace získala přístup ke koncovým bodům modelu, musíte mít roli uživatele OpenAI služeb Cognitive Services v účtu Azure OpenAI a roli Exekutoru relací Azure ContainerApps ve fondu relací, aby aplikace získala přístup k fondu relací.

    1. Načtení uživatelského jména Azure CLI:

      az account show --query user.name --output tsv
      
    2. Spuštěním následujících příkazů načtěte ID prostředku účtu Azure OpenAI:

      az cognitiveservices account show --name $AZURE_OPENAI_NAME --resource-group $RESOURCE_GROUP_NAME --query id --output tsv
      
    3. Přiřaďte roli uživatele OpenAI služeb Cognitive Services uživateli Azure CLI v účtu Azure OpenAI:

      az role assignment create --role "Cognitive Services OpenAI User" --assignee <CLI_USERNAME> --scope <AZURE_OPENAI_RESOURCE_ID>
      

      Nahraďte <CLI_USERNAME> uživatelské jméno Azure CLI a <AZURE_OPENAI_RESOURCE_ID> ID prostředku účtu Azure OpenAI.

    4. Spuštěním následujících příkazů načtěte ID prostředku fondu relací:

      az containerapp sessionpool show --name $SESSION_POOL_NAME --resource-group $RESOURCE_GROUP_NAME --query id --output tsv
      
    5. Přiřaďte roli Exekutor relace Azure ContainerApps pomocí id uživatele Azure CLI ve fondu relací:

      az role assignment create \
          --role "Azure ContainerApps Session Executor" \
          --assignee <CLI_USERNAME> \
          --scope <SESSION_POOL_RESOURCE_ID>
      

      Nahraďte <CLI_USERNAME> uživatelské jméno Azure CLI a <SESSION_POOL_RESOURCE_ID> ID prostředku fondu relací.

Spustit aplikaci

Před spuštěním ukázkové aplikace otevřete main.py v editoru a zkontrolujte kód. Aplikace používá FastAPI k vytvoření webového rozhraní API, které přijímá zprávu uživatele v řetězci dotazu.

Následující řádky kódu vytvoří instanci SessionPythonREPLTool a poskytnou ho agentovi 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)

Když potřebuje provádět výpočty, agent ke spuštění kódu použije Nástroj SessionPythonREPLTool . Kód se spustí v relaci ve fondu relací. Ve výchozím nastavení se při vytváření instance nástroje vygeneruje identifikátor náhodné relace. Pokud agent používá nástroj ke spuštění více fragmentů kódu Pythonu, použije stejnou relaci. Pokud chcete zajistit, aby každý koncový uživatel používal jedinečnou relaci, použijte pro každého uživatele samostatný agent a nástroj.

SessionPythonREPLTool je k dispozici v langchain-azure-dynamic-sessions balíčku.

  1. Spusťte ukázkovou aplikaci:

    fastapi dev main.py
    
  2. Otevřete prohlížeč a přejděte na adresu http://localhost:8000/docs. Zobrazí se uživatelské rozhraní Swagger pro ukázkovou aplikaci.

  3. /chat Rozbalte koncový bod a vyberte Vyzkoušet.

  4. Zadejte What time is it right now? do message pole a vyberte Spustit.

    Agent odpoví aktuálním časem. V terminálu se zobrazí protokoly znázorňující kód Pythonu vygenerovaný agentem, abyste získali aktuální čas a spustili ho v relaci interpretu kódu.

  5. Pokud chcete aplikaci zastavit, zadejte Ctrl+C do terminálu.

Volitelné: Nasazení ukázkové aplikace do Azure Container Apps

Pokud chcete nasadit aplikaci FastAPI do Azure Container Apps, musíte vytvořit image kontejneru a odeslat ji do registru kontejneru. Image pak můžete nasadit do Azure Container Apps. Tento az containerapp up příkaz kombinuje tyto kroky do jednoho příkazu.

Pak musíte pro aplikaci nakonfigurovat spravovanou identitu a přiřadit jí správné role pro přístup k Azure OpenAI a fondu relací.

  1. Nastavte proměnné pro prostředí Container Apps a název aplikace:

    ENVIRONMENT_NAME=aca-sessions-tutorial-env
    CONTAINER_APP_NAME=chat-api
    
  2. Sestavte a nasaďte aplikaci do 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_MANAGMENT_ENDPOINT>" \
        --source .
    

    Nahraďte <OPEN_AI_ENDPOINT> koncovým bodem účtu Azure OpenAI a <SESSION_POOL_MANAGMENT_ENDPOINT> koncovým bodem správy fondu relací.

  3. Povolte spravovanou identitu přiřazenou systémem pro aplikaci:

    az containerapp identity assign \
        --name $CONTAINER_APP_NAME \
        --resource-group $RESOURCE_GROUP_NAME \
        --system-assigned
    
  4. Aby aplikace přistupovala k Azure OpenAI a fondu relací, musíte přiřadit spravovanou identitu správným rolím.

    1. Načtěte ID objektu zabezpečení spravované identity:

      az containerapp show \
          --name $CONTAINER_APP_NAME \
          --resource-group $RESOURCE_GROUP_NAME \
          --query identity.principalId \
          --output tsv
      
    2. Načtěte ID prostředku fondu relací:

      az containerapp sessionpool show \
          --name $SESSION_POOL_NAME \
          --resource-group $RESOURCE_GROUP_NAME \
          --query id \
          --output tsv
      
    3. Přiřaďte spravovanou identitu Azure ContainerApps Session Executor a Contributor role ve fondu relací:

      Před spuštěním následujícího příkazu nahraďte <PRINCIPAL_ID> hodnoty <SESSION_POOL_RESOURCE_ID> , které jste získali v předchozích krocích.

      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>
      
    4. Načtěte ID prostředku účtu Azure OpenAI:

      az cognitiveservices account show \
          --name $AZURE_OPENAI_NAME \
          --resource-group $RESOURCE_GROUP_NAME \
          --query id \
          --output tsv
      
    5. Přiřaďte spravovanou Cognitive Services OpenAI User identitu roli v účtu Azure OpenAI:

      Před spuštěním následujícího příkazu nahraďte <PRINCIPAL_ID> hodnoty <AZURE_OPENAI_RESOURCE_ID> , které jste získali v předchozích krocích.

      az role assignment create \
          --role "Cognitive Services OpenAI User" \
          --assignee <PRINCIPAL_ID> \
          --scope <AZURE_OPENAI_RESOURCE_ID>
      
  5. Načtení plně kvalifikovaného názvu domény (FQDN) aplikace:

    az containerapp show \
        --name $CONTAINER_APP_NAME \
        --resource-group $RESOURCE_GROUP_NAME \
        --query properties.configuration.ingress.fqdn \
        --output tsv
    
  6. Otevřete prohlížeč a https://<FQDN>/docs otestujte nasazenou aplikaci.

Vyčištění prostředků

Až s prostředky skončíte, můžete je odstranit, abyste se vyhnuli poplatkům:

az group delete --name $RESOURCE_GROUP_NAME --yes --no-wait

Další kroky