File: HostedAgent\PromptAgentConfiguration.cs
Web Access
Project: src\src\Aspire.Hosting.Foundry\Aspire.Hosting.Foundry.csproj (Aspire.Hosting.Foundry)
// Licensed to the .NET Foundation under one or more agreements.
// The .NET Foundation licenses this file to you under the MIT license.
 
using Azure.AI.Projects;
using Azure.AI.Projects.OpenAI;
 
namespace Aspire.Hosting.Foundry;
 
/// <summary>
/// A configuration helper for Python hosted agents.
///
/// This is used instead of AzureAgentVersionCreationOptions to provide better static
/// typing of the agent definition.
/// </summary>
public class PromptAgentConfiguration(string model, string? instructions)
{
    /// <summary>
    /// The description of the prompt agent.
    /// </summary>
    public string Description { get; set; } = "Prompt Agent";
 
    /// <summary>
    /// The model of the prompt agent.
    /// </summary>
    public string Model { get; set; } = model;
 
    /// <summary>
    /// The "system prompt" of the prompt agent.
    /// </summary>
    public string? Instructions { get; set; } = instructions;
 
    /// <summary>
    /// Additional metadata to associate with the hosted agent.
    /// </summary>
    public IDictionary<string, string> Metadata { get; init; } = new Dictionary<string, string>()
    {
        { "DeployedBy", "Aspire Hosting Framework" },
        { "DeployedOn", DateTime.UtcNow.ToString("o") }
    };
 
    /// <summary>
    /// Converts this configuration to an <see cref="AgentVersionCreationOptions"/> instance.
    /// </summary>
    public AgentVersionCreationOptions ToAgentVersionCreationOptions()
    {
        var def = new PromptAgentDefinition(Model)
        {
            Instructions = Instructions ?? "",
        };
        var options = new AgentVersionCreationOptions(def)
        {
            Description = Description,
        };
        foreach (var kvp in Metadata)
        {
            options.Metadata[kvp.Key] = kvp.Value;
        }
        return options;
    }
}