Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Microsoft Agent Framework, arka uç olarak GitHub Copilot SDK'sını kullanan aracılar oluşturmayı destekler. GitHub Copilot aracıları kabuk komutu yürütme, dosya işlemleri, URL getirme ve Model Bağlam Protokolü (MCP) sunucu tümleştirmesi gibi güçlü kodlama odaklı yapay zeka özelliklerine erişim sağlar.
Önemli
GitHub Copilot aracıları, GitHub Copilot CLI'nin yüklenmesi ve kimliğinin doğrulanması gerektir. Güvenlik için kapsayıcılı bir ortamda (Docker/Dev Kapsayıcısı) kabuk veya dosya izinlerine sahip aracıların çalıştırılması önerilir.
Başlangıç Yapmak
Projenize gerekli NuGet paketlerini ekleyin.
dotnet add package Microsoft.Agents.AI.GitHub.Copilot --prerelease
GitHub Copilot Aracısı Oluşturma
İlk adım olarak bir CopilotClient oluşturun ve başlatın. Ardından bir aracı oluşturmak için uzantı yöntemini kullanın AsAIAgent .
using GitHub.Copilot.SDK;
using Microsoft.Agents.AI;
await using CopilotClient copilotClient = new();
await copilotClient.StartAsync();
AIAgent agent = copilotClient.AsAIAgent();
Console.WriteLine(await agent.RunAsync("What is Microsoft Agent Framework?"));
Araçlar ve Yönergelerle
Aracıyı oluştururken işlev araçları ve özel yönergeler sağlayabilirsiniz:
using GitHub.Copilot.SDK;
using Microsoft.Agents.AI;
using Microsoft.Extensions.AI;
AIFunction weatherTool = AIFunctionFactory.Create((string location) =>
{
return $"The weather in {location} is sunny with a high of 25C.";
}, "GetWeather", "Get the weather for a given location.");
await using CopilotClient copilotClient = new();
await copilotClient.StartAsync();
AIAgent agent = copilotClient.AsAIAgent(
tools: [weatherTool],
instructions: "You are a helpful weather agent.");
Console.WriteLine(await agent.RunAsync("What's the weather like in Seattle?"));
Temsilci Özellikleri
Akış Yanıtları
Oluşturulan yanıtları alın:
await using CopilotClient copilotClient = new();
await copilotClient.StartAsync();
AIAgent agent = copilotClient.AsAIAgent();
await foreach (AgentResponseUpdate update in agent.RunStreamingAsync("Tell me a short story."))
{
Console.Write(update);
}
Console.WriteLine();
Oturum Yönetimi
Oturumları kullanarak birden çok etkileşimde konuşma bağlamı sağlama:
await using CopilotClient copilotClient = new();
await copilotClient.StartAsync();
await using GitHubCopilotAgent agent = new(
copilotClient,
instructions: "You are a helpful assistant. Keep your answers short.");
AgentSession session = await agent.CreateSessionAsync();
// First turn
await agent.RunAsync("My name is Alice.", session);
// Second turn - agent remembers the context
AgentResponse response = await agent.RunAsync("What is my name?", session);
Console.WriteLine(response); // Should mention "Alice"
Permissions
Varsayılan olarak, aracı kabuk komutlarını yürütemez, dosyaları okuyamaz/yazamaz veya URL'leri getiremez. Bu özellikleri etkinleştirmek için aracılığıyla SessionConfigbir izin işleyicisi sağlayın:
static Task<PermissionRequestResult> PromptPermission(
PermissionRequest request, PermissionInvocation invocation)
{
Console.WriteLine($"\n[Permission Request: {request.Kind}]");
Console.Write("Approve? (y/n): ");
string? input = Console.ReadLine()?.Trim().ToUpperInvariant();
string kind = input is "Y" or "YES" ? "approved" : "denied-interactively-by-user";
return Task.FromResult(new PermissionRequestResult { Kind = kind });
}
await using CopilotClient copilotClient = new();
await copilotClient.StartAsync();
SessionConfig sessionConfig = new()
{
OnPermissionRequest = PromptPermission,
};
AIAgent agent = copilotClient.AsAIAgent(sessionConfig);
Console.WriteLine(await agent.RunAsync("List all files in the current directory"));
MCP Sunucuları
Genişletilmiş özellikler için yerel (stdio) veya uzak (HTTP) MCP sunucularına bağlanın:
await using CopilotClient copilotClient = new();
await copilotClient.StartAsync();
SessionConfig sessionConfig = new()
{
OnPermissionRequest = PromptPermission,
McpServers = new Dictionary<string, object>
{
// Local stdio server
["filesystem"] = new McpLocalServerConfig
{
Type = "stdio",
Command = "npx",
Args = ["-y", "@modelcontextprotocol/server-filesystem", "."],
Tools = ["*"],
},
// Remote HTTP server
["microsoft-learn"] = new McpRemoteServerConfig
{
Type = "http",
Url = "https://learn.microsoft.com/api/mcp",
Tools = ["*"],
},
},
};
AIAgent agent = copilotClient.AsAIAgent(sessionConfig);
Console.WriteLine(await agent.RunAsync("Search Microsoft Learn for 'Azure Functions' and summarize the top result"));
Tavsiye
Çalıştırılabilir örneklerin tamamı için .NET örneklerine bakın.
Ajanı Kullanma
Aracı, standart bir AIAgent'dir ve tüm standart AIAgent işlemlerini destekler.
Aracıları çalıştırma ve aracılarla etkileşim kurma hakkında daha fazla bilgi için bkz. Aracı kullanmaya başlama öğreticileri.
Önkoşullar
Microsoft Agent Framework GitHub Copilot paketini yükleyin.
pip install agent-framework-github-copilot --pre
Konfigürasyon
Aracı isteğe bağlı olarak aşağıdaki ortam değişkenleri kullanılarak yapılandırılabilir:
| Variable | Description |
|---|---|
GITHUB_COPILOT_CLI_PATH |
Copilot CLI yürütülebilir dosyasının yolu |
GITHUB_COPILOT_MODEL |
Kullanılacak model (örn. , gpt-5claude-sonnet-4) |
GITHUB_COPILOT_TIMEOUT |
İstek zaman aşımı süresi (saniye cinsinden) |
GITHUB_COPILOT_LOG_LEVEL |
CLI günlük düzeyi |
Başlangıç Yapmak
Gerekli sınıfları Agent Framework'ten içeri aktarın:
import asyncio
from agent_framework.github import GitHubCopilotAgent, GitHubCopilotOptions
GitHub Copilot Aracısı Oluşturma
Temel Ajan Oluşturma
GitHub Copilot aracısı oluşturmanın en basit yolu:
async def basic_example():
agent = GitHubCopilotAgent(
default_options={"instructions": "You are a helpful assistant."},
)
async with agent:
result = await agent.run("What is Microsoft Agent Framework?")
print(result)
Açık Yapılandırma ile
aracılığıyla default_optionsaçık yapılandırma sağlayabilirsiniz:
async def explicit_config_example():
agent = GitHubCopilotAgent(
default_options={
"instructions": "You are a helpful assistant.",
"model": "gpt-5",
"timeout": 120,
},
)
async with agent:
result = await agent.run("What can you do?")
print(result)
Temsilci Özellikleri
İşlev Araçları
Ajanınızı özel işlevlerle donatın.
from typing import Annotated
from pydantic import Field
def get_weather(
location: Annotated[str, Field(description="The location to get the weather for.")],
) -> str:
"""Get the weather for a given location."""
return f"The weather in {location} is sunny with a high of 25C."
async def tools_example():
agent = GitHubCopilotAgent(
default_options={"instructions": "You are a helpful weather agent."},
tools=[get_weather],
)
async with agent:
result = await agent.run("What's the weather like in Seattle?")
print(result)
Akış Yanıtları
Daha iyi bir kullanıcı deneyimi için oluşturulan yanıtları alın:
async def streaming_example():
agent = GitHubCopilotAgent(
default_options={"instructions": "You are a helpful assistant."},
)
async with agent:
print("Agent: ", end="", flush=True)
async for chunk in agent.run("Tell me a short story.", stream=True):
if chunk.text:
print(chunk.text, end="", flush=True)
print()
İş Parçacığı Yönetimi
Birden çok etkileşimde konuşma bağlamını koru.
async def thread_example():
agent = GitHubCopilotAgent(
default_options={"instructions": "You are a helpful assistant."},
)
async with agent:
thread = agent.create_session()
# First interaction
result1 = await agent.run("My name is Alice.", session=thread)
print(f"Agent: {result1}")
# Second interaction - agent remembers the context
result2 = await agent.run("What's my name?", session=thread)
print(f"Agent: {result2}") # Should remember "Alice"
Permissions
Varsayılan olarak, aracı kabuk komutlarını yürütemez, dosyaları okuyamaz/yazamaz veya URL'leri getiremez. Bu özellikleri etkinleştirmek için bir izin işleyicisi sağlayın:
from copilot.types import PermissionRequest, PermissionRequestResult
def prompt_permission(
request: PermissionRequest, context: dict[str, str]
) -> PermissionRequestResult:
kind = request.get("kind", "unknown")
print(f"\n[Permission Request: {kind}]")
response = input("Approve? (y/n): ").strip().lower()
if response in ("y", "yes"):
return PermissionRequestResult(kind="approved")
return PermissionRequestResult(kind="denied-interactively-by-user")
async def permissions_example():
agent = GitHubCopilotAgent(
default_options={
"instructions": "You are a helpful assistant that can execute shell commands.",
"on_permission_request": prompt_permission,
},
)
async with agent:
result = await agent.run("List the Python files in the current directory")
print(result)
MCP Sunucuları
Genişletilmiş özellikler için yerel (stdio) veya uzak (HTTP) MCP sunucularına bağlanın:
from copilot.types import MCPServerConfig
async def mcp_example():
mcp_servers: dict[str, MCPServerConfig] = {
# Local stdio server
"filesystem": {
"type": "stdio",
"command": "npx",
"args": ["-y", "@modelcontextprotocol/server-filesystem", "."],
"tools": ["*"],
},
# Remote HTTP server
"microsoft-learn": {
"type": "http",
"url": "https://learn.microsoft.com/api/mcp",
"tools": ["*"],
},
}
agent = GitHubCopilotAgent(
default_options={
"instructions": "You are a helpful assistant with access to the filesystem and Microsoft Learn.",
"on_permission_request": prompt_permission,
"mcp_servers": mcp_servers,
},
)
async with agent:
result = await agent.run("Search Microsoft Learn for 'Azure Functions' and summarize the top result")
print(result)
Ajanı Kullanma
Aracı standart bir BaseAgent'dir ve tüm standart aracı işlemleri destekler.
Aracıları çalıştırma ve aracılarla etkileşim kurma hakkında daha fazla bilgi için bkz. Aracı kullanmaya başlama öğreticileri.