Gehoste agentinfrastructuur met de Azure Developer CLI

Important

Items die zijn gemarkeerd als voorbeeld in dit artikel, zijn momenteel beschikbaar als preview-versie. Deze preview wordt aangeboden zonder een service level agreement en Microsoft raadt dit niet aan voor productieworkloads. Bepaalde functies worden mogelijk niet ondersteund of hebben mogelijk beperkte mogelijkheden. Zie Aanvullende gebruiksvoorwaarden voor Microsoft Azure Previews voor meer informatie.

De Azure Developer CLI (azd) kan Bicep- of Terraform-infrastructuur genereren op basis van de services die zijn gedeclareerd in azure.yaml. Kies Terraform met azd ai agent init --infra=terraform, of Bicep met --infra=bicep. Het uitvoeren van azd provision past de geselecteerde infrastructuur toe.

Infrastructuurinrichting en agentimplementatie zijn gescheiden. Terraform of Bicep beheert ondersteunende Azure resources; azd deploy maakt de gegevensvlakversie van de gehoste agent. Als u de agent zelf wilt beheren met Terraform in plaats van azd, raadpleegt u Een gehoste agent implementeren met Terraform.

Wat wordt geprovisioneerd

Standaard maakt azd ai agent init geen infrastructure-as-codebestanden. Gebruik --infra of --infra=bicep om Bicep-infrastructuur toe te voegen. Gebruiken --infra=terraform om terraform-infrastructuur toe te voegen en in te stellen infra.provider: terraform.

Wanneer u Bicep-infrastructuur toevoegt, zijn de sjablonen gebaseerd op de azd-ai-starter-basic-repository en maken ze de volgende Azure-resources:

Resource Purpose
Resourcegroep Organiseert alle bronnen. Met de naam rg-<agent-name>.
account voor AI Services Het Microsoft Foundry-account.
Gieterijproject Bevat de agent- en AI-mogelijkheden.
Modeluitrol De modellen die de agent gebruikt, bijvoorbeeld gpt-4.1-mini.
Azure Container Registratiedienst Slaat de containerimages van de agent op.
Application Insights Bewaking en telemetrie van agentprestaties.
Log Analytics-werkruimte Gecentraliseerde logboekverzameling.
Beheerde identiteit De door het systeem toegewezen identiteit van het project, waarmee de blauwdruk van de agentidentiteit wordt geverifieerd bij Microsoft Entra ID en waaraan platformroltoewijzingen zijn toegekend.

De sjablonen maken voorwaardelijk meer resources op basis van de services en afhankelijkheden die zijn gedeclareerd in azure.yaml:

  • Agentmogelijkheidsinstellingen: declareer de Azure resources die de agentstatus, vectorgegevens en bestanden bevatten. Stel deze in wanneer u agents nodig hebt om opslag te gebruiken die u bezit.
  • Grounding with Bing of Grounding with Bing Custom Search -- voor het hulpprogramma voor zoeken op het web.
  • Azure AI Zoeken - voor zoekgronding.
  • Azure Storage - voor bestandsbewerkingen.

Projectstructuur

Voor Bicep heeft een gegenereerd project de volgende structuur:

infra/
|-- main.bicep                 # Main deployment template (subscription-scoped)
|-- main.parameters.json       # Parameter bindings to azd environment variables
|-- abbreviations.json         # Naming convention abbreviations
\-- core/
    |-- ai/                    # Foundry account, project, and connections
    |-- host/                  # Container registry
    |-- monitor/               # Application Insights and Log Analytics
    |-- search/                # Azure AI Search (conditional)
    \-- storage/               # Azure Storage (conditional)

Hoe parameters doorstromen

Voor Bicep wijst azd het main.parameters.json bestand omgevingsvariabelen toe aan parameters:

{
  "environmentName": { "value": "${AZURE_ENV_NAME}" },
  "location": { "value": "${AZURE_LOCATION}" },
  "aiFoundryResourceName": { "value": "${AZURE_AI_ACCOUNT_NAME}" },
  "aiProjectDeploymentsJson": { "value": "${AI_PROJECT_DEPLOYMENTS=[]}" }
}

Tijdens azd provision haalt azd deze ${VAR}-verwijzingen op uit de omgeving (.azure/<env>/.env) en geeft deze door aan de Bicep-implementatie. Uitvoer van de implementatie, zoals het Foundry-projecteindpunt, de naam van de modelimplementatie en het eindpunt van het containerregister, worden teruggeschreven naar de omgeving voor gebruik door azd deploy, azd ai agent runen de azd ai resourceopdrachten.

Terraform-infrastructuur

Voor een nieuw project azd ai agent init --infra=terraform worden bestanden zoals de volgende gegenereerd:

infra/
|-- main.tf
|-- provider.tf
|-- variables.tf
|-- outputs.tf
|-- main.tfvars.json
\-- .azd-foundry

Containergebaseerde services kunnen ook container-registry.tf genereren. Bestaande projecten kunnen hun infrastructuur behouden en een afzonderlijke Foundry-laag onder infra/foundry/ontvangen. Gebruik de werkelijke gegenereerde indeling in plaats van bestanden tussen lagen te verplaatsen.

De Terraform-configuratie richt het Foundry-account, project, modelimplementaties en gerelateerde resources in die vereist zijn voor de geselecteerde services. Het maken van containerregisters is afhankelijk van de implementatiemodus en installatiekopieconfiguratie.

main.tfvars.json verbindt infrastructuurinvoer aan azd-omgevingswaarden. outputs.tf maakt na het inrichten waarden zoals het eindpunt van het Foundry-project beschikbaar voor azd. Deze bindingen maken deel uit van de azd-werkstroom; ga er niet van uit dat een gegenereerd parameterbestand ongewijzigd werkt met een zelfstandig bestand terraform apply.

Als u de Terraform-infrastructuur wilt aanpassen, bewerkt u de gegenereerde .tf bestanden, behoudt u de uitvoer die nodig is voor uw agentservices en voert u deze uit azd provision. Controleer het Terraform-plan voordat u infrastructuurwijzigingen toepast.

Terraform state en CI/CD

De gegenereerde bestanden initialiseren geen remote-state-backend. Configureer voor implementaties in teamverband de status in Azure Storage, afzonderlijke statussleutels voor elke omgeving en de vereiste machtigingen voor de backend voordat u CI/CD configureert.

Zie CI/CD instellen met Terraform voor de implementatiestroom en Terraform gebruiken met azd voor back-endconfiguratie.

Beperkingen van Terraform-uitwerping

Het Terraform-uitvoerpad ondersteunt de configuratie van service network: niet in de huidige Foundry-agents-extensie. Controleer bestaande resourcebeperkingen voordat u een project uitwerpt dat al een infrastructuur heeft. Ejection is geen algemene Bicep-naar-Terraform-statusmigratie en het verwijderen van productiebronnen is geen vereiste voor het aannemen van Terraform.

Bestaande resources

De Bicep-sjablonen ondersteunen het maken van verbinding met bestaande Azure resources in plaats van nieuwe resources te maken. Dit is handig wanneer uw team al een gedeelde infrastructuur heeft.

Bestaande resource Omgevingsvariabelen die moeten worden ingesteld
account voor AI Services AZURE_AI_ACCOUNT_NAME
Container Registry AZURE_CONTAINER_REGISTRY_RESOURCE_ID en AZURE_CONTAINER_REGISTRY_ENDPOINT
Application Insights APPLICATIONINSIGHTS_CONNECTION_STRING en APPLICATIONINSIGHTS_RESOURCE_ID

Stel deze variabelen in met azd env set voordat u deze uitvoert azd provision.

De infrastructuur aanpassen

De infra/ map is een standaardinfrastructuur azd . Bicep resources toevoegen of wijzigen:

  1. Bewerk infra/main.bicep of voeg nieuwe modules toe onder infra/core/.
  2. Voeg nieuwe parameters toe aan main.parameters.json met ${VAR} bindingen.
  3. Stel de bijbehorende azd omgevingsvariabelen in met azd env set.
  4. Voer deze opdracht uit azd provision om de wijzigingen toe te passen.

Wijzigingen in de Bicep-bestanden blijven behouden bij implementaties.

Regiobeperkingen

De main.bicep sjabloon beperkt location zich tot regio's waar gehoste agents worden ondersteund. Als u moet uitrollen naar een regio die niet in de lijst met toegestane regio's staat, werkt u de @allowed decorator bij in main.bicep.