// Copyright (c) Microsoft. All rights reserved. using System; using System.Collections.Generic; using Azure.AI.Projects; using Azure.AI.Projects.Agents; using Microsoft.Extensions.Configuration; using Shared.Foundry; using Shared.IntegrationTests; namespace Microsoft.Agents.AI.Workflows.Declarative.IntegrationTests.Agents; internal sealed class PoemAgentProvider(IConfiguration configuration) : AgentProvider(configuration) { protected override async IAsyncEnumerable CreateAgentsAsync(Uri foundryEndpoint) { AIProjectClient aiProjectClient = new(foundryEndpoint, TestAzureCliCredentials.CreateAzureCliCredential()); yield return await aiProjectClient.CreateAgentAsync( agentName: "PoemAgent", agentDefinition: this.DefinePoemAgent(), agentDescription: "Authors original poems"); } private DeclarativeAgentDefinition DefinePoemAgent() => new(this.GetSetting(TestSettings.AzureAIModelDeploymentName)) { Instructions = """ Write a one verse poem on the requested topic in the style of: {{style}}. """, StructuredInputs = { ["style"] = new StructuredInputDefinition { IsRequired = false, DefaultValue = BinaryData.FromString(@"""haiku"""), Description = "The style of poem to write", } } }; }