Verwenden des Azure KI-Agentdiensts mit OpenAPI-spezifizierten Tools
Sie können jetzt Ihren Azure AI-Agent mit einer externen API verbinden, indem Sie ein angegebenes OpenAPI 3.0-Tool verwenden, was eine skalierbare Interoperabilität mit verschiedenen Anwendungen ermöglicht. Ermöglichen Sie Ihren benutzerdefinierten Tools die Authentifizierung von Zugriff und Verbindungen mit verwalteten Identitäten (Microsoft Entra ID) für zusätzliche Sicherheit, sodass sie ideal für die Integration in vorhandene Infrastruktur oder Webdienste geeignet ist.
Das OpenAPI-spezifizierte Tool verbessert Ihre Funktionsaufruferfahrung, indem standardisierte, automatisierte und skalierbare API-Integrationen bereitgestellt werden, die die Funktionen und Effizienz Ihres Agents verbessern.
OpenAPI-Spezifikationen stellen einen formalen Standard für die Beschreibung von HTTP-APIs bereit. Auf diese Weise können Benutzer verstehen, wie eine API funktioniert, wie eine Sequenz von APIs zusammenarbeiten, Clientcode generieren, Tests erstellen, Designstandards anwenden und vieles mehr. Derzeit unterstützen wir 3 Authentifizierungstypen mit den angegebenen OpenAPI 3.0-Tools: anonymous
, API key
, managed identity
.
Voraussetzungen
Stellen Sie sicher, dass Sie die Voraussetzungen und Setupschritte in der Schnellstartanleitung abgeschlossen haben.
Überprüfen Sie die OpenAPI-Spezifikationen auf folgende Anforderungen für dieses Feature:
-
operationId
sollte nur Buchstaben,-
und_
enthalten. Sie können ihn ändern, um die Anforderung zu erfüllen. Es wird empfohlen, beschreibende Namen zu verwenden, um Modelle effizient zu entscheiden, welche Funktion verwendet werden soll.
-
Authentifizieren mit API-Schlüssel
Stellen Sie sicher, dass die OpenAPI-Spezifikation API-Schlüssel unterstützt: Sie verfügt über
securitySchemes
Abschnitt und weist ein Schema vom Typ „apiKey” auf. Beispiel:"securitySchemes": { "apiKeyHeader": { "type": "apiKey", "name": "x-api-key", "in": "header" } }
Wenn die Sicherheitsschemas mehrere Schemas enthalten, empfehlen wir, nur eines davon beizubehalten.
Entfernen Sie alle Parameter in der OpenAPI-Spezifikation, die API-Schlüssel benötigt, da der API-Schlüssel gespeichert und über eine Verbindung übergeben wird, wie weiter unten in diesem Artikel beschrieben.
Erstellen Sie eine
custom keys
-Verbindung, um Ihren API-Schlüssel zu speichern.Navigieren Sie zum Azure KI Foundry-Portal, und wählen Sie das KI-Projekt aus. Klicken Sie auf Ressourcen verbinden.
Wählen Sie auf der Seite „Einstellungen” + neue Verbindung aus.
Hinweis
Wenn Sie den API-Schlüssel zu einem späteren Zeitpunkt erneut generieren, müssen Sie die Verbindung mit dem neuen Schlüssel aktualisieren.
Wählen Sie benutzerdefinierte Schlüssel in andere Ressourcentypen aus.
Geben Sie die folgenden Informationen ein
- Schlüssel:
name
Ihres Sicherheitsschemas. In diesem Beispiel sollte erx-api-key
sein."securitySchemes": { "apiKeyHeader": { "type": "apiKey", "name": "x-api-key", "in": "header" } }
- Wert: IHR_API_SCHLÜSSEL
- Verbindungsname: IHR_VERBINDUNGSNAME (Sie verwenden diesen Verbindungsnamen im folgenden Beispielcode.)
- Zugriff: Sie können entweder nur dieses Projekt oder für alle Projekte freigegeben auswählen. Stellen Sie einfach im folgenden Beispielcode sicher, dass das Projekt, für das Sie die Verbindungszeichenfolge eingegeben haben, Zugriff auf diese Verbindung hat.
- Schlüssel:
Schritt 1: Erstellen eines Agents mit dem OpenAPI Spec-Tool
Erstellen Sie ein Clientobjekt, das die Verbindungszeichenfolge zum Herstellen einer Verbindung mit Ihrem KI-Projekt und anderen Ressourcen enthält.
import os
import jsonref
from azure.ai.projects import AIProjectClient
from azure.identity import DefaultAzureCredential
from azure.ai.projects.models import OpenApiTool, OpenApiAnonymousAuthDetails
# Create an Azure AI Client from a connection string, copied from your Azure AI Foundry project.
# At the moment, it should be in the format "<HostName>;<AzureSubscriptionId>;<ResourceGroup>;<HubName>"
# Customer needs to login to Azure subscription via Azure CLI and set the environment variables
project_client = AIProjectClient.from_connection_string(
credential=DefaultAzureCredential(),
conn_str=os.environ["PROJECT_CONNECTION_STRING"],
)
Schritt 2: Aktivieren des OpenAPI Spec-Tools
Möglicherweise möchten Sie die OpenAPI-Spezifikation in einer anderen Datei speichern und den Inhalt importieren, um das Tool zu initialisieren. Bitte beachten Sie, dass der Beispielcode anonymous
als Authentifizierungstyp verwendet.
with open('./weather_openapi.json', 'r') as f:
openapi_spec = jsonref.loads(f.read())
# Create Auth object for the OpenApiTool (note that connection or managed identity auth setup requires additional setup in Azure)
auth = OpenApiAnonymousAuthDetails()
# Initialize agent OpenAPI tool using the read in OpenAPI spec
openapi = OpenApiTool(name="get_weather", spec=openapi_spec, description="Retrieve weather information for a location", auth=auth)
Wenn Sie eine Verbindung verwenden möchten, die den API-Schlüssel für die Authentifizierung speichert, ersetzen Sie die Zeile durch
auth = OpenApiConnectionAuthDetails(security_scheme=OpenApiConnectionSecurityScheme(connection_id="your_connection_id"))
Ihre Verbindungs-ID sieht wie /subscriptions/{subscription ID}/resourceGroups/{resource group name}/providers/Microsoft.MachineLearningServices/workspaces/{project name}/connections/{connection name}
aus.
Wenn Sie verwaltete Identität für die Authentifizierung verwenden möchten, ersetzen Sie die Zeile durch
auth = OpenApiManagedAuthDetails(security_scheme=OpenApiManagedSecurityScheme(audience="https://your_identity_scope.com"))
Ein Beispiel für die Zielgruppe wäre https://cognitiveservices.azure.com/
.
Schritt 3: Erstellen eines Threads
# Create agent with OpenAPI tool and process assistant run
with project_client:
agent = project_client.agents.create_agent(
model="gpt-4o-mini",
name="my-assistant",
instructions="You are a helpful assistant",
tools=openapi.definitions
)
print(f"Created agent, ID: {agent.id}")
# Create thread for communication
thread = project_client.agents.create_thread()
print(f"Created thread, ID: {thread.id}")
Schritt 4: Erstellen einer Ausführung und Überprüfen der Ausgabe
Wenn Sie eine Ausführung erstellen, können Sie beobachten, dass das Modell das OpenAPI Spec-Tool verwendet, um eine Antwort auf die Frage des Benutzers bereitzustellen.
# Create message to thread
message = project_client.agents.create_message(
thread_id=thread.id,
role="user",
content="What's the weather in Seattle?",
)
print(f"Created message, ID: {message.id}")
# Create and process agent run in thread with tools
run = project_client.agents.create_and_process_run(thread_id=thread.id, assistant_id=agent.id)
print(f"Run finished with status: {run.status}")
if run.status == "failed":
print(f"Run failed: {run.last_error}")
# Delete the assistant when done
project_client.agents.delete_agent(agent.id)
print("Deleted agent")
# Fetch and log all messages
messages = project_client.agents.list_messages(thread_id=thread.id)
print(f"Messages: {messages}")