mirror of
https://github.com/microsoft/agent-framework.git
synced 2026-06-16 21:04:09 +08:00
50 lines
2.7 KiB
C#
50 lines
2.7 KiB
C#
// Copyright (c) Microsoft. All rights reserved.
|
|
|
|
using Microsoft.Agents.AI.DurableTask;
|
|
using Microsoft.Azure.Functions.Worker.Builder;
|
|
using Microsoft.Azure.Functions.Worker.Core.FunctionMetadata;
|
|
using Microsoft.Extensions.DependencyInjection;
|
|
using Microsoft.Extensions.DependencyInjection.Extensions;
|
|
using Microsoft.Extensions.Hosting;
|
|
|
|
namespace Microsoft.Agents.AI.Hosting.AzureFunctions;
|
|
|
|
/// <summary>
|
|
/// Extension methods for the <see cref="FunctionsApplicationBuilder"/> class.
|
|
/// </summary>
|
|
public static class FunctionsApplicationBuilderExtensions
|
|
{
|
|
/// <summary>
|
|
/// Configures the application to use durable agents with a builder pattern.
|
|
/// </summary>
|
|
/// <param name="builder">The functions application builder.</param>
|
|
/// <param name="configure">A delegate to configure the durable agents.</param>
|
|
/// <returns>The functions application builder.</returns>
|
|
public static FunctionsApplicationBuilder ConfigureDurableAgents(
|
|
this FunctionsApplicationBuilder builder,
|
|
Action<DurableAgentsOptions> configure)
|
|
{
|
|
ArgumentNullException.ThrowIfNull(configure);
|
|
|
|
// The main agent services registration is done in Microsoft.DurableTask.Agents.
|
|
builder.Services.ConfigureDurableAgents(configure);
|
|
|
|
builder.Services.TryAddSingleton<IFunctionsAgentOptionsProvider>(_ =>
|
|
new DefaultFunctionsAgentOptionsProvider(DurableAgentsOptionsExtensions.GetAgentOptionsSnapshot()));
|
|
|
|
builder.Services.AddSingleton<IFunctionMetadataTransformer, DurableAgentFunctionMetadataTransformer>();
|
|
|
|
// Handling of built-in function execution for Agent HTTP, MCP tool, or Entity invocations.
|
|
builder.UseWhen<BuiltInFunctionExecutionMiddleware>(static context =>
|
|
string.Equals(context.FunctionDefinition.EntryPoint, BuiltInFunctions.RunAgentHttpFunctionEntryPoint, StringComparison.Ordinal) ||
|
|
string.Equals(context.FunctionDefinition.EntryPoint, BuiltInFunctions.RunAgentMcpToolFunctionEntryPoint, StringComparison.Ordinal) ||
|
|
string.Equals(context.FunctionDefinition.EntryPoint, BuiltInFunctions.RunWorkflowOrechstrtationFunctionEntryPoint, StringComparison.Ordinal) ||
|
|
string.Equals(context.FunctionDefinition.EntryPoint, BuiltInFunctions.RunWorkflowOrechstrtationHttpFunctionEntryPoint, StringComparison.Ordinal) ||
|
|
string.Equals(context.FunctionDefinition.EntryPoint, BuiltInFunctions.InvokeWorkflowActivityFunctionEntryPoint, StringComparison.Ordinal) ||
|
|
string.Equals(context.FunctionDefinition.EntryPoint, BuiltInFunctions.RunAgentEntityFunctionEntryPoint, StringComparison.Ordinal));
|
|
builder.Services.AddSingleton<BuiltInFunctionExecutor>();
|
|
|
|
return builder;
|
|
}
|
|
}
|