File: Program.cs
Web Access
Project: src\playground\FoundryAgents\PromptAgentChat\PromptAgentChat.csproj (PromptAgentChat)
// 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.Extensions.OpenAI;
using Azure.AI.Projects;
using Azure.Identity;
 
var builder = WebApplication.CreateBuilder(args);
 
builder.AddServiceDefaults();
 
var app = builder.Build();
 
app.MapGet("/", () => "Prompt Agent Chat - use /chat?message=... (joker) or /research?message=... (research agent with Bing)");
 
app.MapGet("/chat", async (string? message) =>
{
    return await InvokeAgentAsync("joker-agent", message ?? "Tell me a joke!");
});
 
app.MapGet("/research", async (string? message) =>
{
    return await InvokeAgentAsync("research-agent", message ?? "What are the latest Aspire features?");
});
 
static async Task<IResult> InvokeAgentAsync(string agentResourceName, string message)
{
    var environmentPrefix = agentResourceName.Replace('-', '_').ToUpperInvariant();
    var projectEndpoint = Environment.GetEnvironmentVariable($"{environmentPrefix}_PROJECTENDPOINT")
        ?? throw new InvalidOperationException($"{environmentPrefix}_PROJECTENDPOINT is not set.");
    var agentName = Environment.GetEnvironmentVariable($"{environmentPrefix}_AGENTNAME")
        ?? throw new InvalidOperationException($"{environmentPrefix}_AGENTNAME is not set.");
 
    var projectClient = new AIProjectClient(new Uri(projectEndpoint), new DefaultAzureCredential());
    var agentRef = new AgentReference(name: agentName);
    var responseClient = projectClient.ProjectOpenAIClient.GetProjectResponsesClientForAgent(agentRef);
    var response = await responseClient.CreateResponseAsync(message);
    var outputText = response.Value.GetOutputText();
 
    return Results.Ok(new
    {
        Agent = agentName,
        Message = message,
        Response = outputText
    });
}
 
app.Run();