Skip to main content

Начало работы с Copilot SDK

Узнайте, как установить Второй пилот SDK и отправить своё первое сообщение.

Кто может использовать эту функцию?

GitHub Copilot SDK Доступна со всеми Copilot тарифными планами.

Примечание.

Второй пилот SDK в настоящее время находится в Публичный предварительный просмотр. Функциональность и доступность могут меняться.

GitHub Copilot SDK Позволяет создавать приложения на базе GitHub Copilot BY на вашем предпочитаемом языке программирования. В этом руководстве вы установите SDK с npmпомощью , отправьте первое сообщение и добавите ответы для потока.

Для получения дополнительной информации и шагов для других языков см. Установить SDK в репозитории github/copilot-sdk.

Предпосылки

Перед началом убедитесь, что у вас установлены Node.js 18 или выше.

Authentication

Следуйте инструкциям в AUTOTITLE , чтобы установить и аутентифицироваться с GitHub Copilot CLIпомощью . Это позволит SDK получить доступ к вашему GitHub аккаунту и использовать Copilot.

  1. Убедитесь, что установлен Второй пилот CLI и работает:

    Bash
    copilot --version
    

Installation

  1. Создайте новый каталог и инициализируйте project:

    Bash
    mkdir copilot-demo && cd copilot-demo
    npm init -y --init-type module
    
  2. Установите SDK и TypeScript runner:

    Bash
    npm install @github/copilot-sdk tsx
    

Отправьте своё первое сообщение

  1. Создайте новый файл index.ts и добавьте следующий код. Это отправляет один запрос и Copilot печатает ответ.

    TypeScript
    import { CopilotClient } from "@github/copilot-sdk";
    
    const client = new CopilotClient();
    const session = await client.createSession({ model: "gpt-4.1" });
    
    const response = await session.sendAndWait({ prompt: "What is 2 + 2?" });
    console.log(response?.data.content);
    
    await client.stop();
    process.exit(0);
    
  2. Запустите код:

    Bash
    npx tsx index.ts
    

В этом примере:

  • CopilotClient() создаёт новый клиент, который управляет соединением с Второй пилот CLI.
  • createSession() начинает новую сессию разговора с указанной моделью.
  • sendAndWait() отправляет запрос и ждёт полного ответа, прежде чем вернуться.

Добавьте потоковые ответы

Вместо того чтобы ждать полного ответа, вы можете транслировать его по мере генерации. Это полезно для длинных ответов или интерактивных приложений, где нужно отображать результаты в реальном времени.

  1. Обновляйте index.ts следующий код, чтобы слушать и печатать ответные блоки по мере их поступления:

    TypeScript
    import { CopilotClient } from "@github/copilot-sdk";
    
    const client = new CopilotClient();
    const session = await client.createSession({
        model: "gpt-4.1",
        streaming: true,
    });
    
    // Listen for response chunks
    session.on("assistant.message_delta", (event) => {
        process.stdout.write(event.data.deltaContent);
    });
    session.on("session.idle", () => {
        console.log(); // New line when done
    });
    
    await session.sendAndWait({ prompt: "Tell me a short joke" });
    
    await client.stop();
    process.exit(0);
    
  2. Запустите код:

    Bash
    npx tsx index.ts
    

При включённом стриминге ответ появляется постепенно по мере генерации. Вы можете подписаться на события, чтобы обрабатывать каждый блок в реальном времени:

  • assistant.message_delta выстреляет за каждую часть ответа по мере его генерации.
  • session.idle срабатывает, когда ответ завершён и сессия готова к следующему сообщению.

Методы подписки на события

SDK предоставляет следующие методы подписки на события:

  • on(handler): Подписывайтесь на все события. Возвращает функцию отмены подписки.
  • on(eventType, обработчик): Подписаться на определённый тип события. Возвращает функцию отмены подписки.

Добавьте следующий код, чтобы index.ts подписаться на события и отписаться, когда они вам больше не нужны:

TypeScript
// Subscribe to all events
const unsubscribeAll = session.on((event) => {
    console.log("Event:", event.type);
});

// Subscribe to specific event type
const unsubscribeIdle = session.on("session.idle", (event) => {
    console.log("Session is idle");
});

// Later, to unsubscribe:
unsubscribeAll();
unsubscribeIdle();

Дальнейшие шаги

Добавление пользовательского инструмента

Дайте Copilot возможность вызывать ваш код, определив пользовательский инструмент. Вот инструмент для поиска погоды:

TypeScript
import { CopilotClient, defineTool } from "@github/copilot-sdk";

// Define a tool that Copilot can call
const getWeather = defineTool("get_weather", {
    description: "Get the current weather for a city",
    parameters: {
        type: "object",
        properties: {
            city: { type: "string", description: "The city name" },
        },
        required: ["city"],
    },
    handler: async (args: { city: string }) => {
        const { city } = args;
        // In a real app, you'd call a weather API here
        const conditions = ["sunny", "cloudy", "rainy", "partly cloudy"];
        const temp = Math.floor(Math.random() * 30) + 50;
        const condition = conditions[Math.floor(Math.random() * conditions.length)];
        return { city, temperature: `${temp}°F`, condition };
    },
});

const client = new CopilotClient();
const session = await client.createSession({
    model: "gpt-4.1",
    streaming: true,
    tools: [getWeather],
});

session.on("assistant.message_delta", (event) => {
    process.stdout.write(event.data.deltaContent);
});

session.on("session.idle", () => {
    console.log(); // New line when done
});

await session.sendAndWait({
    prompt: "What's the weather like in Seattle and Tokyo?",
});

await client.stop();
process.exit(0);

Для примеров в Python, Go, .NET и Rust см. Getting Started в репозитории github/copilot-sdk. Для Java см. репозиторийgithub/copilot-sdk-java.

Когда вы определяете инструмент, вы сообщаете Copilot:

  1. Что делает инструмент (описание)
  2. Какие параметры нужны (схема)
  3. Какой код запускать (обработчик)

Copilot решает, когда звонить инструменту, исходя из вопроса пользователя. Когда это происходит, он Второй пилот SDK запускает функцию обработчика и отправляет результат обратно в Copilot, который включает его в ответ.

Создайте интерактивного помощника

Объедините всё в интерактивный чат-ассистент:

TypeScript
import { CopilotClient, defineTool } from "@github/copilot-sdk";
import * as readline from "readline";

const getWeather = defineTool("get_weather", {
    description: "Get the current weather for a city",
    parameters: {
        type: "object",
        properties: {
            city: { type: "string", description: "The city name" },
        },
        required: ["city"],
    },
    handler: async ({ city }) => {
        const conditions = ["sunny", "cloudy", "rainy", "partly cloudy"];
        const temp = Math.floor(Math.random() * 30) + 50;
        const condition = conditions[Math.floor(Math.random() * conditions.length)];
        return { city, temperature: `${temp}°F`, condition };
    },
});

const client = new CopilotClient();
const session = await client.createSession({
    model: "gpt-4.1",
    streaming: true,
    tools: [getWeather],
});

session.on("assistant.message_delta", (event) => {
    process.stdout.write(event.data.deltaContent);
});

const rl = readline.createInterface({
    input: process.stdin,
    output: process.stdout,
});

console.log("Weather Assistant (type 'exit' to quit)");
console.log("   Try: 'What's the weather in Paris?'\n");

const prompt = () => {
    rl.question("You: ", async (input) => {
        if (input.toLowerCase() === "exit") {
            await client.stop();
            rl.close();
            return;
        }

        process.stdout.write("Assistant: ");
        await session.sendAndWait({ prompt: input });
        console.log("\n");
        prompt();
    });
};

prompt();

Проведите с:

Bash
npx tsx weather-assistant.ts

Для примеров в Python, Go, .NET и Rust см. Getting Started в репозитории github/copilot-sdk. Для Java см. репозиторийgithub/copilot-sdk-java.

Подключение к серверам MCP

Серверы MCP (Model Context Protocol) предоставляют готовые инструменты. Подключитесь к GitHubMCP-серверу , чтобы получить Copilot доступ к репозиториям, проблемам и pull requests:

TypeScript
const session = await client.createSession({
    mcpServers: {
        github: {
            type: "http",
            url: "https://api.githubcopilot.com/mcp/",
        },
    },
});

Дополнительные сведения см. в разделе Использование MCP-серверов с Copilot SDK.

Создание настраиваемых агентов

Определите специализированные ИИ-персоны для конкретных задач:

TypeScript
const session = await client.createSession({
    customAgents: [{
        name: "pr-reviewer",
        displayName: "PR Reviewer",
        description: "Reviews pull requests for best practices",
        prompt: "You are an expert code reviewer. Focus on security, performance, and maintainability.",
    }],
});

Дополнительные сведения см. в разделе Пользовательские агенты и оркестровка субагентов.

Настройка системного сообщения

Контролируйте поведение и личность ИИ, добавляя инструкции:

TypeScript
const session = await client.createSession({
    systemMessage: {
        content: "You are a helpful assistant for our engineering team. Always be concise.",
    },
});

Дополнительные материалы