Ескертпе
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Жүйеге кіруді немесе каталогтарды өзгертуді байқап көруге болады.
Бұл бетке кіру үшін қатынас шегін айқындау қажет. Каталогтарды өзгертуді байқап көруге болады.
Microsoft Agent Framework поддерживает создание агентов, использующих пакет SDK для GitHub Copilot в качестве серверной части. Агенты GitHub Copilot предоставляют доступ к мощным возможностям ИИ, ориентированным на кодирование, включая выполнение команд оболочки, операции с файлами, получение URL-адресов и интеграцию с сервером mcP.
Это важно
Агенты GitHub Copilot требуют установки и проверки подлинности интерфейса командной строки GitHub Copilot. Для обеспечения безопасности рекомендуется запускать агенты с разрешениями оболочки или файла в контейнерной среде (контейнер Docker/Dev).
Начало работы
Добавьте необходимые пакеты NuGet в проект.
dotnet add package Microsoft.Agents.AI.GitHub.Copilot --prerelease
Создание агента GitHub Copilot
Сначала создайте CopilotClient и запустите его. Затем используйте 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?"));
С инструментами и инструкциями
Вы можете предоставить средства функций и пользовательские инструкции при создании агента:
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?"));
Компоненты агента
Ответы потоковые
Получайте ответы по мере их создания.
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();
Управление сеансами
Сохраняйте контекст беседы в нескольких взаимодействиях с помощью сеансов:
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
По умолчанию агент не может выполнять команды оболочки, читать/записывать файлы или получать URL-адреса. Чтобы включить эти возможности, предоставьте обработчик разрешений с помощью SessionConfig:
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
Подключитесь к локальным (stdio) или удаленным (HTTP) СЕРВЕРАм MCP для расширенных возможностей:
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"));
Подсказка
Полные примеры запуска см. в примерах .NET .
Использование агента
Агент является стандартным AIAgent и поддерживает все стандартные AIAgent операции.
Дополнительные сведения о запуске и взаимодействии с агентами см. в руководствах по началу работы агента.
Предпосылки
Установите пакет Microsoft Agent Framework GitHub Copilot.
pip install agent-framework-github-copilot --pre
Конфигурация
Агент можно настроить при необходимости с помощью следующих переменных среды:
| Variable | Description |
|---|---|
GITHUB_COPILOT_CLI_PATH |
Путь к исполняемому файлу Copilot CLI |
GITHUB_COPILOT_MODEL |
Модель для использования (например, gpt-5, ) claude-sonnet-4 |
GITHUB_COPILOT_TIMEOUT |
Время ожидания запроса в секундах |
GITHUB_COPILOT_LOG_LEVEL |
Уровень журнала CLI |
Начало работы
Импортируйте необходимые классы из Agent Framework:
import asyncio
from agent_framework.github import GitHubCopilotAgent, GitHubCopilotOptions
Создание агента GitHub Copilot
Базовое создание агента
Самый простой способ создания агента GitHub Copilot:
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)
С явной конфигурацией
Вы можете предоставить явную конфигурацию с помощью default_options:
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)
Компоненты агента
Поставщики контекстов
Python GitHubCopilotAgent также поддерживает context_providers=[...]. Поставщики выполняются до и после каждого вызова, поэтому сообщения и инструкции, добавленные поставщиками, включены в запрос Copilot, и поставщики данных могут наблюдать окончательный ответ.
from agent_framework import InMemoryHistoryProvider
agent = GitHubCopilotAgent(
default_options={"instructions": "You are a helpful coding assistant."},
context_providers=[InMemoryHistoryProvider()],
)
Встроенных поставщиков истории можно объединить с настраиваемыми поставщиками контекста. Шаблоны реализации см. в разделе "Поставщики контекста".
Инструменты функций
Оснастите вашего агента настраиваемыми функциями:
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)
Ответы потоковые
Получите ответы по мере их создания для улучшения взаимодействия с пользователем:
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()
Управление потоками
Сохраняйте контекст беседы в нескольких взаимодействиях:
async def thread_example():
agent = GitHubCopilotAgent(
default_options={"instructions": "You are a helpful assistant."},
)
async with agent:
session = agent.create_session()
# First interaction
result1 = await agent.run("My name is Alice.", session=session)
print(f"Agent: {result1}")
# Second interaction - agent remembers the context
result2 = await agent.run("What's my name?", session=session)
print(f"Agent: {result2}") # Should remember "Alice"
Permissions
По умолчанию агент не может выполнять команды оболочки, читать/записывать файлы или получать URL-адреса. Чтобы включить эти возможности, предоставьте обработчик разрешений:
from copilot.generated.session_events import PermissionRequest
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
Подключитесь к локальным (stdio) или удаленным (HTTP) СЕРВЕРАм MCP для расширенных возможностей:
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)
Использование агента
Агент стандартный BaseAgent и поддерживает все стандартные операции агента.
Дополнительные сведения о запуске и взаимодействии с агентами см. в руководствах по началу работы агента.