mirror of
https://github.com/microsoft/agent-framework.git
synced 2026-06-16 21:04:09 +08:00
904a5b843e
* Python: .NET Samples - Restructure and Improve Samples (Feature Branch) (#4091) * Moved by agent (#4094) * Fix readme links * .NET Samples - Create `04-hosting` learning path step (#4098) * Agent move * Agent reorderd * Remove A2A section from README Removed A2A section from the Getting Started README. * Agent fixed links * Fix broken sample links in durable-agents README (#4101) * Initial plan * Fix broken internal links in documentation Co-authored-by: crickman <66376200+crickman@users.noreply.github.com> * Revert template link changes; keep only durable-agents README fix Co-authored-by: crickman <66376200+crickman@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: crickman <66376200+crickman@users.noreply.github.com> * .NET Samples - Create `03-workflows` learning path step (#4102) * Fix solution project path * Python: Fix broken markdown links to repo resources (outside /docs) (#4105) * Initial plan * Fix broken markdown links to repo resources Co-authored-by: crickman <66376200+crickman@users.noreply.github.com> * Update README to rename .NET Workflows Samples section --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: crickman <66376200+crickman@users.noreply.github.com> * .NET Samples - Create `02-agents` learning path step (#4107) * .NET: Fix broken relative link in GroupChatToolApproval README (#4108) * Initial plan * Fix broken link in GroupChatToolApproval README Co-authored-by: crickman <66376200+crickman@users.noreply.github.com> --------- Co-authored-by: copilot-swe-agent[bot] <198982749+Copilot@users.noreply.github.com> Co-authored-by: crickman <66376200+crickman@users.noreply.github.com> * Update labeler configuration for workflow samples * .NET - Reorder Agents samples to start from Step01 instead of Step04 (#4110) * Fix solution * Resolve new sample paths * Move new AgentSkills and AgentWithMemory_Step04 samples * Fix link * Fix readme path * fix: update stale dotnet/samples/Durable path reference in AGENTS.md Co-authored-by: crickman <66376200+crickman@users.noreply.github.com> * Moved new sample * Update solution * Resolve merge (new sample) * Sync to new sample - FoundryAgents_Step21_BingCustomSearch * Updated README * .NET Samples - Configuration Naming Update (#4149) * .NET: Restore AzureFunctions index parity with ConsoleApps under DurableAgents samples (#4221) * Clean-up `05_host_your_agent` * Config setting consistency * Refine samples * AGENTS.md * Move new samples * Re-order samples * Move new project and fixup solution * Fixup model config * Fix up new UT project --------- Co-authored-by: Copilot <198982749+Copilot@users.noreply.github.com>
2.9 KiB
2.9 KiB
Group Chat with Tool Approval Sample
This sample demonstrates how to use GroupChatBuilder with tools that require human approval before execution. A group of specialized agents collaborate on a task, and sensitive tool calls trigger human-in-the-loop approval.
What This Sample Demonstrates
- Using a custom
GroupChatManagerwith agents that have approval-required tools - Handling
FunctionApprovalRequestContentin group chat scenarios - Multi-round group chat with tool approval interruption and resumption
- Integrating tool call approvals with multi-agent workflows where different agents have different levels of tool access
How It Works
- A
GroupChatBuilderworkflow is created with multiple specialized agents - A custom
DeploymentGroupChatManagerdetermines which agent speaks next based on conversation state - Agents collaborate on a software deployment task:
- QA Engineer: Runs automated tests
- DevOps Engineer: Checks staging status, creates rollback plan, and deploys to production
- When the deployment agent tries to deploy to production, it triggers an approval request
- The sample simulates human approval and the workflow completes
Key Components
Approval-Required Tools
The DeployToProduction function is wrapped with ApprovalRequiredAIFunction to require human approval:
new ApprovalRequiredAIFunction(AIFunctionFactory.Create(DeployToProduction))
Custom Group Chat Manager
The DeploymentGroupChatManager implements custom speaker selection logic:
- First iteration: QA Engineer runs tests
- Subsequent iterations: DevOps Engineer handles deployment tasks
Approval Handling
The sample demonstrates continuous event-driven execution with inline approval handling:
- The workflow runs in a single event loop.
- When an approval-required tool is invoked, the loop surfaces an approval request, processes the (simulated) human response, and then continues execution without starting a separate phase.
Prerequisites
- Azure OpenAI or OpenAI configured with the required environment variables
AZURE_OPENAI_ENDPOINTenvironment variable setAZURE_OPENAI_DEPLOYMENT_NAMEenvironment variable (defaults to "gpt-4o-mini")
Running the Sample
dotnet run
Expected Output
The sample will show:
- QA Engineer running tests
- DevOps Engineer checking staging and creating rollback plan
- An approval request for production deployment
- Simulated approval response
- DevOps Engineer completing the deployment
- Workflow completion message
Related Samples
- Agent Function Tools with Approvals - Basic function approval pattern
- Agent Workflow Patterns - Group chat without approvals
- Human-in-the-Loop Basic - Workflow-level human interaction