mirror of
https://github.com/microsoft/agent-framework.git
synced 2026-06-16 21:04:09 +08:00
48 lines
2.2 KiB
Plaintext
48 lines
2.2 KiB
Plaintext
<#@ template language="C#" inherits="ActionTemplate" visibility="internal" linePragmas="false" #>
|
|
<#@ output extension=".cs" #>
|
|
<#@ assembly name="System.Core" #>
|
|
<#@ import namespace="System.Collections.Generic" #>
|
|
<#@ import namespace="Microsoft.Agents.AI.Workflows.Declarative.Extensions" #>
|
|
<#@ import namespace="Microsoft.Agents.ObjectModel" #>
|
|
<#@ import namespace="Microsoft.Extensions.AI" #>
|
|
<#@ include file="Snippets/AssignVariableTemplate.tt" once="true" #>
|
|
<#@ include file="Snippets/EvaluateBoolExpressionTemplate.tt" once="true" #>
|
|
<#@ include file="Snippets/EvaluateListExpressionTemplate.tt" once="true" #>
|
|
<#@ include file="Snippets/EvaluateStringExpressionTemplate.tt" once="true" #>
|
|
/// <summary>
|
|
/// Invokes an agent to process messages and return a response within a conversation context.
|
|
/// </summary>
|
|
internal sealed class <#= this.Name #>Executor(FormulaSession session, ResponseAgentProvider agentProvider) : AgentExecutor(id: "<#= this.Id #>", session, agentProvider)
|
|
{
|
|
// <inheritdoc />
|
|
protected override async ValueTask<object?> ExecuteAsync(IWorkflowContext context, CancellationToken cancellationToken)
|
|
{<#
|
|
EvaluateStringExpression(this.Model.Agent.Name, "agentName", isNullable: true);#>
|
|
|
|
if (string.IsNullOrWhiteSpace(agentName))
|
|
{
|
|
throw new DeclarativeActionException($"Agent name must be defined: {this.Id}");
|
|
}
|
|
<#
|
|
EvaluateStringExpression(this.Model.ConversationId, "conversationId", isNullable: true);
|
|
EvaluateBoolExpression(this.Model.Output?.AutoSend, "autoSend", defaultValue: true);
|
|
EvaluateListExpression<ChatMessage>(this.Model.Input?.Messages, "inputMessages");#>
|
|
|
|
AgentResponse agentResponse =
|
|
await InvokeAgentAsync(
|
|
context,
|
|
agentName,
|
|
conversationId,
|
|
autoSend,
|
|
inputMessages,
|
|
cancellationToken).ConfigureAwait(false);
|
|
|
|
if (autoSend)
|
|
{
|
|
await context.AddEventAsync(new AgentResponseEvent(this.Id, agentResponse)).ConfigureAwait(false);
|
|
}
|
|
<#
|
|
AssignVariable(this.Messages, "agentResponse.Messages"); #>
|
|
return default;
|
|
}
|
|
} |