注意
Copilot SDK 目前处于 技术预览版 阶段。 功能和可用性可能会发生更改。
GitHub Copilot SDK 允许你使用首选编程语言构建由 GitHub Copilot 提供支持的应用程序。 在本指南中,你将使用 npm 来安装 SDK,发送第一条消息,并添加流式处理响应。
有关其他语言的详细信息和步骤,请参阅 存储库中的github/copilot-sdk。
先决条件
在开始之前,请确保已安装 Node.js 18 或更高版本。
Authentication
请按照 安装 GitHub Copilot CLI 中的说明安装并使用 GitHub Copilot 命令行界面 (CLI) 进行身份验证。 这将允许 SDK 访问你的 GitHub 帐户并使用 Copilot。
-
验证 Copilot 命令行界面(CLI) 是否已安装并运行正常:
Bash copilot --version
copilot --version
安装
-
创建新目录并初始化项目:
Bash mkdir copilot-demo && cd copilot-demo npm init -y --init-type module
mkdir copilot-demo && cd copilot-demo npm init -y --init-type module -
安装 SDK 和 TypeScript 运行程序:
Bash npm install @github/copilot-sdk tsx
npm install @github/copilot-sdk tsx
发送第一条消息
-
创建新文件
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);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); -
运行代码:
Bash npx tsx index.ts
npx tsx index.ts
在本示例中:
-
** `CopilotClient()` ** 创建一个新客户端,用于管理与 数据变量.copilot.copilot_cli_short %} 的连接。 -
** `createSession()` ** 使用指定的模型启动新的会话。 -
** `sendAndWait()` ** 发送提示并等待返回前的完整响应。
添加流响应
你可以在响应生成时流式传输响应,而不是等待完整响应。 这对于要实时显示输出的长响应或交互式应用程序非常有用。
-
使用以下代码更新
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);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); -
运行代码:
Bash npx tsx index.ts
npx tsx index.ts
启用流式处理后,响应在生成时逐步显示。 可以订阅事件以实时处理每个区块:
-
** `assistant.message_delta` ** 在响应的每个块生成时触发。 -
** `session.idle` ** 在响应完成且会话准备好接收下一条消息时触发。
事件订阅方法
SDK 提供以下订阅事件的方法:
-
**on(handler)**:订阅所有事件。 返回取消订阅函数。 -
**on(eventType, handler)**:订阅特定事件类型。 返回取消订阅函数。
将以下代码添加到index.ts以订阅事件,并在不再需要时取消订阅。
// 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();
// 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();