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
55 lines
1.9 KiB
C#
55 lines
1.9 KiB
C#
// Copyright (c) Microsoft. All rights reserved.
|
|
|
|
using System.ComponentModel;
|
|
using Azure.Identity;
|
|
using Microsoft.Agents.AI;
|
|
using Microsoft.Agents.AI.Hosting;
|
|
using Microsoft.Extensions.AI;
|
|
|
|
var builder = WebApplication.CreateBuilder(args);
|
|
|
|
builder.AddServiceDefaults();
|
|
|
|
builder.AddAzureChatCompletionsClient(connectionName: "foundry",
|
|
configureSettings: settings =>
|
|
{
|
|
// WARNING: DefaultAzureCredential is convenient for development but requires careful consideration in production.
|
|
// In production, consider using a specific credential (e.g., ManagedIdentityCredential) to avoid
|
|
// latency issues, unintended credential probing, and potential security risks from fallback mechanisms.
|
|
settings.TokenCredential = new DefaultAzureCredential();
|
|
settings.EnableSensitiveTelemetryData = builder.Environment.IsDevelopment();
|
|
})
|
|
.AddChatClient("gpt41");
|
|
|
|
builder.AddAIAgent("editor", (sp, key) =>
|
|
{
|
|
var chatClient = sp.GetRequiredService<IChatClient>();
|
|
return new ChatClientAgent(
|
|
chatClient,
|
|
name: key,
|
|
instructions: "You edit short stories to improve grammar and style, ensuring the stories are less than 300 words. Once finished editing, you select a title and format the story for publishing.",
|
|
tools: [AIFunctionFactory.Create(FormatStory)]
|
|
);
|
|
});
|
|
|
|
// Register services for OpenAI responses and conversations
|
|
builder.Services.AddOpenAIResponses();
|
|
builder.Services.AddOpenAIConversations();
|
|
|
|
var app = builder.Build();
|
|
|
|
// Map OpenAI API endpoints — DevUI aggregator routes requests here
|
|
app.MapOpenAIResponses();
|
|
app.MapOpenAIConversations();
|
|
|
|
app.MapDefaultEndpoints();
|
|
|
|
app.Run();
|
|
|
|
[Description("Formats the story for publication, revealing its title.")]
|
|
static string FormatStory(string title, string story) => $"""
|
|
**Title**: {title}
|
|
|
|
{story}
|
|
""";
|