Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 4 additions & 0 deletions DurableMultiAgentTemplate.Shared/Model/AdditionalLinkInfo.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@

namespace DurableMultiAgentTemplate.Shared.Model;

/// <summary>
/// Record representing additional information in link format.
/// Used when providing links as additional information in agent responses.
/// </summary>
public record AdditionalLinkInfo(
[property: Description("リンクのラベルとして表示されるテキスト")]
string LinkText,
Comment thread
runceel marked this conversation as resolved.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@

namespace DurableMultiAgentTemplate.Shared.Model;

/// <summary>
/// Record representing additional information in Markdown format.
/// Used when providing Markdown text as additional information in agent responses.
/// </summary>
public record AdditionalMarkdownInfo(
[property: Description("Markdown形式の補足情報")]
string MarkdownText) : IAdditionalInfo;
4 changes: 4 additions & 0 deletions DurableMultiAgentTemplate.Shared/Model/IAdditionalInfo.cs
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,10 @@

namespace DurableMultiAgentTemplate.Shared.Model;

/// <summary>
/// Interface for additional information.
/// Classes implementing this interface are used as supplementary information added to agent responses.
/// </summary>
[JsonDerivedType(typeof(AdditionalMarkdownInfo), typeDiscriminator: "markdown")]
[JsonDerivedType(typeof(AdditionalLinkInfo), typeDiscriminator: "link")]
public interface IAdditionalInfo;
4 changes: 4 additions & 0 deletions DurableMultiAgentTemplate/Agent/AgentActivityName.cs
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
namespace DurableMultiAgentTemplate.Agent;

/// <summary>
/// Static class defining agent activity names.
/// Provides constants for orchestrator agent and worker agent names.
/// </summary>
public static class AgentActivityName
{
// Orchestrator Agent functions
Expand Down
4 changes: 4 additions & 0 deletions DurableMultiAgentTemplate/Agent/AgentDefinition.cs
Original file line number Diff line number Diff line change
Expand Up @@ -4,6 +4,10 @@

namespace DurableMultiAgentTemplate.Agent;

/// <summary>
/// Class providing agent definitions.
/// Defines the functionality, descriptions, and parameters for each agent.
/// </summary>
//https://learn.microsoft.com/ja-jp/azure/ai-services/openai/how-to/dotnet-migration?tabs=stable
internal class AgentDefinition
{
Expand Down
Original file line number Diff line number Diff line change
@@ -1,5 +1,9 @@
namespace DurableMultiAgentTemplate.Agent.Synthesizer;

/// <summary>
/// Static class defining prompts for generating responses with additional information.
/// The system prompt includes instructions on how to generate responses and separate additional information.
/// </summary>
internal static class SynthesizerWithAdditionalInfoPrompt
{
// Orchestrator Agent functions
Expand Down
21 changes: 21 additions & 0 deletions DurableMultiAgentTemplate/Starter.cs
Original file line number Diff line number Diff line change
Expand Up @@ -8,13 +8,23 @@

namespace DurableMultiAgentTemplate;

/// <summary>
/// Class providing starter functions for agent orchestration.
/// Provides synchronous and asynchronous HTTP triggers to start agent orchestration.
/// </summary>
public class Starter(ILogger<Starter> logger)
{
private static readonly JsonSerializerOptions _jsonSerializerOptions = new()
{
PropertyNameCaseInsensitive = true
};

/// <summary>
/// Synchronously executes agent orchestration and waits for completion. HTTP trigger function.
/// </summary>
/// <param name="req">HTTP request data</param>
/// <param name="client">Durable task client</param>
/// <returns>HTTP response containing agent processing results</returns>
[Function("SyncStarter")]
public async Task<HttpResponseData> SyncStarter(
[HttpTrigger(AuthorizationLevel.Function, "post", Route = "invoke/sync")] HttpRequestData req,
Expand All @@ -41,6 +51,12 @@ public async Task<HttpResponseData> SyncStarter(
return res;
}

/// <summary>
/// Asynchronously starts agent orchestration. HTTP trigger function.
/// </summary>
/// <param name="req">HTTP request data</param>
/// <param name="client">Durable task client</param>
/// <returns>HTTP response containing URLs for checking orchestration status</returns>
[Function("AsyncStarter")]
public async Task<HttpResponseData> AsyncStarter(
[HttpTrigger(AuthorizationLevel.Function, "post", Route = "invoke/async")] HttpRequestData req,
Expand All @@ -63,6 +79,11 @@ public async Task<HttpResponseData> AsyncStarter(
return await client.CreateCheckStatusResponseAsync(req, instanceId);
}

/// <summary>
/// Helper method to retrieve agent request data from an HTTP request.
/// </summary>
/// <param name="req">HTTP request data</param>
/// <returns>Agent request data, or null if the request is invalid</returns>
private async Task<AgentRequestDto?> GetRequestData(HttpRequestData req)
{
var requestBody = await req.ReadAsStringAsync();
Expand Down
Loading