Skip to content

Commit fb12cb7

Browse files
authored
Merge pull request #53484 from MicrosoftDocs/NEW-develop-ai-enabled-apps-using-github-copilot-sdk
Develop AI-enabled apps using the GitHub Copilot SDK
2 parents cc6fc2a + 17e2cbe commit fb12cb7

21 files changed

Lines changed: 1141 additions & 0 deletions
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
### YamlMime:ModuleUnit
2+
uid: learn.wwl.develop-ai-enabled-apps-using-github-copilot-sdk.introduction
3+
title: "Introduction"
4+
metadata:
5+
title: "Introduction"
6+
description: "Introduction."
7+
ms.date: 02/13/2026
8+
author: chrishowd
9+
ms.author: cahowd
10+
ms.topic: unit
11+
durationInMinutes: 3
12+
content: |
13+
[!include[](includes/1-introduction.md)]
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
### YamlMime:ModuleUnit
2+
uid: learn.wwl.develop-ai-enabled-apps-using-github-copilot-sdk.summary
3+
title: "Summary"
4+
metadata:
5+
title: "Summary"
6+
description: "Summary."
7+
ms.date: 02/13/2026
8+
author: chrishowd
9+
ms.author: cahowd
10+
ms.topic: unit
11+
durationInMinutes: 2
12+
content: |
13+
[!include[](includes/10-summary.md)]
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
### YamlMime:ModuleUnit
2+
uid: learn.wwl.develop-ai-enabled-apps-using-github-copilot-sdk.what-ai-agent
3+
title: "What is an AI agent?"
4+
metadata:
5+
title: "What is an AI Agent?"
6+
description: "What is an AI agent?"
7+
ms.date: 02/13/2026
8+
author: chrishowd
9+
ms.author: cahowd
10+
ms.topic: unit
11+
durationInMinutes: 4
12+
content: |
13+
[!include[](includes/2-what-ai-agent.md)]
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
### YamlMime:ModuleUnit
2+
uid: learn.wwl.develop-ai-enabled-apps-using-github-copilot-sdk.what-github-copilot-sdk
3+
title: "What is the GitHub Copilot SDK?"
4+
metadata:
5+
title: "What is the GitHub Copilot SDK?"
6+
description: "What is the GitHub Copilot SDK?"
7+
ms.date: 02/13/2026
8+
author: chrishowd
9+
ms.author: cahowd
10+
ms.topic: unit
11+
durationInMinutes: 8
12+
content: |
13+
[!include[](includes/3-what-github-copilot-sdk.md)]
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
### YamlMime:ModuleUnit
2+
uid: learn.wwl.develop-ai-enabled-apps-using-github-copilot-sdk.examine-ai-agent-use-cases
3+
title: "Examine AI agent use cases in business"
4+
metadata:
5+
title: "Examine AI Agent Use Cases in Business"
6+
description: "Examine AI agent use cases in business."
7+
ms.date: 02/13/2026
8+
author: chrishowd
9+
ms.author: cahowd
10+
ms.topic: unit
11+
durationInMinutes: 5
12+
content: |
13+
[!include[](includes/4-examine-ai-agent-use-cases.md)]
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
### YamlMime:ModuleUnit
2+
uid: learn.wwl.develop-ai-enabled-apps-using-github-copilot-sdk.design-ai-agents
3+
title: "Design AI agents using GitHub Copilot SDK"
4+
metadata:
5+
title: "Design AI Agents Using GitHub Copilot SDK"
6+
description: "Design AI agents using GitHub Copilot SDK."
7+
ms.date: 02/13/2026
8+
author: chrishowd
9+
ms.author: cahowd
10+
ms.topic: unit
11+
durationInMinutes: 7
12+
content: |
13+
[!include[](includes/5-design-ai-agents.md)]
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
### YamlMime:ModuleUnit
2+
uid: learn.wwl.develop-ai-enabled-apps-using-github-copilot-sdk.implement-ai-agents-github-copilot-sdk
3+
title: "Implement AI agents using GitHub Copilot SDK"
4+
metadata:
5+
title: "Implement AI Agents Using GitHub Copilot SDK"
6+
description: "Implement AI agents using GitHub Copilot SDK."
7+
ms.date: 02/13/2026
8+
author: chrishowd
9+
ms.author: cahowd
10+
ms.topic: unit
11+
durationInMinutes: 10
12+
content: |
13+
[!include[](includes/6-implement-ai-agents-github-copilot-sdk.md)]
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
### YamlMime:ModuleUnit
2+
uid: learn.wwl.develop-ai-enabled-apps-using-github-copilot-sdk.adapt-extend-ai-agents
3+
title: "Adapt and extend AI agents for deployment"
4+
metadata:
5+
title: "Adapt and Extend AI Agents for Deployment"
6+
description: "Adapt and extend AI agents for deployment."
7+
ms.date: 02/13/2026
8+
author: chrishowd
9+
ms.author: cahowd
10+
ms.topic: unit
11+
durationInMinutes: 8
12+
content: |
13+
[!include[](includes/7-adapt-extend-ai-agents.md)]
Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
### YamlMime:ModuleUnit
2+
uid: learn.wwl.develop-ai-enabled-apps-using-github-copilot-sdk.exercise-integrate-ai-agent-github-copilot-sdk
3+
title: "Exercise - Integrate AI agents into apps using GitHub Copilot SDK"
4+
metadata:
5+
title: "Exercise - Integrate AI Agents into Apps Using GitHub Copilot SDK"
6+
description: "Exercise - Integrate AI agents into apps using GitHub Copilot SDK."
7+
ms.date: 02/13/2026
8+
author: chrishowd
9+
ms.author: cahowd
10+
ms.topic: unit
11+
durationInMinutes: 60
12+
content: |
13+
[!include[](includes/8-exercise-integrate-ai-agent-github-copilot-sdk.md)]
Lines changed: 179 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,179 @@
1+
### YamlMime:ModuleUnit
2+
uid: learn.wwl.develop-ai-enabled-apps-using-github-copilot-sdk.knowledge-check
3+
title: Module assessment
4+
metadata:
5+
title: Module Assessment
6+
description: "Module assessment"
7+
ms.date: 02/13/2026
8+
author: chrishowd
9+
ms.author: cahowd
10+
ms.topic: unit
11+
durationInMinutes: 10
12+
quiz:
13+
title: "Check your knowledge"
14+
questions:
15+
- content: "What is the key distinction between AI agents and traditional chatbots?"
16+
choices:
17+
- content: "AI agents can only respond to specific user queries with prescripted answers."
18+
isCorrect: false
19+
explanation: "Incorrect. Responding to specific queries with prescripted answers describes chatbot behavior, not AI agent behavior."
20+
- content: "Chatbots follow predetermined conversational paths, while agents dynamically plan and execute multi-step workflows to achieve an outcome."
21+
isCorrect: true
22+
explanation: "Correct. AI agents go beyond scripted responses by using AI-driven reasoning to plan, execute, and adapt their actions across multiple steps to accomplish a goal."
23+
- content: "AI agents require step-by-step human guidance for each action they take."
24+
isCorrect: false
25+
explanation: "Incorrect. AI agents operate with a degree of independence and can make decisions, use tools, and adapt autonomously without step-by-step human guidance."
26+
- content: "Which capability enables AI agents to interact with external systems like databases and REST APIs?"
27+
choices:
28+
- content: "Reasoning and planning."
29+
isCorrect: false
30+
explanation: "Incorrect. Reasoning and planning enable the agent to interpret requests and decide what actions to take, but this capability alone doesn't provide interaction with external systems."
31+
- content: "Memory and context."
32+
isCorrect: false
33+
explanation: "Incorrect. Memory and context help the agent maintain coherence across multiple interactions, but they don't provide the mechanism for interacting with external systems."
34+
- content: "Tool use."
35+
isCorrect: true
36+
explanation: "Correct. Tools give agents the ability to call external functions, APIs, or commands, enabling them to interact with real systems like databases and REST APIs."
37+
- content: "What communication architecture does the GitHub Copilot SDK use to interact with the Copilot CLI?"
38+
choices:
39+
- content: "The SDK communicates with a cloud-hosted API using REST over HTTPS."
40+
isCorrect: false
41+
explanation: "Incorrect. The SDK communicates with a local CLI process, not a cloud-hosted API."
42+
- content: "The SDK sends JSON-RPC messages to the Copilot CLI running in server mode as a local process."
43+
isCorrect: true
44+
explanation: "Correct. The SDK architecture follows the flow: Application → SDK Client → (JSON-RPC) → Copilot CLI (server mode), with the CLI running as a local process."
45+
- content: "The SDK embeds the AI model directly and runs inference locally without any external process."
46+
isCorrect: false
47+
explanation: "Incorrect. The SDK relies on the Copilot CLI running in server mode and communicates with it through JSON-RPC, rather than embedding a model directly."
48+
- content: "What is the purpose of the SDK's infinite sessions feature?"
49+
choices:
50+
- content: "To allow an unlimited number of concurrent users to share a single session."
51+
isCorrect: false
52+
explanation: "Incorrect. The infinite sessions feature is about managing context within a single session, not about handling multiple concurrent users."
53+
- content: "To automatically compact context when the context window approaches its limit, preventing token overflow errors."
54+
isCorrect: true
55+
explanation: "Correct. The infinite sessions feature automatically compacts older context when the context window nears its limit, preserving essential information while preventing token overflow errors."
56+
- content: "To enable the agent to register an unlimited number of tools within a session."
57+
isCorrect: false
58+
explanation: "Incorrect. The infinite sessions feature manages conversation history length, not the number of tools registered with a session."
59+
- content: "How are tools defined in the GitHub Copilot SDK for .NET?"
60+
choices:
61+
- content: "Using XML configuration files that map tool names to API endpoints."
62+
isCorrect: false
63+
explanation: "Incorrect. The .NET SDK defines tools programmatically in code, not through XML configuration files."
64+
- content: "Using `AIFunctionFactory.Create` from the `Microsoft.Extensions.AI` package with a lambda function, tool name, and description."
65+
isCorrect: true
66+
explanation: "Correct. Each `AIFunctionFactory.Create` call takes a lambda function with `[Description]` attributes on parameters, a tool name, and a description that helps the model understand when to call it."
67+
- content: "Using decorator attributes on controller classes that automatically expose methods as tools."
68+
isCorrect: false
69+
explanation: "Incorrect. Tools are defined explicitly using `AIFunctionFactory.Create`, not through decorator attributes on controller classes."
70+
- content: "What are the five core architectural components that every AI agent system requires?"
71+
choices:
72+
- content: "Input handler, output formatter, cache, scheduler, and logger."
73+
isCorrect: false
74+
explanation: "Incorrect. While these items are common software components, they don't represent the specific architectural building blocks of an AI agent system."
75+
- content: "AI reasoning engine, tools, planner and controller, memory and context, and policies and guardrails."
76+
isCorrect: true
77+
explanation: "Correct. These components form the architectural blueprint that every agent system shares, from the large language model (LLM) that reasons to the guardrails that ensure safe operation."
78+
- content: "Database, API gateway, message queue, load balancer, and monitoring service."
79+
isCorrect: false
80+
explanation: "Incorrect. These items are infrastructure components for distributed systems, not the core building blocks of an AI agent architecture."
81+
- content: "What does the `OnPreToolUse` session hook return to control whether a tool call proceeds?"
82+
choices:
83+
- content: "A boolean value indicating true to proceed or false to cancel."
84+
isCorrect: false
85+
explanation: "Incorrect. The hook uses a more granular control mechanism than a simple boolean."
86+
- content: "A `PermissionDecision` value of `Allow`, `Deny`, or `Ask`."
87+
isCorrect: true
88+
explanation: "Correct. The `PermissionDecision` value provides three options: `Allow` to proceed, `Deny` to block the call, or `Ask` to prompt the user for confirmation before the tool executes."
89+
- content: "An HTTP status code such as 200 for success or 403 for forbidden."
90+
isCorrect: false
91+
explanation: "Incorrect. The SDK uses its own `PermissionDecision` enum for tool call control, not HTTP status codes."
92+
- content: "Which three design areas should a developer focus on when building an agent with the Copilot SDK?"
93+
choices:
94+
- content: "Speed, cost, and scalability."
95+
isCorrect: false
96+
explanation: "Incorrect. While these areas are important operational considerations, they aren't the primary design areas for agent configuration."
97+
- content: "Context, tools, and policies."
98+
isCorrect: true
99+
explanation: "Correct. Context defines what information the agent needs, tools define what actions it can take, and policies define what rules it must follow."
100+
- content: "UI design, database schema, and network architecture."
101+
isCorrect: false
102+
explanation: "Incorrect. These areas relate to general application design rather than the specific design decisions for an AI agent built with the Copilot SDK."
103+
- content: "What event type signals that the agent finished processing a request, including all tool calls?"
104+
choices:
105+
- content: "`AssistantMessageEvent`."
106+
isCorrect: false
107+
explanation: "Incorrect. `AssistantMessageEvent` contains a portion of the agent's response text, but it doesn't indicate that all processing is complete."
108+
- content: "`ToolExecutionCompleteEvent`."
109+
isCorrect: false
110+
explanation: "Incorrect. `ToolExecutionCompleteEvent` signals that a specific tool call finished, but the agent might still need to process more tool calls or generate more responses."
111+
- content: "`SessionIdleEvent`."
112+
isCorrect: true
113+
explanation: "Correct. `SessionIdleEvent` signals that the agent finished all processing for the current request, including any tool calls, and the response is complete."
114+
- content: "What does the `SystemMessageMode.Replace` setting do in a session configuration?"
115+
choices:
116+
- content: "It replaces the AI model assigned to the session with a different model."
117+
isCorrect: false
118+
explanation: "Incorrect. The `SystemMessageMode` controls system prompt behavior, not model selection. Model selection is handled by the `Model` property."
119+
- content: "It replaces the default system message with a custom system prompt."
120+
isCorrect: true
121+
explanation: "Correct. Setting the mode to `Replace` ensures the custom system prompt entirely replaces the default system message, giving the developer full control over the agent's role and behavior definition."
122+
- content: "It replaces all existing tool definitions with a new set of tools."
123+
isCorrect: false
124+
explanation: "Incorrect. `SystemMessageMode` affects only the system prompt configuration, not tool definitions."
125+
- content: "Which event type should a developer subscribe to when streaming the agent's response token by token in a chat UI?"
126+
choices:
127+
- content: "`AssistantMessageEvent`."
128+
isCorrect: false
129+
explanation: "Incorrect. `AssistantMessageEvent` provides the complete response, not incremental tokens. It's used for nonstreaming scenarios."
130+
- content: "`AssistantMessageDeltaEvent`."
131+
isCorrect: true
132+
explanation: "Correct. `AssistantMessageDeltaEvent` provides incremental text fragments through the `DeltaContent` property, which the developer can render in real time for a responsive chat experience."
133+
- content: "`SessionIdleEvent`."
134+
isCorrect: false
135+
explanation: "Incorrect. `SessionIdleEvent` signals that processing is complete, but it doesn't provide response content for streaming."
136+
- content: "What pattern gives a customer-facing agent access to product information and FAQs beyond the AI model's training data?"
137+
choices:
138+
- content: "Fine-tuning the AI model with the company's proprietary data."
139+
isCorrect: false
140+
explanation: "Incorrect. While fine-tuning can be useful, the recommended pattern for grounding agents in current documentation uses a different approach."
141+
- content: "Retrieval-Augmented Generation (RAG) using a knowledge base search tool."
142+
isCorrect: true
143+
explanation: "Correct. RAG grounds the agent's answers in the developer's actual documentation by providing a search tool like `search_knowledge_base(query)` that queries the developer's FAQ system or documentation."
144+
- content: "Increasing the model's context window size to include all company documents."
145+
isCorrect: false
146+
explanation: "Incorrect. Context window limits make it impractical to include all company documents, and RAG provides a more efficient and maintainable approach."
147+
- content: "Why should back-office agents use tools for mathematical operations rather than relying on the AI model?"
148+
choices:
149+
- content: "Tools are faster than the AI model at performing complex calculations."
150+
isCorrect: false
151+
explanation: "Incorrect. While tools can be faster, speed isn't the primary reason for using tools for math operations."
152+
- content: "Tools produce reliable results, while the AI model might introduce arithmetic errors."
153+
isCorrect: true
154+
explanation: "Correct. In enterprise processes where accuracy is critical, using tools like `calculate_tax(amount, rate)` for mathematical operations ensures deterministic, reliable results."
155+
- content: "Tools don't count toward the session's token usage limit."
156+
isCorrect: false
157+
explanation: "Incorrect. The primary reason is reliability and accuracy, not token usage considerations."
158+
- content: "What approach should be used when a back-office agent is triggered by monitoring alerts or webhooks?"
159+
choices:
160+
- content: "Process all alerts in a single shared session for efficiency."
161+
isCorrect: false
162+
explanation: "Incorrect. Using a shared session risks carry-over confusion between unrelated operations."
163+
- content: "Queue all alerts and process them in a daily batch job."
164+
isCorrect: false
165+
explanation: "Incorrect. Delayed processing defeats the purpose of event-driven automation, especially for time-sensitive alerts like system incidents."
166+
- content: "Process each event in an independent session to prevent context mixing between unrelated operations."
167+
isCorrect: true
168+
explanation: "Correct. Stateless execution with independent sessions for each event prevents context from one operation interfering with another, ensuring reliable processing."
169+
- content: "What iterative workflow does an AI agent follow when processing a request?"
170+
choices:
171+
- content: "Research, implement, test, deploy, and monitor."
172+
isCorrect: false
173+
explanation: "Incorrect. These steps describe a software development lifecycle, not an AI agent's processing workflow."
174+
- content: "Receive input, reason and plan, act, observe, and iterate or respond."
175+
isCorrect: true
176+
explanation: "Correct. This cycle repeats until the agent's goal is met: receive the user's input, reason about what to do, take an action like calling a tool, observe the result, and either iterate for more steps or produce a final response."
177+
- content: "Parse request, validate data, execute query, format output, and return response."
178+
isCorrect: false
179+
explanation: "Incorrect. These steps describe a traditional request-response pipeline, not the adaptive, iterative workflow that AI agents use."

0 commit comments

Comments
 (0)