Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
Show all changes
24 commits
Select commit Hold shift + click to select a range
7c64a38
Add intro to agents doc (#48781)
luisquintanilla Oct 2, 2025
d80a2b0
Update CODEOWNERS for .NET Architecture Guide (#48870)
gewarren Oct 2, 2025
566cf07
Update package index with latest published versions (#48877)
azure-sdk Oct 2, 2025
6b69d43
Update unit-testing-with-dotnet-test.md (#48873)
Youssef1313 Oct 2, 2025
d69c8ac
add FS0067 compiler message (#48442)
StuartMosquera Oct 3, 2025
702157f
Add formatting guidance for multiline lazy expressions in F# (#48876)
Copilot Oct 3, 2025
d19e83b
Fix F# property syntax documentation for attribute positioning (#48875)
Copilot Oct 3, 2025
2d8e549
Document verbatim interpolated strings using $@ and @$ syntax in F# (…
Copilot Oct 3, 2025
cd7e8c2
Clarify Azure Blob Storage F# documentation uses modern Azure.Storage…
Copilot Oct 3, 2025
e6f6b19
Update operator-overloading.md to include Colon (#48765)
roboz0r Oct 3, 2025
090c434
Clarify that first pipe character is optional in discriminated union …
Copilot Oct 3, 2025
a700eed
Add wildcard pattern usage examples to F# documentation (#48741)
Copilot Oct 3, 2025
0b4a3ee
Update package index with latest published versions (#48883)
azure-sdk Oct 3, 2025
0de9e89
Replace deprecated type provider with Entity Framework Core in F# que…
Copilot Oct 3, 2025
8414810
Update ownership of .NET tools documentation (#48882)
meaghanlewis Oct 3, 2025
d45e66e
Initial docs for dotnet package update (#48884)
zivkan Oct 3, 2025
3b9cc94
Add new command reference articles (#48788)
meaghanlewis Oct 3, 2025
8cde0f5
Update package index with latest published versions (#48892)
azure-sdk Oct 3, 2025
fd4d88a
Document MSTest analyzers MSTEST0051-MSTEST0055 (#48813)
Copilot Oct 3, 2025
5ce6253
Modernize code examples for CA rules (#48745)
gewarren Oct 3, 2025
4a46a34
Revise AI highlight example (#48880)
anandmeg Oct 3, 2025
eec3f16
Update package index with latest published versions (#48895)
azure-sdk Oct 3, 2025
171f14e
Use actual link instead of aka.ms (#48899)
gewarren Oct 3, 2025
0a66e42
resolve merge conflict
gewarren Oct 3, 2025
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 0 additions & 4 deletions .openpublishing.redirection.ai.json
Original file line number Diff line number Diff line change
Expand Up @@ -9,10 +9,6 @@
"redirect_url": "/dotnet/ai/microsoft-extensions-ai",
"redirect_document_id": true
},
{
"source_path_from_root": "/docs/ai/conceptual/agents.md",
"redirect_url": "/dotnet/ai"
},
{
"source_path_from_root": "/docs/ai/conceptual/evaluation-libraries.md",
"redirect_url": "/dotnet/ai/evaluation/libraries",
Expand Down
4 changes: 2 additions & 2 deletions docfx.json
Original file line number Diff line number Diff line change
Expand Up @@ -365,7 +365,7 @@
"docs/core/project-sdk/**/**.md": "gewarren",
"docs/core/runtime-config/**/**.md": "gewarren",
"docs/core/testing/**/**.md": "IEvangelist",
"docs/core/tools/**/**.md": "adegeo",
"docs/core/tools/**/**.md": "meaghanlewis",
"docs/core/tutorials/**/**.md": "meaghanlewis",
"docs/core/versions/**/**.md": "billwagner",
"docs/core/whats-new/**/**.md": "gewarren",
Expand Down Expand Up @@ -458,7 +458,7 @@
"docs/core/project-sdk/**/**.md": "gewarren",
"docs/core/runtime-config/**/**.md": "gewarren",
"docs/core/testing/**/**.md": "dapine",
"docs/core/tools/**/**.md": "adegeo",
"docs/core/tools/**/**.md": "mosagie",
"docs/core/tutorials/**/**.md": "mosagie",
"docs/core/versions/**/**.md": "wiwagn",
"docs/core/whats-new/**/**.md": "gewarren",
Expand Down
96 changes: 96 additions & 0 deletions docs/ai/conceptual/agents.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,96 @@
---
title: Agents
description: Introduction to agents
author: luisquintanilla
ms.author: luquinta
ms.date: 10/01/2025
ms.topic: concept-article
---

# Agents

This article introduces the core concepts behind agents, why they matter, and how they fit into workflows, setting you up to get started building agents in .NET.

## What are agents?

**Agents are systems that accomplish objectives.**

![Components of an agent](../media/agents/agent-components.png)

Agents become more capable when equipped with the following:

- **Reasoning and decision-making**: Powered by LLMs, search algorithms, or planning and decision-making systems.
- **Tool usage**: Access to Model Context Protocol (MCP) servers, code execution, and external APIs.
- **Context awareness**: Informed by chat history, threads, vector stores, enterprise data, or knowledge graphs.

These capabilities allow agents to operate more autonomously, adaptively, and intelligently.

## What are workflows?

As objectives grow in complexity, they need to be broken down into manageable steps. That's where workflows come in.

**Workflows define the sequence of steps required to achieve an objective.**

Imagine you're launching a new feature on your business website. If it's a simple update, you might go from idea to production in a few hours. But for more complex initiatives, the process might include:

- Requirement gathering
- Design and architecture
- Implementation
- Testing
- Deployment

A few important observations:

- Each step might contain subtasks.
- Different specialists might own different phases.
- Progress isn’t always linear. Bugs found during testing might send you back to implementation.
- Success depends on planning, orchestration, and communication across stakeholders.

### Agents + workflows = agentic workflows

Workflows don't require agents, but agents can supercharge them.

When agents are equipped with reasoning, tools, and context, they can optimize workflows.

This is the foundation of multi-agent systems, where agents collaborate within workflows to achieve complex goals.

### Workflow orchestration

Agentic workflows can be orchestrated in a variety of ways. The following are a few of the most common:

- [Sequential](#sequential)
- [Concurrent](#concurrent)
- [Handoff](#handoff)
- [Group chat](#group-chat)

#### Sequential

Agents process tasks one after another, passing results forward.

![Sequential agent orchestration: Task Input → Agent A → Agent B → Agent C → Final Output](../media/agents/sequential-workflow.png)

#### Concurrent

Agents work in parallel, each handling different aspects of the task.

![Concurrent agent orchestration: Task Input → Agents A, B, C → Aggregate Results → Final Output](../media/agents/concurrent-workflow.png)

#### Handoff

Responsibility shifts from one agent to another based on conditions or outcomes.

![Handoff orchestration: Task Input → Agent A Decision → Agent B or Agent A → Agent B Decision → Agent C or Agent B → Final Output](../media/agents/handoff-workflow.png)

#### Group chat

Agents collaborate in a shared conversation, exchanging insights in real-time.

![Group chat orchestration: User and Agents A, B, C collaborate via GroupChat to produce final output](../media/agents/groupchat-workflow.png)

## How can I get started building agents in .NET?

The building blocks in <xref:Microsoft.Extensions.AI> and <xref:Microsoft.Extensions.VectorData> supply the foundations for agents by providing modular components for AI models, tools, and data.

These components serve as the foundation for Microsoft Agent Framework.

For more information, see [Microsoft Agent Framework](/agent-framework/overview/agent-framework-overview).
2 changes: 2 additions & 0 deletions docs/ai/index.yml
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,8 @@ landingContent:
url: overview.md
- text: Microsoft.Extensions.AI libraries
url: microsoft-extensions-ai.md
- text: Microsoft Agent Framework
url: /agent-framework/overview/agent-framework-overview?toc=/dotnet/ai/toc.json&bc=/dotnet/ai/toc.json
- linkListType: get-started
links:
- text: Connect to and prompt an AI model
Expand Down
Binary file added docs/ai/media/agents/agent-components.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/ai/media/agents/concurrent-workflow.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/ai/media/agents/groupchat-workflow.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/ai/media/agents/handoff-workflow.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
Binary file added docs/ai/media/agents/sequential-workflow.png
Loading
Sorry, something went wrong. Reload?
Sorry, we cannot display this file.
Sorry, this file is invalid so it cannot be displayed.
8 changes: 5 additions & 3 deletions docs/ai/toc.yml
Original file line number Diff line number Diff line change
Expand Up @@ -10,9 +10,9 @@ items:
- name: Overview
href: dotnet-ai-ecosystem.md
- name: Microsoft.Extensions.AI
href: microsoft-extensions-ai.md
- name: Semantic Kernel
href: semantic-kernel-dotnet-overview.md
href: microsoft-extensions-ai.md
- name: Microsoft Agent Framework
href: /agent-framework/overview/agent-framework-overview?toc=/dotnet/ai/toc.json&bc=/dotnet/ai/toc.json
- name: C# SDK for MCP
href: get-started-mcp.md
- name: Quickstarts
Expand Down Expand Up @@ -41,6 +41,8 @@ items:
items:
- name: How generative AI and LLMs work
href: conceptual/how-genai-and-llms-work.md
- name: Building agents in .NET
href: conceptual/agents.md
- name: Tokens
href: conceptual/understanding-tokens.md
- name: Embeddings
Expand Down
18 changes: 9 additions & 9 deletions docs/azure/includes/dotnet-all.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@
| Communication Email | NuGet [1.0.2](https://www.nuget.org/packages/Azure.Communication.Email/1.0.2)<br>NuGet [1.1.0-beta.2](https://www.nuget.org/packages/Azure.Communication.Email/1.1.0-beta.2) | [docs](/dotnet/api/overview/azure/Communication.Email-readme) | GitHub [1.0.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Communication.Email_1.0.2/sdk/communication/Azure.Communication.Email/)<br>GitHub [1.1.0-beta.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Communication.Email_1.1.0-beta.2/sdk/communication/Azure.Communication.Email/) |
| Communication Identity | NuGet [1.3.1](https://www.nuget.org/packages/Azure.Communication.Identity/1.3.1)<br>NuGet [1.4.0-beta.1](https://www.nuget.org/packages/Azure.Communication.Identity/1.4.0-beta.1) | [docs](/dotnet/api/overview/azure/Communication.Identity-readme) | GitHub [1.3.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Communication.Identity_1.3.1/sdk/communication/Azure.Communication.Identity/)<br>GitHub [1.4.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Communication.Identity_1.4.0-beta.1/sdk/communication/Azure.Communication.Identity/) |
| Communication JobRouter | NuGet [1.0.0](https://www.nuget.org/packages/Azure.Communication.JobRouter/1.0.0)<br>NuGet [1.1.0-beta.1](https://www.nuget.org/packages/Azure.Communication.JobRouter/1.1.0-beta.1) | [docs](/dotnet/api/overview/azure/Communication.JobRouter-readme) | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Communication.JobRouter_1.0.0/sdk/communication/Azure.Communication.JobRouter/)<br>GitHub [1.1.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Communication.JobRouter_1.1.0-beta.1/sdk/communication/Azure.Communication.JobRouter/) |
| Communication Messages | NuGet [1.1.0](https://www.nuget.org/packages/Azure.Communication.Messages/1.1.0)<br>NuGet [1.3.0-beta.1](https://www.nuget.org/packages/Azure.Communication.Messages/1.3.0-beta.1) | [docs](/dotnet/api/overview/azure/Communication.Messages-readme) | GitHub [1.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Communication.Messages_1.1.0/sdk/communication/Azure.Communication.Messages/)<br>GitHub [1.3.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Communication.Messages_1.3.0-beta.1/sdk/communication/Azure.Communication.Messages/) |
| Communication Messages | NuGet [1.1.0](https://www.nuget.org/packages/Azure.Communication.Messages/1.1.0)<br>NuGet [1.3.0-beta.2](https://www.nuget.org/packages/Azure.Communication.Messages/1.3.0-beta.2) | [docs](/dotnet/api/overview/azure/Communication.Messages-readme) | GitHub [1.1.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Communication.Messages_1.1.0/sdk/communication/Azure.Communication.Messages/)<br>GitHub [1.3.0-beta.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Communication.Messages_1.3.0-beta.2/sdk/communication/Azure.Communication.Messages/) |
| Communication Phone Numbers | NuGet [1.5.0](https://www.nuget.org/packages/Azure.Communication.PhoneNumbers/1.5.0) | [docs](/dotnet/api/overview/azure/Communication.PhoneNumbers-readme) | GitHub [1.5.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Communication.PhoneNumbers_1.5.0/sdk/communication/Azure.Communication.PhoneNumbers/) |
| Communication Rooms | NuGet [1.2.0](https://www.nuget.org/packages/Azure.Communication.Rooms/1.2.0) | [docs](/dotnet/api/overview/azure/Communication.Rooms-readme) | GitHub [1.2.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Communication.Rooms_1.2.0/sdk/communication/Azure.Communication.Rooms/) |
| Communication SMS | NuGet [1.0.2](https://www.nuget.org/packages/Azure.Communication.Sms/1.0.2)<br>NuGet [1.1.0-beta.3](https://www.nuget.org/packages/Azure.Communication.Sms/1.1.0-beta.3) | [docs](/dotnet/api/overview/azure/Communication.Sms-readme) | GitHub [1.0.2](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Communication.Sms_1.0.2/sdk/communication/Azure.Communication.Sms/)<br>GitHub [1.1.0-beta.3](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Communication.Sms_1.1.0-beta.3/sdk/communication/Azure.Communication.Sms/) |
Expand Down Expand Up @@ -116,7 +116,7 @@
| Text Translation | NuGet [1.0.0](https://www.nuget.org/packages/Azure.AI.Translation.Text/1.0.0) | [docs](/dotnet/api/overview/azure/AI.Translation.Text-readme) | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.Translation.Text_1.0.0/sdk/translation/Azure.AI.Translation.Text/) |
| Time Series Insights | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.IoT.TimeSeriesInsights/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/IoT.TimeSeriesInsights-readme?view=azure-dotnet-preview&amp;preserve-view=true) | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.IoT.TimeSeriesInsights_1.0.0-beta.1/sdk/timeseriesinsights/Azure.IoT.TimeSeriesInsights/) |
| TimeZone | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.Maps.TimeZones/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/Maps.TimeZones-readme?view=azure-dotnet-preview&amp;preserve-view=true) | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Maps.TimeZones_1.0.0-beta.1/sdk/maps/Azure.Maps.TimeZones/) |
| unknown | NuGet [1.0.0-beta.4](https://www.nuget.org/packages/Azure.AI.VoiceLive/1.0.0-beta.4) | [docs](/dotnet/api/overview/azure/AI.VoiceLive-readme?view=azure-dotnet-preview&amp;preserve-view=true) | GitHub [1.0.0-beta.4](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.VoiceLive_1.0.0-beta.4/sdk/ai/Azure.AI.VoiceLive/) |
| unknown | NuGet [1.0.0](https://www.nuget.org/packages/Azure.AI.VoiceLive/1.0.0) | [docs](/dotnet/api/overview/azure/AI.VoiceLive-readme) | GitHub [1.0.0](https://github.com/Azure/azure-sdk-for-net/tree/Azure.AI.VoiceLive_1.0.0/sdk/ai/Azure.AI.VoiceLive/) |
| unknown | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.Analytics.OnlineExperimentation/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/Analytics.OnlineExperimentation-readme?view=azure-dotnet-preview&amp;preserve-view=true) | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Analytics.OnlineExperimentation_1.0.0-beta.1/sdk/onlineexperimentation/Azure.Analytics.OnlineExperimentation/) |
| unknown | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.Projects/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/Projects-readme?view=azure-dotnet-preview&amp;preserve-view=true) | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Projects_1.0.0-beta.1/sdk/cloudmachine/Azure.Projects/) |
| unknown | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/Azure.Projects.AI/1.0.0-beta.1) | [docs](/dotnet/api/overview/azure/Projects.AI-readme?view=azure-dotnet-preview&amp;preserve-view=true) | GitHub [1.0.0-beta.1](https://github.com/Azure/azure-sdk-for-net/tree/Azure.Projects.AI_1.0.0-beta.1/sdk/cloudmachine/Azure.Projects.AI/) |
Expand Down Expand Up @@ -419,13 +419,13 @@
| Speech Extension Telemetry | NuGet [1.46.0](https://www.nuget.org/packages/Microsoft.CognitiveServices.Speech.Extension.Telemetry/1.46.0) | | |
| System Net Client Model | NuGet [1.0.0-beta.1](https://www.nuget.org/packages/System.Net.ClientModel/1.0.0-beta.1) | | |
| Unknown Display Name | NuGet [0.13.0-preview](https://www.nuget.org/packages/Azure.Iot.Operations.Connector/0.13.0-preview) | | |
| Unknown Display Name | NuGet [0.8.3](https://www.nuget.org/packages/Azure.Mcp/0.8.3) | | |
| Unknown Display Name | NuGet [0.8.3](https://www.nuget.org/packages/Azure.Mcp.linux-arm64/0.8.3) | | |
| Unknown Display Name | NuGet [0.8.3](https://www.nuget.org/packages/Azure.Mcp.linux-x64/0.8.3) | | |
| Unknown Display Name | NuGet [0.8.3](https://www.nuget.org/packages/Azure.Mcp.osx-arm64/0.8.3) | | |
| Unknown Display Name | NuGet [0.8.3](https://www.nuget.org/packages/Azure.Mcp.osx-x64/0.8.3) | | |
| Unknown Display Name | NuGet [0.8.3](https://www.nuget.org/packages/Azure.Mcp.win-arm64/0.8.3) | | |
| Unknown Display Name | NuGet [0.8.3](https://www.nuget.org/packages/Azure.Mcp.win-x64/0.8.3) | | |
| Unknown Display Name | NuGet [0.8.4](https://www.nuget.org/packages/Azure.Mcp/0.8.4) | | |
| Unknown Display Name | NuGet [0.8.4](https://www.nuget.org/packages/Azure.Mcp.linux-arm64/0.8.4) | | |
| Unknown Display Name | NuGet [0.8.4](https://www.nuget.org/packages/Azure.Mcp.linux-x64/0.8.4) | | |
| Unknown Display Name | NuGet [0.8.4](https://www.nuget.org/packages/Azure.Mcp.osx-arm64/0.8.4) | | |
| Unknown Display Name | NuGet [0.8.4](https://www.nuget.org/packages/Azure.Mcp.osx-x64/0.8.4) | | |
| Unknown Display Name | NuGet [0.8.4](https://www.nuget.org/packages/Azure.Mcp.win-arm64/0.8.4) | | |
| Unknown Display Name | NuGet [0.8.4](https://www.nuget.org/packages/Azure.Mcp.win-x64/0.8.4) | | |
| Unknown Display Name | NuGet [0.1.3-preview.2](https://www.nuget.org/packages/Microsoft.Azure.Cosmos.Aot/0.1.3-preview.2) | | |
| Unknown Display Name | NuGet [0.2.802](https://www.nuget.org/packages/Microsoft.Azure.Mcp.AzTypes.Internal.Compact/0.2.802) | | |
| Unknown Display Name | NuGet [1.1.2-preview](https://www.nuget.org/packages/Microsoft.Azure.WebJobs.Extensions.AzureCosmosDb.Mongo/1.1.2-preview) | | |
Expand Down
Loading
Loading