Kurz: Použití relací interpretu kódu v llamaIndexu s Azure Container Apps
LlamaIndex je výkonná architektura pro vytváření kontextově rozšířených jazykových modelů (LLM). Když vytvoříte agenta AI s llamaIndexem, LLM interpretuje uživatelský vstup 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 llamaIndex 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 LlamaIndex 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.
Požadavky
- Účet Azure s aktivním předplatným.
- Pokud jej nemáte, můžete si jej zdarma vytvořit.
- Nainstalujte rozhraní příkazového řádku Azure CLI.
- Git.
- Python 3.10 nebo novější
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.
Aktualizujte Azure CLI na nejnovější verzi.
az upgrade
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
Přihlaste se do Azure:
az login
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.Vytvoření skupiny prostředků:
az group create --name $RESOURCE_GROUP_NAME --location $SESSION_POOL_LOCATION
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
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"
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
Naklonujte úložiště ukázek relací Azure Container Apps.
git clone https://github.com/Azure-Samples/container-apps-dynamic-sessions-samples.git
Přejděte do adresáře, který obsahuje ukázkovou aplikaci:
cd container-apps-dynamic-sessions-samples/llamaindex-python-webapi
Konfigurace aplikace
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
Nainstalujte požadované balíčky Pythonu:
python -m pip install -r requirements.txt
Pokud chcete aplikaci spustit, musíte nakonfigurovat proměnné prostředí.
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
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
Vytvořte
.env
soubor v kořenovém adresáři ukázkové aplikace (stejné umístění jakomain.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í.
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í.Načtení uživatelského jména Azure CLI:
az account show --query user.name --output tsv
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
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.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
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 AzureCodeInterpreterToolSpec a poskytnou ho agentu LlamaIndex:
code_interpreter_tool = AzureCodeInterpreterToolSpec(
pool_managment_endpoint=pool_management_endpoint,
)
agent = ReActAgent.from_tools(code_interpreter_tool.to_tool_list(), llm=llm, verbose=True)
Když potřebuje provádět výpočty, agent ke spuštění kódu použije interpret kódu v AzureCodeInterpreterToolSpec . 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á stejný 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.
AzureCodeInterpreterToolSpec je k dispozici v llama-index-tools-azure-code-interpreter
balíčku.
Spusťte ukázkovou aplikaci:
fastapi dev main.py
Otevřete prohlížeč a přejděte na adresu
http://localhost:8000/docs
. Zobrazí se uživatelské rozhraní Swagger pro ukázkovou aplikaci./chat
Rozbalte koncový bod a vyberte Vyzkoušet.Zadejte
What time is it right now?
domessage
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.
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í.
Nastavte proměnné pro prostředí Container Apps a název aplikace:
ENVIRONMENT_NAME=aca-sessions-tutorial-env CONTAINER_APP_NAME=chat-api
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í.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
Aby aplikace přistupovala k Azure OpenAI a fondu relací, musíte přiřadit spravovanou identitu správným rolím.
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
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
Přiřaďte spravovanou identitu
Azure ContainerApps Session Executor
aContributor
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>
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
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>
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
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