Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Mithilfe der Multi-Agent-Orchestrierung kann ein Modell Subagenten parallel erstellen und koordinieren und dann ihre Arbeit in einer endgültigen Antwort kombinieren. Verwenden Sie sie für komplexe Aufgaben, die von unabhängigen Arbeitsabläufen profitieren, z. B. Codeüberprüfung, Forschung, Dokumentation und Implementierung. Dieses Feature befindet sich in der Vorschau und ist mit GPT-5.6-Modellen verfügbar.
Voraussetzungen
Eine Azure OpenAI-Ressource in einer Region, die die Antwort-API unterstützt.
Eine GPT-5.6-Modellbereitstellung. Überprüfen Sie die Modellverfügbarkeit , bevor Sie die Bereitstellung erstellen.
Python 3.10 oder höher.
Bei Microsoft Entra ID Authentifizierung wird die
Cognitive Services OpenAI UserIhrer Identität zugewiesene Rolle zugewiesen.Für REST-Anforderungen, cURL und die Azure CLI bei Ihrem Azure-Abonnement angemeldet.
Die neuesten OpenAI- und Azure Identity-Pakete:
pip install --upgrade openai azure-identity
Wählen Sie aus, wann die Multi-Agent-Orchestrierung verwendet werden soll.
Verwenden Sie die Multi-Agent-Orchestrierung, wenn eine Aufgabe in konkrete, unabhängige Arbeitsabläufe unterteilt werden kann.
| Verwenden der Multi-Agent-Orchestrierung bei | Bevorzugen Sie einen Agent, wenn |
|---|---|
| Arbeit kann in unabhängige, begrenzungsgebundene Vorgänge aufgeteilt werden. | Jeder Schritt hängt direkt vom vorherigen Schritt ab. |
| Separater Kontext verbessert den Fokus. | Die Aufgabe ist klein genug, um in einer kurzen Ausführung abzuschließen. |
| Parallele Erkundung kann die Wanduhrzeit reduzieren. | Agenten würden sich über dieselbe veränderliche Ressource behaupten. |
| Der Vergleich unabhängiger Erkenntnisse verbessert die Abdeckung. | Sie benötigen ein festes, deterministisches Ausführungsdiagramm. |
Das Hinzufügen von Subagenten kann die Tokennutzung erhöhen. Es kann keine Aufgaben verbessern, die eine geordnete Kette von Gründen erfordern, häufige Schreibvorgänge in den freigegebenen Zustand oder einen langsamen externen Vorgang.
Erstellen einer Multi-Agent-Antwort
Verwenden Sie den Betaantwort-Client mit api-version=preview. Legen Sie fest multi_agent.enabled , true dass der Stamm-Agent Subagenten erstellt. Enthält in Azure OpenAI-Anforderungen model Ihren Bereitstellungsnamen, der nicht mit dem zugrunde liegenden Modellnamen übereinstimmen muss.
Im folgenden Beispiel werden drei Subagenten aufgefordert, separate Vorschläge zur Notfallwiederherstellung auszuwerten. Jeder Vorschlag enthält genügend Informationen, damit ein Subagent unabhängig arbeiten kann und der Stammagent seine Ergebnisse mit gemeinsamen Anforderungen abgleicht.
- Ersetzen Sie
YOUR-RESOURCE-NAMEdurch den Namen Ihrer Azure OpenAI-Ressource. - Wenn der Bereitstellungsname nicht
gpt-5.6-solangegeben ist, ersetzen Sie den Wert durchmodelihren Bereitstellungsnamen. - Führen Sie den Code aus, und vergewissern Sie sich, dass die Ausgabe eine konsolidierte Überprüfung enthält
/root.
from azure.identity import DefaultAzureCredential, get_bearer_token_provider
from openai import OpenAI
# Configure Microsoft Entra ID credentials.
endpoint = "https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/"
scope = "https://ai.azure.com/.default"
token_provider = get_bearer_token_provider(DefaultAzureCredential(), scope)
openai = OpenAI(
base_url=endpoint,
api_key=token_provider,
default_query={"api-version": "preview"},
)
# Delegate each proposal to a separate subagent.
prompt = """
Evaluate three disaster-recovery proposals. Create one subagent per proposal.
Each subagent must assess recovery targets, monthly cost, and operational risk.
Alpha: Active-active across two regions; RTO under 5 minutes; near-zero RPO;
$42,000/month; quarterly failover tests.
Beta: Warm standby; 30-minute RTO; 5-minute RPO; $18,000/month;
monthly failover tests.
Gamma: Backup and restore; 8-hour RTO; 24-hour RPO; $6,000/month;
annual restore test.
The checkout system requires RTO <= 30 minutes, RPO <= 5 minutes, and a
monthly budget <= $20,000. After the subagents finish, compare their evidence
in a table and recommend one proposal. Explain any residual risk.
"""
response = openai.beta.responses.create(
model="gpt-5.6-sol",
input=prompt,
multi_agent={"enabled": True, "max_concurrent_subagents": 3},
)
# Print only the root agent's final answer.
for item in response.output:
if (
item.type == "message"
and item.phase == "final_answer"
and item.agent
and item.agent.agent_name == "/root"
):
for part in item.content:
if part.type == "output_text":
print(part.text)
Referenz: Azure OpenAI v1-API-Authentifizierung | Verwenden der Azure OpenAI-Antwort-API
Die Ausgabe enthält den Vergleich und die Empfehlung des Stamm-Agents. Antwortworte können variieren, aber das Ergebnis sollte Beta als einziger Vorschlag identifizieren, der alle angegebenen Wiederherstellungs- und Budgetanforderungen erfüllt.
| Proposal | Recovery targets | Monthly cost | Operational risk |
| ... | ... | ... | ... |
Recommendation: Beta meets the stated RTO, RPO, and budget requirements.
Um stattdessen einen Azure OpenAI-API-Schlüssel zu verwenden, legen Sie den Client wie folgt festAZURE_OPENAI_API_KEY, und erstellen Sie den Client wie folgt:
import os
from openai import OpenAI
# Authenticate with an Azure OpenAI API key.
endpoint = "https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/"
openai = OpenAI(
base_url=endpoint,
api_key=os.environ["AZURE_OPENAI_API_KEY"],
default_query={"api-version": "preview"},
)
Referenz: Azure OpenAI v1 API-Authentifizierung
Senden einer REST-Anforderung
Verwenden Sie für REST-Anforderungen den Azure OpenAI v1-Endpunkt, und fügen Sie hinzuapi-version=preview.
Microsoft Entra ID
Festlegen AZURE_OPENAI_AUTH_TOKEN auf ein Zugriffstoken für die Azure KI-Zielgruppe:
export AZURE_OPENAI_AUTH_TOKEN=$(
az account get-access-token \
--resource https://ai.azure.com \
--query accessToken \
--output tsv
)
Referenz: Azure OpenAI v1 API-Authentifizierung
curl -X POST "https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/responses?api-version=preview" \
-H "Content-Type: application/json" \
-H "Authorization: Bearer $AZURE_OPENAI_AUTH_TOKEN" \
-d '{
"model": "gpt-5.6-sol",
"input": "Evaluate three disaster-recovery proposals with one subagent per proposal. Alpha: active-active, RTO under 5 minutes, near-zero RPO, $42,000/month. Beta: warm standby, 30-minute RTO, 5-minute RPO, $18,000/month. Gamma: backup and restore, 8-hour RTO, 24-hour RPO, $6,000/month. The checkout system requires RTO at most 30 minutes, RPO at most 5 minutes, and a monthly budget at most $20,000. Compare the evidence and recommend one proposal.",
"multi_agent": {
"enabled": true,
"max_concurrent_subagents": 3
}
}'
Referenz: Use the Azure OpenAI Responses API
API-Schlüssel
Legen Sie AZURE_OPENAI_API_KEY einen Schlüssel aus Ihrer Azure OpenAI-Ressource fest:
export AZURE_OPENAI_API_KEY="<your-api-key>"
curl -X POST "https://YOUR-RESOURCE-NAME.openai.azure.com/openai/v1/responses?api-version=preview" \
-H "Content-Type: application/json" \
-H "api-key: $AZURE_OPENAI_API_KEY" \
-d '{
"model": "gpt-5.6-sol",
"input": "Evaluate three disaster-recovery proposals with one subagent per proposal. Alpha: active-active, RTO under 5 minutes, near-zero RPO, $42,000/month. Beta: warm standby, 30-minute RTO, 5-minute RPO, $18,000/month. Gamma: backup and restore, 8-hour RTO, 24-hour RPO, $6,000/month. The checkout system requires RTO at most 30 minutes, RPO at most 5 minutes, and a monthly budget at most $20,000. Compare the evidence and recommend one proposal.",
"multi_agent": {
"enabled": true,
"max_concurrent_subagents": 3
}
}'
Referenz: Use the Azure OpenAI Responses API
max_concurrent_subagents begrenzt, wie viele Subagenten gleichzeitig über die gesamte Agentstruktur aktiv werden können. Der Grenzwert umfasst Kinder, Enkel und tiefere Nachfolger, schließt jedoch den Stamm-Agent aus. Der Standardwert ist 3, was für die meisten Workloads empfohlen wird.
Steuerungsdelegierung
Das Modell entscheidet, ob die Delegierung nützlich ist. Legen Sie die Arbeitsströme in der Eingabe explizit fest, wenn für die Aufgabe parallele Arbeit erforderlich ist.
Fügen Sie Entwickleranweisungen hinzu, um zu steuern, wann das Stammmodell delegiert wird. Beispiel:
Do not create subagents unless the user explicitly asks for delegation or parallel work.Use subagents when parallel work would materially improve speed or quality.
Diese Anweisungen ergänzen die Orchestrierungsanweisungen, die der Dienst für den Stamm-Agent und Subagenten bereitstellt.
Grundlegendes zur Agentkoordination
Der Agent, der die ursprüngliche Anforderung empfängt, ist der Stamm-Agent und heißt ./root Subagenten verwenden hierarchische Namen, die ihre Position in der Agentstruktur anzeigen:
/root
|-- /root/researcher
|-- /root/reviewer
| `-- /root/reviewer/tester
`-- /root/writer
Der Stamm-Agent delegiert Arbeit, wartet auf Ergebnisse, versöhnt Ergebnisse und erzeugt die endgültige Antwort. Subagenten verwenden dasselbe Modell und haben Zugriff auf die in der ursprünglichen Anforderung konfigurierten Tools.
Der Dienst stellt gehostete Aktionen für die Zusammenarbeit bereit. Sie werden in einer Antwort als multi_agent_call Elemente angezeigt. Ihre Anwendung darf diese Aktionen nicht ausführen oder Ausgaben für sie übermitteln.
| Action | Purpose |
|---|---|
spawn_agent |
Erstellen Sie einen Subagent, und weisen Sie dessen anfängliche Aufgabe zu. |
send_message |
Eine Nachricht für einen vorhandenen Agent in die Warteschlange stellen, ohne eine neue Aufgabe zu starten. |
followup_task |
Weisen Sie einem vorhandenen Nicht-Stamm-Agent mehr Arbeit zu, und starten oder fortsetzen Sie die Aufgabe. |
wait_agent |
Warten Sie auf eine Aktualisierung im Postfach des Anrufagenten. |
interrupt_agent |
Unterbrechen Sie die aktive Drehung eines anderen Agents, ohne den Kontext zu löschen. |
list_agents |
Gibt die Agentstruktur, statuse und die neueste Aufgabennachricht jedes Agents zurück. |
Behandeln von Funktionsaufrufen
Jeder Agent kann entwicklerdefinierte Funktionen aufrufen, die in der Anforderung enthalten sind. Führen Sie alle zurückgegebenen Vorgänge aus function_call, und übermitteln Sie einen übereinstimmenden Wert function_call_output. Behandeln Sie gehostete Elemente nicht als entwicklerdefinierte multi_agent_call Funktionen, da der Dienst sie verwaltet.
Bei HTTP wird eine Antwort abgeschlossen, nachdem jeder aktive Agent abgeschlossen oder angehalten wurde, für einen clientgesteuerten Funktionsaufruf. Führen Sie alle ausstehenden Funktionsaufrufe aus, bewahren Sie die Ausgabeelemente auf, und übermitteln Sie ihre Ausgaben in der nächsten Anforderung, damit die angehaltenen Agents fortfahren können. Informationen zum Ausführungsmuster des Basistools finden Sie unter Funktionsaufrufe.
Überprüfen der Multi-Agent-Ausgabe
Multi-Agent-Antworten können diese zusätzlichen Ausgabeelementtypen enthalten:
-
multi_agent_call: Eine aktion für die gehostete Zusammenarbeit, zspawn_agent. B. . -
multi_agent_call_output: Das Ergebnis einer gehosteten Zusammenarbeitsaktion. -
agent_message: Eine verschlüsselte Nachricht, die von einem Agent an einen anderen gesendet wird.
Das call_id Feld verknüpft jedes multi_agent_call mit dem entsprechenden multi_agent_call_outputFeld. Jedes Element verfügt auch über eine agent Eigenschaft. Verwenden Sie recipient für einen agent_message, und author um die Nachrichtenrichtung zu verfolgen.
[
{
"type": "multi_agent_call",
"call_id": "call_spawn_a",
"action": "spawn_agent",
"agent": { "agent_name": "/root" }
},
{
"type": "multi_agent_call_output",
"call_id": "call_spawn_a",
"action": "spawn_agent",
"agent": { "agent_name": "/root" }
},
{
"type": "agent_message",
"author": "/root/researcher",
"recipient": "/root",
"content": [{ "type": "encrypted_content", "encrypted_content": "<encrypted-content>" }]
}
]
Bewahren Sie diese Elemente auf, wenn Sie den Unterhaltungszustand manuell wiedergeben oder Orchestrierungsablaufverfolgungen sammeln. Machen Sie verschlüsselte Agent-Nachrichten nicht als vom Benutzer sichtbaren Inhalt verfügbar.
Http- oder WebSocket-Modus auswählen
HTTP- und WebSocket-Transporte unterstützen dieselben Multi-Agent-Orchestrierungsfunktionen, aber ihr Funktionsaufrufverhalten unterscheidet sich.
| Transport | Behavior | Empfohlene Verwendung |
|---|---|---|
| HTTP | Wartet, bis aktive Agents für die Funktionsausgabe beendet oder angehalten wurden. Ihre Anwendung übermittelt ausstehende Ausgaben in einer Fortsetzungsanforderung. | Workflows oder Anforderungen mit gehosteten Tools mit wenigen entwicklerdefinierten Funktionsaufrufen. |
| WebSocket | Ermöglicht der Anwendung, jede Funktionsausgabe in die aktive Antwort einzufügen, sobald sie verfügbar ist. | Toolintensive oder lange ausgeführte Workflows, bei denen eine geringere Koordinationslatenz wichtig ist. |
Senden Sie im WebSocket-Modus ein response.inject Ereignis für jede Funktionsausgabe:
{
"type": "response.inject",
"response_id": "resp_123",
"input": [
{
"type": "function_call_output",
"call_id": "call_123",
"output": "{\"temperature\":72}"
}
]
}
Fahren Sie mit dem Lesen von Ereignissen fort, bis die Antwort abgeschlossen ist, und jede Einfügung gibt entweder response.inject.created oder response.inject.failed. Wenn eine Einfügung fehlschlägt response_already_completed, senden Sie die zurückgegebene Eingabe in einer neuen Antwort, die von der abgeschlossenen Antwort fortgesetzt wird. Anleitungen zur Verbindung und Wiederherstellung finden Sie unter Verwenden der Antwort-API im WebSocket-Modus.
Anwenden von Sicherheitssteuerelementen
Jeder Agent in der Struktur hat Zugriff auf die in der ursprünglichen Anforderung konfigurierten Tools. Wenden Sie dieselben Steuerelemente auf Anrufe von Subagenten an, die Sie auf Aufrufe vom Stamm-Agent anwenden.
- Gewähren Sie Tools und Aufrufen von Identitäten nur die Berechtigungen, die für die Aufgabe erforderlich sind.
- Überprüfen Sie Funktionsargumente, und autorisieren Sie jede Aktion im Anwendungscode.
- Benutzergenehmigung vor dem Schreiben, Destruktivieren, Finanziellen oder anderen aktionen mit hoher Auswirkung anfordern.
- Behandeln Sie Inhalte, die von externen Tools zurückgegeben werden, als nicht vertrauenswürdige Eingaben, und schützen Sie sich vor der Eingabeaufforderungseinfügung.
- Protokollieren Sie den Agentnamen, den Toolnamen, argumente, die Genehmigungsentscheidung und das Ergebnis für die Überwachung.
- Gebundene delegierte Arbeit und Überwachen der Tokennutzung, da Subagenten den Verbrauch erhöhen können.
Überprüfen von Einschränkungen
- Der
/responses/compactEndpunkt wird nicht unterstützt, wenn die Multi-Agent-Orchestrierung aktiviert ist. - Die automatische serverseitige Komprimierung ist aktiviert, auch wenn
multi_agent.enabledtruedie Anforderung nicht definiertcontext_managementwird. Komprimierung wird unabhängig für den Stammagenten und jeden Subagenten ausgeführt. - Sie können den Komprimierungsschwellenwert überschreiben, indem Sie die Einstellung festlegen
context_management.compact_threshold. -
reasoning.summarywird nicht unterstützt, wenn die Multi-Agent-Orchestrierung aktiviert ist. -
max_tool_callswird nicht unterstützt, wenn die Multi-Agent-Orchestrierung aktiviert ist. -
max_concurrent_subagentsStandardmäßig wird dies3für die meisten Workloads empfohlen. - Die Multi-Agent-Orchestrierung hat keinen festen Grenzwert für die Strukturtiefe oder die Gesamtanzahl der subagenten, die während einer Ausführung erstellt wurden. Steuern der Parallelität und gebundenen delegierten Arbeit zum Verwalten von Latenz und Tokenverwendung.
Behandeln von Problemen mit mehreren Agent-Anforderungen
| Symptom | Resolution |
|---|---|
| HTTP 401 oder 403 | Stellen Sie für Microsoft Entra ID sicher, dass das Token den https://ai.azure.com/.default Bereich verwendet und dass die Identität über die Cognitive Services OpenAI User Rolle verfügt. Überprüfen Sie bei der API-Schlüsselauthentifizierung, ob der Schlüssel zur Ressource im Endpunkt gehört. |
| HTTP 404 | Stellen Sie sicher, dass model es sich um den Azure OpenAI-Bereitstellungsnamen handelt und ob die Bereitstellung auf der Ressource im Endpunkt verfügbar ist. |
| Unbekannter Anforderungsparameter | Aktualisieren Sie das OpenAI SDK, verwenden Sie den Betaantwort-Client, und vergewissern Sie sich, dass die Anforderung auf den Azure OpenAI v1-Endpunkt ausgerichtet istapi-version=preview. |
| Es werden keine Subagenten erstellt. | Machen Sie die Arbeitsströme in der Eingabeaufforderung explizit, und stellen Sie sicher, dass multi_agent.enabled dies ist true. Das Modell entscheidet, ob die Delegierung nützlich ist, es sei denn, die Aufforderung erfordert sie. |
| Unerwartete Funktionsaufrufe werden angehalten. | Führen Sie alle vom Entwickler definierten function_callAufrufe aus, einschließlich Aufrufen, die Subagenten zugeordnet sind, und übermitteln Sie einen Abgleich function_call_output für jede Anruf-ID. |