Aracılığıyla paylaş


GitHub Copilot Aracıları

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.

Sonraki Adımlar