db620d33df
CodeQL / Analyze (csharp) (push) Waiting to run
CodeQL / Analyze (python) (push) Waiting to run
dotnet-build-and-test / dotnet-test-functions (push) Has been cancelled
dotnet-build-and-test / paths-filter (push) Has been cancelled
dotnet-build-and-test / dotnet-build (Debug, windows-latest, net9.0) (push) Has been cancelled
dotnet-build-and-test / dotnet-build (Release, ubuntu-latest, net10.0) (push) Has been cancelled
dotnet-build-and-test / dotnet-build (Release, ubuntu-latest, net8.0) (push) Has been cancelled
dotnet-build-and-test / dotnet-build (Release, windows-latest, net472) (push) Has been cancelled
dotnet-build-and-test / dotnet-test (Release, integration, true, ubuntu-latest, net10.0) (push) Has been cancelled
dotnet-build-and-test / dotnet-test (Release, integration, true, windows-latest, net472) (push) Has been cancelled
dotnet-build-and-test / dotnet-foundry-hosted-it (push) Has been cancelled
dotnet-build-and-test / dotnet-build-and-test-check (push) Has been cancelled
dotnet-build-and-test / Integration Test Report (push) Has been cancelled
40 lines
1.7 KiB
C#
40 lines
1.7 KiB
C#
// Copyright (c) Microsoft. All rights reserved.
|
|
|
|
// This sample demonstrates how to poll for long-running task completion using continuation tokens with an A2A AI agent.
|
|
|
|
using A2A;
|
|
using Microsoft.Agents.AI;
|
|
|
|
var a2aAgentHost = Environment.GetEnvironmentVariable("A2A_AGENT_HOST") ?? throw new InvalidOperationException("A2A_AGENT_HOST is not set.");
|
|
|
|
// Initialize an A2ACardResolver to get an A2A agent card.
|
|
A2ACardResolver agentCardResolver = new(new Uri(a2aAgentHost));
|
|
|
|
// Get the agent card
|
|
AgentCard agentCard = await agentCardResolver.GetAgentCardAsync();
|
|
|
|
// Create an instance of the AIAgent for an existing A2A agent specified by the agent card.
|
|
AIAgent agent = agentCard.AsAIAgent();
|
|
|
|
AgentSession session = await agent.CreateSessionAsync();
|
|
|
|
// AllowBackgroundResponses must be true so the server returns immediately with a continuation token
|
|
// instead of blocking until the task is complete.
|
|
AgentRunOptions options = new() { AllowBackgroundResponses = true };
|
|
|
|
// Start the initial run with a long-running task.
|
|
AgentResponse response = await agent.RunAsync("Conduct a comprehensive analysis of quantum computing applications in cryptography, including recent breakthroughs, implementation challenges, and future roadmap. Please include diagrams and visual representations to illustrate complex concepts.", session, options: options);
|
|
|
|
// Poll until the response is complete.
|
|
while (response.ContinuationToken is { } token)
|
|
{
|
|
// Wait before polling again.
|
|
await Task.Delay(TimeSpan.FromSeconds(2));
|
|
|
|
// Continue with the token.
|
|
response = await agent.RunAsync(session, options: new AgentRunOptions { ContinuationToken = token });
|
|
}
|
|
|
|
// Display the result
|
|
Console.WriteLine(response);
|