Hinweis
Copilot SDK ist zurzeit in öffentliche Vorschau. Funktionalität und Verfügbarkeit können geändert werden.
Verwenden Sie Copilot SDK als Agent-Anbieter im Microsoft Agent Framework (MAF), um Multi-Agent-Workflows zusammen mit Azure OpenAI, Anthropic und anderen Anbietern zu verfassen.
Übersicht
Das Microsoft Agent Framework ist der einheitliche Nachfolger von Semantic Kernel und AutoGen. Es bietet eine Standardschnittstelle zum Erstellen, Orchestrieren und Bereitstellen von KI-Agents. Mit dedizierten Integrationspaketen können Sie einen Copilot SDK Client als erstklassigen MAF-Agent umschließen – austauschbar mit jedem anderen Agent-Anbieter im Framework.
| Konzept | Beschreibung |
|---|---|
| Microsoft Agent Framework | Open-Source-Framework für die Einzel- und Multi-Agent-Orchestrierung in .NET und Python |
| Agentanbieter | Ein Back-End, das einen Agent unterstützt (Copilot, Azure OpenAI, Anthropic usw.) |
| Orchestrator | Eine MAF-Komponente, die Agenten in sequenziellen, gleichzeitigen oder Übergabeworkflows koordiniert |
| A2A-Protokoll | Vom Framework unterstützte Agent-zu-Agent-Kommunikationsstandard |
Hinweis
MAF-Integrationspakete sind für .NET und Python verfügbar. Verwenden Sie Copilot SDK für TypeScript und Go direkt – die standardmäßigen SDK-APIs bieten Toolaufrufe, Streaming und benutzerdefinierte Agenten.
Voraussetzungen
Bevor Sie beginnen, stellen Sie sicher, dass Sie folgendes haben:
- Ein arbeitsfähiges Copilot SDK-Setup in Ihrer bevorzugten Sprache. Siehe Erste Schritte mit dem Copilot SDK.
- Ein GitHub Copilot Abonnement (Einzelperson, Geschäftlich, oder Unternehmen).
-
Copilot CLI installiert oder über die CLI, die im SDK gebündelt ist, verfügbar.
Installation
Installieren Sie das Copilot SDK zusammen mit dem MAF-Integrationspaket:
dotnet add package GitHub.Copilot.SDK
dotnet add package Microsoft.Agents.AI.GitHub.Copilot --prerelease
Beispiele in Python finden Sie microsoft-agent-framework im Artikel im github/copilot-sdk Repository.
Grundlegende Nutzung
Schließen Sie den Copilot SDK Client als einen MAF-Agenten mit einem einzelnen Methodenaufruf ein. Der resultierende Agent entspricht der Standardschnittstelle des Frameworks und kann überall verwendet werden, wo ein MAF-Agent erwartet wird.
using GitHub.Copilot.SDK;
using Microsoft.Agents.AI;
await using var copilotClient = new CopilotClient();
await copilotClient.StartAsync();
// Wrap as a MAF agent
AIAgent agent = copilotClient.AsAIAgent();
// Use the standard MAF interface
string response = await agent.RunAsync("Explain how dependency injection works in ASP.NET Core");
Console.WriteLine(response);
Beispiele in Python finden Sie microsoft-agent-framework im Artikel im github/copilot-sdk Repository.
Hinzufügen von benutzerdefinierten Tools
Erweitern Sie Ihren Copilot Agent mit benutzerdefinierten Funktionstools. Tools, die über den Standard Copilot SDK definiert sind, sind automatisch verfügbar, wenn der Agent innerhalb von MAF ausgeführt wird.
using GitHub.Copilot.SDK;
using Microsoft.Extensions.AI;
using Microsoft.Agents.AI;
// Define a custom tool
AIFunction weatherTool = AIFunctionFactory.Create(
(string location) => $"The weather in {location} is sunny with a high of 25°C.",
"GetWeather",
"Get the current weather for a given location."
);
await using var copilotClient = new CopilotClient();
await copilotClient.StartAsync();
// Create agent with tools
AIAgent agent = copilotClient.AsAIAgent(new AIAgentOptions
{
Tools = new[] { weatherTool },
});
string response = await agent.RunAsync("What's the weather like in Seattle?");
Console.WriteLine(response);
Sie können auch die Copilot SDKsystemeigene Tooldefinition zusammen mit MAF-Tools verwenden:
import { CopilotClient, DefineTool } from "@github/copilot-sdk";
const getWeather = DefineTool({
name: "GetWeather",
description: "Get the current weather for a given location.",
parameters: { location: { type: "string", description: "City name" } },
execute: async ({ location }) => `The weather in ${location} is sunny, 25°C.`,
});
const client = new CopilotClient();
const session = await client.createSession({
model: "gpt-4.1",
tools: [getWeather],
onPermissionRequest: async () => ({ kind: "approved" }),
});
await session.sendAndWait({ prompt: "What's the weather like in Seattle?" });
Warnung
Die Einstellung von onPermissionRequest auf 'Immer { kind: "approved" } zurückgeben' kann Prompt-Injections ohne Genehmigung zulassen. Implementieren Sie für die Produktionsverwendung eine richtlinienbasierte Genehmigung, die das angeforderte Tool und seine Parameter auswertet, bevor Sie die Berechtigung erteilen.
Beispiele in Python finden Sie microsoft-agent-framework im Artikel im github/copilot-sdk Repository.
Mehragenten-Workflows
Der Hauptvorteil der MAF-Integration besteht darin, Copilot zusammen mit anderen Agenten-Anbietern in einem koordinierten Workflow zu integrieren. Verwenden Sie die integrierten Orchestratoren des Frameworks, um Pipelines zu erstellen, in denen verschiedene Agents unterschiedliche Schritte ausführen.
Sequenzieller Workflow
Führen Sie Agenten nacheinander aus, übergeben Sie die Ausgabe von einem an den nächsten.
using GitHub.Copilot.SDK;
using Microsoft.Agents.AI;
using Microsoft.Agents.AI.Orchestration;
await using var copilotClient = new CopilotClient();
await copilotClient.StartAsync();
// Copilot agent for code review
AIAgent reviewer = copilotClient.AsAIAgent(new AIAgentOptions
{
Instructions = "You review code for bugs, security issues, and best practices. Be thorough.",
});
// Azure OpenAI agent for generating documentation
AIAgent documentor = AIAgent.FromOpenAI(new OpenAIAgentOptions
{
Model = "gpt-4.1",
Instructions = "You write clear, concise documentation for code changes.",
});
// Compose in a sequential pipeline
var pipeline = new SequentialOrchestrator(new[] { reviewer, documentor });
string result = await pipeline.RunAsync(
"Review and document this pull request: added retry logic to the HTTP client"
);
Console.WriteLine(result);
Beispiele in Python finden Sie microsoft-agent-framework im Artikel im github/copilot-sdk Repository.
Gleichzeitiger Workflow
Führen Sie mehrere Agents parallel aus, und aggregieren Sie ihre Ergebnisse:
using GitHub.Copilot.SDK;
using Microsoft.Agents.AI;
using Microsoft.Agents.AI.Orchestration;
await using var copilotClient = new CopilotClient();
await copilotClient.StartAsync();
AIAgent securityReviewer = copilotClient.AsAIAgent(new AIAgentOptions
{
Instructions = "Focus exclusively on security vulnerabilities and risks.",
});
AIAgent performanceReviewer = copilotClient.AsAIAgent(new AIAgentOptions
{
Instructions = "Focus exclusively on performance bottlenecks and optimization opportunities.",
});
// Run both reviews concurrently
var concurrent = new ConcurrentOrchestrator(new[] { securityReviewer, performanceReviewer });
string combinedResult = await concurrent.RunAsync(
"Analyze this database query module for issues"
);
Console.WriteLine(combinedResult);
Antworten bei Streaming-Diensten
Beim Erstellen interaktiver Anwendungen sollten Antworten von Streaming-Agenten verwendet werden, um die Echtzeitausgabe anzuzeigen. Die MAF-Integration behält die Copilot SDKStreamingfunktionen bei.
using GitHub.Copilot.SDK;
using Microsoft.Agents.AI;
await using var copilotClient = new CopilotClient();
await copilotClient.StartAsync();
AIAgent agent = copilotClient.AsAIAgent(new AIAgentOptions
{
Streaming = true,
});
await foreach (var chunk in agent.RunStreamingAsync("Write a quicksort implementation in C#"))
{
Console.Write(chunk);
}
Console.WriteLine();
Sie können auch direkt über die Copilot SDK ohne MAF streamen:
import { CopilotClient } from "@github/copilot-sdk";
const client = new CopilotClient();
const session = await client.createSession({
model: "gpt-4.1",
streaming: true,
onPermissionRequest: async () => ({ kind: "approved" }),
});
session.on("assistant.message_delta", (event) => {
process.stdout.write(event.data.delta ?? "");
});
await session.sendAndWait({ prompt: "Write a quicksort implementation in TypeScript" });
Beispiele in Python finden Sie microsoft-agent-framework im Artikel im github/copilot-sdk Repository.
Konfigurationsreferenz
MAF-Agentoptionen
| Eigentum | Typ | Beschreibung |
|---|---|---|
Instructions | Schnur | Systemaufforderung für den Agent |
Tools | AIFunction[] oder Liste | Benutzerdefinierte Funktionstools, die für den Agent verfügbar sind |
Streaming | bool | Streamingantworten aktivieren |
Model | Schnur | Überschreiben des Standardmodells |
Copilot SDK-Optionen (übergeben)
Alle Standardoptionen SessionConfig sind beim Erstellen des zugrunde liegenden Copilot Clients verfügbar. Der MAF-Wrapper delegiert unter der Haube an das SDK.
| SDK-Feature | MAF-Unterstützung |
|---|---|
Benutzerdefinierte Tools (DefineTool und AIFunctionFactory) | Mit MAF-Tools zusammengeführt |
| MCP-Server | Konfiguriert auf dem SDK-Client |
| Benutzerdefinierte Agenten und Unteragenten | Verfügbar innerhalb des Copilot-Agenten |
| Unendliche Sitzungen | Konfiguriert auf dem SDK-Client |
| Modellauswahl | Überschreibbar pro Agent oder pro Anruf |
| Streamen | Vollständige Delta-Ereignisunterstützung |
Bewährte Methoden
Auswählen der richtigen Integrationsebene
Verwenden Sie den MAF-Wrapper, wenn Sie Copilot mit anderen Anbietern in koordinierten Workflows verfassen müssen. Wenn Ihre Anwendung nur Copilot verwendet, ist das eigenständige SDK einfacher und bietet Ihnen vollen Zugriff:
// Standalone SDK — full control, simpler setup
import { CopilotClient } from "@github/copilot-sdk";
const client = new CopilotClient();
const session = await client.createSession({
model: "gpt-4.1",
onPermissionRequest: async () => ({ kind: "approved" }),
});
const response = await session.sendAndWait({ prompt: "Explain this code" });
Agenten fokussiert halten
Geben Sie jedem Agent beim Erstellen von Workflows mit mehreren Agents eine bestimmte Rolle mit klaren Anweisungen. Überlappende Zuständigkeiten vermeiden:
// Too vague — overlapping roles
const agents = [
{ instructions: "Help with code" },
{ instructions: "Assist with programming" },
];
// Focused — clear separation of concerns
const agents = [
{ instructions: "Review code for security vulnerabilities. Flag SQL injection, XSS, and auth issues." },
{ instructions: "Optimize code performance. Focus on algorithmic complexity and memory usage." },
];
Handhabung von Fehlern auf der Orchestrierungsebene
Agentenaufrufe in die Fehlerbehandlung einbetten, insbesondere in Workflows mit mehreren Agenten, damit der Fehler eines Agenten nicht die gesamte Pipeline blockiert.
try
{
string result = await pipeline.RunAsync("Analyze this module");
Console.WriteLine(result);
}
catch (AgentException ex)
{
Console.Error.WriteLine($"Agent {ex.AgentName} failed: {ex.Message}");
// Fall back to single-agent mode or retry
}
Weiterführende Lektüre
-
[AUTOTITLE](/copilot/how-tos/copilot-sdk/sdk-getting-started) -
[Dokumentation zu Microsoft Agent Framework](https://learn.microsoft.com/en-us/agent-framework/agents/providers/github-copilot) -
[Blog: Erstellen von KI-Agents mit GitHub Copilot SDK und Microsoft Agent Framework](https://devblogs.microsoft.com/semantic-kernel/build-ai-agents-with-github-copilot-sdk-and-microsoft-agent-framework/)