Voraussetzungen
Beim Architektieren von Unternehmens-KI-Lösungen besteht die häufigste Herausforderung nicht darin, ein einzelnes, beeindruckendes Modell zu entwickeln. Es geht darum, mehrere KI-Dienste zu einer zuverlässigen, beobachtbaren Produktionspipeline zusammenzufügen, die tatsächlich ein Geschäftsproblem löst. Kunden haben oft leistungsstarke Komponenten, die isoliert arbeiten – hier ein Spracherkennungsdienst, dort ein großes Sprachmodell (LLM) – aber sie tun sich schwer damit, diese zu einem kohärenten Workflow zu orchestrieren. Stellen Sie sich ein globales Support-Center vor, das eingehende Kundenanrufe verarbeiten, die Stimmung verstehen, kritische Probleme identifizieren und wichtige Erkenntnisse für regionale Teams übersetzen muss. Dies ist kein einfacher API-Aufruf; es ist eine mehrstufige intelligente Pipeline.
Dieser Artikel ist ein Praxisleitfaden zur Lösung genau dieses Problems. Ich werde Ihnen zeigen, wie ich den AIProjectClient aus dem Azure AI SDK verwende, um eine robuste KI-Pipeline aufzubauen, die drei verschiedene Tools integriert: Spracherkennung, generative KI-gestützte Stimmungsanalyse und Übersetzung. Wir werden die Infrastruktur mit Terraform definieren, die Logik in Python implementieren und sehen, wie alles in die Governance-Struktur eines Azure AI Hubs und Projekts passt. Abschließend werde ich meine Einschätzung geben, wie sich der agentenbasierte Ansatz von Azure im Vergleich zu dem verhält, was ich bei Projekten mit AWS Bedrock und Googles Vertex AI gesehen habe.
Um diese Pipeline aufzubauen und auszuführen, benötigen Sie eine Umgebung mit den folgenden Komponenten. Ich gehe von einer Standard-Unternehmensumgebung aus, in der Sie die entsprechenden Berechtigungen zum Erstellen und Verwalten von Ressourcen haben.
- Azure-Abonnement: Ein aktives Abonnement mit Berechtigungen zum Erstellen von Ressourcengruppen und KI-Diensten.
- Azure KI-Ressourcen:
- Ein Azure AI Hub und ein KI-Projekt. Wir werden die unten aufgeführten Dienste bereitstellen und mit Ihrem Projekt verbinden.
- Ein Azure KI Services Multi-Service-Konto (für Sprache und Übersetzer).
- Eine Azure OpenAI Service-Ressource mit einem bereitgestellten Modell (ich verwende
gpt-4o).
- Python 3.12+: Mein Standard für jedes neue Python-Projekt.
- Azure CLI: Die neueste Version, authentifiziert bei Ihrem Abonnement (
az login). - Terraform CLI: Die neueste Version für die Infrastrukturprovisionierung.
- Python-Bibliotheken: Sie benötigen die Azure SDKs für Python. Sie können sie mit
pipinstallieren:
python3.12 -m pip install azure-ai-projects azure-identity openai azure-cognitiveservices-speech httpx numpy scipy
Architektur: Der Agent als Orchestrator
Effektive KI-Orchestrierung beginnt mit einer soliden Architektur. In Azure dient das KI-Projekt, das in einem KI Hub gehostet wird, als zentrale Steuerungsebene. Es ist die zentrale Informationsquelle für die Verwaltung des gesamten Lebenszyklus einer KI-Lösung. Der AIProjectClient ist Ihr programmatischer Schlüssel zu dieser Steuerungsebene, mit dem Sie die Komponenten Ihrer Pipeline definieren, versionieren und verwalten können, die wir als Agent mit einer Reihe von Tools strukturieren werden.
In unserem Szenario ist der Agent ein logisches Konstrukt, das von einem LLM angetrieben wird, ein übergeordnetes Ziel versteht, spezifische Tools aufruft, um es zu erreichen, und deren Ausgaben miteinander verkettet. So werden unsere Komponenten funktionieren:
- Spracherkennungs-Tool: Nimmt einen Audiodeipfad entgegen, ruft den Azure Speech Service auf und gibt den transkribierten Text zurück.
- GenAI-Analyse-Tool: Das Transkript wird an dieses Tool übergeben, das ein Azure OpenAI-Modell verwendet, um eine nuancierte Analyse durchzuführen – die Extraktion der Gesamtstimmung, spezifischer Probleme und einer Zusammenfassung.
- Übersetzungs-Tool: Die resultierende Analyse wird dann an den Azure Translator Service übergeben, um für eine Zielsprache lokalisiert zu werden.
Der AIProjectClient ermöglicht es uns, diese Funktionen als aufrufbare Tools zu registrieren, die der Agent verwenden kann. Diese Modularität ist entscheidend für den Aufbau komplexer, wartbarer KI-Systeme.
Das KI-Projekt als Steuerungsebene
Beim Architektieren eines Systems in Azure sollten wir nun das KI-Projekt innerhalb eines KI Hubs als die definitive Informationsquelle für Agenten- und Tooldefinitionen verwenden. Es zentralisiert die Verwaltung, ermöglicht die Versionierung und bietet eine vereinheitlichte API-Oberfläche für CI/CD. Dies ist der Verteilung der Tool-Logik über disparate Microservices, einem Muster, das schnell zu einem Management- und Sicherheitsalbtraum werden kann, weit überlegen.
Bevor wir die Tools erstellen, sehen wir uns an, wie wir uns mit dem Projekt verbinden. Der AIProjectClient wird mit dem einzigartigen Endpunkt des Projekts und einem authentifizierten Anmeldeinformationssatz initialisiert.
# Conceptual example of client initialization
import os
from azure.ai.projects.aio import AIProjectClient
from azure.identity.aio import DefaultAzureCredential
async def initialize_ai_project_client():
# Your AI Project endpoint is found in the Azure AI Studio.
# It looks like: https://<your-hub-name>.<region>.inference.ai.azure.com/api/projects/<your-project-name>
project_endpoint = os.environ.get("AZURE_AI_PROJECT_ENDPOINT")
if not project_endpoint:
raise ValueError("AZURE_AI_PROJECT_ENDPOINT environment variable not set.")
# DefaultAzureCredential is my standard for authentication.
# It automatically uses environment variables, Managed Identity, or Azure CLI login.
credential = DefaultAzureCredential()
client = AIProjectClient(endpoint=project_endpoint, credential=credential)
print(f"AIProjectClient initialized for project at: {project_endpoint}")
return client, credential
Dieses Snippet zeigt den grundlegenden Schritt. Die Verwendung von DefaultAzureCredential bietet ein sicheres und flexibles Authentifizierungsmuster, das nahtlos über lokale Entwicklung und Cloud-Bereitstellungen hinweg funktioniert, ohne dass Codeänderungen erforderlich sind.
Implementierungsleitfaden
Nun zur praktischen Implementierung. Wir beginnen mit der Bereitstellung unserer Azure-Ressourcen mit Terraform, bevor wir die KI-Tools in Python definieren und orchestrieren.
1. Azure-Ressourcen mit Terraform bereitstellen
Infrastructure as Code (IaC) ist der einzige Weg, Produktionssysteme zu erstellen. Ich verwende Terraform, um Cloud-Ressourcen deklarativ zu definieren und zu verwalten. Dies verhindert Konfigurationsdrifts und macht die gesamte Umgebung reproduzierbar.
Erstellen Sie eine Datei namens main.tf:
# main.tf - Provisioning AI Services for our pipeline
terraform {
required_providers {
azurerm = {
source = "hashicorp/azurerm"
version = "~> 3.0"
}
}
}
provider "azurerm" {
features {}
}
# Variables for naming and location
variable "resource_group_name" {
description = "Name of the resource group."
type = string
default = "rg-ai-pipeline-dev-euw"
}
variable "location" {
description = "Azure region for deployment."
type = string
default = "westeurope"
}
variable "base_name" {
description = "A unique base name for resources to avoid collisions."
type = string
default = "tcapipelineeuw"
}
# Create a resource group in our target region
resource "azurerm_resource_group" "main" {
name = var.resource_group_name
location = var.location
}
# Create an Azure AI Services account (for Speech and Translator)
resource "azurerm_cognitive_account" "ai_services" {
name = "ais-${var.base_name}"
location = azurerm_resource_group.main.location
resource_group_name = azurerm_resource_group.main.name
kind = "CognitiveServices"
sku_name = "S0" # Standard tier
}
# Create an Azure OpenAI Service account
resource "azurerm_cognitive_account" "openai" {
name = "aoai-${var.base_name}"
location = azurerm_resource_group.main.location
resource_group_name = azurerm_resource_group.main.name
kind = "OpenAI"
sku_name = "S0"
}
# Deploy a GPT-4o model to the Azure OpenAI account
resource "azurerm_cognitive_deployment" "openai_deployment" {
name = "gpt-4o"
cognitive_account_id = azurerm_cognitive_account.openai.id
model {
format = "OpenAI"
name = "gpt-4o"
version = "2024-05-13"
}
scale {
type = "Standard"
capacity = 10 # Throughput units (10 = 10k tokens/min)
}
# Note: Ensure your subscription has quota for this model in the target region.
}
# Outputs for our Python application
output "ai_services_endpoint" {
value = azurerm_cognitive_account.ai_services.endpoint
}
output "ai_services_region" {
value = azurerm_cognitive_account.ai_services.location
}
output "openai_endpoint" {
value = azurerm_cognitive_account.openai.endpoint
}
output "openai_deployment_name" {
value = azurerm_cognitive_deployment.openai_deployment.name
}
Um diese Ressourcen bereitzustellen, führen Sie die Standard-Terraform-Befehle aus:
# Log into Azure first
az login
# Initialize Terraform
terraform init
# Plan and apply the changes
terraform plan
terraform apply --auto-approve
Nach der Anwendung gibt Terraform die Endpunkte und Namen aus, die Sie für die Umgebungsvariablen Ihrer Anwendung benötigen.
2. Ihre Python-Umgebung konfigurieren
Legen Sie die folgenden Umgebungsvariablen in Ihrer Shell fest, indem Sie die Ausgaben von Terraform und den Endpunkt Ihres KI-Projekts im Azure AI Studio verwenden.
# Get this from the 'Develop' section of your AI Project in Azure AI Studio
export AZURE_AI_PROJECT_ENDPOINT="https://<your-hub-name>.<region>.inference.ai.azure.com/api/projects/<your-project-name>"
# Use these if you're authenticating with a Service Principal
export AZURE_CLIENT_ID="<your-service-principal-client-id>"
export AZURE_CLIENT_SECRET="<your-service-principal-client-secret>"
export AZURE_TENANT_ID="<your-tenant-id>"
# From Terraform outputs
export AZURE_AI_SERVICES_ENDPOINT="https://ais-tcapipelineeuw.cognitiveservices.azure.com/"
export AZURE_AI_SERVICES_REGION="westeurope"
export AZURE_OPENAI_ENDPOINT="https://aoai-tcapipelineeuw.openai.azure.com/"
export AZURE_OPENAI_DEPLOYMENT_NAME="gpt-4o"
Denken Sie daran, der von Ihnen verwendeten Identität (Ihrem Benutzerkonto oder Dienstprinzipal) die Rolle 'Cognitive Services User' für die AI Services- und OpenAI-Ressourcen sowie entsprechende Berechtigungen (z. B. 'Contributor') für das AI Project selbst zu erteilen.
3. Die Pipeline-Tools definieren
Nun erstellen wir die Python-Funktionen, die als Tools unseres Agenten dienen werden. Ich werde diese in einer Datei namens ai_pipeline_tools.py ablegen. Alle Funktionen sind async, um nicht-blockierende E/A zu gewährleisten, was für skalierbare Dienste entscheidend ist.
# ai_pipeline_tools.py
import os
import json
import httpx
from typing import Dict, Any
import azure.cognitiveservices.speech as speechsdk
from openai import AsyncAzureOpenAI
from azure.identity.aio import DefaultAzureCredential
# --- Tool Implementations ---
async def speech_to_text(audio_file_path: str, credential: DefaultAzureCredential) -> str:
"""Transcribes an audio file to text using Azure Speech Service."""
speech_region = os.environ["AZURE_AI_SERVICES_REGION"]
# The Speech SDK needs an auth token. We'll get one using our async credential.
token = await credential.get_token("https://cognitiveservices.azure.com/.default")
speech_config = speechsdk.SpeechConfig(auth_token=token.token, region=speech_region)
audio_config = speechsdk.AudioConfig(filename=audio_file_path)
speech_recognizer = speechsdk.SpeechRecognizer(speech_config=speech_config, audio_config=audio_config)
print(f"Performing speech-to-text on {audio_file_path}...")
result = await speech_recognizer.recognize_once_async()
if result.reason == speechsdk.ResultReason.RecognizedSpeech:
print(f"Recognized: {result.text}")
return result.text
elif result.reason == speechsdk.ResultReason.NoMatch:
print("No speech could be recognized.")
elif result.reason == speechsdk.ResultReason.Canceled:
cancellation = result.cancellation_details
print(f"Speech Recognition canceled: {cancellation.reason}")
if cancellation.reason == speechsdk.CancellationReason.Error:
print(f"Error details: {cancellation.error_details}")
raise RuntimeError(f"Speech recognition failed: {cancellation.error_details}")
return ""
async def genai_sentiment_analysis(text: str, credential: DefaultAzureCredential) -> Dict[str, Any]:
"""Analyzes text for sentiment and extracts key takeaways using Azure OpenAI."""
# This helper function provides a refreshed token to the OpenAI client.
async def token_provider():
token = await credential.get_token("https://cognitiveservices.azure.com/.default")
return token.token
client = AsyncAzureOpenAI(
azure_endpoint=os.environ["AZURE_OPENAI_ENDPOINT"],
api_version="2024-05-01-preview",
azure_ad_token_provider=token_provider,
)
prompt = f"""Analyze the following customer call transcript. Identify the overall sentiment, any specific issues raised, and summarize the key takeaways. Your response MUST be a valid JSON object with three keys: 'overall_sentiment' (string: 'positive', 'neutral', or 'negative'), 'issues' (list of strings), and 'key_takeaways' (list of strings).
Transcript: \"\"\"{text}\"\"\"
JSON Output:"""
print(f"Performing GenAI analysis on: {text[:60]}...")
response = await client.chat.completions.create(
model=os.environ["AZURE_OPENAI_DEPLOYMENT_NAME"],
response_format={ "type": "json_object" },
messages=[
{"role": "system", "content": "You are an expert AI assistant for customer service analysis."},
{"role": "user", "content": prompt}
]
)
analysis_result = json.loads(response.choices[0].message.content)
print(f"GenAI Analysis: {analysis_result}")
await client.close()
return analysis_result
async def translate_text(text: str, credential: DefaultAzureCredential, target_language: str = "fr") -> str:
"""Translates text to a target language using Azure Translator Service."""
translator_endpoint = os.environ["AZURE_AI_SERVICES_ENDPOINT"]
token = await credential.get_token('https://cognitiveservices.azure.com/.default')
headers = {
'Authorization': f'Bearer {token.token}',
'Content-Type': 'application/json',
}
api_endpoint = f"{translator_endpoint.rstrip('/')}/translator/text/v3.0/translate"
params = {'api-version': '3.0', 'to': target_language}
body = [{'text': text}]
print(f"Translating text to '{target_language}': {text[:60]}...")
async with httpx.AsyncClient() as client:
response = await client.post(api_endpoint, params=params, headers=headers, json=body)
response.raise_for_status()
translation = response.json()
translated_text = translation[0]['translations'][0]['text']
print(f"Translated: {translated_text}")
return translated_text
4. Den Agenten definieren und bereitstellen
Nachdem unsere Tools implementiert sind, können wir nun einen Agenten definieren, der weiß, wie man sie verwendet. Wir werden den AIProjectClient verwenden, um die Definition des Agenten zu registrieren, einschließlich seiner Anweisungen und des Schemas der Tools, die er aufrufen kann. Erstellen Sie eine Datei deploy_agent.py:
# deploy_agent.py
import asyncio
import os
from azure.ai.projects.aio import AIProjectClient
from azure.ai.projects.models import PromptAgentDefinition, FunctionTool
from azure.identity.aio import DefaultAzureCredential
async def main():
project_endpoint = os.environ["AZURE_AI_PROJECT_ENDPOINT"]
openai_deployment_name = os.environ["AZURE_OPENAI_DEPLOYMENT_NAME"]
credential = DefaultAzureCredential()
async with AIProjectClient(endpoint=project_endpoint, credential=credential) as client:
agent_name = "call-analysis-pipeline-agent"
# Define the tools the agent can use based on their function signatures
speech_tool = FunctionTool(
name="speech_to_text_transcription",
description="Transcribes an audio file path into text.",
parameters={
"type": "object",
"properties": {"audio_file_path": {"type": "string"}},
"required": ["audio_file_path"]
}
)
sentiment_tool = FunctionTool(
name="genai_sentiment_analysis_tool",
description="Analyzes text for sentiment, issues, and key takeaways.",
parameters={
"type": "object",
"properties": {"text": {"type": "string"}},
"required": ["text"]
}
)
translation_tool = FunctionTool(
name="translate_text_tool",
description="Translates text to a specified target language.",
parameters={
"type": "object",
"properties": {
"text": {"type": "string"},
"target_language": {"type": "string", "default": "fr"}
},
"required": ["text"]
}
)
# Define the agent's instructions and link the tools
agent_definition = PromptAgentDefinition(
model=f"azure_openai:/{openai_deployment_name}",
instructions=(
"You are a call analysis assistant. Your job is to take an audio file path, "
"transcribe it, analyze the transcript for sentiment and issues, and finally "
"translate the analysis summary into a target language (defaulting to French)."
),
tools=[speech_tool, sentiment_tool, translation_tool]
)
print(f"Creating or updating agent '{agent_name}'...")
agent_version = await client.agents.create_version(
agent_name=agent_name,
definition=agent_definition
)
print(f"Agent deployment complete. Name: {agent_version.name}, Version: {agent_version.version}")
await credential.close()
if __name__ == "__main__":
asyncio.run(main())
Das Ausführen dieses Skripts registriert unseren Agenten im KI-Projekt. Das LLM des Agenten weiß nun, welche Tools es hat und wofür sie sind, bereit, sie basierend auf einer Eingabeaufforderung zu orchestrieren.
5. Die Pipeline ausführen
Schließlich führen wir die Pipeline aus. Das folgende Skript, run_pipeline.py, simuliert eine Benutzeranfrage. Für diese Demonstration werden wir die Tool-Aufrufe manuell orchestrieren, um die Schritt-für-Schritt-Logik zu zeigen. In einer realen Anwendung würden Sie mit dem bereitgestellten Agenten-Endpunkt interagieren, und der Agent selbst würde diese Orchestrierung intern verwalten.
Agenten-Orchestrierung vs. Direkte Aufrufe
Das untenstehende Skript ruft die Tool-Funktionen zur Verdeutlichung manuell auf. In einem Produktionsszenario würden Sie dies nicht tun. Stattdessen würden Sie eine übergeordnete Eingabeaufforderung (z. B. „Analysieren Sie diese Anrufaudio und fassen Sie sie auf Französisch zusammen“) an den Endpunkt des bereitgestellten Agenten senden. Das LLM des Agenten würde dann autonom entscheiden, `speech_to_text`, dann `genai_sentiment_analysis` und dann `translate_text` in der richtigen Reihenfolge aufzurufen. Dies ist die Stärke des Agentenmodells – es entkoppelt die Orchestrierungslogik von Ihrem Anwendungscode.
# run_pipeline.py
import asyncio
import os
import json
import numpy as np
import scipy.io.wavfile as wavfile
from azure.identity.aio import DefaultAzureCredential
# Import our tool implementations
from ai_pipeline_tools import speech_to_text, genai_sentiment_analysis, translate_text
def create_dummy_audio_file(filename="sample_call.wav"):
"""Creates a dummy WAV file. The content is just a sine wave."""
samplerate = 16000
duration = 3.0
frequency = 440.0
t = np.linspace(0., duration, int(samplerate * duration))
amplitude = np.iinfo(np.int16).max * 0.3
data = amplitude * np.sin(2. * np.pi * frequency * t)
wavfile.write(filename, samplerate, data.astype(np.int16))
print(f"Dummy audio file '{filename}' created for STT input.")
return filename
async def main():
credential = DefaultAzureCredential()
# --- Simulation Setup ---
# For this demo, we'll use a clear, known text as a fallback,
# since transcribing a dummy sine wave won't produce meaningful results.
audio_file = create_dummy_audio_file()
mock_transcript = "The customer reported a critical issue with the service stability. Performance has degraded significantly over the past hour."
print("\n--- Simulating Agent Pipeline Execution ---")
# Step 1: Speech-to-Text
print("\n[AGENT] Calling Speech-to-Text tool...")
transcribed_text = await speech_to_text(audio_file, credential)
if not transcribed_text:
print("STT returned no result on dummy audio, using mock transcript.")
transcribed_text = mock_transcript
# Step 2: GenAI Sentiment Analysis
print("\n[AGENT] Calling GenAI Analysis tool...")
analysis = await genai_sentiment_analysis(transcribed_text, credential)
summary_for_translation = f"Sentiment: {analysis.get('overall_sentiment')}. Issues: {analysis.get('issues')}. Takeaways: {analysis.get('key_takeaways')}."
# Step 3: Translation
print("\n[AGENT] Calling Translation tool...")
translated_summary = await translate_text(summary_for_translation, credential, target_language="fr")
print("\n--- Final Pipeline Output ---")
print(f"Original Transcript: {transcribed_text}")
print(f"Analysis (JSON): {json.dumps(analysis, indent=2)}")
print(f"Translated Summary (fr): {translated_summary}")
await credential.close()
if __name__ == "__main__":
asyncio.run(main())
Wenn Sie dies ausführen, sehen Sie die gesamte Pipeline in Aktion: Die Dummy-Audiodatei wird erstellt, der Spracherkennungsdienst wird aufgerufen (und schlägt wahrscheinlich fehl, wodurch der Fallback ausgelöst wird), der Mock-Text wird vom LLM analysiert und die resultierende Zusammenfassung wird ins Französische übersetzt.
Vergleich mit AWS und GCP
Wie schneidet der Ansatz von Azure im Vergleich zu den anderen großen Cloud-Anbietern ab?
-
Azure KI-Projekte (Hub/Foundry): Die Stärke von Azure liegt in der engen Integration mit der Unternehmens-Governance und dem Azure OpenAI-Dienst. Der
AIProjectClientund das Agenten-Framework bieten ein Orchestrierungs-First-Modell. Sie definieren Tools und geben einem LLM Anweisungen. Der Agent überlegt dann, wie diese Tools sequenziert werden sollen. Dies ist äußerst leistungsstark für dynamische, konversationelle und komplexe Workflows. Die Hub-/Projektstruktur ist für die teambasierte Entwicklung mit klaren Grenzen ausgelegt. -
AWS Bedrock Agents: Dies ist philosophisch dem Ansatz von Azure sehr ähnlich. Sie erstellen einen Agenten, geben ihm Zugriff auf grundlegende Modelle (wie Anthropic's Claude oder Amazons Titan) und definieren Aktionen, die er ausführen kann, typischerweise durch Aufruf von AWS Lambda-Funktionen. Der Hauptnutzen von Bedrock liegt in der Auswahl der zugrunde liegenden Modelle und seiner nahtlosen Integration in das AWS Serverless-Ökosystem. Wie Azure abstrahiert der Agent die Orchestrierungslogik.
-
GCP Vertex AI: Für strukturierte, wiederholbare ML-Workflows sind Vertex AI Pipelines (basierend auf Kubeflow) der Goldstandard. Sie eignen sich hervorragend für traditionelles MLOps. Für die LLM-gesteuerte Tool-Nutzung gibt es Vertex AI Extensions, die es einem LLM ermöglichen, externe Tools (wie Cloud Functions oder Drittanbieter-APIs) aufzurufen. Sie können diese kombinieren, aber die agentenbasierte, reasoning-basierte Orchestrierung ist weniger ein einziges, vereinheitlichtes Produkt, sondern eher eine Fähigkeit, die Sie durch die Kombination der leistungsstarken Komponenten von Vertex AI aufbauen. Es bietet große Flexibilität, kann aber mehr manuelle Integration erfordern als die Agenten-Frameworks von Azure und AWS.
Kurz gesagt, alle drei bringen Sie ans Ziel. Azure und AWS bieten ein Agenten-Framework mit mehr integrierten Funktionen, während GCP leistungsstarke, zusammensetzbare Bausteine bereitstellt.
Wichtige Erkenntnisse
Der Aufbau einer intelligenten Pipeline dreht sich mehr um Orchestrierung als um ein einzelnes KI-Modell. Der AIProjectClient von Azure bietet die programmatische Schnittstelle zu einem leistungsstarken, agentenbasierten Framework, das die Erstellung und Verwaltung dieser komplexen Systeme vereinfacht.
Hier sind meine abschließenden Empfehlungen:
- Mit KI-Projekten zentralisieren: Nutzen Sie Azure KI-Projekte als Ihre Steuerungsebene. Es ist für Unternehmens-Governance, Sicherheit und MLOps konzipiert.
- Agenten und Tools nutzen: Definieren Sie die Fähigkeiten Ihrer Pipeline als diskrete, wiederverwendbare
FunctionTools und lassen Sie einen Agenten diese orchestrieren. Dies ist flexibler als ein fest codierter, sequenzieller Prozess. - Infrastruktur als Code: Stellen Sie Ihre zugrunde liegenden Cloud-Ressourcen immer mit Terraform bereit. Dies ist der einzige Weg, die Konsistenz über verschiedene Umgebungen hinweg zu gewährleisten.
- Sicher authentifizieren: Verwenden Sie
DefaultAzureCredentialüberall. Es entfernt Anmeldeinformationen aus Ihrem Code und passt sich automatisch an verschiedene Umgebungen an.
Als nächsten Schritt empfehle ich, zu untersuchen, wie Sie Ihrem Agenten mithilfe der MemoryStoresOperations im SDK Speicher hinzufügen können, um zustandsbehaftetere, konversationelle Erlebnisse zu schaffen. Der KI-Bereich entwickelt sich unglaublich schnell, überprüfen Sie daher immer die offizielle Microsoft Learn-Dokumentation für die neuesten SDK-Funktionen und Best Practices für Azure AI Studio!