.Net: Added Azure AI Persistent Agents (#81)

* Added PersistentAgentsChatClient

* Added integration tests

* Small fixes

* Added sample

* Added TODO for tools

* Small rename

* Removed user-secrets id

* Renamed project

* Fixed warning

* Fixed warning

* More fixes

* More fixes
This commit is contained in:
Dmytro Struk
2025-06-19 14:01:26 +00:00
committed by GitHub
parent d1d69af482
commit 47dcad6b49
13 changed files with 708 additions and 0 deletions
@@ -27,6 +27,7 @@
<ItemGroup>
<ProjectReference Include="..\..\src\Microsoft.Agents\Microsoft.Agents.csproj" />
<ProjectReference Include="..\..\src\Microsoft.Extensions.AI.AzureAIAgentsPersistent\Microsoft.Extensions.AI.AzureAIAgentsPersistent.csproj" />
</ItemGroup>
<ItemGroup>
@@ -0,0 +1,64 @@
// Copyright (c) Microsoft. All rights reserved.
using Azure.AI.Agents.Persistent;
using Azure.Identity;
using Microsoft.Agents;
using Microsoft.Extensions.AI;
using Microsoft.Extensions.AI.AzureAIAgentsPersistent;
using Microsoft.Shared.Samples;
namespace Providers;
/// <summary>
/// Shows how to use <see cref="ChatClientAgent"/> with Azure AI Persistent Agents.
/// </summary>
/// <remarks>
/// Running "az login" command in terminal is required for authentication with Azure AI service.
/// </remarks>
public sealed class ChatClientAgent_With_AzureAIAgentsPersistent(ITestOutputHelper output) : AgentSample(output)
{
private const string JokerName = "Joker";
private const string JokerInstructions = "You are good at telling jokes.";
[Fact]
public async Task RunWithAzureAIAgentsPersistent()
{
// Get a client to create server side agents with.
var persistentAgentsClient = new PersistentAgentsClient(TestConfiguration.AzureAI.Endpoint, new AzureCliCredential());
// Create a server side agent to work with.
var persistentAgentResponse = await persistentAgentsClient.Administration.CreateAgentAsync(
model: TestConfiguration.AzureAI.DeploymentName,
name: JokerName,
instructions: JokerInstructions);
var persistentAgent = persistentAgentResponse.Value;
// Get the chat client to use for the agent.
using var chatClient = persistentAgentsClient.AsIChatClient(persistentAgent.Id);
// Define the agent
ChatClientAgent agent = new(chatClient);
// Start a new thread for the agent conversation.
AgentThread thread = agent.GetNewThread();
// Respond to user input
await RunAgentAsync("Tell me a joke about a pirate.");
await RunAgentAsync("Now add some emojis to the joke.");
// Local function to run agent and display the conversation messages for the thread.
async Task RunAgentAsync(string input)
{
this.WriteUserMessage(input);
var response = await agent.RunAsync(input, thread);
this.WriteResponseOutput(response);
}
// Cleanup
await persistentAgentsClient.Threads.DeleteThreadAsync(thread.Id);
await persistentAgentsClient.Administration.DeleteAgentAsync(persistentAgent.Id);
}
}